cats-data-grid 0.0.2 → 0.0.5

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 (354) hide show
  1. package/README.md +63 -63
  2. package/ng-package.json +20 -0
  3. package/package.json +5 -16
  4. package/src/lib/assets/images/check-white.svg +3 -0
  5. package/src/lib/assets/images/filter-icon.svg +1 -0
  6. package/src/lib/assets/images/gripper.svg +8 -0
  7. package/src/lib/assets/images/minus-blue.svg +3 -0
  8. package/src/lib/assets/images/pin.svg +4 -0
  9. package/src/lib/assets/images/t-arrow-down.svg +4 -0
  10. package/src/lib/assets/images/t-arrow-up.svg +4 -0
  11. package/src/lib/assets/images/t-choose-column.svg +3 -0
  12. package/src/lib/assets/images/t-data-pipeline.svg +13 -0
  13. package/src/lib/assets/images/t-filter-applied.svg +4 -0
  14. package/src/lib/assets/images/t-filter.svg +3 -0
  15. package/src/lib/assets/images/t-gripper.svg +8 -0
  16. package/src/lib/assets/images/t-group-by-name.svg +3 -0
  17. package/src/lib/assets/images/t-more-vertical.svg +5 -0
  18. package/src/lib/assets/images/t-move.svg +15 -0
  19. package/src/lib/assets/images/t-x.svg +4 -0
  20. package/src/lib/cats-data-grid.component.html +1389 -0
  21. package/src/lib/cats-data-grid.component.scss +736 -0
  22. package/src/lib/cats-data-grid.component.ts +1756 -0
  23. package/src/lib/common-components/common-calendar/common-calendar.component.html +228 -0
  24. package/src/lib/common-components/common-calendar/common-calendar.component.scss +279 -0
  25. package/src/lib/common-components/common-calendar/common-calendar.component.spec.ts +23 -0
  26. package/src/lib/common-components/common-calendar/common-calendar.component.ts +606 -0
  27. package/src/lib/common-components/common-input/common-input.component.html +36 -0
  28. package/src/lib/common-components/common-input/common-input.component.scss +3 -0
  29. package/src/lib/common-components/common-input/common-input.component.spec.ts +23 -0
  30. package/src/lib/common-components/common-input/common-input.component.ts +51 -0
  31. package/src/lib/directives/adaptive-position.directive.ts +192 -0
  32. package/src/lib/directives/outside-click.directive.ts +32 -0
  33. package/src/lib/directives/renderer-parser.directive.ts +51 -0
  34. package/src/lib/pipes/add-class.pipe.ts +18 -0
  35. package/src/lib/renderers/common-renderer/common-renderer.component.html +129 -0
  36. package/src/lib/renderers/common-renderer/common-renderer.component.scss +256 -0
  37. package/src/lib/renderers/common-renderer/common-renderer.component.spec.ts +23 -0
  38. package/src/lib/renderers/common-renderer/common-renderer.component.ts +302 -0
  39. package/src/lib/services/cats-data-grid.service.spec.ts +16 -0
  40. package/src/lib/services/cats-data-grid.service.ts +9 -0
  41. package/{styles → src/lib/styles}/_index.scss +3 -3
  42. package/{styles → src/lib/styles}/base/_fonts.scss +74 -74
  43. package/{styles → src/lib/styles}/base/_index.scss +1 -1
  44. package/{styles → src/lib/styles}/base/_reset.scss +60 -60
  45. package/src/lib/styles/component/_form.scss +371 -0
  46. package/{styles → src/lib/styles}/component/_index.scss +1 -1
  47. package/{styles → src/lib/styles}/sass-utils/_function.scss +14 -14
  48. package/{styles → src/lib/styles}/sass-utils/_index.scss +3 -3
  49. package/{styles → src/lib/styles}/sass-utils/_mixin.scss +87 -56
  50. package/src/lib/styles/sass-utils/_variable.scss +77 -0
  51. package/src/public-api.ts +7 -0
  52. package/tsconfig.lib.json +15 -0
  53. package/tsconfig.lib.prod.json +11 -0
  54. package/tsconfig.spec.json +15 -0
  55. package/fesm2022/cats-data-grid.mjs +0 -530
  56. package/fesm2022/cats-data-grid.mjs.map +0 -1
  57. package/index.d.ts +0 -5
  58. package/lib/cats-data-grid.component.d.ts +0 -148
  59. package/lib/directives/outside-click.directive.d.ts +0 -10
  60. package/lib/directives/renderer-parser.directive.d.ts +0 -15
  61. package/lib/pipes/add-class.pipe.d.ts +0 -7
  62. package/lib/services/cats-data-grid.service.d.ts +0 -6
  63. package/public-api.d.ts +0 -2
  64. package/styles/component/_form.scss +0 -246
  65. package/styles/sass-utils/_variable.scss +0 -66
  66. /package/{assets → src/lib/assets}/images/activity.svg +0 -0
  67. /package/{assets → src/lib/assets}/images/airplay.svg +0 -0
  68. /package/{assets → src/lib/assets}/images/alert-circle.svg +0 -0
  69. /package/{assets → src/lib/assets}/images/alert-octagon.svg +0 -0
  70. /package/{assets → src/lib/assets}/images/alert-triangle.svg +0 -0
  71. /package/{assets → src/lib/assets}/images/align-center.svg +0 -0
  72. /package/{assets → src/lib/assets}/images/align-justify.svg +0 -0
  73. /package/{assets → src/lib/assets}/images/align-left.svg +0 -0
  74. /package/{assets → src/lib/assets}/images/align-right.svg +0 -0
  75. /package/{assets → src/lib/assets}/images/anchor.svg +0 -0
  76. /package/{assets → src/lib/assets}/images/aperture.svg +0 -0
  77. /package/{assets → src/lib/assets}/images/archive.svg +0 -0
  78. /package/{assets → src/lib/assets}/images/arrow-down-circle.svg +0 -0
  79. /package/{assets → src/lib/assets}/images/arrow-down-left.svg +0 -0
  80. /package/{assets → src/lib/assets}/images/arrow-down-right.svg +0 -0
  81. /package/{assets → src/lib/assets}/images/arrow-down.svg +0 -0
  82. /package/{assets → src/lib/assets}/images/arrow-left-circle.svg +0 -0
  83. /package/{assets → src/lib/assets}/images/arrow-left.svg +0 -0
  84. /package/{assets → src/lib/assets}/images/arrow-right-circle.svg +0 -0
  85. /package/{assets → src/lib/assets}/images/arrow-right.svg +0 -0
  86. /package/{assets → src/lib/assets}/images/arrow-up-circle.svg +0 -0
  87. /package/{assets → src/lib/assets}/images/arrow-up-left.svg +0 -0
  88. /package/{assets → src/lib/assets}/images/arrow-up-right.svg +0 -0
  89. /package/{assets → src/lib/assets}/images/arrow-up.svg +0 -0
  90. /package/{assets → src/lib/assets}/images/at-sign.svg +0 -0
  91. /package/{assets → src/lib/assets}/images/award.svg +0 -0
  92. /package/{assets → src/lib/assets}/images/bar-chart-2.svg +0 -0
  93. /package/{assets → src/lib/assets}/images/bar-chart.svg +0 -0
  94. /package/{assets → src/lib/assets}/images/battery-charging.svg +0 -0
  95. /package/{assets → src/lib/assets}/images/battery.svg +0 -0
  96. /package/{assets → src/lib/assets}/images/bell-off.svg +0 -0
  97. /package/{assets → src/lib/assets}/images/bell.svg +0 -0
  98. /package/{assets → src/lib/assets}/images/bluetooth.svg +0 -0
  99. /package/{assets → src/lib/assets}/images/bold.svg +0 -0
  100. /package/{assets → src/lib/assets}/images/book-open.svg +0 -0
  101. /package/{assets → src/lib/assets}/images/book.svg +0 -0
  102. /package/{assets → src/lib/assets}/images/bookmark.svg +0 -0
  103. /package/{assets → src/lib/assets}/images/box.svg +0 -0
  104. /package/{assets → src/lib/assets}/images/briefcase.svg +0 -0
  105. /package/{assets → src/lib/assets}/images/calendar.svg +0 -0
  106. /package/{assets → src/lib/assets}/images/camera-off.svg +0 -0
  107. /package/{assets → src/lib/assets}/images/camera.svg +0 -0
  108. /package/{assets → src/lib/assets}/images/cast.svg +0 -0
  109. /package/{assets → src/lib/assets}/images/check-circle.svg +0 -0
  110. /package/{assets → src/lib/assets}/images/check-square.svg +0 -0
  111. /package/{assets → src/lib/assets}/images/check.svg +0 -0
  112. /package/{assets → src/lib/assets}/images/chevron-down.svg +0 -0
  113. /package/{assets → src/lib/assets}/images/chevron-left.svg +0 -0
  114. /package/{assets → src/lib/assets}/images/chevron-right.svg +0 -0
  115. /package/{assets → src/lib/assets}/images/chevron-up.svg +0 -0
  116. /package/{assets → src/lib/assets}/images/chevrons-down.svg +0 -0
  117. /package/{assets → src/lib/assets}/images/chevrons-left.svg +0 -0
  118. /package/{assets → src/lib/assets}/images/chevrons-right.svg +0 -0
  119. /package/{assets → src/lib/assets}/images/chevrons-up.svg +0 -0
  120. /package/{assets → src/lib/assets}/images/chrome.svg +0 -0
  121. /package/{assets → src/lib/assets}/images/circle.svg +0 -0
  122. /package/{assets → src/lib/assets}/images/clipboard.svg +0 -0
  123. /package/{assets → src/lib/assets}/images/clock.svg +0 -0
  124. /package/{assets → src/lib/assets}/images/cloud-drizzle.svg +0 -0
  125. /package/{assets → src/lib/assets}/images/cloud-lightning.svg +0 -0
  126. /package/{assets → src/lib/assets}/images/cloud-off.svg +0 -0
  127. /package/{assets → src/lib/assets}/images/cloud-rain.svg +0 -0
  128. /package/{assets → src/lib/assets}/images/cloud-snow.svg +0 -0
  129. /package/{assets → src/lib/assets}/images/cloud.svg +0 -0
  130. /package/{assets → src/lib/assets}/images/code.svg +0 -0
  131. /package/{assets → src/lib/assets}/images/codepen.svg +0 -0
  132. /package/{assets → src/lib/assets}/images/codesandbox.svg +0 -0
  133. /package/{assets → src/lib/assets}/images/coffee.svg +0 -0
  134. /package/{assets → src/lib/assets}/images/columns.svg +0 -0
  135. /package/{assets → src/lib/assets}/images/command.svg +0 -0
  136. /package/{assets → src/lib/assets}/images/compass.svg +0 -0
  137. /package/{assets → src/lib/assets}/images/copy.svg +0 -0
  138. /package/{assets → src/lib/assets}/images/corner-down-left.svg +0 -0
  139. /package/{assets → src/lib/assets}/images/corner-down-right.svg +0 -0
  140. /package/{assets → src/lib/assets}/images/corner-left-down.svg +0 -0
  141. /package/{assets → src/lib/assets}/images/corner-left-up.svg +0 -0
  142. /package/{assets → src/lib/assets}/images/corner-right-down.svg +0 -0
  143. /package/{assets → src/lib/assets}/images/corner-right-up.svg +0 -0
  144. /package/{assets → src/lib/assets}/images/corner-up-left.svg +0 -0
  145. /package/{assets → src/lib/assets}/images/corner-up-right.svg +0 -0
  146. /package/{assets → src/lib/assets}/images/cpu.svg +0 -0
  147. /package/{assets → src/lib/assets}/images/credit-card.svg +0 -0
  148. /package/{assets → src/lib/assets}/images/crop.svg +0 -0
  149. /package/{assets → src/lib/assets}/images/crosshair.svg +0 -0
  150. /package/{assets → src/lib/assets}/images/database.svg +0 -0
  151. /package/{assets → src/lib/assets}/images/delete.svg +0 -0
  152. /package/{assets → src/lib/assets}/images/disc.svg +0 -0
  153. /package/{assets → src/lib/assets}/images/divide-circle.svg +0 -0
  154. /package/{assets → src/lib/assets}/images/divide-square.svg +0 -0
  155. /package/{assets → src/lib/assets}/images/divide.svg +0 -0
  156. /package/{assets → src/lib/assets}/images/dollar-sign.svg +0 -0
  157. /package/{assets → src/lib/assets}/images/download-cloud.svg +0 -0
  158. /package/{assets → src/lib/assets}/images/download.svg +0 -0
  159. /package/{assets → src/lib/assets}/images/dribbble.svg +0 -0
  160. /package/{assets → src/lib/assets}/images/droplet.svg +0 -0
  161. /package/{assets → src/lib/assets}/images/edit-2.svg +0 -0
  162. /package/{assets → src/lib/assets}/images/edit-3.svg +0 -0
  163. /package/{assets → src/lib/assets}/images/edit.svg +0 -0
  164. /package/{assets → src/lib/assets}/images/external-link.svg +0 -0
  165. /package/{assets → src/lib/assets}/images/eye-off.svg +0 -0
  166. /package/{assets → src/lib/assets}/images/eye.svg +0 -0
  167. /package/{assets → src/lib/assets}/images/facebook.svg +0 -0
  168. /package/{assets → src/lib/assets}/images/fast-forward.svg +0 -0
  169. /package/{assets → src/lib/assets}/images/feather.svg +0 -0
  170. /package/{assets → src/lib/assets}/images/figma.svg +0 -0
  171. /package/{assets → src/lib/assets}/images/file-minus.svg +0 -0
  172. /package/{assets → src/lib/assets}/images/file-plus.svg +0 -0
  173. /package/{assets → src/lib/assets}/images/file-text.svg +0 -0
  174. /package/{assets → src/lib/assets}/images/file.svg +0 -0
  175. /package/{assets → src/lib/assets}/images/film.svg +0 -0
  176. /package/{assets → src/lib/assets}/images/filter.svg +0 -0
  177. /package/{assets → src/lib/assets}/images/flag.svg +0 -0
  178. /package/{assets → src/lib/assets}/images/folder-minus.svg +0 -0
  179. /package/{assets → src/lib/assets}/images/folder-plus.svg +0 -0
  180. /package/{assets → src/lib/assets}/images/folder.svg +0 -0
  181. /package/{assets → src/lib/assets}/images/framer.svg +0 -0
  182. /package/{assets → src/lib/assets}/images/frown.svg +0 -0
  183. /package/{assets → src/lib/assets}/images/gift.svg +0 -0
  184. /package/{assets → src/lib/assets}/images/git-branch.svg +0 -0
  185. /package/{assets → src/lib/assets}/images/git-commit.svg +0 -0
  186. /package/{assets → src/lib/assets}/images/git-merge.svg +0 -0
  187. /package/{assets → src/lib/assets}/images/git-pull-request.svg +0 -0
  188. /package/{assets → src/lib/assets}/images/github.svg +0 -0
  189. /package/{assets → src/lib/assets}/images/gitlab.svg +0 -0
  190. /package/{assets → src/lib/assets}/images/globe.svg +0 -0
  191. /package/{assets → src/lib/assets}/images/grid.svg +0 -0
  192. /package/{assets → src/lib/assets}/images/hard-drive.svg +0 -0
  193. /package/{assets → src/lib/assets}/images/hash.svg +0 -0
  194. /package/{assets → src/lib/assets}/images/headphones.svg +0 -0
  195. /package/{assets → src/lib/assets}/images/heart.svg +0 -0
  196. /package/{assets → src/lib/assets}/images/help-circle.svg +0 -0
  197. /package/{assets → src/lib/assets}/images/hexagon.svg +0 -0
  198. /package/{assets → src/lib/assets}/images/home.svg +0 -0
  199. /package/{assets → src/lib/assets}/images/image.svg +0 -0
  200. /package/{assets → src/lib/assets}/images/inbox.svg +0 -0
  201. /package/{assets → src/lib/assets}/images/info.svg +0 -0
  202. /package/{assets → src/lib/assets}/images/instagram.svg +0 -0
  203. /package/{assets → src/lib/assets}/images/italic.svg +0 -0
  204. /package/{assets → src/lib/assets}/images/key.svg +0 -0
  205. /package/{assets → src/lib/assets}/images/layers.svg +0 -0
  206. /package/{assets → src/lib/assets}/images/layout.svg +0 -0
  207. /package/{assets → src/lib/assets}/images/life-buoy.svg +0 -0
  208. /package/{assets → src/lib/assets}/images/link-2.svg +0 -0
  209. /package/{assets → src/lib/assets}/images/link.svg +0 -0
  210. /package/{assets → src/lib/assets}/images/linkedin.svg +0 -0
  211. /package/{assets → src/lib/assets}/images/list.svg +0 -0
  212. /package/{assets → src/lib/assets}/images/loader.svg +0 -0
  213. /package/{assets → src/lib/assets}/images/lock.svg +0 -0
  214. /package/{assets → src/lib/assets}/images/log-in.svg +0 -0
  215. /package/{assets → src/lib/assets}/images/log-out.svg +0 -0
  216. /package/{assets → src/lib/assets}/images/mail.svg +0 -0
  217. /package/{assets → src/lib/assets}/images/map-pin.svg +0 -0
  218. /package/{assets → src/lib/assets}/images/map.svg +0 -0
  219. /package/{assets → src/lib/assets}/images/maximize-2.svg +0 -0
  220. /package/{assets → src/lib/assets}/images/maximize.svg +0 -0
  221. /package/{assets → src/lib/assets}/images/meh.svg +0 -0
  222. /package/{assets → src/lib/assets}/images/menu.svg +0 -0
  223. /package/{assets → src/lib/assets}/images/message-circle.svg +0 -0
  224. /package/{assets → src/lib/assets}/images/message-square.svg +0 -0
  225. /package/{assets → src/lib/assets}/images/mic-off.svg +0 -0
  226. /package/{assets → src/lib/assets}/images/mic.svg +0 -0
  227. /package/{assets → src/lib/assets}/images/minimize-2.svg +0 -0
  228. /package/{assets → src/lib/assets}/images/minimize.svg +0 -0
  229. /package/{assets → src/lib/assets}/images/minus-circle.svg +0 -0
  230. /package/{assets → src/lib/assets}/images/minus-square.svg +0 -0
  231. /package/{assets → src/lib/assets}/images/minus.svg +0 -0
  232. /package/{assets → src/lib/assets}/images/monitor.svg +0 -0
  233. /package/{assets → src/lib/assets}/images/moon.svg +0 -0
  234. /package/{assets → src/lib/assets}/images/more-horizontal.svg +0 -0
  235. /package/{assets → src/lib/assets}/images/more-vertical.svg +0 -0
  236. /package/{assets → src/lib/assets}/images/mouse-pointer.svg +0 -0
  237. /package/{assets → src/lib/assets}/images/move.svg +0 -0
  238. /package/{assets → src/lib/assets}/images/music.svg +0 -0
  239. /package/{assets → src/lib/assets}/images/navigation-2.svg +0 -0
  240. /package/{assets → src/lib/assets}/images/navigation.svg +0 -0
  241. /package/{assets → src/lib/assets}/images/octagon.svg +0 -0
  242. /package/{assets → src/lib/assets}/images/package.svg +0 -0
  243. /package/{assets → src/lib/assets}/images/paperclip.svg +0 -0
  244. /package/{assets → src/lib/assets}/images/pause-circle.svg +0 -0
  245. /package/{assets → src/lib/assets}/images/pause.svg +0 -0
  246. /package/{assets → src/lib/assets}/images/pen-tool.svg +0 -0
  247. /package/{assets → src/lib/assets}/images/percent.svg +0 -0
  248. /package/{assets → src/lib/assets}/images/phone-call.svg +0 -0
  249. /package/{assets → src/lib/assets}/images/phone-forwarded.svg +0 -0
  250. /package/{assets → src/lib/assets}/images/phone-incoming.svg +0 -0
  251. /package/{assets → src/lib/assets}/images/phone-missed.svg +0 -0
  252. /package/{assets → src/lib/assets}/images/phone-off.svg +0 -0
  253. /package/{assets → src/lib/assets}/images/phone-outgoing.svg +0 -0
  254. /package/{assets → src/lib/assets}/images/phone.svg +0 -0
  255. /package/{assets → src/lib/assets}/images/pie-chart.svg +0 -0
  256. /package/{assets → src/lib/assets}/images/play-circle.svg +0 -0
  257. /package/{assets → src/lib/assets}/images/play.svg +0 -0
  258. /package/{assets → src/lib/assets}/images/plus-circle.svg +0 -0
  259. /package/{assets → src/lib/assets}/images/plus-square.svg +0 -0
  260. /package/{assets → src/lib/assets}/images/plus.svg +0 -0
  261. /package/{assets → src/lib/assets}/images/pocket.svg +0 -0
  262. /package/{assets → src/lib/assets}/images/power.svg +0 -0
  263. /package/{assets → src/lib/assets}/images/printer.svg +0 -0
  264. /package/{assets → src/lib/assets}/images/radio.svg +0 -0
  265. /package/{assets → src/lib/assets}/images/refresh-ccw.svg +0 -0
  266. /package/{assets → src/lib/assets}/images/refresh-cw.svg +0 -0
  267. /package/{assets → src/lib/assets}/images/repeat.svg +0 -0
  268. /package/{assets → src/lib/assets}/images/rewind.svg +0 -0
  269. /package/{assets → src/lib/assets}/images/rotate-ccw.svg +0 -0
  270. /package/{assets → src/lib/assets}/images/rotate-cw.svg +0 -0
  271. /package/{assets → src/lib/assets}/images/rss.svg +0 -0
  272. /package/{assets → src/lib/assets}/images/save.svg +0 -0
  273. /package/{assets → src/lib/assets}/images/scissors.svg +0 -0
  274. /package/{assets → src/lib/assets}/images/search.svg +0 -0
  275. /package/{assets → src/lib/assets}/images/send.svg +0 -0
  276. /package/{assets → src/lib/assets}/images/server.svg +0 -0
  277. /package/{assets → src/lib/assets}/images/settings.svg +0 -0
  278. /package/{assets → src/lib/assets}/images/share-2.svg +0 -0
  279. /package/{assets → src/lib/assets}/images/share.svg +0 -0
  280. /package/{assets → src/lib/assets}/images/shield-off.svg +0 -0
  281. /package/{assets → src/lib/assets}/images/shield.svg +0 -0
  282. /package/{assets → src/lib/assets}/images/shopping-bag.svg +0 -0
  283. /package/{assets → src/lib/assets}/images/shopping-cart.svg +0 -0
  284. /package/{assets → src/lib/assets}/images/shuffle.svg +0 -0
  285. /package/{assets → src/lib/assets}/images/sidebar.svg +0 -0
  286. /package/{assets → src/lib/assets}/images/skip-back.svg +0 -0
  287. /package/{assets → src/lib/assets}/images/skip-forward.svg +0 -0
  288. /package/{assets → src/lib/assets}/images/slack.svg +0 -0
  289. /package/{assets → src/lib/assets}/images/slash.svg +0 -0
  290. /package/{assets → src/lib/assets}/images/sliders.svg +0 -0
  291. /package/{assets → src/lib/assets}/images/smartphone.svg +0 -0
  292. /package/{assets → src/lib/assets}/images/smile.svg +0 -0
  293. /package/{assets → src/lib/assets}/images/sort_down.svg +0 -0
  294. /package/{assets → src/lib/assets}/images/sort_up.svg +0 -0
  295. /package/{assets → src/lib/assets}/images/speaker.svg +0 -0
  296. /package/{assets → src/lib/assets}/images/square.svg +0 -0
  297. /package/{assets → src/lib/assets}/images/star.svg +0 -0
  298. /package/{assets → src/lib/assets}/images/stop-circle.svg +0 -0
  299. /package/{assets → src/lib/assets}/images/sun.svg +0 -0
  300. /package/{assets → src/lib/assets}/images/sunrise.svg +0 -0
  301. /package/{assets → src/lib/assets}/images/sunset.svg +0 -0
  302. /package/{assets → src/lib/assets}/images/table.svg +0 -0
  303. /package/{assets → src/lib/assets}/images/tablet.svg +0 -0
  304. /package/{assets → src/lib/assets}/images/tag.svg +0 -0
  305. /package/{assets → src/lib/assets}/images/target.svg +0 -0
  306. /package/{assets → src/lib/assets}/images/terminal.svg +0 -0
  307. /package/{assets → src/lib/assets}/images/thermometer.svg +0 -0
  308. /package/{assets → src/lib/assets}/images/thumbs-down.svg +0 -0
  309. /package/{assets → src/lib/assets}/images/thumbs-up.svg +0 -0
  310. /package/{assets → src/lib/assets}/images/toggle-left.svg +0 -0
  311. /package/{assets → src/lib/assets}/images/toggle-right.svg +0 -0
  312. /package/{assets → src/lib/assets}/images/tool.svg +0 -0
  313. /package/{assets → src/lib/assets}/images/trash-2.svg +0 -0
  314. /package/{assets → src/lib/assets}/images/trash.svg +0 -0
  315. /package/{assets → src/lib/assets}/images/trello.svg +0 -0
  316. /package/{assets → src/lib/assets}/images/trending-down.svg +0 -0
  317. /package/{assets → src/lib/assets}/images/trending-up.svg +0 -0
  318. /package/{assets → src/lib/assets}/images/triangle.svg +0 -0
  319. /package/{assets → src/lib/assets}/images/truck.svg +0 -0
  320. /package/{assets → src/lib/assets}/images/tv.svg +0 -0
  321. /package/{assets → src/lib/assets}/images/twitch.svg +0 -0
  322. /package/{assets → src/lib/assets}/images/twitter.svg +0 -0
  323. /package/{assets → src/lib/assets}/images/type.svg +0 -0
  324. /package/{assets → src/lib/assets}/images/umbrella.svg +0 -0
  325. /package/{assets → src/lib/assets}/images/underline.svg +0 -0
  326. /package/{assets → src/lib/assets}/images/unlock.svg +0 -0
  327. /package/{assets → src/lib/assets}/images/upload-cloud.svg +0 -0
  328. /package/{assets → src/lib/assets}/images/upload.svg +0 -0
  329. /package/{assets → src/lib/assets}/images/user-check.svg +0 -0
  330. /package/{assets → src/lib/assets}/images/user-minus.svg +0 -0
  331. /package/{assets → src/lib/assets}/images/user-plus.svg +0 -0
  332. /package/{assets → src/lib/assets}/images/user-x.svg +0 -0
  333. /package/{assets → src/lib/assets}/images/user.svg +0 -0
  334. /package/{assets → src/lib/assets}/images/users.svg +0 -0
  335. /package/{assets → src/lib/assets}/images/video-off.svg +0 -0
  336. /package/{assets → src/lib/assets}/images/video.svg +0 -0
  337. /package/{assets → src/lib/assets}/images/voicemail.svg +0 -0
  338. /package/{assets → src/lib/assets}/images/volume-1.svg +0 -0
  339. /package/{assets → src/lib/assets}/images/volume-2.svg +0 -0
  340. /package/{assets → src/lib/assets}/images/volume-x.svg +0 -0
  341. /package/{assets → src/lib/assets}/images/volume.svg +0 -0
  342. /package/{assets → src/lib/assets}/images/watch.svg +0 -0
  343. /package/{assets → src/lib/assets}/images/wifi-off.svg +0 -0
  344. /package/{assets → src/lib/assets}/images/wifi.svg +0 -0
  345. /package/{assets → src/lib/assets}/images/wind.svg +0 -0
  346. /package/{assets → src/lib/assets}/images/x-circle.svg +0 -0
  347. /package/{assets → src/lib/assets}/images/x-octagon.svg +0 -0
  348. /package/{assets → src/lib/assets}/images/x-square.svg +0 -0
  349. /package/{assets → src/lib/assets}/images/x.svg +0 -0
  350. /package/{assets → src/lib/assets}/images/youtube.svg +0 -0
  351. /package/{assets → src/lib/assets}/images/zap-off.svg +0 -0
  352. /package/{assets → src/lib/assets}/images/zap.svg +0 -0
  353. /package/{assets → src/lib/assets}/images/zoom-in.svg +0 -0
  354. /package/{assets → src/lib/assets}/images/zoom-out.svg +0 -0
@@ -0,0 +1,1389 @@
1
+ <div class="tableArea" #table>
2
+ @if (settingsRequired && settingsClicked) {
3
+ <div
4
+ class="setting_options"
5
+ appOutsideClick
6
+ (clickOutside)="hideSettings()"
7
+ >
8
+ <div class="column_header">Select Headers</div>
9
+ <div class="checkbox_container">
10
+ <input
11
+ class="custom_check_box"
12
+ type="checkbox"
13
+ [checked]="activeAll"
14
+ (change)="activeAllSelection($event)"
15
+ />
16
+ <span>Select All</span>
17
+ </div>
18
+
19
+ <div class="item_container" id="table_scroll">
20
+ @for (col of colDefs; track col.colId) {
21
+ <div class="column_item checkbox_container">
22
+ <input
23
+ class="custom_check_box"
24
+ type="checkbox"
25
+ [checked]="col.active"
26
+ (change)="changeActiveColSelection($event, col)"
27
+ [disabled]="col.headerLocked"
28
+ />
29
+ <span>{{ col.headerName | titlecase }}</span>
30
+ </div>
31
+ }
32
+ </div>
33
+ </div>
34
+ }
35
+ @if (groupByRequired) {
36
+ <!-- Group Panel -->
37
+ <div
38
+ class="group_panel"
39
+ (dragover)="onGroupDragOver($event)"
40
+ (drop)="onGroupDrop($event)"
41
+ >
42
+ <img alt="" src="images/t-data-pipeline.svg" class="icon" />
43
+ @for (g of activeGroups; track $index) {
44
+ <div
45
+ class="group_tag"
46
+ draggable="true"
47
+ (dragstart)="onGroupDragStart($event, $index)"
48
+ (dragover)="onActiveDragOver($event, $index)"
49
+ (drop)="onActiveGroupDrop($event, $index)"
50
+ >
51
+ <img src="images/t-gripper.svg" alt="" />
52
+ <span>{{ g.headerName }}</span>
53
+ <button class="remove_tag" (click)="removeGroup(g, $index)">
54
+ <img src="images/t-x.svg" alt="" />
55
+ </button>
56
+ </div>
57
+ <img src="images/chevron-right.svg" alt="" class="divider" />
58
+ }
59
+ @if (activeGroups.length === 0) {
60
+ <div class="group_placeholder">Drag here to set row groups</div>
61
+ }
62
+ </div>
63
+ }
64
+ @if (activeFilters.size > 0) {
65
+ <div class="active_filters_container">
66
+ <div class="tag_wrapper">
67
+ @for (filter of appliedFilters; track filter.fieldName) {
68
+ <div class="active_filter_tag">
69
+ <div class="active_filter_label ellipsis">
70
+ @for (item of filter.filters; track $index) {
71
+ @if (item.filterValue) {
72
+ @if ($index > 0 && item.filterValue) {
73
+ <span class="filter_logic"> {{ filter.filterLogic }} </span>
74
+ }
75
+ <span class="filter_field">{{ filter.fieldName }}:</span>
76
+ <span class=""> {{ item.filterOperation }}</span>
77
+ <span class="filter_value">{{ item.filterValue }}</span>
78
+ }
79
+ }
80
+ </div>
81
+ <button
82
+ class="remove_filter_btn"
83
+ (click)="removeActiveFilter(filter)"
84
+ >
85
+ <img src="images/t-x.svg" alt="" />
86
+ </button>
87
+ </div>
88
+ }
89
+ </div>
90
+ <div class="clear_all" (click)="clearAllFilter()">Clear All Filters</div>
91
+ </div>
92
+ }
93
+ <div
94
+ class="table_wrapper global"
95
+ id="table_scroll"
96
+ #parent
97
+ (scroll)="infinityScroll($event)"
98
+ [ngClass]="{ tbody_height: activeFilters.size > 0 }"
99
+ [class.no-horizontal-scroll]="
100
+ (!rowData || rowData.length === 0) &&
101
+ (!groupedResult || groupedResult.length === 0)
102
+ "
103
+ >
104
+ <div class="table-inner-wrapper">
105
+ <table cellspacing="0" cellpadding="0">
106
+ <thead class="sticky-top">
107
+ <tr>
108
+ @if (
109
+ checkBoxSelection &&
110
+ checkboxSelectionType == "multiple" &&
111
+ atLeastOneColumnChecked
112
+ ) {
113
+ <th style="min-width: 50px; width: 50px">
114
+ <div class="th_wraper">
115
+ <span class="checkbox_container"
116
+ ><input
117
+ class="pointer custom_check_box"
118
+ type="checkbox"
119
+ name=""
120
+ id=""
121
+ [checked]="checkAllSelected()"
122
+ [indeterminate]="checkInterminate()"
123
+ (change)="onHeaderCheckboxChange($event)"
124
+ /></span>
125
+ <div class="filter_three_dot_wrapper">
126
+ <span class="resize-handle default_cursor"> | </span>
127
+ </div>
128
+ </div>
129
+ </th>
130
+ }
131
+ <!-- @else{
132
+ <th></th>
133
+ } -->
134
+ @if (activeGroups.length > 0) {
135
+ <th class="active_group">
136
+ <div class="th_wraper">
137
+ <div class="text_wrapper">
138
+ <span class="ellipsis headerName">Group</span>
139
+ </div>
140
+ <div class="filter_three_dot_wrapper">
141
+ <div class="three-dots">
142
+ <img src="images/t-more-vertical.svg" />
143
+ </div>
144
+ </div>
145
+ </div>
146
+ </th>
147
+ }
148
+ @for (col of colDefs; track col.colId) {
149
+ @if (col.active) {
150
+ <th
151
+ [ngStyle]="getStyle(col, 'action')"
152
+ [ngClass]="{
153
+ 'drag-over': dragOverIndex === $index,
154
+ pinned_column: col.leftPinned || col.rightPinned,
155
+ }"
156
+ (dragover)="onDragOver($event, $index)"
157
+ (drop)="onDrop($event, $index)"
158
+ (mouseenter)="onMouseEnterHeader($index)"
159
+ (mouseleave)="onMouseLeaveHeader($index)"
160
+ >
161
+ <div class="th_wraper">
162
+ <div
163
+ class="text_wrapper"
164
+ [ngStyle]="getStyle(col, 'action')"
165
+ (click)="onSortingRowData($index, col)"
166
+ >
167
+ @if (showMoveIcon[$index] && !col.isAction) {
168
+ <img
169
+ src="images/t-move.svg"
170
+ class="move-icon"
171
+ [draggable]="!isResizing || columnDraggable[$index]"
172
+ (dragstart)="onDragStart($event, $index)"
173
+ (dragend)="onDragEnd()"
174
+ (mouseenter)="enableColumnDrag($event, $index)"
175
+ (mouseleave)="disableColumnDrag($event, $index)"
176
+ />
177
+ }
178
+ <span class="ellipsis headerName">{{
179
+ col?.headerName
180
+ }}</span>
181
+
182
+ @if (
183
+ sortingRequired &&
184
+ sortingColumnIndex == $index &&
185
+ col?.sortable &&
186
+ !col.isAction
187
+ ) {
188
+ <span class="sorting_icon">
189
+ @if (sortingType[$index] === "asc") {
190
+ <img
191
+ src="images/t-arrow-up.svg"
192
+ class="sorting_up"
193
+ [draggable]="false"
194
+ (dragstart)="
195
+ $event.preventDefault();
196
+ $event.stopPropagation()
197
+ "
198
+ />
199
+ }
200
+ @if (sortingType[$index] === "dsc") {
201
+ <!-- <i class="fa fa-caret-down" [ngClass]="sortingColumnIndex == $index && sortingType == 'dsc' ? 'muted_sort' : ''"></i> -->
202
+ <img
203
+ src="images/t-arrow-down.svg"
204
+ class="sorting_down"
205
+ [draggable]="false"
206
+ (dragstart)="
207
+ $event.preventDefault();
208
+ $event.stopPropagation()
209
+ "
210
+ />
211
+ }
212
+ </span>
213
+ }
214
+ </div>
215
+ <div class="filter_three_dot_wrapper">
216
+ <!-- Column Filters Logic-->
217
+ @if (filterRequired && col.filterable) {
218
+ <div
219
+ #trigger
220
+ class="filters"
221
+ (click)="toggleFilter(col, $index, $event)"
222
+ >
223
+ @if (activeFilters.has(col.fieldName)) {
224
+ <img
225
+ src="images/t-filter-applied.svg"
226
+ class="filter-icon"
227
+ [draggable]="false"
228
+ (dragstart)="
229
+ $event.preventDefault();
230
+ $event.stopPropagation()
231
+ "
232
+ />
233
+ } @else {
234
+ <img
235
+ src="images/t-filter.svg"
236
+ class="filter-icon"
237
+ [draggable]="false"
238
+ (dragstart)="
239
+ $event.preventDefault();
240
+ $event.stopPropagation()
241
+ "
242
+ />
243
+ }
244
+ @if (activeFilterIndex === $index) {
245
+ <div class="filt_wrap">
246
+ <div
247
+ adaptivePosition
248
+ [trigger]="trigger"
249
+ [parentContainer]="parent"
250
+ [matchWidth]="false"
251
+ class="filter_wrapper"
252
+ id="filter_wrapper-{{ $index }}"
253
+ (click)="$event.stopPropagation()"
254
+ appOutsideClick
255
+ (clickOutside)="onClickOutside()"
256
+ >
257
+ <!-- Text Filter -->
258
+ @if (col.filterType === "text") {
259
+ <lib-common-input
260
+ [options]="filterOptions"
261
+ [selectedValue]="
262
+ col.filters[0].filterOperation
263
+ "
264
+ placeholder="Select filter"
265
+ (valueChange)="
266
+ col.filters[0].filterOperation = $event
267
+ "
268
+ ></lib-common-input>
269
+
270
+ <div class="search_input">
271
+ <img src="images/search.svg" alt="" />
272
+ <input
273
+ type="text"
274
+ placeholder="Filter"
275
+ [(ngModel)]="col.filters[0].filterValue"
276
+ (keyup)="applyAllFilters()"
277
+ />
278
+ </div>
279
+
280
+ <!-- <input
281
+ type="text"
282
+ [(ngModel)]="col.filters[0].filterValue"
283
+ placeholder="Filter…"
284
+ (keyup)="applyAllFilters()"
285
+ /> -->
286
+
287
+ @if (col.filters[0].filterValue) {
288
+ <div class="logic-row radio_option">
289
+ <input
290
+ type="radio"
291
+ name="filterLogic{{ col.fieldName }}"
292
+ [(ngModel)]="col.filterLogic"
293
+ value="AND"
294
+ id="{{ $index }}"
295
+ (change)="applyAllFilters()"
296
+ />
297
+ <label [for]="$index">AND</label>
298
+
299
+ <input
300
+ type="radio"
301
+ name="filterLogic{{ col.fieldName }}"
302
+ [(ngModel)]="col.filterLogic"
303
+ value="OR"
304
+ id="{{ $index + 1 }}"
305
+ (change)="applyAllFilters()"
306
+ />
307
+ <label [for]="$index + 1">OR</label>
308
+ </div>
309
+
310
+ <lib-common-input
311
+ [options]="filterOptions"
312
+ [selectedValue]="
313
+ col.filters[1].filterOperation
314
+ "
315
+ placeholder="Select filter"
316
+ (valueChange)="
317
+ col.filters[1].filterOperation = $event
318
+ "
319
+ ></lib-common-input>
320
+ <!-- <input
321
+ type="text"
322
+ [(ngModel)]="col.filters[1].filterValue"
323
+ placeholder="Filter…"
324
+ (keyup)="applyAllFilters()"
325
+ /> -->
326
+
327
+ <div class="search_input">
328
+ <img src="images/search.svg" alt="" />
329
+ <input
330
+ type="text"
331
+ placeholder="Filter"
332
+ [(ngModel)]="col.filters[1].filterValue"
333
+ (keyup)="applyAllFilters()"
334
+ />
335
+ </div>
336
+ }
337
+ }
338
+
339
+ <!-- Number Filter -->
340
+ @if (col.filterType === "number") {
341
+ <lib-common-input
342
+ [options]="numberFilterOptions"
343
+ [selectedValue]="
344
+ col.filters[0].filterOperation
345
+ "
346
+ placeholder="Select filter"
347
+ (valueChange)="
348
+ col.filters[0].filterOperation = $event
349
+ "
350
+ ></lib-common-input>
351
+
352
+ <!-- <input
353
+ type="number"
354
+ [(ngModel)]="col.filters[0].filterValue"
355
+ (input)="applyAllFilters()"
356
+ /> -->
357
+
358
+ <div class="search_input">
359
+ <img src="images/search.svg" alt="" />
360
+ <input
361
+ type="number"
362
+ placeholder="Filter"
363
+ [(ngModel)]="col.filters[0].filterValue"
364
+ (input)="applyAllFilters()"
365
+ />
366
+ </div>
367
+
368
+ @if (col.filters[0].filterValue) {
369
+ <div class="logic-row radio_option">
370
+ <input
371
+ type="radio"
372
+ name="filterLogic{{ col.fieldName }}"
373
+ [(ngModel)]="col.filterLogic"
374
+ value="AND"
375
+ id="{{ $index }}"
376
+ (change)="applyAllFilters()"
377
+ />
378
+ <label [for]="$index">AND</label>
379
+
380
+ <input
381
+ type="radio"
382
+ name="filterLogic{{ col.fieldName }}"
383
+ [(ngModel)]="col.filterLogic"
384
+ value="OR"
385
+ id="{{ $index + 1 }}"
386
+ (change)="applyAllFilters()"
387
+ />
388
+ <label [for]="$index + 1">OR</label>
389
+ </div>
390
+
391
+ <lib-common-input
392
+ [options]="numberFilterOptions"
393
+ [selectedValue]="
394
+ col.filters[1].filterOperation
395
+ "
396
+ placeholder="Select filter"
397
+ (valueChange)="
398
+ col.filters[1].filterOperation = $event
399
+ "
400
+ ></lib-common-input>
401
+
402
+ <div class="search_input">
403
+ <img src="images/search.svg" alt="" />
404
+ <input
405
+ type="text"
406
+ placeholder="Filter"
407
+ [(ngModel)]="col.filters[1].filterValue"
408
+ (keyup)="applyAllFilters()"
409
+ />
410
+ </div>
411
+ <!-- <input
412
+ type="text"
413
+ [(ngModel)]="col.filters[1].filterValue"
414
+ placeholder="Filter…"
415
+ (keyup)="applyAllFilters()"
416
+ /> -->
417
+ }
418
+ }
419
+
420
+ <!-- DATE FILTER -->
421
+ @if (col.filterType === "date") {
422
+ <lib-common-input
423
+ [options]="numberFilterOptions"
424
+ [selectedValue]="
425
+ col.filters[0].filterOperation
426
+ "
427
+ placeholder="Select filter"
428
+ (valueChange)="
429
+ col.filters[0].filterOperation = $event
430
+ "
431
+ ></lib-common-input>
432
+
433
+ <!-- <input
434
+ type="date"
435
+ [(ngModel)]="col.filters[0].filterValue"
436
+ (change)="applyAllFilters()"
437
+ /> -->
438
+ <lib-common-calendar
439
+ [dateConfig]="dateConfig"
440
+ [(ngModel)]="col.filters[0].filterValue"
441
+ (dateTimeSelected)="
442
+ dateTimeSelected($event)
443
+ "
444
+ ></lib-common-calendar>
445
+
446
+ @if (col.filters[0].filterValue) {
447
+ <div class="logic-row radio_option">
448
+ <input
449
+ type="radio"
450
+ name="filterLogic{{ col.fieldName }}"
451
+ [(ngModel)]="col.filterLogic"
452
+ value="AND"
453
+ id="{{ $index }}"
454
+ (change)="applyAllFilters()"
455
+ />
456
+ <label [for]="$index">AND</label>
457
+
458
+ <input
459
+ type="radio"
460
+ name="filterLogic{{ col.fieldName }}"
461
+ [(ngModel)]="col.filterLogic"
462
+ value="OR"
463
+ id="{{ $index + 1 }}"
464
+ (change)="applyAllFilters()"
465
+ />
466
+ <label [for]="$index + 1">OR</label>
467
+ </div>
468
+
469
+ <lib-common-input
470
+ [options]="numberFilterOptions"
471
+ [selectedValue]="
472
+ col.filters[1].filterOperation
473
+ "
474
+ placeholder="Select filter"
475
+ (valueChange)="
476
+ col.filters[1].filterOperation = $event
477
+ "
478
+ ></lib-common-input>
479
+
480
+ <lib-common-calendar
481
+ [dateConfig]="dateConfig"
482
+ [(ngModel)]="col.filters[1].filterValue"
483
+ (dateTimeSelected)="
484
+ dateTimeSelected($event)
485
+ "
486
+ ></lib-common-calendar>
487
+ }
488
+ }
489
+
490
+ <!-- SET FILTER (CHECKBOX LIST) -->
491
+ @if (col.filterType === "set") {
492
+ <!-- <input
493
+ type="text"
494
+ placeholder="Search..."
495
+ (input)="filterSetOptions(col, $event)"
496
+ /> -->
497
+ <div class="search_input">
498
+ <img src="images/search.svg" alt="" />
499
+ <input
500
+ type="text"
501
+ placeholder="Search..."
502
+ (input)="filterSetOptions(col, $event)"
503
+ />
504
+ </div>
505
+
506
+ <div class="set_option_details">
507
+ <label class="checkbox_container">
508
+ <input
509
+ class="custom_check_box"
510
+ type="checkbox"
511
+ [checked]="isAllSelected(col)"
512
+ (change)="toggleSelectAll(col, $event)"
513
+ />
514
+ (Select All)
515
+ </label>
516
+ <div class="set_options" id="table_scroll">
517
+ @for (
518
+ opt of col.filteredOptions;
519
+ track $index
520
+ ) {
521
+ <label class="checkbox_container">
522
+ <input
523
+ class="custom_check_box"
524
+ type="checkbox"
525
+ [checked]="
526
+ col.selectedValues.has(opt)
527
+ "
528
+ (change)="
529
+ toggleSetOption(col, opt, $event)
530
+ "
531
+ />
532
+ {{ opt }}
533
+ </label>
534
+ }
535
+ </div>
536
+ </div>
537
+ }
538
+ <div class="filter_btn">
539
+ <button
540
+ class="reset_btn"
541
+ type="button"
542
+ (click)="resetFilter(col)"
543
+ >
544
+ Reset
545
+ </button>
546
+ </div>
547
+ </div>
548
+ </div>
549
+ }
550
+ </div>
551
+ }
552
+
553
+ <!-- Three dots menu-->
554
+ <div #triggerColMenu>
555
+ @if (threeDotsMenuRequired && col.columnAction) {
556
+ <div
557
+ class="three-dots"
558
+ (click)="openMenu($event, col, $index)"
559
+ >
560
+ <img
561
+ src="images/t-more-vertical.svg"
562
+ [draggable]="false"
563
+ (dragstart)="
564
+ $event.preventDefault();
565
+ $event.stopPropagation()
566
+ "
567
+ />
568
+ </div>
569
+ }
570
+ </div>
571
+ @if (!col.isAction) {
572
+ <span
573
+ class="resize-handle"
574
+ (mousedown)="startResize($event, $index)"
575
+ >
576
+ |
577
+ </span>
578
+ }
579
+ </div>
580
+ </div>
581
+
582
+ <!-- popup open -->
583
+ @if (menuVisible[$index]) {
584
+ <div
585
+ #colActionMenu
586
+ class="dropdown_wrapper"
587
+ adaptivePosition
588
+ [trigger]="triggerColMenu"
589
+ [parentContainer]="parent"
590
+ [matchWidth]="false"
591
+ [isColumnActionMenu]="true"
592
+ (click)="$event.stopPropagation()"
593
+ appOutsideClick
594
+ (clickOutside)="onClickOutside()"
595
+ >
596
+ <div class="right_click_dropdown" id="table_scroll">
597
+ @if (
598
+ sortingType[$index] === "dsc" ||
599
+ sortingType[$index] === ""
600
+ ) {
601
+ <div
602
+ class="right_click_item"
603
+ (click)="onSort(col, 'asc', $index)"
604
+ >
605
+ <div class="left_item">
606
+ <img
607
+ src="images/arrow-up.svg"
608
+ class="sorting_up"
609
+ [ngClass]="{ disable: !col.sortable }"
610
+ />
611
+ <span class="text">Sort Ascending</span>
612
+ </div>
613
+ </div>
614
+ }
615
+ @if (
616
+ sortingType[$index] === "asc" ||
617
+ sortingType[$index] === ""
618
+ ) {
619
+ <div
620
+ class="right_click_item"
621
+ (click)="onSort(col, 'dsc', $index)"
622
+ >
623
+ <div class="left_item">
624
+ <img src="images/arrow-down.svg" />
625
+ <span class="text">Sort Descending</span>
626
+ </div>
627
+ </div>
628
+ }
629
+ @if (
630
+ sortingType[$index] === "asc" ||
631
+ sortingType[$index] === "dsc"
632
+ ) {
633
+ <div
634
+ class="right_click_item"
635
+ (click)="onSort(col, '', $index)"
636
+ >
637
+ <div class="left_item">
638
+ <img src="images/trash-2.svg" />
639
+ <span class="text">Clear Sort</span>
640
+ </div>
641
+ </div>
642
+ }
643
+ <div class="divder"></div>
644
+
645
+ <div
646
+ class="right_click_item"
647
+ (mouseenter)="showPinActions($event)"
648
+ (mouseleave)="hidePinActions()"
649
+ >
650
+ <div class="left_item">
651
+ <img src="images/pin.svg" />
652
+ <span class="text">Pin Column</span>
653
+ </div>
654
+ <div class="right_item">
655
+ <img src="images/chevron-right.svg" />
656
+ @if (showPin) {
657
+ <div class="second_dropdown" #pinMenu>
658
+ <div
659
+ (click)="pinColumn(col, $index, 'none')"
660
+ class="right_click_item"
661
+ >
662
+ <div class="left_item">
663
+ @if (
664
+ (pinActionClicked[col.colId] ??
665
+ "none") === "none"
666
+ ) {
667
+ <img src="images/check.svg" />
668
+ } @else {
669
+ <img src="" alt="" />
670
+ }
671
+ <span class="text">No Pin</span>
672
+ </div>
673
+ </div>
674
+ <div
675
+ (click)="pinColumn(col, $index, 'left')"
676
+ class="right_click_item"
677
+ >
678
+ <div class="left_item">
679
+ @if (
680
+ pinActionClicked[col.colId] === "left"
681
+ ) {
682
+ <img src="images/check.svg" />
683
+ } @else {
684
+ <img src="" alt="" />
685
+ }
686
+ <span class="text">Pin Left</span>
687
+ </div>
688
+ </div>
689
+ <div
690
+ (click)="pinColumn(col, $index, 'right')"
691
+ class="right_click_item"
692
+ >
693
+ <div class="left_item">
694
+ @if (
695
+ pinActionClicked[col.colId] === "right"
696
+ ) {
697
+ <img src="images/check.svg" />
698
+ } @else {
699
+ <img src="" alt="" />
700
+ }
701
+ <span class="text">Pin Right</span>
702
+ </div>
703
+ </div>
704
+ </div>
705
+ }
706
+ </div>
707
+ </div>
708
+
709
+ <!-- <div
710
+ class="right_click_item"
711
+ (click)="pinColumn(col, $index, 'left')"
712
+ >
713
+ <div class="left_item">
714
+ <img src="images/pin.svg" />
715
+ <span class="text">{{
716
+ col.leftPinned ? "Unpin Left Column" : "Pin Column Left"
717
+ }}</span>
718
+ </div>
719
+ </div>
720
+ <div
721
+ class="right_click_item"
722
+ (click)="pinColumn(col, $index, 'right')"
723
+ >
724
+ <div class="left_item">
725
+ <img src="images/pin.svg" />
726
+ <span class="text">
727
+ {{
728
+ col.rightPinned
729
+ ? "Unpin Right Column"
730
+ : "Pin Column Right"
731
+ }}
732
+ </span>
733
+ </div>
734
+ <div class="right_item">
735
+ <img src="images/arrow-right.svg" alt="" />
736
+ </div>
737
+ </div> -->
738
+ <div class="right_click_item">
739
+ <div class="left_item">
740
+ <img src="" alt="" />
741
+ <span class="text">Autosize This Column</span>
742
+ </div>
743
+ </div>
744
+ <div class="right_click_item">
745
+ <div class="left_item">
746
+ <img src="" alt="" />
747
+ <span class="text">Autosize All Columns</span>
748
+ </div>
749
+ </div>
750
+ <div
751
+ class="right_click_item"
752
+ [ngClass]="{ disabled_option: !groupByRequired }"
753
+ >
754
+ <div
755
+ class="left_item"
756
+ (click)="groupByColumnAction(col, $index)"
757
+ >
758
+ <img src="images/t-group-by-name.svg" alt="" />
759
+ <span class="text"
760
+ >Group by {{ col.headerName }}</span
761
+ >
762
+ </div>
763
+ </div>
764
+ <div class="right_click_item">
765
+ <div class="left_item">
766
+ <img src="images/t-choose-column.svg" alt="" />
767
+ <span class="text">Choose Columns</span>
768
+ </div>
769
+ </div>
770
+ <div class="right_click_item">
771
+ <div class="left_item">
772
+ <img src="" alt="" />
773
+ <span class="text">Reset Columns</span>
774
+ </div>
775
+ </div>
776
+ </div>
777
+ </div>
778
+ }
779
+ </th>
780
+ }
781
+ }
782
+ </tr>
783
+ </thead>
784
+ <tbody>
785
+ @if (groupedResult && groupedResult.length > 0) {
786
+ @for (group of groupedResult; track group.key) {
787
+ <tr (click)="toggleGroup(group)">
788
+ <td
789
+ class="group-cell"
790
+ [attr.colspan]="
791
+ colDefs.length +
792
+ (checkBoxSelection ? 1 : 0) +
793
+ (activeGroups.length > 0 ? 1 : 0)
794
+ "
795
+ >
796
+ <span class="group-toggle">
797
+ <img
798
+ src="images/{{
799
+ group.expanded
800
+ ? 'chevron-down.svg'
801
+ : 'chevron-right.svg'
802
+ }}"
803
+ />
804
+ {{ group.key }} ({{ group.children.length }})
805
+ </span>
806
+ </td>
807
+ </tr>
808
+
809
+ @if (group.expanded) {
810
+ <!-- CASE 1: CHILDREN ARE MORE GROUPS -->
811
+ @if (group.children[0]?.children) {
812
+ @for (child of group.children; track child.key) {
813
+ <ng-container
814
+ [ngTemplateOutlet]="groupTemplate"
815
+ [ngTemplateOutletContext]="{
816
+ $implicit: child,
817
+ colDefs: colDefs,
818
+ checkBoxSelection: checkBoxSelection,
819
+ activeGroups: activeGroups,
820
+ level: 1,
821
+ }"
822
+ ></ng-container>
823
+ }
824
+ }
825
+
826
+ <!-- CASE 2: CHILDREN ARE RAW ROWS -->
827
+ @if (!group.children[0]?.children) {
828
+ @for (row of group.children; track row.rowId) {
829
+ <tr [ngClass]="row | addClass: tableOptions">
830
+ <!-- Checkbox column if any -->
831
+ @if (checkBoxSelection) {
832
+ <td>
833
+ <span class="checkbox_container">
834
+ <input
835
+ class="custom_check_box"
836
+ type="checkbox"
837
+ [checked]="row.isSelected"
838
+ /></span>
839
+ </td>
840
+ }
841
+ @if (activeGroups.length > 0) {
842
+ <td class="group-placeholder"></td>
843
+ }
844
+
845
+ <!-- Render columns -->
846
+ @for (col of colDefs; track col.colId) {
847
+ <td
848
+ [ngStyle]="getStyle(col)"
849
+ [ngClass]="[
850
+ col?.addClass ? col.addClass(row) : '',
851
+ col.leftPinned || col.rightPinned
852
+ ? 'pinned_column'
853
+ : '',
854
+ ]"
855
+ >
856
+ <!-- {{ row[col.fieldName] }} -->
857
+ @if (!col?.cellRenderer) {
858
+ <div class="cell-value ellipsis">
859
+ <div
860
+ class="more_data_wrapper"
861
+ [ngClass]="{ ellipsis: !col.wrapText }"
862
+ >
863
+ {{ parseColValue(row, col) }}
864
+ </div>
865
+ <div class="see_more_data" id="table_scroll">
866
+ <div class="item">
867
+ <span class="desc">
868
+ {{ parseColValue(row, col) }}</span
869
+ >
870
+ </div>
871
+ </div>
872
+ </div>
873
+ } @else {
874
+ <div
875
+ [rowParam]="row"
876
+ [col]="col"
877
+ [api]="tableOptions"
878
+ [currentValue]="row[col.fieldName]"
879
+ appRendererParser
880
+ ></div>
881
+ }
882
+ </td>
883
+ }
884
+ </tr>
885
+ }
886
+ }
887
+ }
888
+ }
889
+ } @else {
890
+ @for (data of rowData; track data.rowId) {
891
+ <tr
892
+ [ngClass]="data | addClass: tableOptions"
893
+ (dragover)="allowRowDrop($event)"
894
+ (drop)="dropRow(data)"
895
+ >
896
+ @if (checkBoxSelection && atLeastOneColumnChecked) {
897
+ <td style="min-width: 50px">
898
+ @if (checkboxSelectionType == "multiple") {
899
+ <span class="checkbox_container"
900
+ ><input
901
+ type="checkbox"
902
+ class="pointer custom_check_box"
903
+ name=""
904
+ id="{{ data.rowId }}"
905
+ [disabled]="data.isLocked"
906
+ [checked]="data.isSelected || data.isLocked"
907
+ (change)="onRowCheckboxSelection($event)"
908
+ /></span>
909
+ } @else {
910
+ <span class="radio_option">
911
+ <input
912
+ type="radio"
913
+ name=""
914
+ id="{{ data.rowId }}"
915
+ [checked]="data?.isSelected"
916
+ (change)="onRowCheckboxSelection($event)"
917
+ />
918
+ <label [for]="data.rowId"></label>
919
+ </span>
920
+ }
921
+ </td>
922
+ }
923
+ @for (col of colDefs; track col.colId) {
924
+ @if (col.active) {
925
+ <td
926
+ [ngStyle]="getStyle(col)"
927
+ [ngClass]="[
928
+ col?.addClass ? col.addClass(data) : '',
929
+ col.leftPinned || col.rightPinned
930
+ ? 'pinned_column'
931
+ : '',
932
+ ]"
933
+ class="table_cell"
934
+ >
935
+ <div class="col_wrapper">
936
+ @if (col?.fieldName === firstCol?.fieldName) {
937
+ <div
938
+ [draggable]="true"
939
+ (dragstart)="dragRow($event, data)"
940
+ class="gripper"
941
+ >
942
+ <img src="images/gripper.svg" />
943
+ </div>
944
+ }
945
+
946
+ @if (!col?.cellRenderer) {
947
+ <div class="cell-value ellipsis">
948
+ <div
949
+ class="more_data_wrapper"
950
+ [ngClass]="{ ellipsis: !col.wrapText }"
951
+ >
952
+ {{ parseColValue(data, col) }}
953
+ </div>
954
+ <div class="see_more_data" id="table_scroll">
955
+ <div class="item">
956
+ <span class="desc">
957
+ {{ parseColValue(data, col) }}</span
958
+ >
959
+ </div>
960
+ </div>
961
+ </div>
962
+ } @else {
963
+ <div
964
+ [rowParam]="data"
965
+ [col]="col"
966
+ [api]="tableOptions"
967
+ [currentValue]="data[col.fieldName]"
968
+ appRendererParser
969
+ ></div>
970
+ }
971
+ </div>
972
+ <!-- Commented for later use -->
973
+ <!-- <div class="tool_tip">
974
+ <span class=""> {{ parseColValue(data, col.fieldName) }}aditya </span>
975
+ </div> -->
976
+ </td>
977
+ }
978
+ }
979
+ </tr>
980
+ }
981
+ }
982
+ </tbody>
983
+
984
+ <ng-template
985
+ #groupTemplate
986
+ let-node
987
+ let-colDefs="colDefs"
988
+ let-checkBoxSelection="checkBoxSelection"
989
+ let-activeGroups="activeGroups"
990
+ let-level="level"
991
+ >
992
+ <!-- GROUP HEADER -->
993
+ <tr (click)="toggleGroup(node)">
994
+ <td
995
+ [attr.colspan]="
996
+ colDefs.length +
997
+ (checkBoxSelection ? 1 : 0) +
998
+ (activeGroups.length > 0 ? 1 : 0)
999
+ "
1000
+ [style.paddingLeft.px]="level * 20"
1001
+ class="group-cell"
1002
+ >
1003
+ <span class="group-toggle">
1004
+ <img
1005
+ src="images/{{
1006
+ node.expanded ? 'chevron-down.svg' : 'chevron-right.svg'
1007
+ }}"
1008
+ />
1009
+ {{ node.key }} ({{ node.children.length }})
1010
+ </span>
1011
+ </td>
1012
+ </tr>
1013
+
1014
+ <!-- CHILDREN -->
1015
+ @if (node.expanded) {
1016
+ <!-- CASE: more groups -->
1017
+ @if (node.children[0]?.children) {
1018
+ @for (child of node.children; track child.key) {
1019
+ <ng-container
1020
+ [ngTemplateOutlet]="groupTemplate"
1021
+ [ngTemplateOutletContext]="{
1022
+ $implicit: child,
1023
+ colDefs: colDefs,
1024
+ checkBoxSelection: checkBoxSelection,
1025
+ activeGroups: activeGroups,
1026
+ level: level + 1,
1027
+ }"
1028
+ >
1029
+ </ng-container>
1030
+ }
1031
+ }
1032
+
1033
+ <!-- CASE: final rows -->
1034
+ @if (!node.children[0]?.children) {
1035
+ @for (row of node.children; track row.rowId) {
1036
+ <tr [ngClass]="row | addClass: tableOptions">
1037
+ <!-- Checkbox column if any -->
1038
+ @if (checkBoxSelection) {
1039
+ <td>
1040
+ <span class="checkbox_container">
1041
+ <input
1042
+ type="checkbox custom_check_box"
1043
+ [checked]="row.isSelected"
1044
+ /></span>
1045
+ </td>
1046
+ }
1047
+ @if (activeGroups.length > 0) {
1048
+ <td class="group-placeholder"></td>
1049
+ }
1050
+
1051
+ <!-- Render columns -->
1052
+ @for (col of colDefs; track col.colId) {
1053
+ <td
1054
+ [ngStyle]="getStyle(col)"
1055
+ [ngClass]="[
1056
+ col.leftPinned || col.rightPinned
1057
+ ? 'pinned_column'
1058
+ : '',
1059
+ ]"
1060
+ >
1061
+ <!-- {{ row[col.fieldName] }} -->
1062
+ @if (!col?.cellRenderer) {
1063
+ <div class="cell-value ellipsis">
1064
+ <div
1065
+ class="more_data_wrapper"
1066
+ [ngClass]="{ ellipsis: !col.wrapText }"
1067
+ >
1068
+ {{ parseColValue(row, col) }}
1069
+ </div>
1070
+ <div class="see_more_data" id="table_scroll">
1071
+ <div class="item">
1072
+ <span class="desc">
1073
+ {{ parseColValue(row, col) }}</span
1074
+ >
1075
+ </div>
1076
+ </div>
1077
+ </div>
1078
+ } @else {
1079
+ <div
1080
+ [rowParam]="row"
1081
+ [col]="col"
1082
+ [api]="tableOptions"
1083
+ [currentValue]="row[col.fieldName]"
1084
+ appRendererParser
1085
+ ></div>
1086
+ }
1087
+ </td>
1088
+ }
1089
+ </tr>
1090
+ }
1091
+ }
1092
+ }
1093
+ </ng-template>
1094
+ </table>
1095
+
1096
+ @if (
1097
+ (!rowData || rowData.length === 0) &&
1098
+ (!groupedResult || groupedResult.length === 0)
1099
+ ) {
1100
+ <div class="empty_overlay">
1101
+ <div class="empty_content">
1102
+ @if (tableOptions?.noDataTemplate) {
1103
+ <ng-container
1104
+ *ngTemplateOutlet="tableOptions.noDataTemplate"
1105
+ ></ng-container>
1106
+ } @else {
1107
+ <span>No Data To Show</span>
1108
+ }
1109
+ </div>
1110
+ </div>
1111
+ }
1112
+ </div>
1113
+ </div>
1114
+ <!-- Table Wrapper Ends-->
1115
+ @if (paginationRequired) {
1116
+ <div class="pagination_main">
1117
+ <div class="entries_details">
1118
+ <span>Showing</span>
1119
+ <div class="pagination_select">
1120
+ <div
1121
+ class="select_dropdown pointer"
1122
+ (click)="showPageSizeList = !showPageSizeList"
1123
+ >
1124
+ <p class="select_text mb-0">{{ pageDetails.pageSize }}</p>
1125
+ <span class="chevron_img">
1126
+ <img src="images/chevron-down.svg" class="pointer" />
1127
+ </span>
1128
+ </div>
1129
+ @if (showPageSizeList) {
1130
+ <div
1131
+ class="select_option"
1132
+ appOutsideClick
1133
+ (clickOutside)="onClickOutside()"
1134
+ >
1135
+ @for (option of pageSizeList; track $index) {
1136
+ <span
1137
+ class="pointer"
1138
+ (click)="onPageSizeChanged(option); onClickOutside()"
1139
+ >{{ option }}</span
1140
+ >
1141
+ }
1142
+ </div>
1143
+ }
1144
+ </div>
1145
+ <span
1146
+ >Rows |
1147
+ {{ totalRecords > 0 ? convertToNumber(recordsToShow.min) + 1 : 0 }} -
1148
+ {{
1149
+ recordsToShow.max > totalRecords ? totalRecords : recordsToShow.max
1150
+ }}
1151
+ of
1152
+ {{ totalRecords }} Entries</span
1153
+ >
1154
+ </div>
1155
+ <div class="pagination_form">
1156
+ <!-- <span>Page</span> -->
1157
+
1158
+ <button class="outlined_btn first_btn disable_btn" type="button">
1159
+ <span> <img src="images/chevrons-left.svg" alt="" /> </span>
1160
+ </button>
1161
+ <button
1162
+ class="outlined_btn prev_btn"
1163
+ [ngClass]="pageDetails.currentPage > 1 ? '' : 'disable_btn'"
1164
+ type="button"
1165
+ (click)="onBtPrevClick()"
1166
+ >
1167
+ <span> <img src="images/chevron-left.svg" alt="" /> </span>
1168
+ </button>
1169
+ <div>
1170
+ <input
1171
+ class="input_style"
1172
+ type="number"
1173
+ [(ngModel)]="pageDetails.currentPage"
1174
+ (change)="goToSelectedPage($event)"
1175
+ name=""
1176
+ id=""
1177
+ />
1178
+ </div>
1179
+ <button
1180
+ class="outlined_btn next_btn"
1181
+ type="button"
1182
+ [ngClass]="
1183
+ pageDetails.currentPage < pageDetails.totalPages
1184
+ ? ''
1185
+ : 'disable_btn'
1186
+ "
1187
+ (click)="onBtNextClick()"
1188
+ >
1189
+ <span> <img src="images/chevron-right.svg" alt="" /> </span>
1190
+ </button>
1191
+ <!-- <span>of {{ pageDetails.totalPages }}</span> -->
1192
+
1193
+ <button class="outlined_btn last_btn disable_btn" type="button">
1194
+ <span> <img src="images/chevrons-right.svg" alt="" /> </span>
1195
+ </button>
1196
+ </div>
1197
+ </div>
1198
+ }
1199
+ <!-- Pagination Ends -->
1200
+ </div>
1201
+
1202
+ <!-- cell right click code start here -->
1203
+ <div class="dropdown_wrapper d-none">
1204
+ <div class="right_click_dropdown">
1205
+ <div class="right_click_item">
1206
+ <div class="left_item">
1207
+ <img src="images/scissors.svg" />
1208
+ <span class="text">Cut</span>
1209
+ </div>
1210
+
1211
+ <span class="right_item">Ctrl+X</span>
1212
+ </div>
1213
+
1214
+ <div class="right_click_item">
1215
+ <div class="left_item">
1216
+ <img src="images/copy.svg" alt="" />
1217
+ <span class="text">Copy</span>
1218
+ </div>
1219
+
1220
+ <span class="right_item">Ctrl+C</span>
1221
+ </div>
1222
+
1223
+ <div class="right_click_item">
1224
+ <div class="left_item">
1225
+ <img src="images/copy.svg" alt="" />
1226
+ <span class="text">Copy with Headers</span>
1227
+ </div>
1228
+ <span class="right_item"></span>
1229
+ </div>
1230
+
1231
+ <div class="right_click_item">
1232
+ <div class="left_item">
1233
+ <img src="images/copy.svg" alt="" />
1234
+ <span class="text">Copy with Group Headers</span>
1235
+ </div>
1236
+ <span class="right_item"></span>
1237
+ </div>
1238
+
1239
+ <div class="right_click_item">
1240
+ <div class="left_item">
1241
+ <img src="images/clipboard.svg" alt="" />
1242
+ <span class="text">Paste</span>
1243
+ </div>
1244
+
1245
+ <span class="right_item">Ctrl+V</span>
1246
+ </div>
1247
+
1248
+ <div class="right_click_item active">
1249
+ <div class="left_item">
1250
+ <img src="images/bar-chart.svg" alt="" />
1251
+ <span class="text">Chart</span>
1252
+ </div>
1253
+ <img src="images/chevron-right.svg" alt="" />
1254
+ </div>
1255
+
1256
+ <div class="right_click_item">
1257
+ <div class="left_item">
1258
+ <img src="images/download.svg" alt="" />
1259
+ <span class="text">Export</span>
1260
+ </div>
1261
+
1262
+ <img src="images/chevron-right.svg" alt="" />
1263
+ </div>
1264
+ </div>
1265
+
1266
+ <!-- Chart section Start Here -->
1267
+ <div class="second_dropdown">
1268
+ <div class="right_click_item active">
1269
+ <div class="left_item">
1270
+ <span class="text">Column</span>
1271
+ </div>
1272
+ <img src="images/chevron-right.svg" alt="" />
1273
+ </div>
1274
+
1275
+ <div class="right_click_item">
1276
+ <div class="left_item">
1277
+ <span class="text">Bar</span>
1278
+ </div>
1279
+ <img src="images/chevron-right.svg" alt="" />
1280
+ </div>
1281
+
1282
+ <div class="right_click_item">
1283
+ <div class="left_item">
1284
+ <span class="text">Pie</span>
1285
+ </div>
1286
+ <img src="images/chevron-right.svg" alt="" />
1287
+ </div>
1288
+
1289
+ <div class="right_click_item">
1290
+ <div class="left_item">
1291
+ <span class="text">Line</span>
1292
+ </div>
1293
+ <img src="images/chevron-right.svg" alt="" />
1294
+ </div>
1295
+ <div class="right_click_item">
1296
+ <div class="left_item">
1297
+ <span class="text">Area</span>
1298
+ </div>
1299
+ <img src="images/chevron-right.svg" alt="" />
1300
+ </div>
1301
+
1302
+ <div class="right_click_item">
1303
+ <div class="left_item">
1304
+ <span class="text">XY(Scatter)</span>
1305
+ </div>
1306
+ <img src="images/chevron-right.svg" alt="" />
1307
+ </div>
1308
+
1309
+ <div class="right_click_item">
1310
+ <div class="left_item">
1311
+ <span class="text">Polar</span>
1312
+ </div>
1313
+ <img src="images/chevron-right.svg" alt="" />
1314
+ </div>
1315
+
1316
+ <div class="right_click_item">
1317
+ <div class="left_item">
1318
+ <span class="text">Stastical</span>
1319
+ </div>
1320
+ <img src="images/chevron-right.svg" alt="" />
1321
+ </div>
1322
+
1323
+ <div class="right_click_item">
1324
+ <div class="left_item">
1325
+ <span class="text">Hierarchical</span>
1326
+ </div>
1327
+ <img src="images/chevron-right.svg" alt="" />
1328
+ </div>
1329
+
1330
+ <div class="right_click_item">
1331
+ <div class="left_item">
1332
+ <span class="text">Specialized</span>
1333
+ </div>
1334
+ <img src="images/chevron-right.svg" alt="" />
1335
+ </div>
1336
+
1337
+ <div class="right_click_item">
1338
+ <div class="left_item">
1339
+ <span class="text">Funnel</span>
1340
+ </div>
1341
+ <img src="images/chevron-right.svg" alt="" />
1342
+ </div>
1343
+
1344
+ <div class="right_click_item">
1345
+ <div class="left_item">
1346
+ <span class="text">Combination</span>
1347
+ </div>
1348
+ <img src="images/chevron-right.svg" alt="" />
1349
+ </div>
1350
+ </div>
1351
+
1352
+ <!-- Export Section start Here -->
1353
+ <div class="export_section d-none">
1354
+ <div class="right_click_item active">
1355
+ <div class="left_item">
1356
+ <img src="images/file.svg" alt="" />
1357
+ <span class="text">CSV Report</span>
1358
+ </div>
1359
+ <img src="images/chevron-right.svg" alt="" />
1360
+ </div>
1361
+
1362
+ <div class="right_click_item">
1363
+ <div class="left_item">
1364
+ <img src="images/file.svg" alt="" />
1365
+ <span class="text">Excel Report</span>
1366
+ </div>
1367
+ <img src="images/chevron-right.svg" alt="" />
1368
+ </div>
1369
+ </div>
1370
+
1371
+ <!-- Column Group Section Start Here -->
1372
+ <div class="third_dropdown">
1373
+ <div class="right_click_item">
1374
+ <div class="left_item">
1375
+ <span class="text">Grouped</span>
1376
+ </div>
1377
+ </div>
1378
+ <div class="right_click_item">
1379
+ <div class="left_item">
1380
+ <span class="text">Stacked</span>
1381
+ </div>
1382
+ </div>
1383
+ <div class="right_click_item">
1384
+ <div class="left_item">
1385
+ <span class="text">100% Stacked</span>
1386
+ </div>
1387
+ </div>
1388
+ </div>
1389
+ </div>