cats-ui-lib 2.0.0 → 2.0.1

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 (367) hide show
  1. package/ng-package.json +18 -0
  2. package/package.json +11 -22
  3. package/src/lib/components/accordion/accordion-item/accordion-item.component.html +13 -0
  4. package/src/lib/components/accordion/accordion-item/accordion-item.component.scss +36 -0
  5. package/src/lib/components/accordion/accordion-item/accordion-item.component.ts +57 -0
  6. package/src/lib/components/accordion/accordion-item/index.ts +1 -0
  7. package/src/lib/components/accordion/accordion.component.html +3 -0
  8. package/src/lib/components/accordion/accordion.component.scss +6 -0
  9. package/src/lib/components/accordion/accordion.component.ts +30 -0
  10. package/src/lib/components/accordion/index.ts +2 -0
  11. package/src/lib/components/auto-complete-multi-select/auto-complete-multi-select.component.html +125 -0
  12. package/src/lib/components/auto-complete-multi-select/auto-complete-multi-select.component.scss +138 -0
  13. package/src/lib/components/auto-complete-multi-select/auto-complete-multi-select.component.ts +319 -0
  14. package/src/lib/components/auto-complete-multi-select/index.ts +1 -0
  15. package/src/lib/components/auto-complete-single-select/auto-complete-single-select.component.html +84 -0
  16. package/src/lib/components/auto-complete-single-select/auto-complete-single-select.component.scss +68 -0
  17. package/src/lib/components/auto-complete-single-select/auto-complete-single-select.component.ts +231 -0
  18. package/src/lib/components/auto-complete-single-select/index.ts +1 -0
  19. package/src/lib/components/checkbox-button/checkbox-button.component.html +43 -0
  20. package/src/lib/components/checkbox-button/checkbox-button.component.scss +65 -0
  21. package/src/lib/components/checkbox-button/checkbox-button.component.ts +185 -0
  22. package/src/lib/components/checkbox-button/index.ts +1 -0
  23. package/src/lib/components/date-time-picker/date-time-picker.component.html +179 -0
  24. package/src/lib/components/date-time-picker/date-time-picker.component.scss +305 -0
  25. package/src/lib/components/date-time-picker/date-time-picker.component.ts +591 -0
  26. package/src/lib/components/date-time-picker/index.ts +1 -0
  27. package/src/lib/components/input/index.ts +1 -0
  28. package/src/lib/components/input/input.component.html +27 -0
  29. package/src/lib/components/input/input.component.scss +43 -0
  30. package/src/lib/components/input/input.component.ts +133 -0
  31. package/src/lib/components/multi-select/index.ts +1 -0
  32. package/src/lib/components/multi-select/multi-select.component.html +107 -0
  33. package/src/lib/components/multi-select/multi-select.component.scss +195 -0
  34. package/src/lib/components/multi-select/multi-select.component.ts +283 -0
  35. package/src/lib/components/radio-button/index.ts +1 -0
  36. package/src/lib/components/radio-button/radio-button.component.html +22 -0
  37. package/src/lib/components/radio-button/radio-button.component.scss +86 -0
  38. package/src/lib/components/radio-button/radio-button.component.ts +137 -0
  39. package/src/lib/components/search-box/index.ts +1 -0
  40. package/src/lib/components/search-box/search-box.component.html +15 -0
  41. package/src/lib/components/search-box/search-box.component.scss +28 -0
  42. package/src/lib/components/search-box/search-box.component.ts +79 -0
  43. package/src/lib/components/single-select/index.ts +1 -0
  44. package/src/lib/components/single-select/single-select.component.html +124 -0
  45. package/src/lib/components/single-select/single-select.component.scss +134 -0
  46. package/src/lib/components/single-select/single-select.component.ts +264 -0
  47. package/src/lib/components/tabs/index.ts +4 -0
  48. package/src/lib/components/tabs/tab/tab-item/tab-item.component.html +1 -0
  49. package/src/lib/components/tabs/tab/tab-item/tab-item.component.scss +0 -0
  50. package/src/lib/components/tabs/tab/tab-item/tab-item.component.ts +14 -0
  51. package/src/lib/components/tabs/tab/tab.component.html +25 -0
  52. package/src/lib/components/tabs/tab/tab.component.scss +21 -0
  53. package/src/lib/components/tabs/tab/tab.component.ts +37 -0
  54. package/src/lib/components/tabs/tab-content.directive.ts +9 -0
  55. package/src/lib/components/tabs/tab-heading.directive.ts +9 -0
  56. package/src/lib/components/toogle-button/index.ts +1 -0
  57. package/src/lib/components/toogle-button/toogle-button.component.html +14 -0
  58. package/src/lib/components/toogle-button/toogle-button.component.scss +60 -0
  59. package/src/lib/components/toogle-button/toogle-button.component.ts +47 -0
  60. package/src/lib/directives/cats-ui-tooltip.directive.ts +132 -0
  61. package/src/lib/directives/outside-click.directive.ts +31 -0
  62. package/src/lib/modal/cats-ui.modal.ts +83 -0
  63. package/src/lib/services/cats-ui.service.spec.ts +16 -0
  64. package/src/lib/services/cats-ui.service.ts +9 -0
  65. package/{styles → src/lib/styles}/_utilities.scss +27 -0
  66. package/src/public-api.ts +21 -0
  67. package/tsconfig.lib.json +15 -0
  68. package/tsconfig.lib.prod.json +11 -0
  69. package/tsconfig.spec.json +15 -0
  70. package/fesm2022/cats-ui.mjs +0 -2558
  71. package/fesm2022/cats-ui.mjs.map +0 -1
  72. package/index.d.ts +0 -891
  73. /package/{assets → src/lib/assets}/images/activity.svg +0 -0
  74. /package/{assets → src/lib/assets}/images/airplay.svg +0 -0
  75. /package/{assets → src/lib/assets}/images/alert-circle.svg +0 -0
  76. /package/{assets → src/lib/assets}/images/alert-octagon.svg +0 -0
  77. /package/{assets → src/lib/assets}/images/alert-triangle.svg +0 -0
  78. /package/{assets → src/lib/assets}/images/align-center.svg +0 -0
  79. /package/{assets → src/lib/assets}/images/align-justify.svg +0 -0
  80. /package/{assets → src/lib/assets}/images/align-left.svg +0 -0
  81. /package/{assets → src/lib/assets}/images/align-right.svg +0 -0
  82. /package/{assets → src/lib/assets}/images/anchor.svg +0 -0
  83. /package/{assets → src/lib/assets}/images/aperture.svg +0 -0
  84. /package/{assets → src/lib/assets}/images/archive.svg +0 -0
  85. /package/{assets → src/lib/assets}/images/arrow-down-circle.svg +0 -0
  86. /package/{assets → src/lib/assets}/images/arrow-down-left.svg +0 -0
  87. /package/{assets → src/lib/assets}/images/arrow-down-right.svg +0 -0
  88. /package/{assets → src/lib/assets}/images/arrow-down.svg +0 -0
  89. /package/{assets → src/lib/assets}/images/arrow-left-circle.svg +0 -0
  90. /package/{assets → src/lib/assets}/images/arrow-left.svg +0 -0
  91. /package/{assets → src/lib/assets}/images/arrow-right-circle.svg +0 -0
  92. /package/{assets → src/lib/assets}/images/arrow-right.svg +0 -0
  93. /package/{assets → src/lib/assets}/images/arrow-up-circle.svg +0 -0
  94. /package/{assets → src/lib/assets}/images/arrow-up-left.svg +0 -0
  95. /package/{assets → src/lib/assets}/images/arrow-up-right.svg +0 -0
  96. /package/{assets → src/lib/assets}/images/arrow-up.svg +0 -0
  97. /package/{assets → src/lib/assets}/images/at-sign.svg +0 -0
  98. /package/{assets → src/lib/assets}/images/award.svg +0 -0
  99. /package/{assets → src/lib/assets}/images/bar-chart-2.svg +0 -0
  100. /package/{assets → src/lib/assets}/images/bar-chart.svg +0 -0
  101. /package/{assets → src/lib/assets}/images/battery-charging.svg +0 -0
  102. /package/{assets → src/lib/assets}/images/battery.svg +0 -0
  103. /package/{assets → src/lib/assets}/images/bell-off.svg +0 -0
  104. /package/{assets → src/lib/assets}/images/bell.svg +0 -0
  105. /package/{assets → src/lib/assets}/images/bluetooth.svg +0 -0
  106. /package/{assets → src/lib/assets}/images/bold.svg +0 -0
  107. /package/{assets → src/lib/assets}/images/book-open.svg +0 -0
  108. /package/{assets → src/lib/assets}/images/book.svg +0 -0
  109. /package/{assets → src/lib/assets}/images/bookmark.svg +0 -0
  110. /package/{assets → src/lib/assets}/images/box.svg +0 -0
  111. /package/{assets → src/lib/assets}/images/briefcase.svg +0 -0
  112. /package/{assets → src/lib/assets}/images/calendar.svg +0 -0
  113. /package/{assets → src/lib/assets}/images/camera-off.svg +0 -0
  114. /package/{assets → src/lib/assets}/images/camera.svg +0 -0
  115. /package/{assets → src/lib/assets}/images/cast.svg +0 -0
  116. /package/{assets → src/lib/assets}/images/check-circle.svg +0 -0
  117. /package/{assets → src/lib/assets}/images/check-square.svg +0 -0
  118. /package/{assets → src/lib/assets}/images/check.svg +0 -0
  119. /package/{assets → src/lib/assets}/images/chevron-down.svg +0 -0
  120. /package/{assets → src/lib/assets}/images/chevron-left.svg +0 -0
  121. /package/{assets → src/lib/assets}/images/chevron-right.svg +0 -0
  122. /package/{assets → src/lib/assets}/images/chevron-up.svg +0 -0
  123. /package/{assets → src/lib/assets}/images/chevrons-down.svg +0 -0
  124. /package/{assets → src/lib/assets}/images/chevrons-left.svg +0 -0
  125. /package/{assets → src/lib/assets}/images/chevrons-right.svg +0 -0
  126. /package/{assets → src/lib/assets}/images/chevrons-up.svg +0 -0
  127. /package/{assets → src/lib/assets}/images/chrome.svg +0 -0
  128. /package/{assets → src/lib/assets}/images/circle.svg +0 -0
  129. /package/{assets → src/lib/assets}/images/clipboard.svg +0 -0
  130. /package/{assets → src/lib/assets}/images/clock.svg +0 -0
  131. /package/{assets → src/lib/assets}/images/cloud-drizzle.svg +0 -0
  132. /package/{assets → src/lib/assets}/images/cloud-lightning.svg +0 -0
  133. /package/{assets → src/lib/assets}/images/cloud-off.svg +0 -0
  134. /package/{assets → src/lib/assets}/images/cloud-rain.svg +0 -0
  135. /package/{assets → src/lib/assets}/images/cloud-snow.svg +0 -0
  136. /package/{assets → src/lib/assets}/images/cloud.svg +0 -0
  137. /package/{assets → src/lib/assets}/images/code.svg +0 -0
  138. /package/{assets → src/lib/assets}/images/codepen.svg +0 -0
  139. /package/{assets → src/lib/assets}/images/codesandbox.svg +0 -0
  140. /package/{assets → src/lib/assets}/images/coffee.svg +0 -0
  141. /package/{assets → src/lib/assets}/images/columns.svg +0 -0
  142. /package/{assets → src/lib/assets}/images/command.svg +0 -0
  143. /package/{assets → src/lib/assets}/images/compass.svg +0 -0
  144. /package/{assets → src/lib/assets}/images/copy.svg +0 -0
  145. /package/{assets → src/lib/assets}/images/corner-down-left.svg +0 -0
  146. /package/{assets → src/lib/assets}/images/corner-down-right.svg +0 -0
  147. /package/{assets → src/lib/assets}/images/corner-left-down.svg +0 -0
  148. /package/{assets → src/lib/assets}/images/corner-left-up.svg +0 -0
  149. /package/{assets → src/lib/assets}/images/corner-right-down.svg +0 -0
  150. /package/{assets → src/lib/assets}/images/corner-right-up.svg +0 -0
  151. /package/{assets → src/lib/assets}/images/corner-up-left.svg +0 -0
  152. /package/{assets → src/lib/assets}/images/corner-up-right.svg +0 -0
  153. /package/{assets → src/lib/assets}/images/cpu.svg +0 -0
  154. /package/{assets → src/lib/assets}/images/credit-card.svg +0 -0
  155. /package/{assets → src/lib/assets}/images/crop.svg +0 -0
  156. /package/{assets → src/lib/assets}/images/crosshair.svg +0 -0
  157. /package/{assets → src/lib/assets}/images/database.svg +0 -0
  158. /package/{assets → src/lib/assets}/images/delete.svg +0 -0
  159. /package/{assets → src/lib/assets}/images/disc.svg +0 -0
  160. /package/{assets → src/lib/assets}/images/divide-circle.svg +0 -0
  161. /package/{assets → src/lib/assets}/images/divide-square.svg +0 -0
  162. /package/{assets → src/lib/assets}/images/divide.svg +0 -0
  163. /package/{assets → src/lib/assets}/images/dollar-sign.svg +0 -0
  164. /package/{assets → src/lib/assets}/images/download-cloud.svg +0 -0
  165. /package/{assets → src/lib/assets}/images/download.svg +0 -0
  166. /package/{assets → src/lib/assets}/images/dribbble.svg +0 -0
  167. /package/{assets → src/lib/assets}/images/droplet.svg +0 -0
  168. /package/{assets → src/lib/assets}/images/edit-2.svg +0 -0
  169. /package/{assets → src/lib/assets}/images/edit-3.svg +0 -0
  170. /package/{assets → src/lib/assets}/images/edit.svg +0 -0
  171. /package/{assets → src/lib/assets}/images/external-link.svg +0 -0
  172. /package/{assets → src/lib/assets}/images/eye-off.svg +0 -0
  173. /package/{assets → src/lib/assets}/images/eye.svg +0 -0
  174. /package/{assets → src/lib/assets}/images/facebook.svg +0 -0
  175. /package/{assets → src/lib/assets}/images/fast-forward.svg +0 -0
  176. /package/{assets → src/lib/assets}/images/feather.svg +0 -0
  177. /package/{assets → src/lib/assets}/images/figma.svg +0 -0
  178. /package/{assets → src/lib/assets}/images/file-minus.svg +0 -0
  179. /package/{assets → src/lib/assets}/images/file-plus.svg +0 -0
  180. /package/{assets → src/lib/assets}/images/file-text.svg +0 -0
  181. /package/{assets → src/lib/assets}/images/file.svg +0 -0
  182. /package/{assets → src/lib/assets}/images/film.svg +0 -0
  183. /package/{assets → src/lib/assets}/images/filter.svg +0 -0
  184. /package/{assets → src/lib/assets}/images/flag.svg +0 -0
  185. /package/{assets → src/lib/assets}/images/folder-minus.svg +0 -0
  186. /package/{assets → src/lib/assets}/images/folder-plus.svg +0 -0
  187. /package/{assets → src/lib/assets}/images/folder.svg +0 -0
  188. /package/{assets → src/lib/assets}/images/framer.svg +0 -0
  189. /package/{assets → src/lib/assets}/images/frown.svg +0 -0
  190. /package/{assets → src/lib/assets}/images/gift.svg +0 -0
  191. /package/{assets → src/lib/assets}/images/git-branch.svg +0 -0
  192. /package/{assets → src/lib/assets}/images/git-commit.svg +0 -0
  193. /package/{assets → src/lib/assets}/images/git-merge.svg +0 -0
  194. /package/{assets → src/lib/assets}/images/git-pull-request.svg +0 -0
  195. /package/{assets → src/lib/assets}/images/github.svg +0 -0
  196. /package/{assets → src/lib/assets}/images/gitlab.svg +0 -0
  197. /package/{assets → src/lib/assets}/images/globe.svg +0 -0
  198. /package/{assets → src/lib/assets}/images/grid.svg +0 -0
  199. /package/{assets → src/lib/assets}/images/hard-drive.svg +0 -0
  200. /package/{assets → src/lib/assets}/images/hash.svg +0 -0
  201. /package/{assets → src/lib/assets}/images/headphones.svg +0 -0
  202. /package/{assets → src/lib/assets}/images/heart.svg +0 -0
  203. /package/{assets → src/lib/assets}/images/help-circle.svg +0 -0
  204. /package/{assets → src/lib/assets}/images/hexagon.svg +0 -0
  205. /package/{assets → src/lib/assets}/images/home.svg +0 -0
  206. /package/{assets → src/lib/assets}/images/icon-checked.svg +0 -0
  207. /package/{assets → src/lib/assets}/images/image.svg +0 -0
  208. /package/{assets → src/lib/assets}/images/inbox.svg +0 -0
  209. /package/{assets → src/lib/assets}/images/indeterminate.svg +0 -0
  210. /package/{assets → src/lib/assets}/images/info.svg +0 -0
  211. /package/{assets → src/lib/assets}/images/instagram.svg +0 -0
  212. /package/{assets → src/lib/assets}/images/italic.svg +0 -0
  213. /package/{assets → src/lib/assets}/images/key.svg +0 -0
  214. /package/{assets → src/lib/assets}/images/layers.svg +0 -0
  215. /package/{assets → src/lib/assets}/images/layout.svg +0 -0
  216. /package/{assets → src/lib/assets}/images/life-buoy.svg +0 -0
  217. /package/{assets → src/lib/assets}/images/link-2.svg +0 -0
  218. /package/{assets → src/lib/assets}/images/link.svg +0 -0
  219. /package/{assets → src/lib/assets}/images/linkedin.svg +0 -0
  220. /package/{assets → src/lib/assets}/images/list.svg +0 -0
  221. /package/{assets → src/lib/assets}/images/loader.svg +0 -0
  222. /package/{assets → src/lib/assets}/images/lock.svg +0 -0
  223. /package/{assets → src/lib/assets}/images/log-in.svg +0 -0
  224. /package/{assets → src/lib/assets}/images/log-out.svg +0 -0
  225. /package/{assets → src/lib/assets}/images/mail.svg +0 -0
  226. /package/{assets → src/lib/assets}/images/map-pin.svg +0 -0
  227. /package/{assets → src/lib/assets}/images/map.svg +0 -0
  228. /package/{assets → src/lib/assets}/images/maximize-2.svg +0 -0
  229. /package/{assets → src/lib/assets}/images/maximize.svg +0 -0
  230. /package/{assets → src/lib/assets}/images/meh.svg +0 -0
  231. /package/{assets → src/lib/assets}/images/menu.svg +0 -0
  232. /package/{assets → src/lib/assets}/images/message-circle.svg +0 -0
  233. /package/{assets → src/lib/assets}/images/message-square.svg +0 -0
  234. /package/{assets → src/lib/assets}/images/mic-off.svg +0 -0
  235. /package/{assets → src/lib/assets}/images/mic.svg +0 -0
  236. /package/{assets → src/lib/assets}/images/minimize-2.svg +0 -0
  237. /package/{assets → src/lib/assets}/images/minimize.svg +0 -0
  238. /package/{assets → src/lib/assets}/images/minus-circle.svg +0 -0
  239. /package/{assets → src/lib/assets}/images/minus-square.svg +0 -0
  240. /package/{assets → src/lib/assets}/images/minus.svg +0 -0
  241. /package/{assets → src/lib/assets}/images/monitor.svg +0 -0
  242. /package/{assets → src/lib/assets}/images/moon.svg +0 -0
  243. /package/{assets → src/lib/assets}/images/more-horizontal.svg +0 -0
  244. /package/{assets → src/lib/assets}/images/more-vertical.svg +0 -0
  245. /package/{assets → src/lib/assets}/images/mouse-pointer.svg +0 -0
  246. /package/{assets → src/lib/assets}/images/move.svg +0 -0
  247. /package/{assets → src/lib/assets}/images/music.svg +0 -0
  248. /package/{assets → src/lib/assets}/images/navigation-2.svg +0 -0
  249. /package/{assets → src/lib/assets}/images/navigation.svg +0 -0
  250. /package/{assets → src/lib/assets}/images/octagon.svg +0 -0
  251. /package/{assets → src/lib/assets}/images/package.svg +0 -0
  252. /package/{assets → src/lib/assets}/images/paperclip.svg +0 -0
  253. /package/{assets → src/lib/assets}/images/pause-circle.svg +0 -0
  254. /package/{assets → src/lib/assets}/images/pause.svg +0 -0
  255. /package/{assets → src/lib/assets}/images/pen-tool.svg +0 -0
  256. /package/{assets → src/lib/assets}/images/percent.svg +0 -0
  257. /package/{assets → src/lib/assets}/images/phone-call.svg +0 -0
  258. /package/{assets → src/lib/assets}/images/phone-forwarded.svg +0 -0
  259. /package/{assets → src/lib/assets}/images/phone-incoming.svg +0 -0
  260. /package/{assets → src/lib/assets}/images/phone-missed.svg +0 -0
  261. /package/{assets → src/lib/assets}/images/phone-off.svg +0 -0
  262. /package/{assets → src/lib/assets}/images/phone-outgoing.svg +0 -0
  263. /package/{assets → src/lib/assets}/images/phone.svg +0 -0
  264. /package/{assets → src/lib/assets}/images/pie-chart.svg +0 -0
  265. /package/{assets → src/lib/assets}/images/play-circle.svg +0 -0
  266. /package/{assets → src/lib/assets}/images/play.svg +0 -0
  267. /package/{assets → src/lib/assets}/images/plus-circle.svg +0 -0
  268. /package/{assets → src/lib/assets}/images/plus-square.svg +0 -0
  269. /package/{assets → src/lib/assets}/images/plus.svg +0 -0
  270. /package/{assets → src/lib/assets}/images/pocket.svg +0 -0
  271. /package/{assets → src/lib/assets}/images/power.svg +0 -0
  272. /package/{assets → src/lib/assets}/images/printer.svg +0 -0
  273. /package/{assets → src/lib/assets}/images/radio.svg +0 -0
  274. /package/{assets → src/lib/assets}/images/refresh-ccw.svg +0 -0
  275. /package/{assets → src/lib/assets}/images/refresh-cw.svg +0 -0
  276. /package/{assets → src/lib/assets}/images/repeat.svg +0 -0
  277. /package/{assets → src/lib/assets}/images/rewind.svg +0 -0
  278. /package/{assets → src/lib/assets}/images/rotate-ccw.svg +0 -0
  279. /package/{assets → src/lib/assets}/images/rotate-cw.svg +0 -0
  280. /package/{assets → src/lib/assets}/images/rss.svg +0 -0
  281. /package/{assets → src/lib/assets}/images/save.svg +0 -0
  282. /package/{assets → src/lib/assets}/images/scissors.svg +0 -0
  283. /package/{assets → src/lib/assets}/images/search.svg +0 -0
  284. /package/{assets → src/lib/assets}/images/send.svg +0 -0
  285. /package/{assets → src/lib/assets}/images/server.svg +0 -0
  286. /package/{assets → src/lib/assets}/images/settings.svg +0 -0
  287. /package/{assets → src/lib/assets}/images/share-2.svg +0 -0
  288. /package/{assets → src/lib/assets}/images/share.svg +0 -0
  289. /package/{assets → src/lib/assets}/images/shield-off.svg +0 -0
  290. /package/{assets → src/lib/assets}/images/shield.svg +0 -0
  291. /package/{assets → src/lib/assets}/images/shopping-bag.svg +0 -0
  292. /package/{assets → src/lib/assets}/images/shopping-cart.svg +0 -0
  293. /package/{assets → src/lib/assets}/images/shuffle.svg +0 -0
  294. /package/{assets → src/lib/assets}/images/sidebar.svg +0 -0
  295. /package/{assets → src/lib/assets}/images/skip-back.svg +0 -0
  296. /package/{assets → src/lib/assets}/images/skip-forward.svg +0 -0
  297. /package/{assets → src/lib/assets}/images/slack.svg +0 -0
  298. /package/{assets → src/lib/assets}/images/slash.svg +0 -0
  299. /package/{assets → src/lib/assets}/images/sliders.svg +0 -0
  300. /package/{assets → src/lib/assets}/images/smartphone.svg +0 -0
  301. /package/{assets → src/lib/assets}/images/smile.svg +0 -0
  302. /package/{assets → src/lib/assets}/images/speaker.svg +0 -0
  303. /package/{assets → src/lib/assets}/images/square.svg +0 -0
  304. /package/{assets → src/lib/assets}/images/star.svg +0 -0
  305. /package/{assets → src/lib/assets}/images/stop-circle.svg +0 -0
  306. /package/{assets → src/lib/assets}/images/sun.svg +0 -0
  307. /package/{assets → src/lib/assets}/images/sunrise.svg +0 -0
  308. /package/{assets → src/lib/assets}/images/sunset.svg +0 -0
  309. /package/{assets → src/lib/assets}/images/table.svg +0 -0
  310. /package/{assets → src/lib/assets}/images/tablet.svg +0 -0
  311. /package/{assets → src/lib/assets}/images/tag.svg +0 -0
  312. /package/{assets → src/lib/assets}/images/target.svg +0 -0
  313. /package/{assets → src/lib/assets}/images/terminal.svg +0 -0
  314. /package/{assets → src/lib/assets}/images/thermometer.svg +0 -0
  315. /package/{assets → src/lib/assets}/images/thumbs-down.svg +0 -0
  316. /package/{assets → src/lib/assets}/images/thumbs-up.svg +0 -0
  317. /package/{assets → src/lib/assets}/images/toggle-left.svg +0 -0
  318. /package/{assets → src/lib/assets}/images/toggle-right.svg +0 -0
  319. /package/{assets → src/lib/assets}/images/tool.svg +0 -0
  320. /package/{assets → src/lib/assets}/images/trash-2.svg +0 -0
  321. /package/{assets → src/lib/assets}/images/trash.svg +0 -0
  322. /package/{assets → src/lib/assets}/images/trello.svg +0 -0
  323. /package/{assets → src/lib/assets}/images/trending-down.svg +0 -0
  324. /package/{assets → src/lib/assets}/images/trending-up.svg +0 -0
  325. /package/{assets → src/lib/assets}/images/triangle.svg +0 -0
  326. /package/{assets → src/lib/assets}/images/truck.svg +0 -0
  327. /package/{assets → src/lib/assets}/images/tv.svg +0 -0
  328. /package/{assets → src/lib/assets}/images/twitch.svg +0 -0
  329. /package/{assets → src/lib/assets}/images/twitter.svg +0 -0
  330. /package/{assets → src/lib/assets}/images/type.svg +0 -0
  331. /package/{assets → src/lib/assets}/images/umbrella.svg +0 -0
  332. /package/{assets → src/lib/assets}/images/underline.svg +0 -0
  333. /package/{assets → src/lib/assets}/images/unlock.svg +0 -0
  334. /package/{assets → src/lib/assets}/images/upload-cloud.svg +0 -0
  335. /package/{assets → src/lib/assets}/images/upload.svg +0 -0
  336. /package/{assets → src/lib/assets}/images/user-check.svg +0 -0
  337. /package/{assets → src/lib/assets}/images/user-minus.svg +0 -0
  338. /package/{assets → src/lib/assets}/images/user-plus.svg +0 -0
  339. /package/{assets → src/lib/assets}/images/user-x.svg +0 -0
  340. /package/{assets → src/lib/assets}/images/user.svg +0 -0
  341. /package/{assets → src/lib/assets}/images/users.svg +0 -0
  342. /package/{assets → src/lib/assets}/images/video-off.svg +0 -0
  343. /package/{assets → src/lib/assets}/images/video.svg +0 -0
  344. /package/{assets → src/lib/assets}/images/voicemail.svg +0 -0
  345. /package/{assets → src/lib/assets}/images/volume-1.svg +0 -0
  346. /package/{assets → src/lib/assets}/images/volume-2.svg +0 -0
  347. /package/{assets → src/lib/assets}/images/volume-x.svg +0 -0
  348. /package/{assets → src/lib/assets}/images/volume.svg +0 -0
  349. /package/{assets → src/lib/assets}/images/watch.svg +0 -0
  350. /package/{assets → src/lib/assets}/images/wifi-off.svg +0 -0
  351. /package/{assets → src/lib/assets}/images/wifi.svg +0 -0
  352. /package/{assets → src/lib/assets}/images/wind.svg +0 -0
  353. /package/{assets → src/lib/assets}/images/x-circle.svg +0 -0
  354. /package/{assets → src/lib/assets}/images/x-octagon.svg +0 -0
  355. /package/{assets → src/lib/assets}/images/x-square.svg +0 -0
  356. /package/{assets → src/lib/assets}/images/x.svg +0 -0
  357. /package/{assets → src/lib/assets}/images/youtube.svg +0 -0
  358. /package/{assets → src/lib/assets}/images/zap-off.svg +0 -0
  359. /package/{assets → src/lib/assets}/images/zap.svg +0 -0
  360. /package/{assets → src/lib/assets}/images/zoom-in.svg +0 -0
  361. /package/{assets → src/lib/assets}/images/zoom-out.svg +0 -0
  362. /package/{styles → src/lib/styles}/_fonts.scss +0 -0
  363. /package/{styles → src/lib/styles}/_functions.scss +0 -0
  364. /package/{styles → src/lib/styles}/_index.scss +0 -0
  365. /package/{styles → src/lib/styles}/_mixins.scss +0 -0
  366. /package/{styles → src/lib/styles}/_reset.scss +0 -0
  367. /package/{styles → src/lib/styles}/_variables.scss +0 -0
@@ -1,2558 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { Injectable, EventEmitter, forwardRef, Output, Input, Component, HostListener, ContentChild, ChangeDetectionStrategy, Directive, LOCALE_ID, Inject, TemplateRef } from '@angular/core';
3
- import * as i1 from '@angular/common';
4
- import { CommonModule, NgClass, DatePipe } from '@angular/common';
5
- import * as i2 from '@angular/forms';
6
- import { FormsModule, NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';
7
-
8
- class CatsUiService {
9
- constructor() { }
10
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: CatsUiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
11
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: CatsUiService, providedIn: 'root' });
12
- }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: CatsUiService, decorators: [{
14
- type: Injectable,
15
- args: [{
16
- providedIn: 'root'
17
- }]
18
- }], ctorParameters: () => [] });
19
-
20
- class InputComponent {
21
- inputConfig;
22
- onKeyDown = new EventEmitter();
23
- onKeyUp = new EventEmitter();
24
- value = '';
25
- disabled = false;
26
- touched = false;
27
- control = null;
28
- showPassword = false;
29
- onChange = (value) => { };
30
- onTouched = () => { };
31
- /**
32
- * @description Method to when value changes
33
- * @author Shiva Kant
34
- */
35
- handleInput(event) {
36
- const target = event.target;
37
- this.value = target.value;
38
- this.onChange(this.value);
39
- if (this.control) {
40
- this.control.markAsDirty();
41
- this.control.updateValueAndValidity();
42
- }
43
- }
44
- /**
45
- * @description Method to Handle key down event
46
- * @author Shiva Kant
47
- */
48
- handleKeyDown(event) {
49
- this.onKeyDown.emit({ value: this.value, ...event });
50
- }
51
- /**
52
- * @description Method to handle key up event
53
- * @author Shiva Kant
54
- */
55
- handleKeyUp(event) {
56
- this.onKeyUp.emit({ value: this.value, ...event });
57
- }
58
- /**
59
- * @description Method to Handle blur (touched
60
- * @author Shiva Kant
61
- */
62
- handleBlur(event) {
63
- this.touched = true;
64
- this.onTouched();
65
- const control = event.target?.control;
66
- control?.markAsTouched?.();
67
- }
68
- /**
69
- * @description Method to ControlValueAccessor methods
70
- * @author Shiva Kant
71
- */
72
- writeValue(value) {
73
- this.value = value ?? '';
74
- }
75
- registerOnChange(fn) {
76
- this.onChange = fn;
77
- }
78
- registerOnTouched(fn) {
79
- this.onTouched = fn;
80
- }
81
- setDisabledState(isDisabled) {
82
- this.disabled = isDisabled;
83
- }
84
- /**
85
- * @description Method to Validator interface
86
- * @author Shiva Kant
87
- */
88
- validate(control) {
89
- this.control = control;
90
- }
91
- /**
92
- * @description method to use show password
93
- * @author Shiva Kant
94
- */
95
- togglePassword() {
96
- this.showPassword = !this.showPassword;
97
- }
98
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: InputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
99
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: InputComponent, isStandalone: true, selector: "cats-ui-input", inputs: { inputConfig: "inputConfig" }, outputs: { onKeyDown: "onKeyDown", onKeyUp: "onKeyUp" }, providers: [
100
- {
101
- provide: NG_VALUE_ACCESSOR,
102
- useExisting: forwardRef(() => InputComponent),
103
- multi: true,
104
- },
105
- {
106
- provide: NG_VALIDATORS,
107
- useExisting: forwardRef(() => InputComponent),
108
- multi: true,
109
- },
110
- ], ngImport: i0, template: "<div class=\"input_container\">\r\n @if (inputConfig.label) {\r\n <label>{{ inputConfig.label }}</label>\r\n }\r\n <div class=\"custom-input\">\r\n <input\r\n class=\"input-box\"\r\n [type]=\"showPassword ? 'text' : inputConfig.type\"\r\n [placeholder]=\"inputConfig.placeholder\"\r\n [disabled]=\"disabled\"\r\n [(ngModel)]=\"value\"\r\n (input)=\"handleInput($event)\"\r\n (blur)=\"handleBlur($event)\"\r\n (keydown)=\"handleKeyDown($event)\"\r\n (keyup)=\"handleKeyUp($event)\"\r\n />\r\n <!-- Eye Icon Only When Type Is Password -->\r\n @if (inputConfig.type === 'password') {\r\n <span class=\"eye_icon\" (click)=\"togglePassword()\">\r\n <img\r\n [src]=\"showPassword ? 'images/eye.svg' : 'images/eye-off.svg'\"\r\n alt=\"toggle password visibility\"\r\n />\r\n </span>\r\n }\r\n </div>\r\n</div>\r\n", styles: [":root{--white: #ffffff;--white-50: rgba(255, 255, 255, .582);--black: #1f1f1f;--default: #000000;--black-900: #202224;--pagination-text: var(--neutral-500);--black-dust: #1a1a1a;--neutral-cross: #d9d9d9;--neutral-40: #d5d7da;--neutral-50: #f0f0f0;--neutral-100: #e6e7e8;--neutral-200: #dadbdc;--neutral-300: #c0c2c5;--neutral-400: #81858a;--neutral-500: #434a51;--neutral-600: #040d17;--neutral-900: #010306;--blue-700: #1c60af;--blue-600: #2680ea;--blue-400: #92bff4;--blue-100: #eaf3fd;--blue-300: #c8dff9;--blue-200: #dfecfc;--blue-50: #f7fafe;--blue-800: #1849d6;--grey-50: #e9eaeb;--grey-100: #e2e8f0;--grey-150: #d6d6d6;--grey-200: #64748b;--grey-300: #414651;--grey-400: #8080808c;--grey-600: #535862;--light-grey: #81858a;--dark-grey: #4a4a4a;--green-50: #f7fbf7;--green-100: #ecf4ec;--green-200: #2a6a2d;--green-400: #9bc69d;--green-600: #388e3c;--green-700: rgba(42, 106, 45, 1);--red: #ff0000;--red-50: #fdf7f7;--red-100: #f0c9c9;--red-200: #f7dfdf;--red-300: #f2f2f2;--red-700: #941e1e;--yellow-50: #fffdf5;--yellow-100: #fff5e6;--yellow-200: #fff6da;--yellow-300: #ffefc1;--yellow-400: #fff9e7;--yellow-500: #bf7200;--yellow-600: #ffc107;--yellow-700: #bf9105;--yellow-800: #806003;--yellow-900: #bf9105;--orange-50: rgba(255, 251, 245, 1);--orange-100: #fff5e6;--orange-200: #fff0d9;--orange-600: #ff9800;--orange-700: rgba(191, 114, 0, 1);--box-shadow: #0a0d1208;--box-shadow-100: #0000001f;--box-shadow-200: #0a0d1214;--grid-box-shadow: #0000000a;--model-shadow: rgba(0, 0, 0, .08);--canvas-shadow: #00000014;--chunk-shadow: #0a0d120d;--loader-border: #6f7b93;--modal-bg: rgba(4, 13, 23, .3);--checkbox-border: #0d6efd;--filter-600: rgba(0, 0, 0, .644);--feather-bg: #fafafa}html{font-size:12px}.pointer{cursor:pointer}.d-none{display:none}.textTruncate{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}button{border:calc(.0833333333rem / var(--scale)) solid transparent;padding:0 calc(2.3333333333rem / var(--scale));height:calc(4.6666666667rem / var(--scale));min-width:calc(11.8333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale));border-radius:calc(.6666666667rem / var(--scale));font-size:var(--fs-18);line-height:\"\";font-weight:600;cursor:pointer}button:focus-visible{outline:none;border:0}button i-feather.icon{display:flex}button.primary_btn{background-color:var(--blue-600);color:var(--white)}button.secondary_btn{background-color:var(--neutral-100);color:var(--neutral-500)}button.outline_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300)}button.disable{pointer-events:none;opacity:.6}button.fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-600)}button.disable_fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-300);pointer-events:none}button.bg_logic_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200)}button.no_outline_btn{background-color:var(--blue-50);color:var(--blue-600);outline:none}button .close_outline_btn{background-color:var(--blue-50);border:calc(.0833333333rem / var(--scale)) solid var(--blue-50);color:var(--blue-600)}:root{--fs-6: 6px;--fs-8: 8px;--fs-12: 12px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--fs-20: 20px;--fs-24: 24px;--fs-28: 28px;--fs-30: 30px;--fs-32: 32px;--fs-42: 42px;--fs-48: 48px;--img-w: 28px;--scale: 1}@media only screen and (min-width: 1024px) and (max-width: 1280px){:root{--scale: 1.5;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1360px) and (max-width: 1440px){:root{--scale: 1.33;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1536px) and (max-width: 1919px){:root{--scale: 1.25;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;font-family:Open Sans,sans-serif}body{font-size:100%}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}h1,h2,h3,h4,h5,h6,ul,ol p{margin:0;padding:0;text-wrap:pretty}ul[role=list],ol[role=list],ul{list-style:none}img,picture{max-width:100%;display:block}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--neutral-200);border-radius:8px}input,select,textarea{outline:none;box-shadow:none}.input_container{margin-bottom:calc(1rem / var(--scale))}.input_container label{font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:600;margin-bottom:calc(.6666666667rem / var(--scale))}.input_container .custom-input{position:relative;display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale))}.input_container .custom-input:has(span) input[type=text]{padding-right:calc(3.75rem / var(--scale))}.input_container .custom-input input{width:100%;height:calc(4.6666666667rem / var(--scale));padding:calc(1.3333333333rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.6666666667rem / var(--scale));font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400}.input_container .custom-input input[type=password]{padding-right:calc(3.75rem / var(--scale))}.input_container .custom-input input:focus{outline:none;border-color:var(--blue-700)}.input_container .custom-input input:disabled{background-color:var(--neutral-100);cursor:not-allowed}.input_container .custom-input .eye_icon{position:absolute;right:calc(1.3333333333rem / var(--scale))}.input_container .custom-input .eye_icon img{max-width:calc(1.6666666667rem / var(--scale));cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
111
- }
112
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: InputComponent, decorators: [{
113
- type: Component,
114
- args: [{ selector: 'cats-ui-input', standalone: true, imports: [CommonModule, FormsModule], providers: [
115
- {
116
- provide: NG_VALUE_ACCESSOR,
117
- useExisting: forwardRef(() => InputComponent),
118
- multi: true,
119
- },
120
- {
121
- provide: NG_VALIDATORS,
122
- useExisting: forwardRef(() => InputComponent),
123
- multi: true,
124
- },
125
- ], template: "<div class=\"input_container\">\r\n @if (inputConfig.label) {\r\n <label>{{ inputConfig.label }}</label>\r\n }\r\n <div class=\"custom-input\">\r\n <input\r\n class=\"input-box\"\r\n [type]=\"showPassword ? 'text' : inputConfig.type\"\r\n [placeholder]=\"inputConfig.placeholder\"\r\n [disabled]=\"disabled\"\r\n [(ngModel)]=\"value\"\r\n (input)=\"handleInput($event)\"\r\n (blur)=\"handleBlur($event)\"\r\n (keydown)=\"handleKeyDown($event)\"\r\n (keyup)=\"handleKeyUp($event)\"\r\n />\r\n <!-- Eye Icon Only When Type Is Password -->\r\n @if (inputConfig.type === 'password') {\r\n <span class=\"eye_icon\" (click)=\"togglePassword()\">\r\n <img\r\n [src]=\"showPassword ? 'images/eye.svg' : 'images/eye-off.svg'\"\r\n alt=\"toggle password visibility\"\r\n />\r\n </span>\r\n }\r\n </div>\r\n</div>\r\n", styles: [":root{--white: #ffffff;--white-50: rgba(255, 255, 255, .582);--black: #1f1f1f;--default: #000000;--black-900: #202224;--pagination-text: var(--neutral-500);--black-dust: #1a1a1a;--neutral-cross: #d9d9d9;--neutral-40: #d5d7da;--neutral-50: #f0f0f0;--neutral-100: #e6e7e8;--neutral-200: #dadbdc;--neutral-300: #c0c2c5;--neutral-400: #81858a;--neutral-500: #434a51;--neutral-600: #040d17;--neutral-900: #010306;--blue-700: #1c60af;--blue-600: #2680ea;--blue-400: #92bff4;--blue-100: #eaf3fd;--blue-300: #c8dff9;--blue-200: #dfecfc;--blue-50: #f7fafe;--blue-800: #1849d6;--grey-50: #e9eaeb;--grey-100: #e2e8f0;--grey-150: #d6d6d6;--grey-200: #64748b;--grey-300: #414651;--grey-400: #8080808c;--grey-600: #535862;--light-grey: #81858a;--dark-grey: #4a4a4a;--green-50: #f7fbf7;--green-100: #ecf4ec;--green-200: #2a6a2d;--green-400: #9bc69d;--green-600: #388e3c;--green-700: rgba(42, 106, 45, 1);--red: #ff0000;--red-50: #fdf7f7;--red-100: #f0c9c9;--red-200: #f7dfdf;--red-300: #f2f2f2;--red-700: #941e1e;--yellow-50: #fffdf5;--yellow-100: #fff5e6;--yellow-200: #fff6da;--yellow-300: #ffefc1;--yellow-400: #fff9e7;--yellow-500: #bf7200;--yellow-600: #ffc107;--yellow-700: #bf9105;--yellow-800: #806003;--yellow-900: #bf9105;--orange-50: rgba(255, 251, 245, 1);--orange-100: #fff5e6;--orange-200: #fff0d9;--orange-600: #ff9800;--orange-700: rgba(191, 114, 0, 1);--box-shadow: #0a0d1208;--box-shadow-100: #0000001f;--box-shadow-200: #0a0d1214;--grid-box-shadow: #0000000a;--model-shadow: rgba(0, 0, 0, .08);--canvas-shadow: #00000014;--chunk-shadow: #0a0d120d;--loader-border: #6f7b93;--modal-bg: rgba(4, 13, 23, .3);--checkbox-border: #0d6efd;--filter-600: rgba(0, 0, 0, .644);--feather-bg: #fafafa}html{font-size:12px}.pointer{cursor:pointer}.d-none{display:none}.textTruncate{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}button{border:calc(.0833333333rem / var(--scale)) solid transparent;padding:0 calc(2.3333333333rem / var(--scale));height:calc(4.6666666667rem / var(--scale));min-width:calc(11.8333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale));border-radius:calc(.6666666667rem / var(--scale));font-size:var(--fs-18);line-height:\"\";font-weight:600;cursor:pointer}button:focus-visible{outline:none;border:0}button i-feather.icon{display:flex}button.primary_btn{background-color:var(--blue-600);color:var(--white)}button.secondary_btn{background-color:var(--neutral-100);color:var(--neutral-500)}button.outline_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300)}button.disable{pointer-events:none;opacity:.6}button.fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-600)}button.disable_fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-300);pointer-events:none}button.bg_logic_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200)}button.no_outline_btn{background-color:var(--blue-50);color:var(--blue-600);outline:none}button .close_outline_btn{background-color:var(--blue-50);border:calc(.0833333333rem / var(--scale)) solid var(--blue-50);color:var(--blue-600)}:root{--fs-6: 6px;--fs-8: 8px;--fs-12: 12px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--fs-20: 20px;--fs-24: 24px;--fs-28: 28px;--fs-30: 30px;--fs-32: 32px;--fs-42: 42px;--fs-48: 48px;--img-w: 28px;--scale: 1}@media only screen and (min-width: 1024px) and (max-width: 1280px){:root{--scale: 1.5;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1360px) and (max-width: 1440px){:root{--scale: 1.33;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1536px) and (max-width: 1919px){:root{--scale: 1.25;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;font-family:Open Sans,sans-serif}body{font-size:100%}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}h1,h2,h3,h4,h5,h6,ul,ol p{margin:0;padding:0;text-wrap:pretty}ul[role=list],ol[role=list],ul{list-style:none}img,picture{max-width:100%;display:block}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--neutral-200);border-radius:8px}input,select,textarea{outline:none;box-shadow:none}.input_container{margin-bottom:calc(1rem / var(--scale))}.input_container label{font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:600;margin-bottom:calc(.6666666667rem / var(--scale))}.input_container .custom-input{position:relative;display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale))}.input_container .custom-input:has(span) input[type=text]{padding-right:calc(3.75rem / var(--scale))}.input_container .custom-input input{width:100%;height:calc(4.6666666667rem / var(--scale));padding:calc(1.3333333333rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.6666666667rem / var(--scale));font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400}.input_container .custom-input input[type=password]{padding-right:calc(3.75rem / var(--scale))}.input_container .custom-input input:focus{outline:none;border-color:var(--blue-700)}.input_container .custom-input input:disabled{background-color:var(--neutral-100);cursor:not-allowed}.input_container .custom-input .eye_icon{position:absolute;right:calc(1.3333333333rem / var(--scale))}.input_container .custom-input .eye_icon img{max-width:calc(1.6666666667rem / var(--scale));cursor:pointer}\n"] }]
126
- }], propDecorators: { inputConfig: [{
127
- type: Input
128
- }], onKeyDown: [{
129
- type: Output
130
- }], onKeyUp: [{
131
- type: Output
132
- }] } });
133
-
134
- class SingleSelectConfig {
135
- idField = 'id';
136
- textField = 'name';
137
- disabledField = '';
138
- placeholder = 'Select Option';
139
- prefixLabel = '';
140
- enableSearch = false;
141
- required = false;
142
- }
143
- class MultiSelectConfig {
144
- idField = 'id';
145
- textField = 'name';
146
- disabledField = '';
147
- placeholder = 'Select Option';
148
- prefixLabel = '';
149
- enableSearch = false;
150
- chipLimit = 2;
151
- selectAll = true;
152
- required = false;
153
- }
154
- class SearchConfig {
155
- serachValue = '';
156
- placeholder = 'Search';
157
- }
158
- class InputConfig {
159
- type = 'text';
160
- placeholder = '';
161
- label = '';
162
- }
163
- class AutoCompleteSingleSelectConfig {
164
- idField = 'id';
165
- textField = 'name';
166
- disabledField = '';
167
- placeholder = 'Enter or Select';
168
- required = false;
169
- customInput = false;
170
- }
171
- class AutoCompleteMultiSelectConfig {
172
- idField = 'id';
173
- textField = 'name';
174
- disabledField = '';
175
- selectAll = true;
176
- placeholder = 'Enter or Select';
177
- required = false;
178
- chipLimit = 2;
179
- customInput = false;
180
- pattern = '';
181
- }
182
- class ToggleConfig {
183
- checked = false;
184
- disabled = false;
185
- }
186
- class CheckBoxSubtask {
187
- idField = '';
188
- textField = '';
189
- checked = false;
190
- }
191
- class CheckBoxConfig {
192
- idField = '';
193
- textField = '';
194
- disabledField = '';
195
- name = '';
196
- checked = false;
197
- subtasks;
198
- }
199
-
200
- const noop$1 = () => { };
201
- const SINGLE_SELECT_CONTROL_VALUE_ACCESSOR = {
202
- provide: NG_VALUE_ACCESSOR,
203
- useExisting: forwardRef(() => SingleSelectComponent),
204
- multi: true,
205
- };
206
- const SINGLE_SELECT_CONTROL_VALUE_VALIDATOR = {
207
- provide: NG_VALIDATORS,
208
- useExisting: forwardRef(() => SingleSelectComponent),
209
- multi: true,
210
- };
211
- class SingleSelectComponent {
212
- cd;
213
- el;
214
- optionList = [];
215
- singleSelectConfig = new SingleSelectConfig();
216
- selectedOption;
217
- onSelection = new EventEmitter();
218
- showDropdown = false;
219
- searchText = '';
220
- inValid = false;
221
- control;
222
- disableControl = false;
223
- onScroll = new EventEmitter();
224
- parentNativeElement;
225
- selectedData;
226
- constructor(cd, el) {
227
- this.cd = cd;
228
- this.el = el;
229
- }
230
- // These lifecycle hooks will be in use for further implementation
231
- ngOnInit() { }
232
- ngOnChanges(_changes) {
233
- if (!_changes['optionList']?.currentValue) {
234
- this.optionList = [];
235
- }
236
- else {
237
- if (this.optionList.length > 10)
238
- this.singleSelectConfig.enableSearch = true;
239
- this.writeValue(this.control?.value);
240
- }
241
- }
242
- /**
243
- * @description Method to toggle dropdown list
244
- * @author Shiva Kant
245
- */
246
- toggleDropdown() {
247
- this.showDropdown = !this.showDropdown;
248
- if (this.parentNativeElement) {
249
- this.parentNativeElement.scrollIntoView({
250
- behavior: 'smooth',
251
- block: 'center',
252
- });
253
- let parentDiv = document.getElementById(this.parentNativeElement);
254
- setTimeout(() => {
255
- let parentBoundary = parentDiv?.getBoundingClientRect() || {};
256
- let dropdonwList = document.getElementById('container_scroll');
257
- let elBoundary = dropdonwList?.getBoundingClientRect() || {};
258
- if (parentBoundary?.['bottom'] < elBoundary?.['bottom']) {
259
- dropdonwList.style['transform'] = `translate(0px,-${elBoundary?.['height'] + 54}px`;
260
- }
261
- }, 20);
262
- }
263
- }
264
- /**
265
- * @description Method to check if provide arg is an object or not
266
- * @author Shiva Kant
267
- * @param Obj:any
268
- * @returns boolean
269
- */
270
- isObjEmpty(obj) {
271
- if (typeof obj == 'string' || typeof obj == 'number')
272
- return true;
273
- return !(obj && Object.keys(obj).length > 0);
274
- }
275
- /**
276
- * @description Method is to update selected option and then
277
- * update formcontrol by call onChangeCallback.
278
- * @author Shiva Kant
279
- * @param item
280
- * @returns void
281
- */
282
- updateSelectedOption(item) {
283
- this.selectedOption = item;
284
- this.toggleDropdown();
285
- this.inValid = false;
286
- this.onChangeCallback(item);
287
- this.onTouchedCallback();
288
- this.onSelection.emit(item);
289
- }
290
- validate(control) {
291
- this.control = control;
292
- }
293
- // Below Methods are used to register form API methods in these variable to use them later
294
- onTouchedCallback = noop$1;
295
- onChangeCallback = noop$1;
296
- // Below are the CVA interface methods to make this component able to bind with formcontrol in parent component
297
- /**
298
- * @description method to update value of selectedOption
299
- * @author Shiva Kant
300
- * @param obj this is provided by formcontrol
301
- * @returns void
302
- */
303
- writeValue(obj) {
304
- this.selectedOption = '';
305
- if (this.optionList.length && obj) {
306
- if (typeof obj === 'string' || typeof obj === 'number') {
307
- if (typeof this.optionList?.[0] === 'string' ||
308
- typeof this.optionList?.[0] === 'number') {
309
- if (this.optionList.includes(obj)) {
310
- this.selectedOption = obj;
311
- }
312
- }
313
- else if (obj != '') {
314
- for (const option of this.optionList) {
315
- if (option[this.singleSelectConfig.idField] == obj ||
316
- option[this.singleSelectConfig.textField] == obj) {
317
- this.selectedOption = option;
318
- break;
319
- }
320
- }
321
- }
322
- }
323
- else {
324
- if (obj?.hasOwnProperty(this.singleSelectConfig.idField) &&
325
- !this.isObjEmpty(this.optionList[0])) {
326
- for (const option of this.optionList) {
327
- if (option[this.singleSelectConfig.idField] ==
328
- obj[this.singleSelectConfig.idField]) {
329
- this.selectedOption = option;
330
- break;
331
- }
332
- }
333
- }
334
- }
335
- setTimeout(() => {
336
- this.onChangeCallback(this.selectedOption);
337
- }, 0);
338
- this.cd.markForCheck();
339
- }
340
- }
341
- /**
342
- * @description method to register on change callback from form API
343
- * @author Shiva Kant
344
- * @param fn
345
- * @returns void
346
- */
347
- registerOnChange(fn) {
348
- this.onChangeCallback = fn;
349
- }
350
- /**
351
- * @description method to register on touch callback from form API
352
- * @author Shiva Kant
353
- * @param fn
354
- * @returns void
355
- */
356
- registerOnTouched(fn) {
357
- this.onTouchedCallback = fn;
358
- }
359
- //willbe used in further implementation
360
- setDisabledState(isDisabled) {
361
- this.disableControl = isDisabled;
362
- }
363
- /**
364
- * @description method to update ontouchcallback on blur
365
- * @author Shiva Kant
366
- */
367
- onTouched() {
368
- this.onTouchedCallback();
369
- }
370
- /**
371
- * @description method to toggle dropdown on outside click
372
- * @author Shiva Kant
373
- */
374
- closeDropdown(event) {
375
- if (!this.el.nativeElement.contains(event.target)) {
376
- if (this.showDropdown && this.singleSelectConfig.required) {
377
- this.inValid =
378
- this.selectedOption == '' ||
379
- JSON.stringify(this.selectedOption) == '{}';
380
- }
381
- if (this.showDropdown)
382
- this.onTouchedCallback();
383
- this.showDropdown = false;
384
- }
385
- }
386
- /**
387
- * @description method to load more list
388
- * @author Shiva Kant
389
- * @param event
390
- */
391
- onDivScroll(event) {
392
- if (event.target.offsetHeight + event.target.scrollTop >=
393
- event.target.scrollHeight - 1 &&
394
- this.optionList.length) {
395
- this.onScroll.emit();
396
- }
397
- }
398
- get filteredOptionsValue() {
399
- if (!this.searchText || this.searchText.trim() === '') {
400
- return this.optionList;
401
- }
402
- return this.optionList.filter((option) => {
403
- if (typeof option != 'object') {
404
- return option?.toLowerCase().includes(this.searchText.toLowerCase());
405
- }
406
- else {
407
- return option[this.singleSelectConfig.textField]
408
- ?.toLowerCase()
409
- .includes(this.searchText.toLowerCase());
410
- }
411
- });
412
- }
413
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: SingleSelectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
414
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: SingleSelectComponent, isStandalone: true, selector: "cats-ui-single-select", inputs: { optionList: "optionList", singleSelectConfig: "singleSelectConfig", selectedOption: "selectedOption", parentNativeElement: "parentNativeElement" }, outputs: { onSelection: "onSelection", onScroll: "onScroll" }, host: { attributes: { "tabindex": "0" }, listeners: { "blur": "onTouched()", "document:click": "closeDropdown($event)" } }, providers: [
415
- {
416
- provide: NG_VALUE_ACCESSOR,
417
- useExisting: SingleSelectComponent,
418
- multi: true,
419
- },
420
- SINGLE_SELECT_CONTROL_VALUE_VALIDATOR,
421
- ], queries: [{ propertyName: "selectedData", first: true, predicate: ["selectedData"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"main-wrapper\" id=\"main-wrapper-single-select\">\r\n <div\r\n class=\"single-select-dropdown\"\r\n (click)=\"toggleDropdown()\"\r\n [ngClass]=\"{\r\n 'border-danger':\r\n (control?.touched || control?.dirty) &&\r\n control?.invalid &&\r\n control?.errors,\r\n 'disable-control': disableControl\r\n }\"\r\n >\r\n <div class=\"left_details\">\r\n @if(singleSelectConfig.prefixLabel){\r\n <span class=\"predefine_label\">\r\n <p class=\"textTruncate\">{{ singleSelectConfig.prefixLabel }}</p>\r\n </span>\r\n } @if (!isObjEmpty(selectedOption) &&\r\n selectedOption[singleSelectConfig.textField]) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"selectedData ? selectedData : defaultTemplate\"\r\n [ngTemplateOutletContext]=\"{ data: selectedOption }\"\r\n ></ng-container>\r\n\r\n <ng-template #defaultTemplate let-data=\"data\">\r\n <span class=\"textTruncate\">\r\n {{ selectedOption[singleSelectConfig.textField] }}\r\n </span>\r\n </ng-template>\r\n }@else if(selectedOption && isObjEmpty(selectedOption)){\r\n <ng-container\r\n [ngTemplateOutlet]=\"selectedData ? selectedData : defaultTemplate1\"\r\n [ngTemplateOutletContext]=\"{ data: selectedOption }\"\r\n ></ng-container>\r\n\r\n <ng-template #defaultTemplate1 let-data=\"data\">\r\n <span class=\"textTruncate\">\r\n {{ selectedOption }}\r\n </span>\r\n </ng-template>\r\n }@else{\r\n <span class=\"placeholderColor textTruncate\">{{\r\n singleSelectConfig.placeholder\r\n }}</span>\r\n\r\n }\r\n </div>\r\n <span class=\"arrow_icon\">\r\n <img\r\n src=\"images/chevron-up.svg\"\r\n alt=\"\"\r\n srcset=\"\"\r\n [ngClass]=\"{ 'd-none': !showDropdown }\"\r\n />\r\n <img\r\n src=\"images/chevron-down.svg\"\r\n alt=\"\"\r\n srcset=\"\"\r\n [ngClass]=\"{ 'd-none': showDropdown }\"\r\n />\r\n </span>\r\n </div>\r\n @if (showDropdown) {\r\n <div\r\n class=\"dropdown-list\"\r\n id=\"container_scroll\"\r\n (scroll)=\"onDivScroll($event)\"\r\n >\r\n @if (singleSelectConfig.enableSearch) {\r\n <div class=\"search_bar\">\r\n <div class=\"input_box\">\r\n <img src=\"images/search.svg\" class=\"search_icon\" alt=\"\" />\r\n <input\r\n type=\"text\"\r\n class=\"filter_search_box\"\r\n name=\"\"\r\n id=\"\"\r\n placeholder=\"Search here\"\r\n [(ngModel)]=\"searchText\"\r\n />\r\n <img\r\n src=\"images/x.svg\"\r\n class=\"cross_icon\"\r\n alt=\"\"\r\n (click)=\"searchText = ''\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n <ul>\r\n @if(isObjEmpty(this.optionList[0] || \"\")){ @for (option of\r\n filteredOptionsValue; track $index) {\r\n <li\r\n (click)=\"updateSelectedOption(option)\"\r\n [ngClass]=\"{\r\n disabled_option:\r\n singleSelectConfig.disabledField &&\r\n option[singleSelectConfig.disabledField]\r\n }\"\r\n >\r\n <span class=\"textTruncate\">{{ option }}</span>\r\n </li>\r\n } @empty {\r\n <li class=\"no_data\">No Data Found.</li>\r\n } } @else { @for (option of filteredOptionsValue; track $index) {\r\n <li\r\n (click)=\"updateSelectedOption(option)\"\r\n [ngClass]=\"{\r\n disabled_option:\r\n singleSelectConfig.disabledField &&\r\n option[singleSelectConfig.disabledField]\r\n }\"\r\n >\r\n <span class=\"textTruncate\">{{\r\n option[singleSelectConfig.textField]\r\n }}</span>\r\n </li>\r\n } @empty {\r\n <li class=\"no_data\">No Data Found.</li>\r\n } }\r\n </ul>\r\n </div>\r\n }\r\n</div>\r\n", styles: [":root{--white: #ffffff;--white-50: rgba(255, 255, 255, .582);--black: #1f1f1f;--default: #000000;--black-900: #202224;--pagination-text: var(--neutral-500);--black-dust: #1a1a1a;--neutral-cross: #d9d9d9;--neutral-40: #d5d7da;--neutral-50: #f0f0f0;--neutral-100: #e6e7e8;--neutral-200: #dadbdc;--neutral-300: #c0c2c5;--neutral-400: #81858a;--neutral-500: #434a51;--neutral-600: #040d17;--neutral-900: #010306;--blue-700: #1c60af;--blue-600: #2680ea;--blue-400: #92bff4;--blue-100: #eaf3fd;--blue-300: #c8dff9;--blue-200: #dfecfc;--blue-50: #f7fafe;--blue-800: #1849d6;--grey-50: #e9eaeb;--grey-100: #e2e8f0;--grey-150: #d6d6d6;--grey-200: #64748b;--grey-300: #414651;--grey-400: #8080808c;--grey-600: #535862;--light-grey: #81858a;--dark-grey: #4a4a4a;--green-50: #f7fbf7;--green-100: #ecf4ec;--green-200: #2a6a2d;--green-400: #9bc69d;--green-600: #388e3c;--green-700: rgba(42, 106, 45, 1);--red: #ff0000;--red-50: #fdf7f7;--red-100: #f0c9c9;--red-200: #f7dfdf;--red-300: #f2f2f2;--red-700: #941e1e;--yellow-50: #fffdf5;--yellow-100: #fff5e6;--yellow-200: #fff6da;--yellow-300: #ffefc1;--yellow-400: #fff9e7;--yellow-500: #bf7200;--yellow-600: #ffc107;--yellow-700: #bf9105;--yellow-800: #806003;--yellow-900: #bf9105;--orange-50: rgba(255, 251, 245, 1);--orange-100: #fff5e6;--orange-200: #fff0d9;--orange-600: #ff9800;--orange-700: rgba(191, 114, 0, 1);--box-shadow: #0a0d1208;--box-shadow-100: #0000001f;--box-shadow-200: #0a0d1214;--grid-box-shadow: #0000000a;--model-shadow: rgba(0, 0, 0, .08);--canvas-shadow: #00000014;--chunk-shadow: #0a0d120d;--loader-border: #6f7b93;--modal-bg: rgba(4, 13, 23, .3);--checkbox-border: #0d6efd;--filter-600: rgba(0, 0, 0, .644);--feather-bg: #fafafa}html{font-size:12px}.pointer{cursor:pointer}.d-none{display:none}.textTruncate{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}button{border:calc(.0833333333rem / var(--scale)) solid transparent;padding:0 calc(2.3333333333rem / var(--scale));height:calc(4.6666666667rem / var(--scale));min-width:calc(11.8333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale));border-radius:calc(.6666666667rem / var(--scale));font-size:var(--fs-18);line-height:\"\";font-weight:600;cursor:pointer}button:focus-visible{outline:none;border:0}button i-feather.icon{display:flex}button.primary_btn{background-color:var(--blue-600);color:var(--white)}button.secondary_btn{background-color:var(--neutral-100);color:var(--neutral-500)}button.outline_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300)}button.disable{pointer-events:none;opacity:.6}button.fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-600)}button.disable_fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-300);pointer-events:none}button.bg_logic_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200)}button.no_outline_btn{background-color:var(--blue-50);color:var(--blue-600);outline:none}button .close_outline_btn{background-color:var(--blue-50);border:calc(.0833333333rem / var(--scale)) solid var(--blue-50);color:var(--blue-600)}:root{--fs-6: 6px;--fs-8: 8px;--fs-12: 12px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--fs-20: 20px;--fs-24: 24px;--fs-28: 28px;--fs-30: 30px;--fs-32: 32px;--fs-42: 42px;--fs-48: 48px;--img-w: 28px;--scale: 1}@media only screen and (min-width: 1024px) and (max-width: 1280px){:root{--scale: 1.5;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1360px) and (max-width: 1440px){:root{--scale: 1.33;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1536px) and (max-width: 1919px){:root{--scale: 1.25;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;font-family:Open Sans,sans-serif}body{font-size:100%}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}h1,h2,h3,h4,h5,h6,ul,ol p{margin:0;padding:0;text-wrap:pretty}ul[role=list],ol[role=list],ul{list-style:none}img,picture{max-width:100%;display:block}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--neutral-200);border-radius:8px}input,select,textarea{outline:none;box-shadow:none}.main-wrapper{position:relative;width:100%}.main-wrapper:has(#container_scroll) .single-select-dropdown{border:calc(.0833333333rem / var(--scale)) solid var(--blue-700)}.main-wrapper .single-select-dropdown{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;width:100%;height:calc(4.6666666667rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.6666666667rem / var(--scale));padding:calc(1.3333333333rem / var(--scale));font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400;background-color:var(--white);color:var(--default);cursor:pointer}.main-wrapper .single-select-dropdown .left_details{display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:0;width:calc(100% - 2rem / var(--scale));height:\"\"}.main-wrapper .single-select-dropdown .arrow_icon img{max-width:calc(2rem / var(--scale))}.main-wrapper .single-select-dropdown.disable_input{pointer-events:none;background-color:var(--neutral-50)}.main-wrapper .single-select-dropdown .predefine_label{display:flex;flex-direction:row;justify-content:start;align-items:center;flex-wrap:nowrap;gap:0;padding:0 calc(.6666666667rem / var(--scale));border:none;height:calc(4.6666666667rem / var(--scale));font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400;background-color:var(--neutral-300);color:var(--default);border-top-left-radius:calc(.6666666667rem / var(--scale));border-bottom-left-radius:calc(.6666666667rem / var(--scale));margin:0 calc(1.3333333333rem / var(--scale)) 0 calc(-1.4166666667rem / var(--scale))}.main-wrapper .single-select-dropdown .predefine_label p{margin-bottom:0;max-width:calc(12.0833333333rem / var(--scale))}.main-wrapper .single-select-dropdown.danger_outline{border:calc(.0833333333rem / var(--scale)) solid var(--red)}.main-wrapper .dropdown-list{border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.6666666667rem / var(--scale));position:absolute;width:100%;z-index:2;background:var(--white);box-shadow:calc(0rem / var(--scale)) calc(1rem / var(--scale)) calc(1.3333333333rem / var(--scale)) calc(-.3333333333rem / var(--scale)) var(--box-shadow);top:calc(4.6666666667rem / var(--scale))}.main-wrapper .dropdown-list ul{max-height:calc(23.6666666667rem / var(--scale));overflow:auto;list-style-type:none;padding:calc(.6666666667rem / var(--scale)) 0}.main-wrapper .dropdown-list ul:has(.no_data) li:hover{background-color:unset;cursor:default}.main-wrapper .dropdown-list ul li{height:calc(4.6666666667rem / var(--scale));display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400;padding:calc(1.3333333333rem / var(--scale));cursor:pointer;color:var(--default)}.main-wrapper .dropdown-list ul li:hover{background-color:var(--neutral-50)}.main-wrapper .dropdown-list ul li.disabled_option{opacity:.3;pointer-events:none}.main-wrapper .dropdown-list .search_bar{position:relative;padding:calc(.6666666667rem / var(--scale)) calc(.6666666667rem / var(--scale)) 0}.main-wrapper .dropdown-list .search_bar .input_box{width:100%;height:calc(4rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.6666666667rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale));padding:calc(.6666666667rem / var(--scale)) calc(1.3333333333rem / var(--scale));overflow:hidden}.main-wrapper .dropdown-list .search_bar .input_box img{width:calc(1.6666666667rem / var(--scale));height:calc(1.6666666667rem / var(--scale));opacity:.5}.main-wrapper .dropdown-list .search_bar .input_box .filter_search_box{flex-grow:1;border:none;font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400;color:var(--default)}.main-wrapper .dropdown-list .search_bar .input_box .cross_icon{cursor:pointer}.main-wrapper .placeholderColor{color:var(--neutral-400)}.main-wrapper .right-tick-icon{display:none}.main-wrapper ul li.selected{background-color:var(--neutral-50)}.main-wrapper ul li.selected .right-tick-icon{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
422
- }
423
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: SingleSelectComponent, decorators: [{
424
- type: Component,
425
- args: [{ selector: 'cats-ui-single-select', imports: [CommonModule, FormsModule], providers: [
426
- {
427
- provide: NG_VALUE_ACCESSOR,
428
- useExisting: SingleSelectComponent,
429
- multi: true,
430
- },
431
- SINGLE_SELECT_CONTROL_VALUE_VALIDATOR,
432
- ], changeDetection: ChangeDetectionStrategy.OnPush, host: { tabindex: '0' }, template: "<div class=\"main-wrapper\" id=\"main-wrapper-single-select\">\r\n <div\r\n class=\"single-select-dropdown\"\r\n (click)=\"toggleDropdown()\"\r\n [ngClass]=\"{\r\n 'border-danger':\r\n (control?.touched || control?.dirty) &&\r\n control?.invalid &&\r\n control?.errors,\r\n 'disable-control': disableControl\r\n }\"\r\n >\r\n <div class=\"left_details\">\r\n @if(singleSelectConfig.prefixLabel){\r\n <span class=\"predefine_label\">\r\n <p class=\"textTruncate\">{{ singleSelectConfig.prefixLabel }}</p>\r\n </span>\r\n } @if (!isObjEmpty(selectedOption) &&\r\n selectedOption[singleSelectConfig.textField]) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"selectedData ? selectedData : defaultTemplate\"\r\n [ngTemplateOutletContext]=\"{ data: selectedOption }\"\r\n ></ng-container>\r\n\r\n <ng-template #defaultTemplate let-data=\"data\">\r\n <span class=\"textTruncate\">\r\n {{ selectedOption[singleSelectConfig.textField] }}\r\n </span>\r\n </ng-template>\r\n }@else if(selectedOption && isObjEmpty(selectedOption)){\r\n <ng-container\r\n [ngTemplateOutlet]=\"selectedData ? selectedData : defaultTemplate1\"\r\n [ngTemplateOutletContext]=\"{ data: selectedOption }\"\r\n ></ng-container>\r\n\r\n <ng-template #defaultTemplate1 let-data=\"data\">\r\n <span class=\"textTruncate\">\r\n {{ selectedOption }}\r\n </span>\r\n </ng-template>\r\n }@else{\r\n <span class=\"placeholderColor textTruncate\">{{\r\n singleSelectConfig.placeholder\r\n }}</span>\r\n\r\n }\r\n </div>\r\n <span class=\"arrow_icon\">\r\n <img\r\n src=\"images/chevron-up.svg\"\r\n alt=\"\"\r\n srcset=\"\"\r\n [ngClass]=\"{ 'd-none': !showDropdown }\"\r\n />\r\n <img\r\n src=\"images/chevron-down.svg\"\r\n alt=\"\"\r\n srcset=\"\"\r\n [ngClass]=\"{ 'd-none': showDropdown }\"\r\n />\r\n </span>\r\n </div>\r\n @if (showDropdown) {\r\n <div\r\n class=\"dropdown-list\"\r\n id=\"container_scroll\"\r\n (scroll)=\"onDivScroll($event)\"\r\n >\r\n @if (singleSelectConfig.enableSearch) {\r\n <div class=\"search_bar\">\r\n <div class=\"input_box\">\r\n <img src=\"images/search.svg\" class=\"search_icon\" alt=\"\" />\r\n <input\r\n type=\"text\"\r\n class=\"filter_search_box\"\r\n name=\"\"\r\n id=\"\"\r\n placeholder=\"Search here\"\r\n [(ngModel)]=\"searchText\"\r\n />\r\n <img\r\n src=\"images/x.svg\"\r\n class=\"cross_icon\"\r\n alt=\"\"\r\n (click)=\"searchText = ''\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n <ul>\r\n @if(isObjEmpty(this.optionList[0] || \"\")){ @for (option of\r\n filteredOptionsValue; track $index) {\r\n <li\r\n (click)=\"updateSelectedOption(option)\"\r\n [ngClass]=\"{\r\n disabled_option:\r\n singleSelectConfig.disabledField &&\r\n option[singleSelectConfig.disabledField]\r\n }\"\r\n >\r\n <span class=\"textTruncate\">{{ option }}</span>\r\n </li>\r\n } @empty {\r\n <li class=\"no_data\">No Data Found.</li>\r\n } } @else { @for (option of filteredOptionsValue; track $index) {\r\n <li\r\n (click)=\"updateSelectedOption(option)\"\r\n [ngClass]=\"{\r\n disabled_option:\r\n singleSelectConfig.disabledField &&\r\n option[singleSelectConfig.disabledField]\r\n }\"\r\n >\r\n <span class=\"textTruncate\">{{\r\n option[singleSelectConfig.textField]\r\n }}</span>\r\n </li>\r\n } @empty {\r\n <li class=\"no_data\">No Data Found.</li>\r\n } }\r\n </ul>\r\n </div>\r\n }\r\n</div>\r\n", styles: [":root{--white: #ffffff;--white-50: rgba(255, 255, 255, .582);--black: #1f1f1f;--default: #000000;--black-900: #202224;--pagination-text: var(--neutral-500);--black-dust: #1a1a1a;--neutral-cross: #d9d9d9;--neutral-40: #d5d7da;--neutral-50: #f0f0f0;--neutral-100: #e6e7e8;--neutral-200: #dadbdc;--neutral-300: #c0c2c5;--neutral-400: #81858a;--neutral-500: #434a51;--neutral-600: #040d17;--neutral-900: #010306;--blue-700: #1c60af;--blue-600: #2680ea;--blue-400: #92bff4;--blue-100: #eaf3fd;--blue-300: #c8dff9;--blue-200: #dfecfc;--blue-50: #f7fafe;--blue-800: #1849d6;--grey-50: #e9eaeb;--grey-100: #e2e8f0;--grey-150: #d6d6d6;--grey-200: #64748b;--grey-300: #414651;--grey-400: #8080808c;--grey-600: #535862;--light-grey: #81858a;--dark-grey: #4a4a4a;--green-50: #f7fbf7;--green-100: #ecf4ec;--green-200: #2a6a2d;--green-400: #9bc69d;--green-600: #388e3c;--green-700: rgba(42, 106, 45, 1);--red: #ff0000;--red-50: #fdf7f7;--red-100: #f0c9c9;--red-200: #f7dfdf;--red-300: #f2f2f2;--red-700: #941e1e;--yellow-50: #fffdf5;--yellow-100: #fff5e6;--yellow-200: #fff6da;--yellow-300: #ffefc1;--yellow-400: #fff9e7;--yellow-500: #bf7200;--yellow-600: #ffc107;--yellow-700: #bf9105;--yellow-800: #806003;--yellow-900: #bf9105;--orange-50: rgba(255, 251, 245, 1);--orange-100: #fff5e6;--orange-200: #fff0d9;--orange-600: #ff9800;--orange-700: rgba(191, 114, 0, 1);--box-shadow: #0a0d1208;--box-shadow-100: #0000001f;--box-shadow-200: #0a0d1214;--grid-box-shadow: #0000000a;--model-shadow: rgba(0, 0, 0, .08);--canvas-shadow: #00000014;--chunk-shadow: #0a0d120d;--loader-border: #6f7b93;--modal-bg: rgba(4, 13, 23, .3);--checkbox-border: #0d6efd;--filter-600: rgba(0, 0, 0, .644);--feather-bg: #fafafa}html{font-size:12px}.pointer{cursor:pointer}.d-none{display:none}.textTruncate{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}button{border:calc(.0833333333rem / var(--scale)) solid transparent;padding:0 calc(2.3333333333rem / var(--scale));height:calc(4.6666666667rem / var(--scale));min-width:calc(11.8333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale));border-radius:calc(.6666666667rem / var(--scale));font-size:var(--fs-18);line-height:\"\";font-weight:600;cursor:pointer}button:focus-visible{outline:none;border:0}button i-feather.icon{display:flex}button.primary_btn{background-color:var(--blue-600);color:var(--white)}button.secondary_btn{background-color:var(--neutral-100);color:var(--neutral-500)}button.outline_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300)}button.disable{pointer-events:none;opacity:.6}button.fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-600)}button.disable_fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-300);pointer-events:none}button.bg_logic_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200)}button.no_outline_btn{background-color:var(--blue-50);color:var(--blue-600);outline:none}button .close_outline_btn{background-color:var(--blue-50);border:calc(.0833333333rem / var(--scale)) solid var(--blue-50);color:var(--blue-600)}:root{--fs-6: 6px;--fs-8: 8px;--fs-12: 12px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--fs-20: 20px;--fs-24: 24px;--fs-28: 28px;--fs-30: 30px;--fs-32: 32px;--fs-42: 42px;--fs-48: 48px;--img-w: 28px;--scale: 1}@media only screen and (min-width: 1024px) and (max-width: 1280px){:root{--scale: 1.5;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1360px) and (max-width: 1440px){:root{--scale: 1.33;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1536px) and (max-width: 1919px){:root{--scale: 1.25;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;font-family:Open Sans,sans-serif}body{font-size:100%}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}h1,h2,h3,h4,h5,h6,ul,ol p{margin:0;padding:0;text-wrap:pretty}ul[role=list],ol[role=list],ul{list-style:none}img,picture{max-width:100%;display:block}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--neutral-200);border-radius:8px}input,select,textarea{outline:none;box-shadow:none}.main-wrapper{position:relative;width:100%}.main-wrapper:has(#container_scroll) .single-select-dropdown{border:calc(.0833333333rem / var(--scale)) solid var(--blue-700)}.main-wrapper .single-select-dropdown{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;width:100%;height:calc(4.6666666667rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.6666666667rem / var(--scale));padding:calc(1.3333333333rem / var(--scale));font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400;background-color:var(--white);color:var(--default);cursor:pointer}.main-wrapper .single-select-dropdown .left_details{display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:0;width:calc(100% - 2rem / var(--scale));height:\"\"}.main-wrapper .single-select-dropdown .arrow_icon img{max-width:calc(2rem / var(--scale))}.main-wrapper .single-select-dropdown.disable_input{pointer-events:none;background-color:var(--neutral-50)}.main-wrapper .single-select-dropdown .predefine_label{display:flex;flex-direction:row;justify-content:start;align-items:center;flex-wrap:nowrap;gap:0;padding:0 calc(.6666666667rem / var(--scale));border:none;height:calc(4.6666666667rem / var(--scale));font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400;background-color:var(--neutral-300);color:var(--default);border-top-left-radius:calc(.6666666667rem / var(--scale));border-bottom-left-radius:calc(.6666666667rem / var(--scale));margin:0 calc(1.3333333333rem / var(--scale)) 0 calc(-1.4166666667rem / var(--scale))}.main-wrapper .single-select-dropdown .predefine_label p{margin-bottom:0;max-width:calc(12.0833333333rem / var(--scale))}.main-wrapper .single-select-dropdown.danger_outline{border:calc(.0833333333rem / var(--scale)) solid var(--red)}.main-wrapper .dropdown-list{border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.6666666667rem / var(--scale));position:absolute;width:100%;z-index:2;background:var(--white);box-shadow:calc(0rem / var(--scale)) calc(1rem / var(--scale)) calc(1.3333333333rem / var(--scale)) calc(-.3333333333rem / var(--scale)) var(--box-shadow);top:calc(4.6666666667rem / var(--scale))}.main-wrapper .dropdown-list ul{max-height:calc(23.6666666667rem / var(--scale));overflow:auto;list-style-type:none;padding:calc(.6666666667rem / var(--scale)) 0}.main-wrapper .dropdown-list ul:has(.no_data) li:hover{background-color:unset;cursor:default}.main-wrapper .dropdown-list ul li{height:calc(4.6666666667rem / var(--scale));display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400;padding:calc(1.3333333333rem / var(--scale));cursor:pointer;color:var(--default)}.main-wrapper .dropdown-list ul li:hover{background-color:var(--neutral-50)}.main-wrapper .dropdown-list ul li.disabled_option{opacity:.3;pointer-events:none}.main-wrapper .dropdown-list .search_bar{position:relative;padding:calc(.6666666667rem / var(--scale)) calc(.6666666667rem / var(--scale)) 0}.main-wrapper .dropdown-list .search_bar .input_box{width:100%;height:calc(4rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.6666666667rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale));padding:calc(.6666666667rem / var(--scale)) calc(1.3333333333rem / var(--scale));overflow:hidden}.main-wrapper .dropdown-list .search_bar .input_box img{width:calc(1.6666666667rem / var(--scale));height:calc(1.6666666667rem / var(--scale));opacity:.5}.main-wrapper .dropdown-list .search_bar .input_box .filter_search_box{flex-grow:1;border:none;font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400;color:var(--default)}.main-wrapper .dropdown-list .search_bar .input_box .cross_icon{cursor:pointer}.main-wrapper .placeholderColor{color:var(--neutral-400)}.main-wrapper .right-tick-icon{display:none}.main-wrapper ul li.selected{background-color:var(--neutral-50)}.main-wrapper ul li.selected .right-tick-icon{display:block}\n"] }]
433
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], propDecorators: { optionList: [{
434
- type: Input
435
- }], singleSelectConfig: [{
436
- type: Input
437
- }], selectedOption: [{
438
- type: Input
439
- }], onSelection: [{
440
- type: Output
441
- }], onScroll: [{
442
- type: Output
443
- }], parentNativeElement: [{
444
- type: Input
445
- }], selectedData: [{
446
- type: ContentChild,
447
- args: ['selectedData']
448
- }], onTouched: [{
449
- type: HostListener,
450
- args: ['blur']
451
- }], closeDropdown: [{
452
- type: HostListener,
453
- args: ['document:click', ['$event']]
454
- }] } });
455
-
456
- const noop = () => { };
457
- const MULTI_SELECT_CONTROL_VALUE_ACCESSOR = {
458
- provide: NG_VALUE_ACCESSOR,
459
- useExisting: forwardRef(() => MultiSelectComponent),
460
- multi: true,
461
- };
462
- const MULTI_SELECT_CONTROL_VALUE_VALIDATOR = {
463
- provide: NG_VALIDATORS,
464
- useExisting: forwardRef(() => MultiSelectComponent),
465
- multi: true,
466
- };
467
- class MultiSelectComponent {
468
- cd;
469
- el;
470
- optionList = [];
471
- multiSelectConfig = new MultiSelectConfig();
472
- selectedOptions = [];
473
- onSelection = new EventEmitter();
474
- control;
475
- showDropdown = false;
476
- isListArrayOfObject = false;
477
- isSelectedAll = false;
478
- inValid = false;
479
- searchText = '';
480
- disabledControl = false;
481
- constructor(cd, el) {
482
- this.cd = cd;
483
- this.el = el;
484
- }
485
- // These lifecycle hooks will be in use for further implementation
486
- ngOnInit() { }
487
- ngOnChanges(_changes) {
488
- if (_changes['optionList'].currentValue &&
489
- _changes['optionList'].currentValue.length > 0) {
490
- if (typeof this.optionList[0] === 'string' ||
491
- typeof this.optionList[0] === 'number') {
492
- this.optionList = this.optionList.map((option) => {
493
- const item = {
494
- [this.multiSelectConfig.idField]: option,
495
- [this.multiSelectConfig.textField]: option,
496
- isSelected: false,
497
- };
498
- if (this.multiSelectConfig.disabledField) {
499
- item[this.multiSelectConfig.disabledField] = false;
500
- }
501
- return item;
502
- });
503
- }
504
- else {
505
- this.isListArrayOfObject = true;
506
- this.optionList = this.optionList.map((option) => {
507
- return {
508
- ...option,
509
- isSelected: false,
510
- };
511
- });
512
- }
513
- if (this.optionList.length > 10)
514
- this.multiSelectConfig.enableSearch = true;
515
- this.writeValue(this.control?.value);
516
- }
517
- }
518
- /**
519
- * @description Method to toggle dropdown list
520
- * @author Shiva Kant
521
- */
522
- toggleDropdown() {
523
- this.showDropdown = !this.showDropdown;
524
- }
525
- /**
526
- * @description Method to check if provide arg is an object or not
527
- * @author Shiva Kant
528
- * @param Obj:any
529
- * @returns boolean
530
- */
531
- isObjEmpty(obj) {
532
- return !(obj && Object.keys(obj).length > 0);
533
- }
534
- /**
535
- * @description Method is to update selected option and then
536
- * update formcontrol by call onChangeCallback.
537
- * @author Shiva Kant
538
- * @param item
539
- * @returns void
540
- */
541
- updateSelectedOption(item) {
542
- item.isSelected = !item.isSelected;
543
- if (!item.isSelected) {
544
- let ind = this.selectedOptions.findIndex((option) => item[this.multiSelectConfig.idField] ==
545
- option[this.multiSelectConfig.idField]);
546
- if (ind >= 0)
547
- this.selectedOptions.splice(ind, 1);
548
- }
549
- else {
550
- this.selectedOptions.push(item);
551
- }
552
- this.isSelectedAll = this.optionList.every((option) => option.isSelected == true);
553
- this.inValid = false;
554
- this.onChangeCallback(this.selectedOptions);
555
- this.onTouchedCallback();
556
- this.onSelection.emit(this.selectedOptions);
557
- this.cd.markForCheck();
558
- }
559
- // Below Methods are used to register form API methods in these variable to use them later
560
- onTouchedCallback = noop;
561
- onChangeCallback = noop;
562
- validate(control) {
563
- this.control = control;
564
- }
565
- // Below are the CVA interface methods to make this component able to bind with formcontrol in parent component
566
- /**
567
- * @description method to update value of selectedOption
568
- * @author Shiva Kant
569
- * @param controlValue this is provided by formcontrol
570
- * @returns void
571
- */
572
- writeValue(controlValue) {
573
- if (this.optionList.length) {
574
- this.selectedOptions = [];
575
- if (controlValue && controlValue.length > 0) {
576
- if (typeof controlValue[0] === 'string' ||
577
- typeof controlValue[0] === 'number') {
578
- controlValue = controlValue.map((option) => {
579
- return {
580
- [this.multiSelectConfig.idField]: option,
581
- [this.multiSelectConfig.textField]: option,
582
- };
583
- });
584
- }
585
- for (const option of controlValue) {
586
- let ind = this.optionList.findIndex((item) => item[this.multiSelectConfig.idField] ==
587
- option[this.multiSelectConfig.idField] ||
588
- item[this.multiSelectConfig.textField] ==
589
- option[this.multiSelectConfig.textField]);
590
- if (ind >= 0) {
591
- this.optionList[ind] = {
592
- ...this.optionList[ind],
593
- isSelected: true,
594
- };
595
- this.selectedOptions.push(this.optionList[ind]);
596
- }
597
- }
598
- }
599
- this.isSelectedAll = this.optionList.every((option) => option.isSelected == true);
600
- this.onChangeCallback(this.selectedOptions);
601
- this.cd.markForCheck();
602
- }
603
- }
604
- /**
605
- * @description method to register on change callback from form API
606
- * @author Shiva Kant
607
- * @param fn
608
- * @returns void
609
- */
610
- registerOnChange(fn) {
611
- this.onChangeCallback = fn;
612
- }
613
- /**
614
- * @description method to register on touch callback from form API
615
- * @author Shiva Kant
616
- * @param fn
617
- * @returns void
618
- */
619
- registerOnTouched(fn) {
620
- this.onTouchedCallback = fn;
621
- }
622
- //willbe used in further implementation
623
- setDisabledState(isDisabled) {
624
- this.disabledControl = isDisabled;
625
- }
626
- /**
627
- * @description method to update ontouchcallback on blur
628
- * @author Shiva Kant
629
- */
630
- onTouched() {
631
- this.onTouchedCallback();
632
- }
633
- /**
634
- * @description method to toggle dropdown on outside click
635
- * @author Shiva Kant
636
- */
637
- closeDropdown(event) {
638
- if (!this.el.nativeElement.contains(event.target)) {
639
- if (this.showDropdown && this.multiSelectConfig.required) {
640
- this.inValid = this.selectedOptions.length < 0;
641
- }
642
- this.showDropdown = false;
643
- }
644
- }
645
- checkUncheckAll() {
646
- if (this.isSelectedAll) {
647
- this.optionList = this.optionList.map((option) => {
648
- if (this.multiSelectConfig.disabledField &&
649
- option[this.multiSelectConfig.disabledField]) {
650
- return option;
651
- }
652
- return { ...option, isSelected: false };
653
- });
654
- this.isSelectedAll = false;
655
- this.selectedOptions = this.optionList.filter((o) => o.isSelected);
656
- }
657
- else {
658
- this.optionList = this.optionList.map((option) => {
659
- if (this.multiSelectConfig.disabledField &&
660
- option[this.multiSelectConfig.disabledField]) {
661
- return option;
662
- }
663
- return { ...option, isSelected: true };
664
- });
665
- this.isSelectedAll = true;
666
- this.selectedOptions = this.optionList.filter((o) => o.isSelected);
667
- }
668
- this.onChangeCallback(this.selectedOptions);
669
- this.onSelection.emit(this.selectedOptions);
670
- }
671
- get filteredOptionsValue() {
672
- if (!this.searchText || this.searchText.trim() === '') {
673
- return this.optionList;
674
- }
675
- return this.optionList.filter((option) => option[this.multiSelectConfig.textField]
676
- ?.toLowerCase()
677
- .includes(this.searchText.toLowerCase()));
678
- }
679
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: MultiSelectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
680
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: MultiSelectComponent, isStandalone: true, selector: "cats-ui-multi-select", inputs: { optionList: "optionList", multiSelectConfig: "multiSelectConfig", selectedOptions: "selectedOptions" }, outputs: { onSelection: "onSelection" }, host: { attributes: { "tabindex": "0" }, listeners: { "blur": "onTouched()", "document:click": "closeDropdown($event)" } }, providers: [
681
- MULTI_SELECT_CONTROL_VALUE_ACCESSOR,
682
- MULTI_SELECT_CONTROL_VALUE_VALIDATOR,
683
- ], usesOnChanges: true, ngImport: i0, template: "<div class=\"main-wrapper\">\r\n <div\r\n class=\"display-div\"\r\n (click)=\"toggleDropdown()\"\r\n [ngClass]=\"{\r\n 'border-danger': this.inValid,\r\n 'disable-control': disabledControl\r\n }\"\r\n >\r\n <div class=\"left_details\">\r\n @if(multiSelectConfig.prefixLabel){\r\n <span class=\"predefine_label\">\r\n <p class=\"textTruncate\">{{ multiSelectConfig.prefixLabel }}</p>\r\n </span>\r\n }\r\n <div class=\"multi_label_wrapper\">\r\n @if (selectedOptions.length>0) { @for (item of selectedOptions; track\r\n $index) { @if(multiSelectConfig.chipLimit>=$index+1){\r\n <div class=\"input_text\">\r\n <span class=\"textTruncate\">{{\r\n item[multiSelectConfig.textField]\r\n }}</span>\r\n <!-- <i-feather name=\"x\" (click)=\"$event.stopPropagation();updateSelectedOption(item)\"></i-feather> -->\r\n <img\r\n src=\"images/x.svg\"\r\n (click)=\"$event.stopPropagation(); updateSelectedOption(item)\"\r\n class=\"cross_icon\"\r\n alt=\"\"\r\n />\r\n </div>\r\n } } } @else{\r\n <span class=\"placeholderColor textTruncate\">{{\r\n multiSelectConfig.placeholder\r\n }}</span>\r\n } @if(multiSelectConfig.chipLimit < selectedOptions.length) {\r\n <div class=\"view_more\">\r\n +{{ selectedOptions.length - multiSelectConfig.chipLimit }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <span class=\"arrow_icon\">\r\n <img\r\n src=\"images/chevron-up.svg\"\r\n alt=\"\"\r\n [ngClass]=\"{ 'd-none': !showDropdown }\"\r\n />\r\n <img\r\n src=\"images/chevron-down.svg\"\r\n alt=\"\"\r\n [ngClass]=\"{ 'd-none': showDropdown }\"\r\n />\r\n </span>\r\n </div>\r\n @if (showDropdown) {\r\n <div class=\"dropdown-list\" id=\"container_scroll\">\r\n @if (multiSelectConfig.enableSearch) {\r\n <div class=\"search_bar\">\r\n <div class=\"input_box\">\r\n <img src=\"images/search.svg\" alt=\"\" />\r\n <input\r\n type=\"text\"\r\n class=\"filter_search_box\"\r\n name=\"\"\r\n id=\"\"\r\n placeholder=\"Search here\"\r\n [(ngModel)]=\"searchText\"\r\n />\r\n <img\r\n src=\"images/x.svg\"\r\n class=\"cross_icon\"\r\n alt=\"\"\r\n (click)=\"searchText = ''\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n <ul>\r\n @if (multiSelectConfig.selectAll && optionList.length>0) {\r\n <li (click)=\"checkUncheckAll()\">\r\n <span class=\"checkbox_container\">\r\n <input type=\"checkbox\" [checked]=\"isSelectedAll\" />\r\n @if(isSelectedAll){ UnSelectAll } @else{ SelectAll }\r\n </span>\r\n </li>\r\n } @for (option of filteredOptionsValue; track $index) {\r\n <li\r\n class=\"checkbox_container\"\r\n (click)=\"updateSelectedOption(option)\"\r\n [ngClass]=\"{\r\n disabled_option:\r\n multiSelectConfig.disabledField &&\r\n option[multiSelectConfig.disabledField]\r\n }\"\r\n >\r\n <input type=\"checkbox\" [checked]=\"option.isSelected\" />\r\n <span class=\"textTruncate\"\r\n >{{ option[multiSelectConfig.textField] }}\r\n </span>\r\n </li>\r\n } @empty {\r\n <li class=\"no_data\">No Data Found.</li>\r\n }\r\n </ul>\r\n </div>\r\n }\r\n</div>\r\n", styles: [":root{--white: #ffffff;--white-50: rgba(255, 255, 255, .582);--black: #1f1f1f;--default: #000000;--black-900: #202224;--pagination-text: var(--neutral-500);--black-dust: #1a1a1a;--neutral-cross: #d9d9d9;--neutral-40: #d5d7da;--neutral-50: #f0f0f0;--neutral-100: #e6e7e8;--neutral-200: #dadbdc;--neutral-300: #c0c2c5;--neutral-400: #81858a;--neutral-500: #434a51;--neutral-600: #040d17;--neutral-900: #010306;--blue-700: #1c60af;--blue-600: #2680ea;--blue-400: #92bff4;--blue-100: #eaf3fd;--blue-300: #c8dff9;--blue-200: #dfecfc;--blue-50: #f7fafe;--blue-800: #1849d6;--grey-50: #e9eaeb;--grey-100: #e2e8f0;--grey-150: #d6d6d6;--grey-200: #64748b;--grey-300: #414651;--grey-400: #8080808c;--grey-600: #535862;--light-grey: #81858a;--dark-grey: #4a4a4a;--green-50: #f7fbf7;--green-100: #ecf4ec;--green-200: #2a6a2d;--green-400: #9bc69d;--green-600: #388e3c;--green-700: rgba(42, 106, 45, 1);--red: #ff0000;--red-50: #fdf7f7;--red-100: #f0c9c9;--red-200: #f7dfdf;--red-300: #f2f2f2;--red-700: #941e1e;--yellow-50: #fffdf5;--yellow-100: #fff5e6;--yellow-200: #fff6da;--yellow-300: #ffefc1;--yellow-400: #fff9e7;--yellow-500: #bf7200;--yellow-600: #ffc107;--yellow-700: #bf9105;--yellow-800: #806003;--yellow-900: #bf9105;--orange-50: rgba(255, 251, 245, 1);--orange-100: #fff5e6;--orange-200: #fff0d9;--orange-600: #ff9800;--orange-700: rgba(191, 114, 0, 1);--box-shadow: #0a0d1208;--box-shadow-100: #0000001f;--box-shadow-200: #0a0d1214;--grid-box-shadow: #0000000a;--model-shadow: rgba(0, 0, 0, .08);--canvas-shadow: #00000014;--chunk-shadow: #0a0d120d;--loader-border: #6f7b93;--modal-bg: rgba(4, 13, 23, .3);--checkbox-border: #0d6efd;--filter-600: rgba(0, 0, 0, .644);--feather-bg: #fafafa}html{font-size:12px}.pointer{cursor:pointer}.d-none{display:none}.textTruncate{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}button{border:calc(.0833333333rem / var(--scale)) solid transparent;padding:0 calc(2.3333333333rem / var(--scale));height:calc(4.6666666667rem / var(--scale));min-width:calc(11.8333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale));border-radius:calc(.6666666667rem / var(--scale));font-size:var(--fs-18);line-height:\"\";font-weight:600;cursor:pointer}button:focus-visible{outline:none;border:0}button i-feather.icon{display:flex}button.primary_btn{background-color:var(--blue-600);color:var(--white)}button.secondary_btn{background-color:var(--neutral-100);color:var(--neutral-500)}button.outline_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300)}button.disable{pointer-events:none;opacity:.6}button.fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-600)}button.disable_fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-300);pointer-events:none}button.bg_logic_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200)}button.no_outline_btn{background-color:var(--blue-50);color:var(--blue-600);outline:none}button .close_outline_btn{background-color:var(--blue-50);border:calc(.0833333333rem / var(--scale)) solid var(--blue-50);color:var(--blue-600)}:root{--fs-6: 6px;--fs-8: 8px;--fs-12: 12px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--fs-20: 20px;--fs-24: 24px;--fs-28: 28px;--fs-30: 30px;--fs-32: 32px;--fs-42: 42px;--fs-48: 48px;--img-w: 28px;--scale: 1}@media only screen and (min-width: 1024px) and (max-width: 1280px){:root{--scale: 1.5;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1360px) and (max-width: 1440px){:root{--scale: 1.33;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1536px) and (max-width: 1919px){:root{--scale: 1.25;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;font-family:Open Sans,sans-serif}body{font-size:100%}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}h1,h2,h3,h4,h5,h6,ul,ol p{margin:0;padding:0;text-wrap:pretty}ul[role=list],ol[role=list],ul{list-style:none}img,picture{max-width:100%;display:block}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--neutral-200);border-radius:8px}input,select,textarea{outline:none;box-shadow:none}.main-wrapper{position:relative;width:100%;height:calc(4.5rem / var(--scale));min-height:calc(4.5rem / var(--scale))}.main-wrapper:has(#container_scroll) .display-div{border:calc(.0833333333rem / var(--scale)) solid var(--blue-700)}.main-wrapper .display-div{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.6666666667rem / var(--scale));padding:calc(1.3333333333rem / var(--scale));width:auto;height:calc(4.6666666667rem / var(--scale));font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400;background-color:var(--white);color:var(--default);cursor:pointer}.main-wrapper .display-div .left_details{display:flex;flex-direction:row;justify-content:flex-start;align-items:stretch;flex-wrap:nowrap;gap:0}.main-wrapper .display-div .left_details .multi_label_wrapper{display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:calc(1.1666666667rem / var(--scale))}.main-wrapper .display-div .left_details .multi_label_wrapper .view_more,.main-wrapper .display-div .left_details .multi_label_wrapper .input_text{height:calc(3.3333333333rem / var(--scale));background-color:var(--blue-50);color:var(--blue-700);border-radius:calc(1.3333333333rem / var(--scale));padding:calc(.6666666667rem / var(--scale));display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:calc(.3333333333rem / var(--scale));font-size:var(--fs-16);line-height:calc(2.3333333333rem / var(--scale));font-weight:400;text-wrap:nowrap}.main-wrapper .display-div .left_details .multi_label_wrapper .input_text{display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:calc(.3333333333rem / var(--scale))}.main-wrapper .display-div .left_details .multi_label_wrapper .input_text span{max-width:calc(10rem / var(--scale));font-weight:400}.main-wrapper .display-div .left_details .multi_label_wrapper .input_text .cross_icon{width:calc(1.6666666667rem / var(--scale));height:calc(1.6666666667rem / var(--scale))}.main-wrapper .display-div .left_details .multi_label_wrapper .view_more{margin-right:auto;display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:0;max-width:calc(4.1666666667rem / var(--scale));text-align:center}.main-wrapper .display-div .left_details .multi_label_wrapper .placeholderColor{color:var(--neutral-400)}.main-wrapper .display-div .left_details .predefine_label{display:flex;flex-direction:row;justify-content:start;align-items:center;flex-wrap:nowrap;gap:0;padding:0 calc(.6666666667rem / var(--scale));border:none;height:calc(4.6666666667rem / var(--scale));font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400;background-color:var(--neutral-300);color:var(--default);border-top-left-radius:calc(.6666666667rem / var(--scale));border-bottom-left-radius:calc(.6666666667rem / var(--scale));margin:0 calc(1.3333333333rem / var(--scale)) 0 calc(-1.4166666667rem / var(--scale))}.main-wrapper .display-div .left_details .predefine_label p{margin-bottom:0;max-width:calc(12.0833333333rem / var(--scale))}.main-wrapper .display-div .arrow_icon img{max-width:calc(2rem / var(--scale))}.main-wrapper .display-div.danger_outline{border:calc(.0833333333rem / var(--scale)) solid var(--red)}.main-wrapper .display-div:has(.view_more) .arrow_icon{margin-left:calc(.8333333333rem / var(--scale))}.main-wrapper .dropdown-list{position:absolute;width:100%;z-index:10;background:var(--white);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.6666666667rem / var(--scale));box-shadow:0 calc(1rem / var(--scale)) calc(1.3333333333rem / var(--scale)) calc(-.3333333333rem / var(--scale)) var(--box-shadow);top:calc(4.6666666667rem / var(--scale))}.main-wrapper .dropdown-list .search_bar{position:relative;padding:calc(.6666666667rem / var(--scale)) calc(.6666666667rem / var(--scale)) 0}.main-wrapper .dropdown-list .search_bar .input_box{width:100%;height:calc(4rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.6666666667rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale));padding:calc(.6666666667rem / var(--scale)) calc(1.3333333333rem / var(--scale));overflow:hidden}.main-wrapper .dropdown-list .search_bar .input_box img{opacity:.5;width:calc(1.6666666667rem / var(--scale));height:calc(1.6666666667rem / var(--scale))}.main-wrapper .dropdown-list .search_bar .input_box .filter_search_box{flex-grow:1;border:none;font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400;color:var(--default)}.main-wrapper .dropdown-list .search_bar .input_box .cross_icon{cursor:pointer}.main-wrapper .dropdown-list ul{list-style-type:none;padding:0;margin-bottom:0;max-height:calc(23.4166666667rem / var(--scale));overflow:auto}.main-wrapper .dropdown-list ul li{padding:calc(1.3333333333rem / var(--scale));height:calc(4.6666666667rem / var(--scale));display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale));font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400;cursor:pointer;color:var(--default)}.main-wrapper .dropdown-list ul li.no_data:hover{background-color:unset;cursor:default}.main-wrapper .dropdown-list ul li:hover{background-color:var(--neutral-50)}.main-wrapper .dropdown-list ul li.disabled_option{opacity:.3;pointer-events:none}.main-wrapper .dropdown-list ul .checkbox_container{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale));font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400}.main-wrapper .dropdown-list ul .checkbox_container input[type=checkbox]{appearance:none;-webkit-appearance:none;width:calc(2rem / var(--scale));height:calc(2rem / var(--scale));min-width:calc(2rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.3333333333rem / var(--scale));cursor:pointer;background-color:var(--white);position:relative;transition:all .2s ease}.main-wrapper .dropdown-list ul .checkbox_container input[type=checkbox]:after{content:\"\";display:none;position:absolute;top:calc(-.0833333333rem / var(--scale));left:calc(-.1666666667rem / var(--scale));width:calc(2rem / var(--scale));height:calc(2rem / var(--scale));background-size:contain;background-repeat:no-repeat;background-position:center}.main-wrapper .dropdown-list ul .checkbox_container input[type=checkbox]:checked{border-color:var(--blue-600);background-color:var(--blue-600)}.main-wrapper .dropdown-list ul .checkbox_container input[type=checkbox]:checked:after{display:block;background-image:url(/images/icon-checked.svg)}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
684
- }
685
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: MultiSelectComponent, decorators: [{
686
- type: Component,
687
- args: [{ selector: 'cats-ui-multi-select', imports: [NgClass, FormsModule], providers: [
688
- MULTI_SELECT_CONTROL_VALUE_ACCESSOR,
689
- MULTI_SELECT_CONTROL_VALUE_VALIDATOR,
690
- ], changeDetection: ChangeDetectionStrategy.OnPush, host: { tabindex: '0' }, template: "<div class=\"main-wrapper\">\r\n <div\r\n class=\"display-div\"\r\n (click)=\"toggleDropdown()\"\r\n [ngClass]=\"{\r\n 'border-danger': this.inValid,\r\n 'disable-control': disabledControl\r\n }\"\r\n >\r\n <div class=\"left_details\">\r\n @if(multiSelectConfig.prefixLabel){\r\n <span class=\"predefine_label\">\r\n <p class=\"textTruncate\">{{ multiSelectConfig.prefixLabel }}</p>\r\n </span>\r\n }\r\n <div class=\"multi_label_wrapper\">\r\n @if (selectedOptions.length>0) { @for (item of selectedOptions; track\r\n $index) { @if(multiSelectConfig.chipLimit>=$index+1){\r\n <div class=\"input_text\">\r\n <span class=\"textTruncate\">{{\r\n item[multiSelectConfig.textField]\r\n }}</span>\r\n <!-- <i-feather name=\"x\" (click)=\"$event.stopPropagation();updateSelectedOption(item)\"></i-feather> -->\r\n <img\r\n src=\"images/x.svg\"\r\n (click)=\"$event.stopPropagation(); updateSelectedOption(item)\"\r\n class=\"cross_icon\"\r\n alt=\"\"\r\n />\r\n </div>\r\n } } } @else{\r\n <span class=\"placeholderColor textTruncate\">{{\r\n multiSelectConfig.placeholder\r\n }}</span>\r\n } @if(multiSelectConfig.chipLimit < selectedOptions.length) {\r\n <div class=\"view_more\">\r\n +{{ selectedOptions.length - multiSelectConfig.chipLimit }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <span class=\"arrow_icon\">\r\n <img\r\n src=\"images/chevron-up.svg\"\r\n alt=\"\"\r\n [ngClass]=\"{ 'd-none': !showDropdown }\"\r\n />\r\n <img\r\n src=\"images/chevron-down.svg\"\r\n alt=\"\"\r\n [ngClass]=\"{ 'd-none': showDropdown }\"\r\n />\r\n </span>\r\n </div>\r\n @if (showDropdown) {\r\n <div class=\"dropdown-list\" id=\"container_scroll\">\r\n @if (multiSelectConfig.enableSearch) {\r\n <div class=\"search_bar\">\r\n <div class=\"input_box\">\r\n <img src=\"images/search.svg\" alt=\"\" />\r\n <input\r\n type=\"text\"\r\n class=\"filter_search_box\"\r\n name=\"\"\r\n id=\"\"\r\n placeholder=\"Search here\"\r\n [(ngModel)]=\"searchText\"\r\n />\r\n <img\r\n src=\"images/x.svg\"\r\n class=\"cross_icon\"\r\n alt=\"\"\r\n (click)=\"searchText = ''\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n <ul>\r\n @if (multiSelectConfig.selectAll && optionList.length>0) {\r\n <li (click)=\"checkUncheckAll()\">\r\n <span class=\"checkbox_container\">\r\n <input type=\"checkbox\" [checked]=\"isSelectedAll\" />\r\n @if(isSelectedAll){ UnSelectAll } @else{ SelectAll }\r\n </span>\r\n </li>\r\n } @for (option of filteredOptionsValue; track $index) {\r\n <li\r\n class=\"checkbox_container\"\r\n (click)=\"updateSelectedOption(option)\"\r\n [ngClass]=\"{\r\n disabled_option:\r\n multiSelectConfig.disabledField &&\r\n option[multiSelectConfig.disabledField]\r\n }\"\r\n >\r\n <input type=\"checkbox\" [checked]=\"option.isSelected\" />\r\n <span class=\"textTruncate\"\r\n >{{ option[multiSelectConfig.textField] }}\r\n </span>\r\n </li>\r\n } @empty {\r\n <li class=\"no_data\">No Data Found.</li>\r\n }\r\n </ul>\r\n </div>\r\n }\r\n</div>\r\n", styles: [":root{--white: #ffffff;--white-50: rgba(255, 255, 255, .582);--black: #1f1f1f;--default: #000000;--black-900: #202224;--pagination-text: var(--neutral-500);--black-dust: #1a1a1a;--neutral-cross: #d9d9d9;--neutral-40: #d5d7da;--neutral-50: #f0f0f0;--neutral-100: #e6e7e8;--neutral-200: #dadbdc;--neutral-300: #c0c2c5;--neutral-400: #81858a;--neutral-500: #434a51;--neutral-600: #040d17;--neutral-900: #010306;--blue-700: #1c60af;--blue-600: #2680ea;--blue-400: #92bff4;--blue-100: #eaf3fd;--blue-300: #c8dff9;--blue-200: #dfecfc;--blue-50: #f7fafe;--blue-800: #1849d6;--grey-50: #e9eaeb;--grey-100: #e2e8f0;--grey-150: #d6d6d6;--grey-200: #64748b;--grey-300: #414651;--grey-400: #8080808c;--grey-600: #535862;--light-grey: #81858a;--dark-grey: #4a4a4a;--green-50: #f7fbf7;--green-100: #ecf4ec;--green-200: #2a6a2d;--green-400: #9bc69d;--green-600: #388e3c;--green-700: rgba(42, 106, 45, 1);--red: #ff0000;--red-50: #fdf7f7;--red-100: #f0c9c9;--red-200: #f7dfdf;--red-300: #f2f2f2;--red-700: #941e1e;--yellow-50: #fffdf5;--yellow-100: #fff5e6;--yellow-200: #fff6da;--yellow-300: #ffefc1;--yellow-400: #fff9e7;--yellow-500: #bf7200;--yellow-600: #ffc107;--yellow-700: #bf9105;--yellow-800: #806003;--yellow-900: #bf9105;--orange-50: rgba(255, 251, 245, 1);--orange-100: #fff5e6;--orange-200: #fff0d9;--orange-600: #ff9800;--orange-700: rgba(191, 114, 0, 1);--box-shadow: #0a0d1208;--box-shadow-100: #0000001f;--box-shadow-200: #0a0d1214;--grid-box-shadow: #0000000a;--model-shadow: rgba(0, 0, 0, .08);--canvas-shadow: #00000014;--chunk-shadow: #0a0d120d;--loader-border: #6f7b93;--modal-bg: rgba(4, 13, 23, .3);--checkbox-border: #0d6efd;--filter-600: rgba(0, 0, 0, .644);--feather-bg: #fafafa}html{font-size:12px}.pointer{cursor:pointer}.d-none{display:none}.textTruncate{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}button{border:calc(.0833333333rem / var(--scale)) solid transparent;padding:0 calc(2.3333333333rem / var(--scale));height:calc(4.6666666667rem / var(--scale));min-width:calc(11.8333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale));border-radius:calc(.6666666667rem / var(--scale));font-size:var(--fs-18);line-height:\"\";font-weight:600;cursor:pointer}button:focus-visible{outline:none;border:0}button i-feather.icon{display:flex}button.primary_btn{background-color:var(--blue-600);color:var(--white)}button.secondary_btn{background-color:var(--neutral-100);color:var(--neutral-500)}button.outline_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300)}button.disable{pointer-events:none;opacity:.6}button.fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-600)}button.disable_fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-300);pointer-events:none}button.bg_logic_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200)}button.no_outline_btn{background-color:var(--blue-50);color:var(--blue-600);outline:none}button .close_outline_btn{background-color:var(--blue-50);border:calc(.0833333333rem / var(--scale)) solid var(--blue-50);color:var(--blue-600)}:root{--fs-6: 6px;--fs-8: 8px;--fs-12: 12px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--fs-20: 20px;--fs-24: 24px;--fs-28: 28px;--fs-30: 30px;--fs-32: 32px;--fs-42: 42px;--fs-48: 48px;--img-w: 28px;--scale: 1}@media only screen and (min-width: 1024px) and (max-width: 1280px){:root{--scale: 1.5;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1360px) and (max-width: 1440px){:root{--scale: 1.33;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1536px) and (max-width: 1919px){:root{--scale: 1.25;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;font-family:Open Sans,sans-serif}body{font-size:100%}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}h1,h2,h3,h4,h5,h6,ul,ol p{margin:0;padding:0;text-wrap:pretty}ul[role=list],ol[role=list],ul{list-style:none}img,picture{max-width:100%;display:block}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--neutral-200);border-radius:8px}input,select,textarea{outline:none;box-shadow:none}.main-wrapper{position:relative;width:100%;height:calc(4.5rem / var(--scale));min-height:calc(4.5rem / var(--scale))}.main-wrapper:has(#container_scroll) .display-div{border:calc(.0833333333rem / var(--scale)) solid var(--blue-700)}.main-wrapper .display-div{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.6666666667rem / var(--scale));padding:calc(1.3333333333rem / var(--scale));width:auto;height:calc(4.6666666667rem / var(--scale));font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400;background-color:var(--white);color:var(--default);cursor:pointer}.main-wrapper .display-div .left_details{display:flex;flex-direction:row;justify-content:flex-start;align-items:stretch;flex-wrap:nowrap;gap:0}.main-wrapper .display-div .left_details .multi_label_wrapper{display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:calc(1.1666666667rem / var(--scale))}.main-wrapper .display-div .left_details .multi_label_wrapper .view_more,.main-wrapper .display-div .left_details .multi_label_wrapper .input_text{height:calc(3.3333333333rem / var(--scale));background-color:var(--blue-50);color:var(--blue-700);border-radius:calc(1.3333333333rem / var(--scale));padding:calc(.6666666667rem / var(--scale));display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:calc(.3333333333rem / var(--scale));font-size:var(--fs-16);line-height:calc(2.3333333333rem / var(--scale));font-weight:400;text-wrap:nowrap}.main-wrapper .display-div .left_details .multi_label_wrapper .input_text{display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:calc(.3333333333rem / var(--scale))}.main-wrapper .display-div .left_details .multi_label_wrapper .input_text span{max-width:calc(10rem / var(--scale));font-weight:400}.main-wrapper .display-div .left_details .multi_label_wrapper .input_text .cross_icon{width:calc(1.6666666667rem / var(--scale));height:calc(1.6666666667rem / var(--scale))}.main-wrapper .display-div .left_details .multi_label_wrapper .view_more{margin-right:auto;display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:0;max-width:calc(4.1666666667rem / var(--scale));text-align:center}.main-wrapper .display-div .left_details .multi_label_wrapper .placeholderColor{color:var(--neutral-400)}.main-wrapper .display-div .left_details .predefine_label{display:flex;flex-direction:row;justify-content:start;align-items:center;flex-wrap:nowrap;gap:0;padding:0 calc(.6666666667rem / var(--scale));border:none;height:calc(4.6666666667rem / var(--scale));font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400;background-color:var(--neutral-300);color:var(--default);border-top-left-radius:calc(.6666666667rem / var(--scale));border-bottom-left-radius:calc(.6666666667rem / var(--scale));margin:0 calc(1.3333333333rem / var(--scale)) 0 calc(-1.4166666667rem / var(--scale))}.main-wrapper .display-div .left_details .predefine_label p{margin-bottom:0;max-width:calc(12.0833333333rem / var(--scale))}.main-wrapper .display-div .arrow_icon img{max-width:calc(2rem / var(--scale))}.main-wrapper .display-div.danger_outline{border:calc(.0833333333rem / var(--scale)) solid var(--red)}.main-wrapper .display-div:has(.view_more) .arrow_icon{margin-left:calc(.8333333333rem / var(--scale))}.main-wrapper .dropdown-list{position:absolute;width:100%;z-index:10;background:var(--white);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.6666666667rem / var(--scale));box-shadow:0 calc(1rem / var(--scale)) calc(1.3333333333rem / var(--scale)) calc(-.3333333333rem / var(--scale)) var(--box-shadow);top:calc(4.6666666667rem / var(--scale))}.main-wrapper .dropdown-list .search_bar{position:relative;padding:calc(.6666666667rem / var(--scale)) calc(.6666666667rem / var(--scale)) 0}.main-wrapper .dropdown-list .search_bar .input_box{width:100%;height:calc(4rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.6666666667rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale));padding:calc(.6666666667rem / var(--scale)) calc(1.3333333333rem / var(--scale));overflow:hidden}.main-wrapper .dropdown-list .search_bar .input_box img{opacity:.5;width:calc(1.6666666667rem / var(--scale));height:calc(1.6666666667rem / var(--scale))}.main-wrapper .dropdown-list .search_bar .input_box .filter_search_box{flex-grow:1;border:none;font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400;color:var(--default)}.main-wrapper .dropdown-list .search_bar .input_box .cross_icon{cursor:pointer}.main-wrapper .dropdown-list ul{list-style-type:none;padding:0;margin-bottom:0;max-height:calc(23.4166666667rem / var(--scale));overflow:auto}.main-wrapper .dropdown-list ul li{padding:calc(1.3333333333rem / var(--scale));height:calc(4.6666666667rem / var(--scale));display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale));font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400;cursor:pointer;color:var(--default)}.main-wrapper .dropdown-list ul li.no_data:hover{background-color:unset;cursor:default}.main-wrapper .dropdown-list ul li:hover{background-color:var(--neutral-50)}.main-wrapper .dropdown-list ul li.disabled_option{opacity:.3;pointer-events:none}.main-wrapper .dropdown-list ul .checkbox_container{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale));font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400}.main-wrapper .dropdown-list ul .checkbox_container input[type=checkbox]{appearance:none;-webkit-appearance:none;width:calc(2rem / var(--scale));height:calc(2rem / var(--scale));min-width:calc(2rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.3333333333rem / var(--scale));cursor:pointer;background-color:var(--white);position:relative;transition:all .2s ease}.main-wrapper .dropdown-list ul .checkbox_container input[type=checkbox]:after{content:\"\";display:none;position:absolute;top:calc(-.0833333333rem / var(--scale));left:calc(-.1666666667rem / var(--scale));width:calc(2rem / var(--scale));height:calc(2rem / var(--scale));background-size:contain;background-repeat:no-repeat;background-position:center}.main-wrapper .dropdown-list ul .checkbox_container input[type=checkbox]:checked{border-color:var(--blue-600);background-color:var(--blue-600)}.main-wrapper .dropdown-list ul .checkbox_container input[type=checkbox]:checked:after{display:block;background-image:url(/images/icon-checked.svg)}\n"] }]
691
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], propDecorators: { optionList: [{
692
- type: Input
693
- }], multiSelectConfig: [{
694
- type: Input
695
- }], selectedOptions: [{
696
- type: Input
697
- }], onSelection: [{
698
- type: Output
699
- }], onTouched: [{
700
- type: HostListener,
701
- args: ['blur']
702
- }], closeDropdown: [{
703
- type: HostListener,
704
- args: ['document:click', ['$event']]
705
- }] } });
706
-
707
- class SearchBoxComponent {
708
- searchParam = '';
709
- searchConfig = new SearchConfig();
710
- onClose = new EventEmitter();
711
- searchParamValue = new EventEmitter();
712
- onChange = () => { };
713
- onTouched = () => { };
714
- isDisabled = false;
715
- ngOnInit() {
716
- this.searchParam = this.searchConfig?.serachValue || '';
717
- }
718
- /**
719
- * @description Method to Called when input changes
720
- * @author Shiva Kant
721
- */
722
- onInputChange(event) {
723
- const value = event.target?.value;
724
- this.searchParam = value;
725
- this.onChange(value);
726
- this.searchParamValue.emit(value);
727
- }
728
- /**
729
- * @description Method to closeSearchBar
730
- * @author Shiva Kant
731
- */
732
- closeSearchBar() {
733
- this.searchParam = '';
734
- this.onChange('');
735
- this.searchParamValue.emit('');
736
- this.onClose.emit();
737
- }
738
- // -------- ControlValueAccessor methods --------
739
- writeValue(value) {
740
- this.searchParam = value || '';
741
- }
742
- registerOnChange(fn) {
743
- this.onChange = fn;
744
- }
745
- registerOnTouched(fn) {
746
- this.onTouched = fn;
747
- }
748
- setDisabledState(isDisabled) {
749
- this.isDisabled = isDisabled;
750
- }
751
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: SearchBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
752
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: SearchBoxComponent, isStandalone: true, selector: "cats-ui-search-box", inputs: { searchConfig: "searchConfig" }, outputs: { onClose: "onClose", searchParamValue: "searchParamValue" }, providers: [
753
- {
754
- provide: NG_VALUE_ACCESSOR,
755
- useExisting: forwardRef(() => SearchBoxComponent),
756
- multi: true,
757
- },
758
- ], ngImport: i0, template: "<div class=\"search_input\">\r\n <img src=\"images/search.svg\" alt=\"\" srcset=\"\" />\r\n <input\r\n [placeholder]=\"searchConfig.placeholder\"\r\n type=\"text\"\r\n [value]=\"searchParam\"\r\n (input)=\"onInputChange($event)\"\r\n (blur)=\"onTouched()\"\r\n />\r\n @if (searchParam.length > 0) {\r\n <div class=\"cross_icon\">\r\n <img src=\"images/x.svg\" alt=\"\" srcset=\"\" (click)=\"closeSearchBar()\" />\r\n </div>\r\n }\r\n</div>\r\n", styles: [":root{--white: #ffffff;--white-50: rgba(255, 255, 255, .582);--black: #1f1f1f;--default: #000000;--black-900: #202224;--pagination-text: var(--neutral-500);--black-dust: #1a1a1a;--neutral-cross: #d9d9d9;--neutral-40: #d5d7da;--neutral-50: #f0f0f0;--neutral-100: #e6e7e8;--neutral-200: #dadbdc;--neutral-300: #c0c2c5;--neutral-400: #81858a;--neutral-500: #434a51;--neutral-600: #040d17;--neutral-900: #010306;--blue-700: #1c60af;--blue-600: #2680ea;--blue-400: #92bff4;--blue-100: #eaf3fd;--blue-300: #c8dff9;--blue-200: #dfecfc;--blue-50: #f7fafe;--blue-800: #1849d6;--grey-50: #e9eaeb;--grey-100: #e2e8f0;--grey-150: #d6d6d6;--grey-200: #64748b;--grey-300: #414651;--grey-400: #8080808c;--grey-600: #535862;--light-grey: #81858a;--dark-grey: #4a4a4a;--green-50: #f7fbf7;--green-100: #ecf4ec;--green-200: #2a6a2d;--green-400: #9bc69d;--green-600: #388e3c;--green-700: rgba(42, 106, 45, 1);--red: #ff0000;--red-50: #fdf7f7;--red-100: #f0c9c9;--red-200: #f7dfdf;--red-300: #f2f2f2;--red-700: #941e1e;--yellow-50: #fffdf5;--yellow-100: #fff5e6;--yellow-200: #fff6da;--yellow-300: #ffefc1;--yellow-400: #fff9e7;--yellow-500: #bf7200;--yellow-600: #ffc107;--yellow-700: #bf9105;--yellow-800: #806003;--yellow-900: #bf9105;--orange-50: rgba(255, 251, 245, 1);--orange-100: #fff5e6;--orange-200: #fff0d9;--orange-600: #ff9800;--orange-700: rgba(191, 114, 0, 1);--box-shadow: #0a0d1208;--box-shadow-100: #0000001f;--box-shadow-200: #0a0d1214;--grid-box-shadow: #0000000a;--model-shadow: rgba(0, 0, 0, .08);--canvas-shadow: #00000014;--chunk-shadow: #0a0d120d;--loader-border: #6f7b93;--modal-bg: rgba(4, 13, 23, .3);--checkbox-border: #0d6efd;--filter-600: rgba(0, 0, 0, .644);--feather-bg: #fafafa}html{font-size:12px}.pointer{cursor:pointer}.d-none{display:none}.textTruncate{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}button{border:calc(.0833333333rem / var(--scale)) solid transparent;padding:0 calc(2.3333333333rem / var(--scale));height:calc(4.6666666667rem / var(--scale));min-width:calc(11.8333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale));border-radius:calc(.6666666667rem / var(--scale));font-size:var(--fs-18);line-height:\"\";font-weight:600;cursor:pointer}button:focus-visible{outline:none;border:0}button i-feather.icon{display:flex}button.primary_btn{background-color:var(--blue-600);color:var(--white)}button.secondary_btn{background-color:var(--neutral-100);color:var(--neutral-500)}button.outline_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300)}button.disable{pointer-events:none;opacity:.6}button.fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-600)}button.disable_fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-300);pointer-events:none}button.bg_logic_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200)}button.no_outline_btn{background-color:var(--blue-50);color:var(--blue-600);outline:none}button .close_outline_btn{background-color:var(--blue-50);border:calc(.0833333333rem / var(--scale)) solid var(--blue-50);color:var(--blue-600)}:root{--fs-6: 6px;--fs-8: 8px;--fs-12: 12px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--fs-20: 20px;--fs-24: 24px;--fs-28: 28px;--fs-30: 30px;--fs-32: 32px;--fs-42: 42px;--fs-48: 48px;--img-w: 28px;--scale: 1}@media only screen and (min-width: 1024px) and (max-width: 1280px){:root{--scale: 1.5;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1360px) and (max-width: 1440px){:root{--scale: 1.33;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1536px) and (max-width: 1919px){:root{--scale: 1.25;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;font-family:Open Sans,sans-serif}body{font-size:100%}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}h1,h2,h3,h4,h5,h6,ul,ol p{margin:0;padding:0;text-wrap:pretty}ul[role=list],ol[role=list],ul{list-style:none}img,picture{max-width:100%;display:block}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--neutral-200);border-radius:8px}input,select,textarea{outline:none;box-shadow:none}.search_input{position:relative;width:100%;height:calc(4.6666666667rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.6666666667rem / var(--scale));padding:0 calc(1.3333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale))}.search_input:has(input:focus){border:calc(.0833333333rem / var(--scale)) solid var(--blue-700)}.search_input img{width:calc(1.6666666667rem / var(--scale));height:calc(1.6666666667rem / var(--scale));opacity:.5}.search_input input{width:100%;height:100%;border:0;font-size:var(--fs-16);line-height:140%;font-weight:500;color:var(--default)}.search_input input::placeholder{color:var(--neutral-400)}.search_input .cross_icon{cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }] });
759
- }
760
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: SearchBoxComponent, decorators: [{
761
- type: Component,
762
- args: [{ selector: 'cats-ui-search-box', imports: [FormsModule], providers: [
763
- {
764
- provide: NG_VALUE_ACCESSOR,
765
- useExisting: forwardRef(() => SearchBoxComponent),
766
- multi: true,
767
- },
768
- ], template: "<div class=\"search_input\">\r\n <img src=\"images/search.svg\" alt=\"\" srcset=\"\" />\r\n <input\r\n [placeholder]=\"searchConfig.placeholder\"\r\n type=\"text\"\r\n [value]=\"searchParam\"\r\n (input)=\"onInputChange($event)\"\r\n (blur)=\"onTouched()\"\r\n />\r\n @if (searchParam.length > 0) {\r\n <div class=\"cross_icon\">\r\n <img src=\"images/x.svg\" alt=\"\" srcset=\"\" (click)=\"closeSearchBar()\" />\r\n </div>\r\n }\r\n</div>\r\n", styles: [":root{--white: #ffffff;--white-50: rgba(255, 255, 255, .582);--black: #1f1f1f;--default: #000000;--black-900: #202224;--pagination-text: var(--neutral-500);--black-dust: #1a1a1a;--neutral-cross: #d9d9d9;--neutral-40: #d5d7da;--neutral-50: #f0f0f0;--neutral-100: #e6e7e8;--neutral-200: #dadbdc;--neutral-300: #c0c2c5;--neutral-400: #81858a;--neutral-500: #434a51;--neutral-600: #040d17;--neutral-900: #010306;--blue-700: #1c60af;--blue-600: #2680ea;--blue-400: #92bff4;--blue-100: #eaf3fd;--blue-300: #c8dff9;--blue-200: #dfecfc;--blue-50: #f7fafe;--blue-800: #1849d6;--grey-50: #e9eaeb;--grey-100: #e2e8f0;--grey-150: #d6d6d6;--grey-200: #64748b;--grey-300: #414651;--grey-400: #8080808c;--grey-600: #535862;--light-grey: #81858a;--dark-grey: #4a4a4a;--green-50: #f7fbf7;--green-100: #ecf4ec;--green-200: #2a6a2d;--green-400: #9bc69d;--green-600: #388e3c;--green-700: rgba(42, 106, 45, 1);--red: #ff0000;--red-50: #fdf7f7;--red-100: #f0c9c9;--red-200: #f7dfdf;--red-300: #f2f2f2;--red-700: #941e1e;--yellow-50: #fffdf5;--yellow-100: #fff5e6;--yellow-200: #fff6da;--yellow-300: #ffefc1;--yellow-400: #fff9e7;--yellow-500: #bf7200;--yellow-600: #ffc107;--yellow-700: #bf9105;--yellow-800: #806003;--yellow-900: #bf9105;--orange-50: rgba(255, 251, 245, 1);--orange-100: #fff5e6;--orange-200: #fff0d9;--orange-600: #ff9800;--orange-700: rgba(191, 114, 0, 1);--box-shadow: #0a0d1208;--box-shadow-100: #0000001f;--box-shadow-200: #0a0d1214;--grid-box-shadow: #0000000a;--model-shadow: rgba(0, 0, 0, .08);--canvas-shadow: #00000014;--chunk-shadow: #0a0d120d;--loader-border: #6f7b93;--modal-bg: rgba(4, 13, 23, .3);--checkbox-border: #0d6efd;--filter-600: rgba(0, 0, 0, .644);--feather-bg: #fafafa}html{font-size:12px}.pointer{cursor:pointer}.d-none{display:none}.textTruncate{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}button{border:calc(.0833333333rem / var(--scale)) solid transparent;padding:0 calc(2.3333333333rem / var(--scale));height:calc(4.6666666667rem / var(--scale));min-width:calc(11.8333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale));border-radius:calc(.6666666667rem / var(--scale));font-size:var(--fs-18);line-height:\"\";font-weight:600;cursor:pointer}button:focus-visible{outline:none;border:0}button i-feather.icon{display:flex}button.primary_btn{background-color:var(--blue-600);color:var(--white)}button.secondary_btn{background-color:var(--neutral-100);color:var(--neutral-500)}button.outline_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300)}button.disable{pointer-events:none;opacity:.6}button.fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-600)}button.disable_fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-300);pointer-events:none}button.bg_logic_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200)}button.no_outline_btn{background-color:var(--blue-50);color:var(--blue-600);outline:none}button .close_outline_btn{background-color:var(--blue-50);border:calc(.0833333333rem / var(--scale)) solid var(--blue-50);color:var(--blue-600)}:root{--fs-6: 6px;--fs-8: 8px;--fs-12: 12px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--fs-20: 20px;--fs-24: 24px;--fs-28: 28px;--fs-30: 30px;--fs-32: 32px;--fs-42: 42px;--fs-48: 48px;--img-w: 28px;--scale: 1}@media only screen and (min-width: 1024px) and (max-width: 1280px){:root{--scale: 1.5;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1360px) and (max-width: 1440px){:root{--scale: 1.33;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1536px) and (max-width: 1919px){:root{--scale: 1.25;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;font-family:Open Sans,sans-serif}body{font-size:100%}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}h1,h2,h3,h4,h5,h6,ul,ol p{margin:0;padding:0;text-wrap:pretty}ul[role=list],ol[role=list],ul{list-style:none}img,picture{max-width:100%;display:block}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--neutral-200);border-radius:8px}input,select,textarea{outline:none;box-shadow:none}.search_input{position:relative;width:100%;height:calc(4.6666666667rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.6666666667rem / var(--scale));padding:0 calc(1.3333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale))}.search_input:has(input:focus){border:calc(.0833333333rem / var(--scale)) solid var(--blue-700)}.search_input img{width:calc(1.6666666667rem / var(--scale));height:calc(1.6666666667rem / var(--scale));opacity:.5}.search_input input{width:100%;height:100%;border:0;font-size:var(--fs-16);line-height:140%;font-weight:500;color:var(--default)}.search_input input::placeholder{color:var(--neutral-400)}.search_input .cross_icon{cursor:pointer}\n"] }]
769
- }], propDecorators: { searchConfig: [{
770
- type: Input
771
- }], onClose: [{
772
- type: Output
773
- }], searchParamValue: [{
774
- type: Output
775
- }] } });
776
-
777
- class OutsideClickDirective {
778
- elementRef;
779
- clickOutSide = new EventEmitter();
780
- constructor(elementRef) {
781
- this.elementRef = elementRef;
782
- }
783
- /**
784
- * @description Hosts listener
785
- * @author Shiva Kant
786
- * @param event
787
- * @returns click
788
- */
789
- onClick(event) {
790
- const targetElement = event.target;
791
- // Guard clause: exit early if no target or not an element
792
- if (!targetElement) {
793
- return;
794
- }
795
- const clickInside = this.elementRef.nativeElement.contains(targetElement);
796
- if (!clickInside) {
797
- this.clickOutSide.emit(event);
798
- }
799
- }
800
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: OutsideClickDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
801
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.14", type: OutsideClickDirective, isStandalone: true, selector: "[catsOutsideClick]", outputs: { clickOutSide: "clickOutSide" }, host: { listeners: { "document:click": "onClick($event)" } }, ngImport: i0 });
802
- }
803
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: OutsideClickDirective, decorators: [{
804
- type: Directive,
805
- args: [{
806
- selector: '[catsOutsideClick]',
807
- standalone: true,
808
- }]
809
- }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { clickOutSide: [{
810
- type: Output
811
- }], onClick: [{
812
- type: HostListener,
813
- args: ['document:click', ['$event']]
814
- }] } });
815
-
816
- ;
817
- class AutoCompleteSingleSelectComponent {
818
- autoSingleSelectConfig = new AutoCompleteSingleSelectConfig();
819
- selectedItem;
820
- optionsList = [];
821
- parentNativeElement;
822
- onItemSelection = new EventEmitter();
823
- onScroll = new EventEmitter();
824
- showDropdown = false;
825
- inputValue = '';
826
- selectedOption;
827
- constructor() { }
828
- ngOnInit() { }
829
- /**
830
- * @description Method to toggle dropdown list
831
- * @author Shiva Kant
832
- */
833
- toggleDropdown() {
834
- this.showDropdown = !this.showDropdown;
835
- if (this.parentNativeElement) {
836
- this.parentNativeElement.scrollIntoView({
837
- behavior: 'smooth',
838
- block: 'center',
839
- });
840
- let parentDiv = document.getElementById(this.parentNativeElement);
841
- setTimeout(() => {
842
- let parentBoundary = parentDiv?.getBoundingClientRect() || {};
843
- let dropdonwList = document.getElementById('container_scroll');
844
- let elBoundary = dropdonwList?.getBoundingClientRect() || {};
845
- if (parentBoundary?.['bottom'] < elBoundary?.['bottom']) {
846
- dropdonwList.style['transform'] = `translate(0px,-${elBoundary?.['height'] + 54}px`;
847
- }
848
- }, 20);
849
- }
850
- }
851
- /**
852
- * @description method to update selected item
853
- * @author Shiva Kant
854
- * @param item this is selected item from list
855
- * @param type type of list
856
- * @returns none
857
- */
858
- updateSelectedItem(item, type) {
859
- if (type == 'object') {
860
- this.inputValue = item[this.autoSingleSelectConfig.textField];
861
- }
862
- else {
863
- this.inputValue = item;
864
- }
865
- this.selectedOption = item;
866
- this.showDropdown = false;
867
- this.onItemSelection.emit(this.selectedOption);
868
- }
869
- /**
870
- * @description this method is use to update input value
871
- */
872
- updateInputValue() {
873
- let data = this.selectedOption;
874
- if (!data ||
875
- (typeof data == 'object'
876
- ? data[this.autoSingleSelectConfig.textField] != this.inputValue
877
- : data != this.inputValue)) {
878
- data = this.inputValue;
879
- if (this.isObject(this.optionsList?.[0])) {
880
- data = {
881
- [this.autoSingleSelectConfig.idField]: null,
882
- [this.autoSingleSelectConfig.textField]: this.inputValue,
883
- };
884
- }
885
- }
886
- this.onItemSelection.emit(data);
887
- }
888
- /**
889
- * @description method to update dropdown list state on input type
890
- * @author Shiva Kant
891
- */
892
- updateDropdownStatus() {
893
- this.showDropdown = !!this.inputValue;
894
- }
895
- /**
896
- * @description method to check if the list is Array of string or object
897
- * @author Shiva Kant
898
- * @param data this is the any one one item of list
899
- * @returns boolean
900
- */
901
- isObject(data) {
902
- const type = typeof data;
903
- return data && type != 'string';
904
- }
905
- /**
906
- * @description This method is use to close dropdown on click outside
907
- */
908
- outsideClicked() {
909
- if (this.showDropdown) {
910
- if (this.autoSingleSelectConfig.customInput) {
911
- this.updateInputValue();
912
- }
913
- }
914
- this.showDropdown = false;
915
- }
916
- onClickEnter(control) {
917
- if (this.autoSingleSelectConfig.customInput) {
918
- this.updateInputValue();
919
- }
920
- }
921
- /**
922
- * @description method to load more list
923
- * @author Shiva Kant
924
- * @param event
925
- */
926
- onDivScroll(event) {
927
- if (event.target.offsetHeight + event.target.scrollTop >=
928
- event.target.scrollHeight - 1 &&
929
- this.optionsList.length) {
930
- this.onScroll.emit();
931
- }
932
- }
933
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: AutoCompleteSingleSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
934
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: AutoCompleteSingleSelectComponent, isStandalone: true, selector: "cats-ui-auto-complete-single-select", inputs: { autoSingleSelectConfig: "autoSingleSelectConfig", selectedItem: "selectedItem", optionsList: "optionsList", parentNativeElement: "parentNativeElement" }, outputs: { onItemSelection: "onItemSelection", onScroll: "onScroll" }, ngImport: i0, template: "<div class=\"main_container\" catsOutsideClick (clickOutSide)=\"outsideClicked()\">\r\n <div class=\"input_container\">\r\n <div class=\"input_box\">\r\n <input\r\n class=\"textTruncate\"\r\n type=\"text\"\r\n [(ngModel)]=\"inputValue\"\r\n (keyup.enter)=\"onClickEnter(inputValue)\"\r\n (keyup)=\"updateDropdownStatus()\"\r\n [placeholder]=\"autoSingleSelectConfig.placeholder\"\r\n />\r\n </div>\r\n <div class=\"arrow_icon\" (click)=\"toggleDropdown()\">\r\n <img\r\n src=\"images/chevron-up.svg\"\r\n alt=\"up-arrow\"\r\n [ngClass]=\"{ 'd-none': !showDropdown }\"\r\n />\r\n <img\r\n src=\"images/chevron-down.svg\"\r\n alt=\"down-arrow\"\r\n [ngClass]=\"{ 'd-none': showDropdown }\"\r\n />\r\n </div>\r\n </div>\r\n\r\n @if (showDropdown) {\r\n <div class=\"dropdown_list_single_auto_select\">\r\n <!-- if optionList is an array of object-->\r\n @if (isObject(optionsList[0])) {\r\n <ng-container>\r\n <ul>\r\n @for (item of optionsList; track $index) {\r\n <ng-container>\r\n @if\r\n (item[autoSingleSelectConfig.textField].toLowerCase().includes(inputValue.toLowerCase())\r\n || inputValue == '') {\r\n <li\r\n (click)=\"updateSelectedItem(item, 'object')\"\r\n [ngClass]=\"\r\n autoSingleSelectConfig.disabledField &&\r\n item[autoSingleSelectConfig.disabledField]\r\n ? 'disabled_option'\r\n : ''\r\n \"\r\n >\r\n <span class=\"textTruncate\">\r\n {{ item[autoSingleSelectConfig.textField] }}\r\n </span>\r\n </li>\r\n }\r\n </ng-container>\r\n }\r\n </ul>\r\n </ng-container>\r\n }\r\n\r\n <!-- if optionList is an array of string-->\r\n @if (!isObject(optionsList[0])) {\r\n <ng-container>\r\n <ul>\r\n @for (item of optionsList; track $index) {\r\n <ng-container>\r\n @if (item.includes(inputValue) || inputValue == '') {\r\n <li\r\n [ngClass]=\"\r\n autoSingleSelectConfig.disabledField &&\r\n item[autoSingleSelectConfig.disabledField]\r\n ? 'disabled_option'\r\n : ''\r\n \"\r\n (click)=\"updateSelectedItem(item, 'string')\"\r\n >\r\n {{ item }}\r\n </li>\r\n\r\n } </ng-container\r\n >}\r\n </ul></ng-container\r\n >}\r\n </div>\r\n }\r\n</div>\r\n", styles: [":root{--white: #ffffff;--white-50: rgba(255, 255, 255, .582);--black: #1f1f1f;--default: #000000;--black-900: #202224;--pagination-text: var(--neutral-500);--black-dust: #1a1a1a;--neutral-cross: #d9d9d9;--neutral-40: #d5d7da;--neutral-50: #f0f0f0;--neutral-100: #e6e7e8;--neutral-200: #dadbdc;--neutral-300: #c0c2c5;--neutral-400: #81858a;--neutral-500: #434a51;--neutral-600: #040d17;--neutral-900: #010306;--blue-700: #1c60af;--blue-600: #2680ea;--blue-400: #92bff4;--blue-100: #eaf3fd;--blue-300: #c8dff9;--blue-200: #dfecfc;--blue-50: #f7fafe;--blue-800: #1849d6;--grey-50: #e9eaeb;--grey-100: #e2e8f0;--grey-150: #d6d6d6;--grey-200: #64748b;--grey-300: #414651;--grey-400: #8080808c;--grey-600: #535862;--light-grey: #81858a;--dark-grey: #4a4a4a;--green-50: #f7fbf7;--green-100: #ecf4ec;--green-200: #2a6a2d;--green-400: #9bc69d;--green-600: #388e3c;--green-700: rgba(42, 106, 45, 1);--red: #ff0000;--red-50: #fdf7f7;--red-100: #f0c9c9;--red-200: #f7dfdf;--red-300: #f2f2f2;--red-700: #941e1e;--yellow-50: #fffdf5;--yellow-100: #fff5e6;--yellow-200: #fff6da;--yellow-300: #ffefc1;--yellow-400: #fff9e7;--yellow-500: #bf7200;--yellow-600: #ffc107;--yellow-700: #bf9105;--yellow-800: #806003;--yellow-900: #bf9105;--orange-50: rgba(255, 251, 245, 1);--orange-100: #fff5e6;--orange-200: #fff0d9;--orange-600: #ff9800;--orange-700: rgba(191, 114, 0, 1);--box-shadow: #0a0d1208;--box-shadow-100: #0000001f;--box-shadow-200: #0a0d1214;--grid-box-shadow: #0000000a;--model-shadow: rgba(0, 0, 0, .08);--canvas-shadow: #00000014;--chunk-shadow: #0a0d120d;--loader-border: #6f7b93;--modal-bg: rgba(4, 13, 23, .3);--checkbox-border: #0d6efd;--filter-600: rgba(0, 0, 0, .644);--feather-bg: #fafafa}html{font-size:12px}.pointer{cursor:pointer}.d-none{display:none}.textTruncate{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}button{border:calc(.0833333333rem / var(--scale)) solid transparent;padding:0 calc(2.3333333333rem / var(--scale));height:calc(4.6666666667rem / var(--scale));min-width:calc(11.8333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale));border-radius:calc(.6666666667rem / var(--scale));font-size:var(--fs-18);line-height:\"\";font-weight:600;cursor:pointer}button:focus-visible{outline:none;border:0}button i-feather.icon{display:flex}button.primary_btn{background-color:var(--blue-600);color:var(--white)}button.secondary_btn{background-color:var(--neutral-100);color:var(--neutral-500)}button.outline_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300)}button.disable{pointer-events:none;opacity:.6}button.fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-600)}button.disable_fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-300);pointer-events:none}button.bg_logic_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200)}button.no_outline_btn{background-color:var(--blue-50);color:var(--blue-600);outline:none}button .close_outline_btn{background-color:var(--blue-50);border:calc(.0833333333rem / var(--scale)) solid var(--blue-50);color:var(--blue-600)}:root{--fs-6: 6px;--fs-8: 8px;--fs-12: 12px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--fs-20: 20px;--fs-24: 24px;--fs-28: 28px;--fs-30: 30px;--fs-32: 32px;--fs-42: 42px;--fs-48: 48px;--img-w: 28px;--scale: 1}@media only screen and (min-width: 1024px) and (max-width: 1280px){:root{--scale: 1.5;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1360px) and (max-width: 1440px){:root{--scale: 1.33;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1536px) and (max-width: 1919px){:root{--scale: 1.25;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;font-family:Open Sans,sans-serif}body{font-size:100%}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}h1,h2,h3,h4,h5,h6,ul,ol p{margin:0;padding:0;text-wrap:pretty}ul[role=list],ol[role=list],ul{list-style:none}img,picture{max-width:100%;display:block}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--neutral-200);border-radius:8px}input,select,textarea{outline:none;box-shadow:none}.main_container{position:relative;width:100%}.main_container .input_container{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;width:100%;height:calc(4.6666666667rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.6666666667rem / var(--scale));padding:0 calc(1.3333333333rem / var(--scale));font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400;background-color:var(--white);color:var(--default);cursor:pointer}.main_container .input_container .input_box{width:calc(100% - 2rem / var(--scale));height:100%}.main_container .input_container .input_box input{font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400;color:var(--neutral-900);width:100%;height:100%;border:none;outline:none}.main_container .input_container .input_box .drop_icon{cursor:pointer;width:calc(2rem / var(--scale));height:calc(2rem / var(--scale));min-width:calc(2rem / var(--scale))}.main_container .input_container .arrow_icon img{max-width:calc(2rem / var(--scale))}.main_container .dropdown_list_single_auto_select{position:absolute;width:100%;z-index:2;background:var(--white);box-shadow:calc(0rem / var(--scale)) calc(1rem / var(--scale)) calc(1.3333333333rem / var(--scale)) calc(-.3333333333rem / var(--scale)) var(--box-shadow);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.6666666667rem / var(--scale));top:calc(4.6666666667rem / var(--scale))}.main_container .dropdown_list_single_auto_select ul{max-height:calc(23.6666666667rem / var(--scale));overflow:auto;list-style-type:none;padding:calc(.6666666667rem / var(--scale)) 0}.main_container .dropdown_list_single_auto_select ul li{height:calc(4.6666666667rem / var(--scale));display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400;padding:calc(1.3333333333rem / var(--scale));cursor:pointer;color:var(--default)}.main_container .dropdown_list_single_auto_select ul li.disabled_option{opacity:.4;pointer-events:none}.main_container .dropdown_list_single_auto_select ul li:hover{background-color:var(--neutral-50)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: OutsideClickDirective, selector: "[catsOutsideClick]", outputs: ["clickOutSide"] }] });
935
- }
936
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: AutoCompleteSingleSelectComponent, decorators: [{
937
- type: Component,
938
- args: [{ selector: 'cats-ui-auto-complete-single-select', imports: [CommonModule, FormsModule, OutsideClickDirective], template: "<div class=\"main_container\" catsOutsideClick (clickOutSide)=\"outsideClicked()\">\r\n <div class=\"input_container\">\r\n <div class=\"input_box\">\r\n <input\r\n class=\"textTruncate\"\r\n type=\"text\"\r\n [(ngModel)]=\"inputValue\"\r\n (keyup.enter)=\"onClickEnter(inputValue)\"\r\n (keyup)=\"updateDropdownStatus()\"\r\n [placeholder]=\"autoSingleSelectConfig.placeholder\"\r\n />\r\n </div>\r\n <div class=\"arrow_icon\" (click)=\"toggleDropdown()\">\r\n <img\r\n src=\"images/chevron-up.svg\"\r\n alt=\"up-arrow\"\r\n [ngClass]=\"{ 'd-none': !showDropdown }\"\r\n />\r\n <img\r\n src=\"images/chevron-down.svg\"\r\n alt=\"down-arrow\"\r\n [ngClass]=\"{ 'd-none': showDropdown }\"\r\n />\r\n </div>\r\n </div>\r\n\r\n @if (showDropdown) {\r\n <div class=\"dropdown_list_single_auto_select\">\r\n <!-- if optionList is an array of object-->\r\n @if (isObject(optionsList[0])) {\r\n <ng-container>\r\n <ul>\r\n @for (item of optionsList; track $index) {\r\n <ng-container>\r\n @if\r\n (item[autoSingleSelectConfig.textField].toLowerCase().includes(inputValue.toLowerCase())\r\n || inputValue == '') {\r\n <li\r\n (click)=\"updateSelectedItem(item, 'object')\"\r\n [ngClass]=\"\r\n autoSingleSelectConfig.disabledField &&\r\n item[autoSingleSelectConfig.disabledField]\r\n ? 'disabled_option'\r\n : ''\r\n \"\r\n >\r\n <span class=\"textTruncate\">\r\n {{ item[autoSingleSelectConfig.textField] }}\r\n </span>\r\n </li>\r\n }\r\n </ng-container>\r\n }\r\n </ul>\r\n </ng-container>\r\n }\r\n\r\n <!-- if optionList is an array of string-->\r\n @if (!isObject(optionsList[0])) {\r\n <ng-container>\r\n <ul>\r\n @for (item of optionsList; track $index) {\r\n <ng-container>\r\n @if (item.includes(inputValue) || inputValue == '') {\r\n <li\r\n [ngClass]=\"\r\n autoSingleSelectConfig.disabledField &&\r\n item[autoSingleSelectConfig.disabledField]\r\n ? 'disabled_option'\r\n : ''\r\n \"\r\n (click)=\"updateSelectedItem(item, 'string')\"\r\n >\r\n {{ item }}\r\n </li>\r\n\r\n } </ng-container\r\n >}\r\n </ul></ng-container\r\n >}\r\n </div>\r\n }\r\n</div>\r\n", styles: [":root{--white: #ffffff;--white-50: rgba(255, 255, 255, .582);--black: #1f1f1f;--default: #000000;--black-900: #202224;--pagination-text: var(--neutral-500);--black-dust: #1a1a1a;--neutral-cross: #d9d9d9;--neutral-40: #d5d7da;--neutral-50: #f0f0f0;--neutral-100: #e6e7e8;--neutral-200: #dadbdc;--neutral-300: #c0c2c5;--neutral-400: #81858a;--neutral-500: #434a51;--neutral-600: #040d17;--neutral-900: #010306;--blue-700: #1c60af;--blue-600: #2680ea;--blue-400: #92bff4;--blue-100: #eaf3fd;--blue-300: #c8dff9;--blue-200: #dfecfc;--blue-50: #f7fafe;--blue-800: #1849d6;--grey-50: #e9eaeb;--grey-100: #e2e8f0;--grey-150: #d6d6d6;--grey-200: #64748b;--grey-300: #414651;--grey-400: #8080808c;--grey-600: #535862;--light-grey: #81858a;--dark-grey: #4a4a4a;--green-50: #f7fbf7;--green-100: #ecf4ec;--green-200: #2a6a2d;--green-400: #9bc69d;--green-600: #388e3c;--green-700: rgba(42, 106, 45, 1);--red: #ff0000;--red-50: #fdf7f7;--red-100: #f0c9c9;--red-200: #f7dfdf;--red-300: #f2f2f2;--red-700: #941e1e;--yellow-50: #fffdf5;--yellow-100: #fff5e6;--yellow-200: #fff6da;--yellow-300: #ffefc1;--yellow-400: #fff9e7;--yellow-500: #bf7200;--yellow-600: #ffc107;--yellow-700: #bf9105;--yellow-800: #806003;--yellow-900: #bf9105;--orange-50: rgba(255, 251, 245, 1);--orange-100: #fff5e6;--orange-200: #fff0d9;--orange-600: #ff9800;--orange-700: rgba(191, 114, 0, 1);--box-shadow: #0a0d1208;--box-shadow-100: #0000001f;--box-shadow-200: #0a0d1214;--grid-box-shadow: #0000000a;--model-shadow: rgba(0, 0, 0, .08);--canvas-shadow: #00000014;--chunk-shadow: #0a0d120d;--loader-border: #6f7b93;--modal-bg: rgba(4, 13, 23, .3);--checkbox-border: #0d6efd;--filter-600: rgba(0, 0, 0, .644);--feather-bg: #fafafa}html{font-size:12px}.pointer{cursor:pointer}.d-none{display:none}.textTruncate{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}button{border:calc(.0833333333rem / var(--scale)) solid transparent;padding:0 calc(2.3333333333rem / var(--scale));height:calc(4.6666666667rem / var(--scale));min-width:calc(11.8333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale));border-radius:calc(.6666666667rem / var(--scale));font-size:var(--fs-18);line-height:\"\";font-weight:600;cursor:pointer}button:focus-visible{outline:none;border:0}button i-feather.icon{display:flex}button.primary_btn{background-color:var(--blue-600);color:var(--white)}button.secondary_btn{background-color:var(--neutral-100);color:var(--neutral-500)}button.outline_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300)}button.disable{pointer-events:none;opacity:.6}button.fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-600)}button.disable_fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-300);pointer-events:none}button.bg_logic_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200)}button.no_outline_btn{background-color:var(--blue-50);color:var(--blue-600);outline:none}button .close_outline_btn{background-color:var(--blue-50);border:calc(.0833333333rem / var(--scale)) solid var(--blue-50);color:var(--blue-600)}:root{--fs-6: 6px;--fs-8: 8px;--fs-12: 12px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--fs-20: 20px;--fs-24: 24px;--fs-28: 28px;--fs-30: 30px;--fs-32: 32px;--fs-42: 42px;--fs-48: 48px;--img-w: 28px;--scale: 1}@media only screen and (min-width: 1024px) and (max-width: 1280px){:root{--scale: 1.5;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1360px) and (max-width: 1440px){:root{--scale: 1.33;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1536px) and (max-width: 1919px){:root{--scale: 1.25;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;font-family:Open Sans,sans-serif}body{font-size:100%}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}h1,h2,h3,h4,h5,h6,ul,ol p{margin:0;padding:0;text-wrap:pretty}ul[role=list],ol[role=list],ul{list-style:none}img,picture{max-width:100%;display:block}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--neutral-200);border-radius:8px}input,select,textarea{outline:none;box-shadow:none}.main_container{position:relative;width:100%}.main_container .input_container{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;width:100%;height:calc(4.6666666667rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.6666666667rem / var(--scale));padding:0 calc(1.3333333333rem / var(--scale));font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400;background-color:var(--white);color:var(--default);cursor:pointer}.main_container .input_container .input_box{width:calc(100% - 2rem / var(--scale));height:100%}.main_container .input_container .input_box input{font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400;color:var(--neutral-900);width:100%;height:100%;border:none;outline:none}.main_container .input_container .input_box .drop_icon{cursor:pointer;width:calc(2rem / var(--scale));height:calc(2rem / var(--scale));min-width:calc(2rem / var(--scale))}.main_container .input_container .arrow_icon img{max-width:calc(2rem / var(--scale))}.main_container .dropdown_list_single_auto_select{position:absolute;width:100%;z-index:2;background:var(--white);box-shadow:calc(0rem / var(--scale)) calc(1rem / var(--scale)) calc(1.3333333333rem / var(--scale)) calc(-.3333333333rem / var(--scale)) var(--box-shadow);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.6666666667rem / var(--scale));top:calc(4.6666666667rem / var(--scale))}.main_container .dropdown_list_single_auto_select ul{max-height:calc(23.6666666667rem / var(--scale));overflow:auto;list-style-type:none;padding:calc(.6666666667rem / var(--scale)) 0}.main_container .dropdown_list_single_auto_select ul li{height:calc(4.6666666667rem / var(--scale));display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400;padding:calc(1.3333333333rem / var(--scale));cursor:pointer;color:var(--default)}.main_container .dropdown_list_single_auto_select ul li.disabled_option{opacity:.4;pointer-events:none}.main_container .dropdown_list_single_auto_select ul li:hover{background-color:var(--neutral-50)}\n"] }]
939
- }], ctorParameters: () => [], propDecorators: { autoSingleSelectConfig: [{
940
- type: Input
941
- }], selectedItem: [{
942
- type: Input
943
- }], optionsList: [{
944
- type: Input
945
- }], parentNativeElement: [{
946
- type: Input
947
- }], onItemSelection: [{
948
- type: Output
949
- }], onScroll: [{
950
- type: Output
951
- }] } });
952
-
953
- class AutoCompleteMultiSelectComponent {
954
- autoCompleteMultiSelectConfig;
955
- selectedItem;
956
- optionsList = [];
957
- parentNativeElement;
958
- onItemSelection = new EventEmitter();
959
- onScroll = new EventEmitter();
960
- showDropdown = false;
961
- inputValue = '';
962
- selectedOptions = [];
963
- isSelectedAll = false;
964
- constructor() { }
965
- ngOnInit() { }
966
- ngOnChanges() {
967
- this.applyDefaultConfig();
968
- }
969
- applyDefaultConfig() {
970
- const defaults = new AutoCompleteMultiSelectConfig();
971
- this.autoCompleteMultiSelectConfig = {
972
- ...defaults,
973
- ...this.autoCompleteMultiSelectConfig,
974
- };
975
- }
976
- /**
977
- * @description Method to toggle dropdown list
978
- * @author Shiva Kant
979
- */
980
- toggleDropdown() {
981
- this.showDropdown = !this.showDropdown;
982
- if (this.parentNativeElement) {
983
- this.parentNativeElement.scrollIntoView({
984
- behavior: 'smooth',
985
- block: 'center',
986
- });
987
- let parentDiv = document.getElementById(this.parentNativeElement);
988
- setTimeout(() => {
989
- let parentBoundary = parentDiv?.getBoundingClientRect() || {};
990
- let dropdonwList = document.getElementById('container_scroll');
991
- let elBoundary = dropdonwList?.getBoundingClientRect() || {};
992
- if (parentBoundary?.['bottom'] < elBoundary?.['bottom']) {
993
- dropdonwList.style['transform'] = `translate(0px,-${elBoundary?.['height'] + 54}px`;
994
- }
995
- }, 20);
996
- }
997
- }
998
- /**
999
- * @description method to update selected item
1000
- * @author Shiva Kant
1001
- * @param item this is selected item from list
1002
- * @param type type of list
1003
- * @returns none
1004
- */
1005
- updateSelectedItem(item, type) {
1006
- if (type === 'object') {
1007
- // Toggle the option's isSelected
1008
- item.isSelected = !item.isSelected;
1009
- if (item.isSelected) {
1010
- // add to selectedOptions if not already present
1011
- const exists = this.selectedOptions.some((opt) => this.isObject(opt) &&
1012
- opt[this.autoCompleteMultiSelectConfig.textField] ===
1013
- item[this.autoCompleteMultiSelectConfig.textField]);
1014
- if (!exists)
1015
- this.selectedOptions.push(item);
1016
- }
1017
- else {
1018
- // remove from selectedOptions
1019
- this.selectedOptions = this.selectedOptions.filter((opt) => !(this.isObject(opt) &&
1020
- opt[this.autoCompleteMultiSelectConfig.textField] ===
1021
- item[this.autoCompleteMultiSelectConfig.textField]));
1022
- }
1023
- }
1024
- else {
1025
- // string type
1026
- const existsIndex = this.selectedOptions.findIndex((opt) => opt === item);
1027
- if (existsIndex > -1) {
1028
- // remove
1029
- this.selectedOptions.splice(existsIndex, 1);
1030
- }
1031
- else {
1032
- // add
1033
- this.selectedOptions.push(item);
1034
- }
1035
- // If optionsList contains this string, also toggle its isSelected there
1036
- const idxInOptions = this.optionsList.findIndex((o) => typeof o === 'string' && o === item);
1037
- if (idxInOptions > -1) {
1038
- // toggle corresponding option's isSelected
1039
- const opt = this.optionsList[idxInOptions];
1040
- opt.isSelected = !opt.isSelected;
1041
- }
1042
- }
1043
- // keep select all state consistent
1044
- this.updateSelectAllState();
1045
- this.onItemSelection.emit(this.selectedOptions);
1046
- }
1047
- /**
1048
- * @description method to checkUncheckAll
1049
- * @author Shiva Kant
1050
- */
1051
- checkUncheckAll(event) {
1052
- if (event)
1053
- event.stopPropagation();
1054
- this.isSelectedAll = !this.isSelectedAll;
1055
- this.optionsList.forEach((item) => {
1056
- if (!this.autoCompleteMultiSelectConfig.disabledField ||
1057
- !item[this.autoCompleteMultiSelectConfig.disabledField]) {
1058
- item.isSelected = this.isSelectedAll;
1059
- }
1060
- });
1061
- // Keep custom values intact
1062
- const customChips = this.selectedOptions.filter((opt) => this.isObject(opt)
1063
- ? !this.optionsList.some((o) => o[this.autoCompleteMultiSelectConfig.textField] ===
1064
- opt[this.autoCompleteMultiSelectConfig.textField])
1065
- : !this.optionsList.includes(opt));
1066
- const selectedOptionItems = this.optionsList.filter((opt) => opt.isSelected);
1067
- this.selectedOptions = [...customChips, ...selectedOptionItems];
1068
- this.onItemSelection.emit(this.selectedOptions);
1069
- }
1070
- /**
1071
- * @description method to removeChip
1072
- * @author Shiva Kant
1073
- */
1074
- removeChip(item) {
1075
- // Remove from selectedOptions
1076
- this.selectedOptions = this.selectedOptions.filter((opt) => this.isObject(opt)
1077
- ? opt[this.autoCompleteMultiSelectConfig.textField] !==
1078
- (this.isObject(item)
1079
- ? item[this.autoCompleteMultiSelectConfig.textField]
1080
- : item)
1081
- : opt !== item);
1082
- // If item corresponds to an optionsList entry, unselect it there too
1083
- if (this.isObject(item)) {
1084
- const idx = this.optionsList.findIndex((o) => this.isObject(o) &&
1085
- o[this.autoCompleteMultiSelectConfig.textField] ===
1086
- item[this.autoCompleteMultiSelectConfig.textField]);
1087
- if (idx > -1) {
1088
- (this.optionsList[idx]).isSelected = false;
1089
- }
1090
- }
1091
- else {
1092
- // string case
1093
- const idx = this.optionsList.findIndex((o) => o === item);
1094
- if (idx > -1) {
1095
- (this.optionsList[idx]).isSelected = false;
1096
- }
1097
- }
1098
- // update select all state & emit
1099
- this.updateSelectAllState();
1100
- this.onItemSelection.emit(this.selectedOptions);
1101
- }
1102
- /**
1103
- * @description method to update dropdown list state on input type
1104
- * @author Shiva Kant
1105
- */
1106
- updateDropdownStatus() {
1107
- this.showDropdown = true;
1108
- }
1109
- /**
1110
- * @description method to check if the list is Array of string or object
1111
- * @author Shiva Kant
1112
- * @param data this is the any one one item of list
1113
- * @returns boolean
1114
- */
1115
- isObject(data) {
1116
- const type = typeof data;
1117
- return data && type != 'string';
1118
- }
1119
- /**
1120
- * @description This method is use to close dropdown on onClickEnter
1121
- * @author Shiva Kant
1122
- */
1123
- onClickEnter(control) {
1124
- if (!this.inputValue.trim())
1125
- return;
1126
- // pattern check
1127
- if (this.autoCompleteMultiSelectConfig.pattern) {
1128
- const regex = new RegExp(this.autoCompleteMultiSelectConfig.pattern);
1129
- if (!regex.test(this.inputValue)) {
1130
- this.inputValue = '';
1131
- return;
1132
- }
1133
- }
1134
- const val = this.inputValue.trim();
1135
- const valLower = val.toLowerCase();
1136
- // Avoid duplicate
1137
- const exists = this.selectedOptions.some((opt) => this.isObject(opt)
1138
- ? opt[this.autoCompleteMultiSelectConfig.textField].toLowerCase() ===
1139
- valLower
1140
- : opt.toLowerCase() === valLower);
1141
- if (exists) {
1142
- this.inputValue = '';
1143
- return;
1144
- }
1145
- // Try find matched item in optionsList
1146
- const matchedItem = this.isObject(this.optionsList?.[0])
1147
- ? this.optionsList.find((opt) => opt[this.autoCompleteMultiSelectConfig.textField].toLowerCase() ===
1148
- valLower)
1149
- : this.optionsList.find((opt) => opt.toLowerCase() === valLower);
1150
- if (matchedItem) {
1151
- // If matched, ensure option is marked selected and present in selectedOptions
1152
- matchedItem.isSelected = true;
1153
- const already = this.selectedOptions.some((opt) => this.isObject(opt)
1154
- ? opt[this.autoCompleteMultiSelectConfig.textField] ===
1155
- matchedItem[this.autoCompleteMultiSelectConfig.textField]
1156
- : opt === matchedItem);
1157
- if (!already)
1158
- this.selectedOptions.push(matchedItem);
1159
- }
1160
- else if (this.autoCompleteMultiSelectConfig.customInput) {
1161
- // create custom item and mark it selected
1162
- let newItem = val;
1163
- if (this.isObject(this.optionsList?.[0])) {
1164
- newItem = {
1165
- [this.autoCompleteMultiSelectConfig.idField]: null,
1166
- [this.autoCompleteMultiSelectConfig.textField]: val,
1167
- isSelected: true, // mark selected for consistency
1168
- __isCustom: true, // optional flag to identify custom items
1169
- };
1170
- }
1171
- this.selectedOptions.push(newItem);
1172
- }
1173
- // reset input but keep dropdown open (as you wanted)
1174
- this.inputValue = '';
1175
- // update select all state and emit
1176
- this.updateSelectAllState();
1177
- this.onItemSelection.emit(this.selectedOptions);
1178
- }
1179
- outsideClicked() {
1180
- this.showDropdown = false;
1181
- }
1182
- /**
1183
- * @description method to load more list
1184
- * @author Shiva Kant
1185
- * @param event
1186
- */
1187
- onDivScroll(event) {
1188
- if (event.target.offsetHeight + event.target.scrollTop >=
1189
- event.target.scrollHeight - 1 &&
1190
- this.optionsList.length) {
1191
- this.onScroll.emit();
1192
- }
1193
- }
1194
- updateSelectAllState() {
1195
- // only consider non-disabled items for select-all state
1196
- const selectable = this.optionsList.filter((opt) => !(this.autoCompleteMultiSelectConfig.disabledField &&
1197
- opt[this.autoCompleteMultiSelectConfig.disabledField]));
1198
- this.isSelectedAll =
1199
- selectable.length > 0 && selectable.every((opt) => !!opt.isSelected);
1200
- }
1201
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: AutoCompleteMultiSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1202
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: AutoCompleteMultiSelectComponent, isStandalone: true, selector: "cats-ui-auto-complete-multi-select", inputs: { autoCompleteMultiSelectConfig: "autoCompleteMultiSelectConfig", selectedItem: "selectedItem", optionsList: "optionsList", parentNativeElement: "parentNativeElement" }, outputs: { onItemSelection: "onItemSelection", onScroll: "onScroll" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"main_container\">\r\n <div\r\n class=\"input_container\"\r\n catsOutsideClick\r\n (clickOutSide)=\"outsideClicked()\"\r\n >\r\n <div class=\"chips_wrapper\">\r\n <!-- Chips -->\r\n @for (item of selectedOptions; track $index) { @if ($index <\r\n autoCompleteMultiSelectConfig.chipLimit) {\r\n <div class=\"chip\" (click)=\"$event.stopPropagation()\">\r\n <span class=\"textTruncate\">\r\n {{\r\n isObject(item)\r\n ? item[autoCompleteMultiSelectConfig.textField]\r\n : item\r\n }}\r\n </span>\r\n <img\r\n src=\"images/x.svg\"\r\n class=\"cross_icon\"\r\n (click)=\"$event.stopPropagation(); removeChip(item)\"\r\n />\r\n </div>\r\n } }\r\n <!-- +N counter -->\r\n @if (selectedOptions.length > autoCompleteMultiSelectConfig.chipLimit) {\r\n <div class=\"view_more\">\r\n +{{ selectedOptions.length - autoCompleteMultiSelectConfig.chipLimit }}\r\n </div>\r\n }\r\n <!-- Input Box (always available) -->\r\n <div class=\"input_box\" (click)=\"$event.stopPropagation()\">\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"inputValue\"\r\n (keyup.enter)=\"onClickEnter()\"\r\n (keyup)=\"updateDropdownStatus()\"\r\n [placeholder]=\"\r\n selectedOptions.length === 0\r\n ? autoCompleteMultiSelectConfig.placeholder\r\n : ''\r\n \"\r\n />\r\n </div>\r\n </div>\r\n\r\n <!-- Dropdown toggle -->\r\n <div class=\"arrow_icon\" (click)=\"toggleDropdown()\">\r\n <img\r\n src=\"images/chevron-up.svg\"\r\n [ngClass]=\"{ 'd-none': !showDropdown }\"\r\n />\r\n <img\r\n src=\"images/chevron-down.svg\"\r\n [ngClass]=\"{ 'd-none': showDropdown }\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <!-- Dropdown list -->\r\n @if (showDropdown) {\r\n <div class=\"dropdown_list_multi_auto_select\" id=\"container_scroll\" (click)=\" onDivScroll($event)\">\r\n <ul>\r\n <!-- Select All -->\r\n @if (autoCompleteMultiSelectConfig.selectAll) {\r\n <li\r\n class=\"checkbox_container select_all_item\"\r\n (click)=\"checkUncheckAll($event)\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"isSelectedAll\"\r\n (click)=\"$event.stopPropagation(); checkUncheckAll($event)\"\r\n />\r\n <span>{{ isSelectedAll ? \"Unselect All\" : \"Select All\" }}</span>\r\n </li>\r\n }\r\n\r\n <!-- Object Options -->\r\n @if (isObject(optionsList[0])) { @for (item of optionsList; track $index)\r\n { @if (item[autoCompleteMultiSelectConfig.textField] .toLowerCase()\r\n .includes(inputValue.toLowerCase()) || inputValue == \"\") {\r\n\r\n <li\r\n class=\"checkbox_container\"\r\n [ngClass]=\"{\r\n disabled_option:\r\n autoCompleteMultiSelectConfig.disabledField &&\r\n item[autoCompleteMultiSelectConfig.disabledField]\r\n }\"\r\n (click)=\"updateSelectedItem(item, 'object')\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"item.isSelected\"\r\n (click)=\"$event.stopPropagation(); updateSelectedItem(item, 'object')\"\r\n />\r\n\r\n <span class=\"textTruncate\">{{\r\n item[autoCompleteMultiSelectConfig.textField]\r\n }}</span>\r\n </li>\r\n } } }\r\n\r\n <!-- String Options -->\r\n @if (!isObject(optionsList[0])) { @for (item of optionsList; track $index)\r\n { @if (item.toLowerCase().includes(inputValue.toLowerCase()) || inputValue\r\n == \"\") {\r\n <li\r\n class=\"checkbox_container\"\r\n (click)=\"updateSelectedItem(item, 'string')\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"selectedOptions.includes(item)\"\r\n (click)=\"$event.stopPropagation(); updateSelectedItem(item, 'string')\"\r\n />\r\n <span class=\"textTruncate\">{{ item }}</span>\r\n </li>\r\n } } }\r\n </ul>\r\n </div>\r\n }\r\n</div>\r\n", styles: [":root{--white: #ffffff;--white-50: rgba(255, 255, 255, .582);--black: #1f1f1f;--default: #000000;--black-900: #202224;--pagination-text: var(--neutral-500);--black-dust: #1a1a1a;--neutral-cross: #d9d9d9;--neutral-40: #d5d7da;--neutral-50: #f0f0f0;--neutral-100: #e6e7e8;--neutral-200: #dadbdc;--neutral-300: #c0c2c5;--neutral-400: #81858a;--neutral-500: #434a51;--neutral-600: #040d17;--neutral-900: #010306;--blue-700: #1c60af;--blue-600: #2680ea;--blue-400: #92bff4;--blue-100: #eaf3fd;--blue-300: #c8dff9;--blue-200: #dfecfc;--blue-50: #f7fafe;--blue-800: #1849d6;--grey-50: #e9eaeb;--grey-100: #e2e8f0;--grey-150: #d6d6d6;--grey-200: #64748b;--grey-300: #414651;--grey-400: #8080808c;--grey-600: #535862;--light-grey: #81858a;--dark-grey: #4a4a4a;--green-50: #f7fbf7;--green-100: #ecf4ec;--green-200: #2a6a2d;--green-400: #9bc69d;--green-600: #388e3c;--green-700: rgba(42, 106, 45, 1);--red: #ff0000;--red-50: #fdf7f7;--red-100: #f0c9c9;--red-200: #f7dfdf;--red-300: #f2f2f2;--red-700: #941e1e;--yellow-50: #fffdf5;--yellow-100: #fff5e6;--yellow-200: #fff6da;--yellow-300: #ffefc1;--yellow-400: #fff9e7;--yellow-500: #bf7200;--yellow-600: #ffc107;--yellow-700: #bf9105;--yellow-800: #806003;--yellow-900: #bf9105;--orange-50: rgba(255, 251, 245, 1);--orange-100: #fff5e6;--orange-200: #fff0d9;--orange-600: #ff9800;--orange-700: rgba(191, 114, 0, 1);--box-shadow: #0a0d1208;--box-shadow-100: #0000001f;--box-shadow-200: #0a0d1214;--grid-box-shadow: #0000000a;--model-shadow: rgba(0, 0, 0, .08);--canvas-shadow: #00000014;--chunk-shadow: #0a0d120d;--loader-border: #6f7b93;--modal-bg: rgba(4, 13, 23, .3);--checkbox-border: #0d6efd;--filter-600: rgba(0, 0, 0, .644);--feather-bg: #fafafa}html{font-size:12px}.pointer{cursor:pointer}.d-none{display:none}.textTruncate{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}button{border:calc(.0833333333rem / var(--scale)) solid transparent;padding:0 calc(2.3333333333rem / var(--scale));height:calc(4.6666666667rem / var(--scale));min-width:calc(11.8333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale));border-radius:calc(.6666666667rem / var(--scale));font-size:var(--fs-18);line-height:\"\";font-weight:600;cursor:pointer}button:focus-visible{outline:none;border:0}button i-feather.icon{display:flex}button.primary_btn{background-color:var(--blue-600);color:var(--white)}button.secondary_btn{background-color:var(--neutral-100);color:var(--neutral-500)}button.outline_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300)}button.disable{pointer-events:none;opacity:.6}button.fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-600)}button.disable_fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-300);pointer-events:none}button.bg_logic_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200)}button.no_outline_btn{background-color:var(--blue-50);color:var(--blue-600);outline:none}button .close_outline_btn{background-color:var(--blue-50);border:calc(.0833333333rem / var(--scale)) solid var(--blue-50);color:var(--blue-600)}:root{--fs-6: 6px;--fs-8: 8px;--fs-12: 12px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--fs-20: 20px;--fs-24: 24px;--fs-28: 28px;--fs-30: 30px;--fs-32: 32px;--fs-42: 42px;--fs-48: 48px;--img-w: 28px;--scale: 1}@media only screen and (min-width: 1024px) and (max-width: 1280px){:root{--scale: 1.5;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1360px) and (max-width: 1440px){:root{--scale: 1.33;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1536px) and (max-width: 1919px){:root{--scale: 1.25;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;font-family:Open Sans,sans-serif}body{font-size:100%}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}h1,h2,h3,h4,h5,h6,ul,ol p{margin:0;padding:0;text-wrap:pretty}ul[role=list],ol[role=list],ul{list-style:none}img,picture{max-width:100%;display:block}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--neutral-200);border-radius:8px}input,select,textarea{outline:none;box-shadow:none}.main_container{position:relative;width:100%}.main_container .input_container{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;width:100%;height:calc(4.6666666667rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.6666666667rem / var(--scale));padding:0 calc(1.3333333333rem / var(--scale));background-color:var(--white);color:var(--neutral-900);cursor:pointer}.main_container .input_container .chips_wrapper .chip,.main_container .input_container .chips_wrapper .view_more{height:calc(3.3333333333rem / var(--scale));background-color:var(--blue-50);color:var(--blue-700);border-radius:calc(1.3333333333rem / var(--scale));padding:calc(.6666666667rem / var(--scale));display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:calc(.3333333333rem / var(--scale));font-size:var(--fs-16);line-height:calc(2.3333333333rem / var(--scale));font-weight:400;text-wrap:nowrap}.main_container .input_container .chips_wrapper{display:flex;flex-direction:\"\";justify-content:\"\";align-items:center;flex-wrap:wrap;gap:calc(1rem / var(--scale));width:calc(100% - 2rem / var(--scale));height:100%}.main_container .input_container .chips_wrapper .view_more{margin-right:auto;display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:0;max-width:calc(4.1666666667rem / var(--scale));text-align:center}.main_container .input_container .chips_wrapper .chip{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:calc(.3333333333rem / var(--scale))}.main_container .input_container .chips_wrapper .chip span{max-width:calc(12.5rem / var(--scale));font-weight:400}.main_container .input_container .chips_wrapper .chip .cross_icon{max-width:calc(1.6666666667rem / var(--scale))}.main_container .input_container .input_box{width:auto;height:100%;display:flex;flex:1}.main_container .input_container .input_box input{font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400;color:var(--default);flex:1;border:none;outline:none}.main_container .input_container .arrow_icon img{max-width:calc(2rem / var(--scale))}.main_container .dropdown_list_multi_auto_select{position:absolute;width:100%;z-index:2;background:var(--white);box-shadow:calc(0rem / var(--scale)) calc(1rem / var(--scale)) calc(1.3333333333rem / var(--scale)) calc(-.3333333333rem / var(--scale)) var(--box-shadow);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.6666666667rem / var(--scale));top:calc(4.6666666667rem / var(--scale))}.main_container .dropdown_list_multi_auto_select ul{list-style-type:none;padding:0;margin-bottom:0;max-height:calc(23.4166666667rem / var(--scale));overflow:auto}.main_container .dropdown_list_multi_auto_select ul li{padding:calc(1.3333333333rem / var(--scale));height:calc(4.6666666667rem / var(--scale));display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale));font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400;cursor:pointer;color:var(--default)}.main_container .dropdown_list_multi_auto_select ul li.disabled_option{opacity:.4;pointer-events:none}.main_container .dropdown_list_multi_auto_select ul li:hover{background-color:var(--neutral-50)}.main_container .dropdown_list_multi_auto_select ul .checkbox_container{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale));font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400}.main_container .dropdown_list_multi_auto_select ul .checkbox_container input[type=checkbox]{appearance:none;-webkit-appearance:none;width:calc(2rem / var(--scale));height:calc(2rem / var(--scale));min-width:calc(2rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.3333333333rem / var(--scale));cursor:pointer;background-color:var(--white);position:relative;transition:all .2s ease}.main_container .dropdown_list_multi_auto_select ul .checkbox_container input[type=checkbox]:after{content:\"\";display:none;position:absolute;top:calc(-.0833333333rem / var(--scale));left:calc(-.1666666667rem / var(--scale));width:calc(2rem / var(--scale));height:calc(2rem / var(--scale));background-size:contain;background-repeat:no-repeat;background-position:center}.main_container .dropdown_list_multi_auto_select ul .checkbox_container input[type=checkbox]:checked{border-color:var(--blue-600);background-color:var(--blue-600)}.main_container .dropdown_list_multi_auto_select ul .checkbox_container input[type=checkbox]:checked:after{display:block;background-image:url(/images/icon-checked.svg)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: OutsideClickDirective, selector: "[catsOutsideClick]", outputs: ["clickOutSide"] }] });
1203
- }
1204
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: AutoCompleteMultiSelectComponent, decorators: [{
1205
- type: Component,
1206
- args: [{ selector: 'cats-ui-auto-complete-multi-select', imports: [CommonModule, FormsModule, OutsideClickDirective], template: "<div class=\"main_container\">\r\n <div\r\n class=\"input_container\"\r\n catsOutsideClick\r\n (clickOutSide)=\"outsideClicked()\"\r\n >\r\n <div class=\"chips_wrapper\">\r\n <!-- Chips -->\r\n @for (item of selectedOptions; track $index) { @if ($index <\r\n autoCompleteMultiSelectConfig.chipLimit) {\r\n <div class=\"chip\" (click)=\"$event.stopPropagation()\">\r\n <span class=\"textTruncate\">\r\n {{\r\n isObject(item)\r\n ? item[autoCompleteMultiSelectConfig.textField]\r\n : item\r\n }}\r\n </span>\r\n <img\r\n src=\"images/x.svg\"\r\n class=\"cross_icon\"\r\n (click)=\"$event.stopPropagation(); removeChip(item)\"\r\n />\r\n </div>\r\n } }\r\n <!-- +N counter -->\r\n @if (selectedOptions.length > autoCompleteMultiSelectConfig.chipLimit) {\r\n <div class=\"view_more\">\r\n +{{ selectedOptions.length - autoCompleteMultiSelectConfig.chipLimit }}\r\n </div>\r\n }\r\n <!-- Input Box (always available) -->\r\n <div class=\"input_box\" (click)=\"$event.stopPropagation()\">\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"inputValue\"\r\n (keyup.enter)=\"onClickEnter()\"\r\n (keyup)=\"updateDropdownStatus()\"\r\n [placeholder]=\"\r\n selectedOptions.length === 0\r\n ? autoCompleteMultiSelectConfig.placeholder\r\n : ''\r\n \"\r\n />\r\n </div>\r\n </div>\r\n\r\n <!-- Dropdown toggle -->\r\n <div class=\"arrow_icon\" (click)=\"toggleDropdown()\">\r\n <img\r\n src=\"images/chevron-up.svg\"\r\n [ngClass]=\"{ 'd-none': !showDropdown }\"\r\n />\r\n <img\r\n src=\"images/chevron-down.svg\"\r\n [ngClass]=\"{ 'd-none': showDropdown }\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <!-- Dropdown list -->\r\n @if (showDropdown) {\r\n <div class=\"dropdown_list_multi_auto_select\" id=\"container_scroll\" (click)=\" onDivScroll($event)\">\r\n <ul>\r\n <!-- Select All -->\r\n @if (autoCompleteMultiSelectConfig.selectAll) {\r\n <li\r\n class=\"checkbox_container select_all_item\"\r\n (click)=\"checkUncheckAll($event)\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"isSelectedAll\"\r\n (click)=\"$event.stopPropagation(); checkUncheckAll($event)\"\r\n />\r\n <span>{{ isSelectedAll ? \"Unselect All\" : \"Select All\" }}</span>\r\n </li>\r\n }\r\n\r\n <!-- Object Options -->\r\n @if (isObject(optionsList[0])) { @for (item of optionsList; track $index)\r\n { @if (item[autoCompleteMultiSelectConfig.textField] .toLowerCase()\r\n .includes(inputValue.toLowerCase()) || inputValue == \"\") {\r\n\r\n <li\r\n class=\"checkbox_container\"\r\n [ngClass]=\"{\r\n disabled_option:\r\n autoCompleteMultiSelectConfig.disabledField &&\r\n item[autoCompleteMultiSelectConfig.disabledField]\r\n }\"\r\n (click)=\"updateSelectedItem(item, 'object')\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"item.isSelected\"\r\n (click)=\"$event.stopPropagation(); updateSelectedItem(item, 'object')\"\r\n />\r\n\r\n <span class=\"textTruncate\">{{\r\n item[autoCompleteMultiSelectConfig.textField]\r\n }}</span>\r\n </li>\r\n } } }\r\n\r\n <!-- String Options -->\r\n @if (!isObject(optionsList[0])) { @for (item of optionsList; track $index)\r\n { @if (item.toLowerCase().includes(inputValue.toLowerCase()) || inputValue\r\n == \"\") {\r\n <li\r\n class=\"checkbox_container\"\r\n (click)=\"updateSelectedItem(item, 'string')\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"selectedOptions.includes(item)\"\r\n (click)=\"$event.stopPropagation(); updateSelectedItem(item, 'string')\"\r\n />\r\n <span class=\"textTruncate\">{{ item }}</span>\r\n </li>\r\n } } }\r\n </ul>\r\n </div>\r\n }\r\n</div>\r\n", styles: [":root{--white: #ffffff;--white-50: rgba(255, 255, 255, .582);--black: #1f1f1f;--default: #000000;--black-900: #202224;--pagination-text: var(--neutral-500);--black-dust: #1a1a1a;--neutral-cross: #d9d9d9;--neutral-40: #d5d7da;--neutral-50: #f0f0f0;--neutral-100: #e6e7e8;--neutral-200: #dadbdc;--neutral-300: #c0c2c5;--neutral-400: #81858a;--neutral-500: #434a51;--neutral-600: #040d17;--neutral-900: #010306;--blue-700: #1c60af;--blue-600: #2680ea;--blue-400: #92bff4;--blue-100: #eaf3fd;--blue-300: #c8dff9;--blue-200: #dfecfc;--blue-50: #f7fafe;--blue-800: #1849d6;--grey-50: #e9eaeb;--grey-100: #e2e8f0;--grey-150: #d6d6d6;--grey-200: #64748b;--grey-300: #414651;--grey-400: #8080808c;--grey-600: #535862;--light-grey: #81858a;--dark-grey: #4a4a4a;--green-50: #f7fbf7;--green-100: #ecf4ec;--green-200: #2a6a2d;--green-400: #9bc69d;--green-600: #388e3c;--green-700: rgba(42, 106, 45, 1);--red: #ff0000;--red-50: #fdf7f7;--red-100: #f0c9c9;--red-200: #f7dfdf;--red-300: #f2f2f2;--red-700: #941e1e;--yellow-50: #fffdf5;--yellow-100: #fff5e6;--yellow-200: #fff6da;--yellow-300: #ffefc1;--yellow-400: #fff9e7;--yellow-500: #bf7200;--yellow-600: #ffc107;--yellow-700: #bf9105;--yellow-800: #806003;--yellow-900: #bf9105;--orange-50: rgba(255, 251, 245, 1);--orange-100: #fff5e6;--orange-200: #fff0d9;--orange-600: #ff9800;--orange-700: rgba(191, 114, 0, 1);--box-shadow: #0a0d1208;--box-shadow-100: #0000001f;--box-shadow-200: #0a0d1214;--grid-box-shadow: #0000000a;--model-shadow: rgba(0, 0, 0, .08);--canvas-shadow: #00000014;--chunk-shadow: #0a0d120d;--loader-border: #6f7b93;--modal-bg: rgba(4, 13, 23, .3);--checkbox-border: #0d6efd;--filter-600: rgba(0, 0, 0, .644);--feather-bg: #fafafa}html{font-size:12px}.pointer{cursor:pointer}.d-none{display:none}.textTruncate{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}button{border:calc(.0833333333rem / var(--scale)) solid transparent;padding:0 calc(2.3333333333rem / var(--scale));height:calc(4.6666666667rem / var(--scale));min-width:calc(11.8333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale));border-radius:calc(.6666666667rem / var(--scale));font-size:var(--fs-18);line-height:\"\";font-weight:600;cursor:pointer}button:focus-visible{outline:none;border:0}button i-feather.icon{display:flex}button.primary_btn{background-color:var(--blue-600);color:var(--white)}button.secondary_btn{background-color:var(--neutral-100);color:var(--neutral-500)}button.outline_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300)}button.disable{pointer-events:none;opacity:.6}button.fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-600)}button.disable_fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-300);pointer-events:none}button.bg_logic_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200)}button.no_outline_btn{background-color:var(--blue-50);color:var(--blue-600);outline:none}button .close_outline_btn{background-color:var(--blue-50);border:calc(.0833333333rem / var(--scale)) solid var(--blue-50);color:var(--blue-600)}:root{--fs-6: 6px;--fs-8: 8px;--fs-12: 12px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--fs-20: 20px;--fs-24: 24px;--fs-28: 28px;--fs-30: 30px;--fs-32: 32px;--fs-42: 42px;--fs-48: 48px;--img-w: 28px;--scale: 1}@media only screen and (min-width: 1024px) and (max-width: 1280px){:root{--scale: 1.5;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1360px) and (max-width: 1440px){:root{--scale: 1.33;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1536px) and (max-width: 1919px){:root{--scale: 1.25;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;font-family:Open Sans,sans-serif}body{font-size:100%}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}h1,h2,h3,h4,h5,h6,ul,ol p{margin:0;padding:0;text-wrap:pretty}ul[role=list],ol[role=list],ul{list-style:none}img,picture{max-width:100%;display:block}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--neutral-200);border-radius:8px}input,select,textarea{outline:none;box-shadow:none}.main_container{position:relative;width:100%}.main_container .input_container{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;width:100%;height:calc(4.6666666667rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.6666666667rem / var(--scale));padding:0 calc(1.3333333333rem / var(--scale));background-color:var(--white);color:var(--neutral-900);cursor:pointer}.main_container .input_container .chips_wrapper .chip,.main_container .input_container .chips_wrapper .view_more{height:calc(3.3333333333rem / var(--scale));background-color:var(--blue-50);color:var(--blue-700);border-radius:calc(1.3333333333rem / var(--scale));padding:calc(.6666666667rem / var(--scale));display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:calc(.3333333333rem / var(--scale));font-size:var(--fs-16);line-height:calc(2.3333333333rem / var(--scale));font-weight:400;text-wrap:nowrap}.main_container .input_container .chips_wrapper{display:flex;flex-direction:\"\";justify-content:\"\";align-items:center;flex-wrap:wrap;gap:calc(1rem / var(--scale));width:calc(100% - 2rem / var(--scale));height:100%}.main_container .input_container .chips_wrapper .view_more{margin-right:auto;display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:0;max-width:calc(4.1666666667rem / var(--scale));text-align:center}.main_container .input_container .chips_wrapper .chip{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:calc(.3333333333rem / var(--scale))}.main_container .input_container .chips_wrapper .chip span{max-width:calc(12.5rem / var(--scale));font-weight:400}.main_container .input_container .chips_wrapper .chip .cross_icon{max-width:calc(1.6666666667rem / var(--scale))}.main_container .input_container .input_box{width:auto;height:100%;display:flex;flex:1}.main_container .input_container .input_box input{font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400;color:var(--default);flex:1;border:none;outline:none}.main_container .input_container .arrow_icon img{max-width:calc(2rem / var(--scale))}.main_container .dropdown_list_multi_auto_select{position:absolute;width:100%;z-index:2;background:var(--white);box-shadow:calc(0rem / var(--scale)) calc(1rem / var(--scale)) calc(1.3333333333rem / var(--scale)) calc(-.3333333333rem / var(--scale)) var(--box-shadow);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.6666666667rem / var(--scale));top:calc(4.6666666667rem / var(--scale))}.main_container .dropdown_list_multi_auto_select ul{list-style-type:none;padding:0;margin-bottom:0;max-height:calc(23.4166666667rem / var(--scale));overflow:auto}.main_container .dropdown_list_multi_auto_select ul li{padding:calc(1.3333333333rem / var(--scale));height:calc(4.6666666667rem / var(--scale));display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale));font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400;cursor:pointer;color:var(--default)}.main_container .dropdown_list_multi_auto_select ul li.disabled_option{opacity:.4;pointer-events:none}.main_container .dropdown_list_multi_auto_select ul li:hover{background-color:var(--neutral-50)}.main_container .dropdown_list_multi_auto_select ul .checkbox_container{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale));font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400}.main_container .dropdown_list_multi_auto_select ul .checkbox_container input[type=checkbox]{appearance:none;-webkit-appearance:none;width:calc(2rem / var(--scale));height:calc(2rem / var(--scale));min-width:calc(2rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.3333333333rem / var(--scale));cursor:pointer;background-color:var(--white);position:relative;transition:all .2s ease}.main_container .dropdown_list_multi_auto_select ul .checkbox_container input[type=checkbox]:after{content:\"\";display:none;position:absolute;top:calc(-.0833333333rem / var(--scale));left:calc(-.1666666667rem / var(--scale));width:calc(2rem / var(--scale));height:calc(2rem / var(--scale));background-size:contain;background-repeat:no-repeat;background-position:center}.main_container .dropdown_list_multi_auto_select ul .checkbox_container input[type=checkbox]:checked{border-color:var(--blue-600);background-color:var(--blue-600)}.main_container .dropdown_list_multi_auto_select ul .checkbox_container input[type=checkbox]:checked:after{display:block;background-image:url(/images/icon-checked.svg)}\n"] }]
1207
- }], ctorParameters: () => [], propDecorators: { autoCompleteMultiSelectConfig: [{
1208
- type: Input
1209
- }], selectedItem: [{
1210
- type: Input
1211
- }], optionsList: [{
1212
- type: Input
1213
- }], parentNativeElement: [{
1214
- type: Input
1215
- }], onItemSelection: [{
1216
- type: Output
1217
- }], onScroll: [{
1218
- type: Output
1219
- }] } });
1220
-
1221
- class ToogleButtonComponent {
1222
- toggleConfig;
1223
- onToggled = new EventEmitter();
1224
- onChange = () => { };
1225
- onTouched = () => { };
1226
- toggle() {
1227
- if (!this.toggleConfig.disabled) {
1228
- this.toggleConfig.checked = !this.toggleConfig.checked;
1229
- this.onToggled.emit(this.toggleConfig.checked);
1230
- }
1231
- }
1232
- // ControlValueAccessor methods
1233
- writeValue(value) {
1234
- this.toggleConfig.checked = value;
1235
- }
1236
- registerOnChange(fn) {
1237
- this.onChange = fn;
1238
- }
1239
- registerOnTouched(fn) {
1240
- this.onTouched = fn;
1241
- }
1242
- setDisabledState(isDisabled) {
1243
- this.toggleConfig.disabled = isDisabled;
1244
- }
1245
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ToogleButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1246
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.14", type: ToogleButtonComponent, isStandalone: true, selector: "cats-ui-toogle-button", inputs: { toggleConfig: "toggleConfig" }, outputs: { onToggled: "onToggled" }, providers: [
1247
- {
1248
- provide: NG_VALUE_ACCESSOR,
1249
- useExisting: forwardRef(() => ToogleButtonComponent),
1250
- multi: true,
1251
- },
1252
- ], ngImport: i0, template: "<div class=\"toggle_button\">\r\n <label class=\"switch\">\r\n <input \r\n type=\"checkbox\" \r\n [checked]=\"toggleConfig.checked\" \r\n [disabled]=\"toggleConfig.disabled\"\r\n (change)=\"toggle()\"\r\n />\r\n <span class=\"slider round\"></span>\r\n <span class=\"toggle-status\">\r\n {{ toggleConfig.checked ? 'ON' : 'OFF' }}\r\n </span>\r\n </label>\r\n</div>\r\n", styles: [":root{--white: #ffffff;--white-50: rgba(255, 255, 255, .582);--black: #1f1f1f;--default: #000000;--black-900: #202224;--pagination-text: var(--neutral-500);--black-dust: #1a1a1a;--neutral-cross: #d9d9d9;--neutral-40: #d5d7da;--neutral-50: #f0f0f0;--neutral-100: #e6e7e8;--neutral-200: #dadbdc;--neutral-300: #c0c2c5;--neutral-400: #81858a;--neutral-500: #434a51;--neutral-600: #040d17;--neutral-900: #010306;--blue-700: #1c60af;--blue-600: #2680ea;--blue-400: #92bff4;--blue-100: #eaf3fd;--blue-300: #c8dff9;--blue-200: #dfecfc;--blue-50: #f7fafe;--blue-800: #1849d6;--grey-50: #e9eaeb;--grey-100: #e2e8f0;--grey-150: #d6d6d6;--grey-200: #64748b;--grey-300: #414651;--grey-400: #8080808c;--grey-600: #535862;--light-grey: #81858a;--dark-grey: #4a4a4a;--green-50: #f7fbf7;--green-100: #ecf4ec;--green-200: #2a6a2d;--green-400: #9bc69d;--green-600: #388e3c;--green-700: rgba(42, 106, 45, 1);--red: #ff0000;--red-50: #fdf7f7;--red-100: #f0c9c9;--red-200: #f7dfdf;--red-300: #f2f2f2;--red-700: #941e1e;--yellow-50: #fffdf5;--yellow-100: #fff5e6;--yellow-200: #fff6da;--yellow-300: #ffefc1;--yellow-400: #fff9e7;--yellow-500: #bf7200;--yellow-600: #ffc107;--yellow-700: #bf9105;--yellow-800: #806003;--yellow-900: #bf9105;--orange-50: rgba(255, 251, 245, 1);--orange-100: #fff5e6;--orange-200: #fff0d9;--orange-600: #ff9800;--orange-700: rgba(191, 114, 0, 1);--box-shadow: #0a0d1208;--box-shadow-100: #0000001f;--box-shadow-200: #0a0d1214;--grid-box-shadow: #0000000a;--model-shadow: rgba(0, 0, 0, .08);--canvas-shadow: #00000014;--chunk-shadow: #0a0d120d;--loader-border: #6f7b93;--modal-bg: rgba(4, 13, 23, .3);--checkbox-border: #0d6efd;--filter-600: rgba(0, 0, 0, .644);--feather-bg: #fafafa}html{font-size:12px}.pointer{cursor:pointer}.d-none{display:none}.textTruncate{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}button{border:calc(.0833333333rem / var(--scale)) solid transparent;padding:0 calc(2.3333333333rem / var(--scale));height:calc(4.6666666667rem / var(--scale));min-width:calc(11.8333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale));border-radius:calc(.6666666667rem / var(--scale));font-size:var(--fs-18);line-height:\"\";font-weight:600;cursor:pointer}button:focus-visible{outline:none;border:0}button i-feather.icon{display:flex}button.primary_btn{background-color:var(--blue-600);color:var(--white)}button.secondary_btn{background-color:var(--neutral-100);color:var(--neutral-500)}button.outline_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300)}button.disable{pointer-events:none;opacity:.6}button.fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-600)}button.disable_fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-300);pointer-events:none}button.bg_logic_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200)}button.no_outline_btn{background-color:var(--blue-50);color:var(--blue-600);outline:none}button .close_outline_btn{background-color:var(--blue-50);border:calc(.0833333333rem / var(--scale)) solid var(--blue-50);color:var(--blue-600)}:root{--fs-6: 6px;--fs-8: 8px;--fs-12: 12px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--fs-20: 20px;--fs-24: 24px;--fs-28: 28px;--fs-30: 30px;--fs-32: 32px;--fs-42: 42px;--fs-48: 48px;--img-w: 28px;--scale: 1}@media only screen and (min-width: 1024px) and (max-width: 1280px){:root{--scale: 1.5;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1360px) and (max-width: 1440px){:root{--scale: 1.33;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1536px) and (max-width: 1919px){:root{--scale: 1.25;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;font-family:Open Sans,sans-serif}body{font-size:100%}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}h1,h2,h3,h4,h5,h6,ul,ol p{margin:0;padding:0;text-wrap:pretty}ul[role=list],ol[role=list],ul{list-style:none}img,picture{max-width:100%;display:block}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--neutral-200);border-radius:8px}input,select,textarea{outline:none;box-shadow:none}.toggle_button .switch{position:relative;display:flex;width:calc(3rem / var(--scale));height:calc(1.6666666667rem / var(--scale))}.toggle_button .switch input{opacity:0;width:0;height:0}.toggle_button .switch input:focus{box-shadow:unset}.toggle_button .switch input+.slider{box-shadow:0 0 calc(.0833333333rem / var(--scale)) var(--box-shadow)}.toggle_button .switch input:checked+.slider{background-color:var(--blue-600)}.toggle_button .switch input:checked+.slider:before{-webkit-transform:translateX(calc(2.1666666667rem / var(--scale)));-ms-transform:translateX(calc(2.1666666667rem / var(--scale)));transform:translate(calc(2.1666666667rem / var(--scale)));left:calc(-.75rem / var(--scale));bottom:calc(.1666666667rem / var(--scale))}.toggle_button .switch .slider{position:absolute;background-color:var(--neutral-100);cursor:pointer;inset:0;transition:.4s}.toggle_button .switch .slider:before{width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale));content:\"\";background-color:var(--white);transition:.4s;position:absolute;left:calc(.25rem / var(--scale));bottom:calc(.1666666667rem / var(--scale));box-shadow:0 calc(.0833333333rem / var(--scale)) calc(.1666666667rem / var(--scale)) 0 var(--box-shadow)}.toggle_button .switch .slider.round{border-radius:calc(1rem / var(--scale))}.toggle_button .switch .slider.round:before{border-radius:50%}.toggle_button .switch .toggle-status{color:var(--white);z-index:9;padding-left:calc(.1666666667rem / var(--scale));font-size:var(--fs-8);line-height:calc(2rem / var(--scale));font-weight:400}\n"] });
1253
- }
1254
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ToogleButtonComponent, decorators: [{
1255
- type: Component,
1256
- args: [{ selector: 'cats-ui-toogle-button', imports: [], providers: [
1257
- {
1258
- provide: NG_VALUE_ACCESSOR,
1259
- useExisting: forwardRef(() => ToogleButtonComponent),
1260
- multi: true,
1261
- },
1262
- ], template: "<div class=\"toggle_button\">\r\n <label class=\"switch\">\r\n <input \r\n type=\"checkbox\" \r\n [checked]=\"toggleConfig.checked\" \r\n [disabled]=\"toggleConfig.disabled\"\r\n (change)=\"toggle()\"\r\n />\r\n <span class=\"slider round\"></span>\r\n <span class=\"toggle-status\">\r\n {{ toggleConfig.checked ? 'ON' : 'OFF' }}\r\n </span>\r\n </label>\r\n</div>\r\n", styles: [":root{--white: #ffffff;--white-50: rgba(255, 255, 255, .582);--black: #1f1f1f;--default: #000000;--black-900: #202224;--pagination-text: var(--neutral-500);--black-dust: #1a1a1a;--neutral-cross: #d9d9d9;--neutral-40: #d5d7da;--neutral-50: #f0f0f0;--neutral-100: #e6e7e8;--neutral-200: #dadbdc;--neutral-300: #c0c2c5;--neutral-400: #81858a;--neutral-500: #434a51;--neutral-600: #040d17;--neutral-900: #010306;--blue-700: #1c60af;--blue-600: #2680ea;--blue-400: #92bff4;--blue-100: #eaf3fd;--blue-300: #c8dff9;--blue-200: #dfecfc;--blue-50: #f7fafe;--blue-800: #1849d6;--grey-50: #e9eaeb;--grey-100: #e2e8f0;--grey-150: #d6d6d6;--grey-200: #64748b;--grey-300: #414651;--grey-400: #8080808c;--grey-600: #535862;--light-grey: #81858a;--dark-grey: #4a4a4a;--green-50: #f7fbf7;--green-100: #ecf4ec;--green-200: #2a6a2d;--green-400: #9bc69d;--green-600: #388e3c;--green-700: rgba(42, 106, 45, 1);--red: #ff0000;--red-50: #fdf7f7;--red-100: #f0c9c9;--red-200: #f7dfdf;--red-300: #f2f2f2;--red-700: #941e1e;--yellow-50: #fffdf5;--yellow-100: #fff5e6;--yellow-200: #fff6da;--yellow-300: #ffefc1;--yellow-400: #fff9e7;--yellow-500: #bf7200;--yellow-600: #ffc107;--yellow-700: #bf9105;--yellow-800: #806003;--yellow-900: #bf9105;--orange-50: rgba(255, 251, 245, 1);--orange-100: #fff5e6;--orange-200: #fff0d9;--orange-600: #ff9800;--orange-700: rgba(191, 114, 0, 1);--box-shadow: #0a0d1208;--box-shadow-100: #0000001f;--box-shadow-200: #0a0d1214;--grid-box-shadow: #0000000a;--model-shadow: rgba(0, 0, 0, .08);--canvas-shadow: #00000014;--chunk-shadow: #0a0d120d;--loader-border: #6f7b93;--modal-bg: rgba(4, 13, 23, .3);--checkbox-border: #0d6efd;--filter-600: rgba(0, 0, 0, .644);--feather-bg: #fafafa}html{font-size:12px}.pointer{cursor:pointer}.d-none{display:none}.textTruncate{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}button{border:calc(.0833333333rem / var(--scale)) solid transparent;padding:0 calc(2.3333333333rem / var(--scale));height:calc(4.6666666667rem / var(--scale));min-width:calc(11.8333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale));border-radius:calc(.6666666667rem / var(--scale));font-size:var(--fs-18);line-height:\"\";font-weight:600;cursor:pointer}button:focus-visible{outline:none;border:0}button i-feather.icon{display:flex}button.primary_btn{background-color:var(--blue-600);color:var(--white)}button.secondary_btn{background-color:var(--neutral-100);color:var(--neutral-500)}button.outline_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300)}button.disable{pointer-events:none;opacity:.6}button.fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-600)}button.disable_fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-300);pointer-events:none}button.bg_logic_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200)}button.no_outline_btn{background-color:var(--blue-50);color:var(--blue-600);outline:none}button .close_outline_btn{background-color:var(--blue-50);border:calc(.0833333333rem / var(--scale)) solid var(--blue-50);color:var(--blue-600)}:root{--fs-6: 6px;--fs-8: 8px;--fs-12: 12px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--fs-20: 20px;--fs-24: 24px;--fs-28: 28px;--fs-30: 30px;--fs-32: 32px;--fs-42: 42px;--fs-48: 48px;--img-w: 28px;--scale: 1}@media only screen and (min-width: 1024px) and (max-width: 1280px){:root{--scale: 1.5;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1360px) and (max-width: 1440px){:root{--scale: 1.33;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1536px) and (max-width: 1919px){:root{--scale: 1.25;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;font-family:Open Sans,sans-serif}body{font-size:100%}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}h1,h2,h3,h4,h5,h6,ul,ol p{margin:0;padding:0;text-wrap:pretty}ul[role=list],ol[role=list],ul{list-style:none}img,picture{max-width:100%;display:block}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--neutral-200);border-radius:8px}input,select,textarea{outline:none;box-shadow:none}.toggle_button .switch{position:relative;display:flex;width:calc(3rem / var(--scale));height:calc(1.6666666667rem / var(--scale))}.toggle_button .switch input{opacity:0;width:0;height:0}.toggle_button .switch input:focus{box-shadow:unset}.toggle_button .switch input+.slider{box-shadow:0 0 calc(.0833333333rem / var(--scale)) var(--box-shadow)}.toggle_button .switch input:checked+.slider{background-color:var(--blue-600)}.toggle_button .switch input:checked+.slider:before{-webkit-transform:translateX(calc(2.1666666667rem / var(--scale)));-ms-transform:translateX(calc(2.1666666667rem / var(--scale)));transform:translate(calc(2.1666666667rem / var(--scale)));left:calc(-.75rem / var(--scale));bottom:calc(.1666666667rem / var(--scale))}.toggle_button .switch .slider{position:absolute;background-color:var(--neutral-100);cursor:pointer;inset:0;transition:.4s}.toggle_button .switch .slider:before{width:calc(1.3333333333rem / var(--scale));height:calc(1.3333333333rem / var(--scale));content:\"\";background-color:var(--white);transition:.4s;position:absolute;left:calc(.25rem / var(--scale));bottom:calc(.1666666667rem / var(--scale));box-shadow:0 calc(.0833333333rem / var(--scale)) calc(.1666666667rem / var(--scale)) 0 var(--box-shadow)}.toggle_button .switch .slider.round{border-radius:calc(1rem / var(--scale))}.toggle_button .switch .slider.round:before{border-radius:50%}.toggle_button .switch .toggle-status{color:var(--white);z-index:9;padding-left:calc(.1666666667rem / var(--scale));font-size:var(--fs-8);line-height:calc(2rem / var(--scale));font-weight:400}\n"] }]
1263
- }], propDecorators: { toggleConfig: [{
1264
- type: Input
1265
- }], onToggled: [{
1266
- type: Output
1267
- }] } });
1268
-
1269
- class CheckboxButtonComponent {
1270
- checkBoxConfig;
1271
- onCheckBoxSelection = new EventEmitter();
1272
- optionList = [];
1273
- selectedOptions = [];
1274
- onChange = () => { };
1275
- onTouched = () => { };
1276
- get idField() {
1277
- return this.checkBoxConfig?.idField || 'id';
1278
- }
1279
- get textField() {
1280
- return this.checkBoxConfig?.textField || 'name';
1281
- }
1282
- ngOnChanges(changes) {
1283
- if (changes['selectedOptions'] && this.selectedOptions?.length) {
1284
- this.applySelectedOptions();
1285
- }
1286
- }
1287
- /**
1288
- * @description normalizeSelectedValue the value according t
1289
- * @param item
1290
- * @returns
1291
- */
1292
- normalizeSelectedValue(item) {
1293
- if (item == null)
1294
- return '';
1295
- if (typeof item === 'string')
1296
- return item; // case 1: string of id or name
1297
- if (item.id)
1298
- return item.id; // case 2: object with id
1299
- if (item.name)
1300
- return item.name; // case 3: object with name
1301
- return ''; // fallback
1302
- }
1303
- /**
1304
- * @description Method is to Apply selectedOptions on input change
1305
- * @author Shiva Kant
1306
- */
1307
- applySelectedOptions() {
1308
- const normalized = this.selectedOptions.map((s) => this.normalizeSelectedValue(s));
1309
- this.optionList = this.optionList.map((task) => {
1310
- const taskId = task.id;
1311
- const taskName = task.name;
1312
- const isParentSelected = normalized.includes(taskId) || normalized.includes(taskName);
1313
- const updatedSubtasks = (task.subtasks ?? []).map((sub) => {
1314
- const subId = sub.id;
1315
- const subName = sub.name;
1316
- return {
1317
- ...sub,
1318
- checked: normalized.includes(subId) || normalized.includes(subName),
1319
- };
1320
- });
1321
- return {
1322
- ...task,
1323
- checked: isParentSelected || updatedSubtasks.every((s) => s.checked),
1324
- subtasks: updatedSubtasks,
1325
- };
1326
- });
1327
- }
1328
- /**
1329
- * @description Method is to Checkbox change handler
1330
- * @author Shiva Kant
1331
- * @param event
1332
- * @param parentIndex
1333
- * @param subIndex
1334
- */
1335
- onCheckboxChange(event, parentIndex, subIndex) {
1336
- const checked = event.target.checked;
1337
- this.optionList = this.optionList.map((task, i) => {
1338
- const safeTask = {
1339
- ...task,
1340
- checked: task.checked ?? false,
1341
- subtasks: task.subtasks ?? [],
1342
- };
1343
- if (i === parentIndex) {
1344
- if (subIndex === undefined) {
1345
- // Parent checkbox toggled
1346
- safeTask.checked = checked;
1347
- safeTask.subtasks = safeTask.subtasks.map((sub) => ({
1348
- ...sub,
1349
- checked,
1350
- }));
1351
- }
1352
- else if (safeTask.subtasks[subIndex]) {
1353
- // Subtask toggled
1354
- safeTask.subtasks[subIndex].checked = checked;
1355
- // Parent checked only if all subtasks are checked
1356
- safeTask.checked = safeTask.subtasks.every((sub) => sub.checked);
1357
- }
1358
- }
1359
- return safeTask;
1360
- });
1361
- const checkedTasks = this.optionList
1362
- .filter((task) => (task.checked ?? false) ||
1363
- task.subtasks?.some((s) => s.checked ?? false))
1364
- .map((task) => ({
1365
- ...task,
1366
- subtasks: task.subtasks?.filter((s) => s.checked ?? false) || [],
1367
- }));
1368
- const selectedObjects = checkedTasks.map((task) => ({
1369
- ...task,
1370
- subtasks: task.subtasks.filter((s) => s.checked),
1371
- }));
1372
- this.onCheckBoxSelection.emit(selectedObjects);
1373
- this.onChange(this.optionList);
1374
- this.onTouched();
1375
- }
1376
- /**
1377
- * @description Indeterminate state for parent on option checked
1378
- * @param task
1379
- * @returns
1380
- */
1381
- partiallyComplete(task) {
1382
- if (!task?.subtasks?.length)
1383
- return false;
1384
- const done = task.subtasks.filter((t) => t.checked).length;
1385
- return done > 0 && done < task.subtasks.length;
1386
- }
1387
- // ControlValueAccessor methods
1388
- writeValue(value) {
1389
- if (value) {
1390
- this.optionList = value.map((task) => ({
1391
- ...task,
1392
- subtasks: task.subtasks ? [...task.subtasks] : [],
1393
- }));
1394
- }
1395
- }
1396
- registerOnChange(fn) {
1397
- this.onChange = fn;
1398
- }
1399
- registerOnTouched(fn) {
1400
- this.onTouched = fn;
1401
- }
1402
- setDisabledState(isDisabled) {
1403
- if (isDisabled) {
1404
- this.optionList.forEach((task) => {
1405
- task.checked = false;
1406
- task.subtasks?.forEach((sub) => (sub.checked = false));
1407
- });
1408
- }
1409
- }
1410
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: CheckboxButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1411
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: CheckboxButtonComponent, isStandalone: true, selector: "cats-ui-checkbox-button", inputs: { checkBoxConfig: "checkBoxConfig", optionList: "optionList", selectedOptions: "selectedOptions" }, outputs: { onCheckBoxSelection: "onCheckBoxSelection" }, providers: [
1412
- {
1413
- provide: NG_VALUE_ACCESSOR,
1414
- useExisting: forwardRef(() => CheckboxButtonComponent),
1415
- multi: true,
1416
- },
1417
- ], usesOnChanges: true, ngImport: i0, template: "<div class=\"parent_container\">\r\n <ul>\r\n @for (task of optionList; let parentIndex = $index; track $index) {\r\n <li>\r\n <!-- Parent Checkbox -->\r\n <label class=\"checkbox_container\">\r\n <input\r\n type=\"checkbox\"\r\n [name]=\"checkBoxConfig.name\"\r\n [checked]=\"task.checked\"\r\n [disabled]=\"\r\n checkBoxConfig.disabledField\r\n ? task[checkBoxConfig.disabledField]\r\n : false\r\n \"\r\n [indeterminate]=\"partiallyComplete(task)\"\r\n (change)=\"onCheckboxChange($event, parentIndex)\"\r\n />\r\n <span class=\"textTruncate\">{{ task[textField] }}</span>\r\n </label>\r\n\r\n <!-- Subtasks -->\r\n @if (task.subtasks && task.subtasks.length > 0) {\r\n <ul class=\"sub\">\r\n @for (sub of task.subtasks; let idx = $index; track $index) {\r\n <li>\r\n <label class=\"checkbox_container\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"sub.checked\"\r\n (change)=\"onCheckboxChange($event, parentIndex, idx)\"\r\n />\r\n <!-- <span class=\"checkmark\"></span> -->\r\n <span class=\"label-text\">{{ sub[textField] }}</span>\r\n </label>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n</div>\r\n", styles: [":root{--white: #ffffff;--white-50: rgba(255, 255, 255, .582);--black: #1f1f1f;--default: #000000;--black-900: #202224;--pagination-text: var(--neutral-500);--black-dust: #1a1a1a;--neutral-cross: #d9d9d9;--neutral-40: #d5d7da;--neutral-50: #f0f0f0;--neutral-100: #e6e7e8;--neutral-200: #dadbdc;--neutral-300: #c0c2c5;--neutral-400: #81858a;--neutral-500: #434a51;--neutral-600: #040d17;--neutral-900: #010306;--blue-700: #1c60af;--blue-600: #2680ea;--blue-400: #92bff4;--blue-100: #eaf3fd;--blue-300: #c8dff9;--blue-200: #dfecfc;--blue-50: #f7fafe;--blue-800: #1849d6;--grey-50: #e9eaeb;--grey-100: #e2e8f0;--grey-150: #d6d6d6;--grey-200: #64748b;--grey-300: #414651;--grey-400: #8080808c;--grey-600: #535862;--light-grey: #81858a;--dark-grey: #4a4a4a;--green-50: #f7fbf7;--green-100: #ecf4ec;--green-200: #2a6a2d;--green-400: #9bc69d;--green-600: #388e3c;--green-700: rgba(42, 106, 45, 1);--red: #ff0000;--red-50: #fdf7f7;--red-100: #f0c9c9;--red-200: #f7dfdf;--red-300: #f2f2f2;--red-700: #941e1e;--yellow-50: #fffdf5;--yellow-100: #fff5e6;--yellow-200: #fff6da;--yellow-300: #ffefc1;--yellow-400: #fff9e7;--yellow-500: #bf7200;--yellow-600: #ffc107;--yellow-700: #bf9105;--yellow-800: #806003;--yellow-900: #bf9105;--orange-50: rgba(255, 251, 245, 1);--orange-100: #fff5e6;--orange-200: #fff0d9;--orange-600: #ff9800;--orange-700: rgba(191, 114, 0, 1);--box-shadow: #0a0d1208;--box-shadow-100: #0000001f;--box-shadow-200: #0a0d1214;--grid-box-shadow: #0000000a;--model-shadow: rgba(0, 0, 0, .08);--canvas-shadow: #00000014;--chunk-shadow: #0a0d120d;--loader-border: #6f7b93;--modal-bg: rgba(4, 13, 23, .3);--checkbox-border: #0d6efd;--filter-600: rgba(0, 0, 0, .644);--feather-bg: #fafafa}html{font-size:12px}.pointer{cursor:pointer}.d-none{display:none}.textTruncate{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}button{border:calc(.0833333333rem / var(--scale)) solid transparent;padding:0 calc(2.3333333333rem / var(--scale));height:calc(4.6666666667rem / var(--scale));min-width:calc(11.8333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale));border-radius:calc(.6666666667rem / var(--scale));font-size:var(--fs-18);line-height:\"\";font-weight:600;cursor:pointer}button:focus-visible{outline:none;border:0}button i-feather.icon{display:flex}button.primary_btn{background-color:var(--blue-600);color:var(--white)}button.secondary_btn{background-color:var(--neutral-100);color:var(--neutral-500)}button.outline_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300)}button.disable{pointer-events:none;opacity:.6}button.fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-600)}button.disable_fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-300);pointer-events:none}button.bg_logic_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200)}button.no_outline_btn{background-color:var(--blue-50);color:var(--blue-600);outline:none}button .close_outline_btn{background-color:var(--blue-50);border:calc(.0833333333rem / var(--scale)) solid var(--blue-50);color:var(--blue-600)}:root{--fs-6: 6px;--fs-8: 8px;--fs-12: 12px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--fs-20: 20px;--fs-24: 24px;--fs-28: 28px;--fs-30: 30px;--fs-32: 32px;--fs-42: 42px;--fs-48: 48px;--img-w: 28px;--scale: 1}@media only screen and (min-width: 1024px) and (max-width: 1280px){:root{--scale: 1.5;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1360px) and (max-width: 1440px){:root{--scale: 1.33;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1536px) and (max-width: 1919px){:root{--scale: 1.25;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;font-family:Open Sans,sans-serif}body{font-size:100%}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}h1,h2,h3,h4,h5,h6,ul,ol p{margin:0;padding:0;text-wrap:pretty}ul[role=list],ol[role=list],ul{list-style:none}img,picture{max-width:100%;display:block}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--neutral-200);border-radius:8px}input,select,textarea{outline:none;box-shadow:none}.parent_container .sub{margin-left:calc(2.9166666667rem / var(--scale))}.parent_container .checkbox_container{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale));font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400;margin-bottom:calc(.6666666667rem / var(--scale))}.parent_container .checkbox_container input[type=checkbox][disabled],.parent_container .checkbox_container input[type=checkbox]:checked[disabled]{cursor:default;background-color:var(--neutral-100);border-color:var(--neutral-100)}.parent_container .checkbox_container input[type=checkbox][disabled]+span,.parent_container .checkbox_container input[type=checkbox]:checked[disabled]+span{color:var(--neutral-300)}.parent_container .checkbox_container input[type=checkbox]{appearance:none;-webkit-appearance:none;width:calc(2rem / var(--scale));height:calc(2rem / var(--scale));min-width:calc(2rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.3333333333rem / var(--scale));cursor:pointer;background-color:var(--white);position:relative;transition:all .2s ease}.parent_container .checkbox_container input[type=checkbox]:after{content:\"\";display:none;position:absolute;top:calc(-.0833333333rem / var(--scale));left:calc(-.1666666667rem / var(--scale));width:calc(2rem / var(--scale));height:calc(2rem / var(--scale));background-size:contain;background-repeat:no-repeat;background-position:center}.parent_container .checkbox_container input[type=checkbox]:checked{border-color:var(--blue-600);background-color:var(--blue-600)}.parent_container .checkbox_container input[type=checkbox]:checked:after{display:block;background-image:url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/></svg>\")}.parent_container .checkbox_container input[type=checkbox]:indeterminate{border-color:var(--blue-600);background-color:var(--blue-600)}.parent_container .checkbox_container input[type=checkbox]:indeterminate:after{display:block;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"800px\" height=\"800px\" viewBox=\"0 0 24 24\" fill=\"none\">%0D%0A <path d=\"M5 12h14\" stroke=\"%23ffffff\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />%0D%0A</svg>%0D%0A')}\n"] });
1418
- }
1419
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: CheckboxButtonComponent, decorators: [{
1420
- type: Component,
1421
- args: [{ selector: 'cats-ui-checkbox-button', imports: [], providers: [
1422
- {
1423
- provide: NG_VALUE_ACCESSOR,
1424
- useExisting: forwardRef(() => CheckboxButtonComponent),
1425
- multi: true,
1426
- },
1427
- ], template: "<div class=\"parent_container\">\r\n <ul>\r\n @for (task of optionList; let parentIndex = $index; track $index) {\r\n <li>\r\n <!-- Parent Checkbox -->\r\n <label class=\"checkbox_container\">\r\n <input\r\n type=\"checkbox\"\r\n [name]=\"checkBoxConfig.name\"\r\n [checked]=\"task.checked\"\r\n [disabled]=\"\r\n checkBoxConfig.disabledField\r\n ? task[checkBoxConfig.disabledField]\r\n : false\r\n \"\r\n [indeterminate]=\"partiallyComplete(task)\"\r\n (change)=\"onCheckboxChange($event, parentIndex)\"\r\n />\r\n <span class=\"textTruncate\">{{ task[textField] }}</span>\r\n </label>\r\n\r\n <!-- Subtasks -->\r\n @if (task.subtasks && task.subtasks.length > 0) {\r\n <ul class=\"sub\">\r\n @for (sub of task.subtasks; let idx = $index; track $index) {\r\n <li>\r\n <label class=\"checkbox_container\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"sub.checked\"\r\n (change)=\"onCheckboxChange($event, parentIndex, idx)\"\r\n />\r\n <!-- <span class=\"checkmark\"></span> -->\r\n <span class=\"label-text\">{{ sub[textField] }}</span>\r\n </label>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n</div>\r\n", styles: [":root{--white: #ffffff;--white-50: rgba(255, 255, 255, .582);--black: #1f1f1f;--default: #000000;--black-900: #202224;--pagination-text: var(--neutral-500);--black-dust: #1a1a1a;--neutral-cross: #d9d9d9;--neutral-40: #d5d7da;--neutral-50: #f0f0f0;--neutral-100: #e6e7e8;--neutral-200: #dadbdc;--neutral-300: #c0c2c5;--neutral-400: #81858a;--neutral-500: #434a51;--neutral-600: #040d17;--neutral-900: #010306;--blue-700: #1c60af;--blue-600: #2680ea;--blue-400: #92bff4;--blue-100: #eaf3fd;--blue-300: #c8dff9;--blue-200: #dfecfc;--blue-50: #f7fafe;--blue-800: #1849d6;--grey-50: #e9eaeb;--grey-100: #e2e8f0;--grey-150: #d6d6d6;--grey-200: #64748b;--grey-300: #414651;--grey-400: #8080808c;--grey-600: #535862;--light-grey: #81858a;--dark-grey: #4a4a4a;--green-50: #f7fbf7;--green-100: #ecf4ec;--green-200: #2a6a2d;--green-400: #9bc69d;--green-600: #388e3c;--green-700: rgba(42, 106, 45, 1);--red: #ff0000;--red-50: #fdf7f7;--red-100: #f0c9c9;--red-200: #f7dfdf;--red-300: #f2f2f2;--red-700: #941e1e;--yellow-50: #fffdf5;--yellow-100: #fff5e6;--yellow-200: #fff6da;--yellow-300: #ffefc1;--yellow-400: #fff9e7;--yellow-500: #bf7200;--yellow-600: #ffc107;--yellow-700: #bf9105;--yellow-800: #806003;--yellow-900: #bf9105;--orange-50: rgba(255, 251, 245, 1);--orange-100: #fff5e6;--orange-200: #fff0d9;--orange-600: #ff9800;--orange-700: rgba(191, 114, 0, 1);--box-shadow: #0a0d1208;--box-shadow-100: #0000001f;--box-shadow-200: #0a0d1214;--grid-box-shadow: #0000000a;--model-shadow: rgba(0, 0, 0, .08);--canvas-shadow: #00000014;--chunk-shadow: #0a0d120d;--loader-border: #6f7b93;--modal-bg: rgba(4, 13, 23, .3);--checkbox-border: #0d6efd;--filter-600: rgba(0, 0, 0, .644);--feather-bg: #fafafa}html{font-size:12px}.pointer{cursor:pointer}.d-none{display:none}.textTruncate{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}button{border:calc(.0833333333rem / var(--scale)) solid transparent;padding:0 calc(2.3333333333rem / var(--scale));height:calc(4.6666666667rem / var(--scale));min-width:calc(11.8333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale));border-radius:calc(.6666666667rem / var(--scale));font-size:var(--fs-18);line-height:\"\";font-weight:600;cursor:pointer}button:focus-visible{outline:none;border:0}button i-feather.icon{display:flex}button.primary_btn{background-color:var(--blue-600);color:var(--white)}button.secondary_btn{background-color:var(--neutral-100);color:var(--neutral-500)}button.outline_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300)}button.disable{pointer-events:none;opacity:.6}button.fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-600)}button.disable_fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-300);pointer-events:none}button.bg_logic_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200)}button.no_outline_btn{background-color:var(--blue-50);color:var(--blue-600);outline:none}button .close_outline_btn{background-color:var(--blue-50);border:calc(.0833333333rem / var(--scale)) solid var(--blue-50);color:var(--blue-600)}:root{--fs-6: 6px;--fs-8: 8px;--fs-12: 12px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--fs-20: 20px;--fs-24: 24px;--fs-28: 28px;--fs-30: 30px;--fs-32: 32px;--fs-42: 42px;--fs-48: 48px;--img-w: 28px;--scale: 1}@media only screen and (min-width: 1024px) and (max-width: 1280px){:root{--scale: 1.5;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1360px) and (max-width: 1440px){:root{--scale: 1.33;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1536px) and (max-width: 1919px){:root{--scale: 1.25;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;font-family:Open Sans,sans-serif}body{font-size:100%}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}h1,h2,h3,h4,h5,h6,ul,ol p{margin:0;padding:0;text-wrap:pretty}ul[role=list],ol[role=list],ul{list-style:none}img,picture{max-width:100%;display:block}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--neutral-200);border-radius:8px}input,select,textarea{outline:none;box-shadow:none}.parent_container .sub{margin-left:calc(2.9166666667rem / var(--scale))}.parent_container .checkbox_container{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale));font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400;margin-bottom:calc(.6666666667rem / var(--scale))}.parent_container .checkbox_container input[type=checkbox][disabled],.parent_container .checkbox_container input[type=checkbox]:checked[disabled]{cursor:default;background-color:var(--neutral-100);border-color:var(--neutral-100)}.parent_container .checkbox_container input[type=checkbox][disabled]+span,.parent_container .checkbox_container input[type=checkbox]:checked[disabled]+span{color:var(--neutral-300)}.parent_container .checkbox_container input[type=checkbox]{appearance:none;-webkit-appearance:none;width:calc(2rem / var(--scale));height:calc(2rem / var(--scale));min-width:calc(2rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.3333333333rem / var(--scale));cursor:pointer;background-color:var(--white);position:relative;transition:all .2s ease}.parent_container .checkbox_container input[type=checkbox]:after{content:\"\";display:none;position:absolute;top:calc(-.0833333333rem / var(--scale));left:calc(-.1666666667rem / var(--scale));width:calc(2rem / var(--scale));height:calc(2rem / var(--scale));background-size:contain;background-repeat:no-repeat;background-position:center}.parent_container .checkbox_container input[type=checkbox]:checked{border-color:var(--blue-600);background-color:var(--blue-600)}.parent_container .checkbox_container input[type=checkbox]:checked:after{display:block;background-image:url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/></svg>\")}.parent_container .checkbox_container input[type=checkbox]:indeterminate{border-color:var(--blue-600);background-color:var(--blue-600)}.parent_container .checkbox_container input[type=checkbox]:indeterminate:after{display:block;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"800px\" height=\"800px\" viewBox=\"0 0 24 24\" fill=\"none\">%0D%0A <path d=\"M5 12h14\" stroke=\"%23ffffff\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />%0D%0A</svg>%0D%0A')}\n"] }]
1428
- }], propDecorators: { checkBoxConfig: [{
1429
- type: Input
1430
- }], onCheckBoxSelection: [{
1431
- type: Output
1432
- }], optionList: [{
1433
- type: Input
1434
- }], selectedOptions: [{
1435
- type: Input
1436
- }] } });
1437
-
1438
- class RadioButtonComponent {
1439
- config;
1440
- optionList = [];
1441
- selectionChange = new EventEmitter();
1442
- // selectedRadio pass id in number or name in string or full object
1443
- selectedRadio;
1444
- value = null;
1445
- isDisabled = false;
1446
- onChange = (_) => { };
1447
- onTouched = () => { };
1448
- ngOnChanges(changes) {
1449
- if (changes['selectedRadio'] && this.optionList?.length) {
1450
- if (!this.selectedRadio)
1451
- return;
1452
- const selected = this.selectedRadio;
1453
- const match = this.optionList.find((opt) => {
1454
- const optValue = this.extractValue(opt);
1455
- const optLabel = this.extractLabel(opt);
1456
- if (typeof selected === 'string' || typeof selected === 'number') {
1457
- // Match primitive against value or label
1458
- return selected === optValue || selected === optLabel;
1459
- }
1460
- else if (typeof selected === 'object') {
1461
- // Match object against option's value or label
1462
- const selValue = this.extractValue(selected);
1463
- const selLabel = this.extractLabel(selected);
1464
- return selValue === optValue || selLabel === optLabel;
1465
- }
1466
- return false;
1467
- });
1468
- if (match) {
1469
- this.value = this.extractValue(match);
1470
- this.onChange(this.value);
1471
- }
1472
- }
1473
- }
1474
- writeValue(value) {
1475
- this.value = value;
1476
- }
1477
- registerOnChange(fn) {
1478
- this.onChange = fn;
1479
- }
1480
- registerOnTouched(fn) {
1481
- this.onTouched = fn;
1482
- }
1483
- setDisabledState(isDisabled) {
1484
- this.isDisabled = isDisabled;
1485
- }
1486
- /**
1487
- * @description method to handle change of toggle button
1488
- * @author Shiva Kant
1489
- * @param option
1490
- */
1491
- handleChange(option) {
1492
- this.value = this.extractValue(option);
1493
- this.onChange(this.value);
1494
- this.onTouched();
1495
- this.selectionChange.emit(option);
1496
- }
1497
- /**
1498
- * @description method to extractValue
1499
- * @author Shiva Kant
1500
- * @param option
1501
- * @returns
1502
- */
1503
- extractValue(option) {
1504
- if (typeof option === 'string' || typeof option === 'number') {
1505
- return option;
1506
- }
1507
- const key = this.config.valueField ?? 'id'; // ALWAYS a string
1508
- return option[key];
1509
- }
1510
- extractLabel(option) {
1511
- if (typeof option === 'string')
1512
- return option;
1513
- const key = this.config.textField ?? 'label';
1514
- return option[key];
1515
- }
1516
- /**
1517
- * * @description method to normalizeValue
1518
- * @author Shiva Kant
1519
- * @param value
1520
- * @returns
1521
- */
1522
- normalizeValue(value) {
1523
- if (value == null)
1524
- return null;
1525
- if (typeof value === 'string' || typeof value === 'number') {
1526
- return value;
1527
- }
1528
- // object case → return id or valueField
1529
- const key = this.config.valueField ?? 'id';
1530
- return value[key];
1531
- }
1532
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: RadioButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1533
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: RadioButtonComponent, isStandalone: true, selector: "cats-ui-radio-button", inputs: { config: "config", optionList: "optionList", selectedRadio: "selectedRadio" }, outputs: { selectionChange: "selectionChange" }, providers: [
1534
- {
1535
- provide: NG_VALUE_ACCESSOR,
1536
- useExisting: forwardRef(() => RadioButtonComponent),
1537
- multi: true,
1538
- },
1539
- ], usesOnChanges: true, ngImport: i0, template: "<div class=\"radio_group\" [ngClass]=\"config.layout\">\r\n @if (config.label) {\r\n <div class=\"group_label\">{{ config.label }}</div>\r\n }\r\n\r\n <div class=\"radio_option_container\">\r\n @for (option of optionList; track $index) {\r\n <div class=\"radio_option\">\r\n <input\r\n type=\"radio\"\r\n [name]=\"config.name\"\r\n [id]=\"extractValue(option)\"\r\n [disabled]=\"config.disabled ? option[config.disabled] : false\"\r\n [value]=\"extractValue(option)\"\r\n [(ngModel)]=\"value\"\r\n (change)=\"handleChange(option)\"\r\n />\r\n <label [for]=\"extractValue(option)\">{{ extractLabel(option) }}</label>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n", styles: [":root{--white: #ffffff;--white-50: rgba(255, 255, 255, .582);--black: #1f1f1f;--default: #000000;--black-900: #202224;--pagination-text: var(--neutral-500);--black-dust: #1a1a1a;--neutral-cross: #d9d9d9;--neutral-40: #d5d7da;--neutral-50: #f0f0f0;--neutral-100: #e6e7e8;--neutral-200: #dadbdc;--neutral-300: #c0c2c5;--neutral-400: #81858a;--neutral-500: #434a51;--neutral-600: #040d17;--neutral-900: #010306;--blue-700: #1c60af;--blue-600: #2680ea;--blue-400: #92bff4;--blue-100: #eaf3fd;--blue-300: #c8dff9;--blue-200: #dfecfc;--blue-50: #f7fafe;--blue-800: #1849d6;--grey-50: #e9eaeb;--grey-100: #e2e8f0;--grey-150: #d6d6d6;--grey-200: #64748b;--grey-300: #414651;--grey-400: #8080808c;--grey-600: #535862;--light-grey: #81858a;--dark-grey: #4a4a4a;--green-50: #f7fbf7;--green-100: #ecf4ec;--green-200: #2a6a2d;--green-400: #9bc69d;--green-600: #388e3c;--green-700: rgba(42, 106, 45, 1);--red: #ff0000;--red-50: #fdf7f7;--red-100: #f0c9c9;--red-200: #f7dfdf;--red-300: #f2f2f2;--red-700: #941e1e;--yellow-50: #fffdf5;--yellow-100: #fff5e6;--yellow-200: #fff6da;--yellow-300: #ffefc1;--yellow-400: #fff9e7;--yellow-500: #bf7200;--yellow-600: #ffc107;--yellow-700: #bf9105;--yellow-800: #806003;--yellow-900: #bf9105;--orange-50: rgba(255, 251, 245, 1);--orange-100: #fff5e6;--orange-200: #fff0d9;--orange-600: #ff9800;--orange-700: rgba(191, 114, 0, 1);--box-shadow: #0a0d1208;--box-shadow-100: #0000001f;--box-shadow-200: #0a0d1214;--grid-box-shadow: #0000000a;--model-shadow: rgba(0, 0, 0, .08);--canvas-shadow: #00000014;--chunk-shadow: #0a0d120d;--loader-border: #6f7b93;--modal-bg: rgba(4, 13, 23, .3);--checkbox-border: #0d6efd;--filter-600: rgba(0, 0, 0, .644);--feather-bg: #fafafa}html{font-size:12px}.pointer{cursor:pointer}.d-none{display:none}.textTruncate{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}button{border:calc(.0833333333rem / var(--scale)) solid transparent;padding:0 calc(2.3333333333rem / var(--scale));height:calc(4.6666666667rem / var(--scale));min-width:calc(11.8333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale));border-radius:calc(.6666666667rem / var(--scale));font-size:var(--fs-18);line-height:\"\";font-weight:600;cursor:pointer}button:focus-visible{outline:none;border:0}button i-feather.icon{display:flex}button.primary_btn{background-color:var(--blue-600);color:var(--white)}button.secondary_btn{background-color:var(--neutral-100);color:var(--neutral-500)}button.outline_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300)}button.disable{pointer-events:none;opacity:.6}button.fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-600)}button.disable_fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-300);pointer-events:none}button.bg_logic_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200)}button.no_outline_btn{background-color:var(--blue-50);color:var(--blue-600);outline:none}button .close_outline_btn{background-color:var(--blue-50);border:calc(.0833333333rem / var(--scale)) solid var(--blue-50);color:var(--blue-600)}:root{--fs-6: 6px;--fs-8: 8px;--fs-12: 12px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--fs-20: 20px;--fs-24: 24px;--fs-28: 28px;--fs-30: 30px;--fs-32: 32px;--fs-42: 42px;--fs-48: 48px;--img-w: 28px;--scale: 1}@media only screen and (min-width: 1024px) and (max-width: 1280px){:root{--scale: 1.5;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1360px) and (max-width: 1440px){:root{--scale: 1.33;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1536px) and (max-width: 1919px){:root{--scale: 1.25;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;font-family:Open Sans,sans-serif}body{font-size:100%}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}h1,h2,h3,h4,h5,h6,ul,ol p{margin:0;padding:0;text-wrap:pretty}ul[role=list],ol[role=list],ul{list-style:none}img,picture{max-width:100%;display:block}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--neutral-200);border-radius:8px}input,select,textarea{outline:none;box-shadow:none}.radio_group{font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400}.radio_group.horizontal .radio_option_container{display:flex;flex-direction:row;justify-content:flex-start;align-items:stretch;flex-wrap:nowrap;gap:0}.radio_group.horizontal .radio_option_container .radio_option{padding-right:calc(2.5rem / var(--scale))}.radio_group .group_label{margin-bottom:calc(.6666666667rem / var(--scale));font-weight:500}.radio_group .radio_option_container{display:flex;flex-direction:column;justify-content:\"\";align-items:\"\";flex-wrap:nowrap;gap:\"\"}.radio_group .radio_option_container .radio_option{margin-bottom:calc(.6666666667rem / var(--scale))}.radio_group .radio_option_container .radio_option [type=radio]:not(:checked)[disabled]+label{color:var(--neutral-300);cursor:default}.radio_group .radio_option_container .radio_option [type=radio]:not(:checked)[disabled]+label:before{background-color:var(--neutral-100)}.radio_group .radio_option_container .radio_option [type=radio]:is(:checked)[disabled]+label{color:var(--neutral-300);cursor:default}.radio_group .radio_option_container .radio_option [type=radio]:is(:checked)[disabled]+label:before{border-color:var(--neutral-100)}.radio_group .radio_option_container .radio_option [type=radio]:is(:checked)[disabled]+label:after{background-color:var(--neutral-100)}.radio_group .radio_option_container .radio_option [type=radio]:not(:checked)+label:before,.radio_group .radio_option_container .radio_option [type=radio]:checked+label:before{content:\"\";position:absolute;top:0;left:0;width:calc(2rem / var(--scale));height:calc(2rem / var(--scale));background:var(--white)}.radio_group .radio_option_container .radio_option [type=radio]:checked,.radio_group .radio_option_container .radio_option [type=radio]:not(:checked){position:absolute;left:-9999px}.radio_group .radio_option_container .radio_option [type=radio]:checked+label,.radio_group .radio_option_container .radio_option [type=radio]:not(:checked)+label{position:relative;padding-left:calc(2.5rem / var(--scale));cursor:pointer;display:inline-block;color:var(--default)}.radio_group .radio_option_container .radio_option [type=radio]:checked+label:before{border:calc(.0833333333rem / var(--scale)) solid var(--blue-600);border-radius:100%}.radio_group .radio_option_container .radio_option [type=radio]:not(:checked)+label:before{border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:100%}.radio_group .radio_option_container .radio_option [type=radio]:checked+label:after,.radio_group .radio_option_container .radio_option [type=radio]:not(:checked)+label:after{content:\"\";width:calc(.8333333333rem / var(--scale));height:calc(.8333333333rem / var(--scale));background:var(--blue-600);position:absolute;top:calc(.5833333333rem / var(--scale));left:calc(.5833333333rem / var(--scale));border-radius:100%;transition:all .2s ease}.radio_group .radio_option_container .radio_option [type=radio]:not(:checked)+label:after{opacity:0;transform:scale(0)}.radio_group .radio_option_container .radio_option [type=radio]:checked+label:after{opacity:1;transform:scale(1)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
1540
- }
1541
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: RadioButtonComponent, decorators: [{
1542
- type: Component,
1543
- args: [{ selector: 'cats-ui-radio-button', imports: [CommonModule, FormsModule], providers: [
1544
- {
1545
- provide: NG_VALUE_ACCESSOR,
1546
- useExisting: forwardRef(() => RadioButtonComponent),
1547
- multi: true,
1548
- },
1549
- ], template: "<div class=\"radio_group\" [ngClass]=\"config.layout\">\r\n @if (config.label) {\r\n <div class=\"group_label\">{{ config.label }}</div>\r\n }\r\n\r\n <div class=\"radio_option_container\">\r\n @for (option of optionList; track $index) {\r\n <div class=\"radio_option\">\r\n <input\r\n type=\"radio\"\r\n [name]=\"config.name\"\r\n [id]=\"extractValue(option)\"\r\n [disabled]=\"config.disabled ? option[config.disabled] : false\"\r\n [value]=\"extractValue(option)\"\r\n [(ngModel)]=\"value\"\r\n (change)=\"handleChange(option)\"\r\n />\r\n <label [for]=\"extractValue(option)\">{{ extractLabel(option) }}</label>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n", styles: [":root{--white: #ffffff;--white-50: rgba(255, 255, 255, .582);--black: #1f1f1f;--default: #000000;--black-900: #202224;--pagination-text: var(--neutral-500);--black-dust: #1a1a1a;--neutral-cross: #d9d9d9;--neutral-40: #d5d7da;--neutral-50: #f0f0f0;--neutral-100: #e6e7e8;--neutral-200: #dadbdc;--neutral-300: #c0c2c5;--neutral-400: #81858a;--neutral-500: #434a51;--neutral-600: #040d17;--neutral-900: #010306;--blue-700: #1c60af;--blue-600: #2680ea;--blue-400: #92bff4;--blue-100: #eaf3fd;--blue-300: #c8dff9;--blue-200: #dfecfc;--blue-50: #f7fafe;--blue-800: #1849d6;--grey-50: #e9eaeb;--grey-100: #e2e8f0;--grey-150: #d6d6d6;--grey-200: #64748b;--grey-300: #414651;--grey-400: #8080808c;--grey-600: #535862;--light-grey: #81858a;--dark-grey: #4a4a4a;--green-50: #f7fbf7;--green-100: #ecf4ec;--green-200: #2a6a2d;--green-400: #9bc69d;--green-600: #388e3c;--green-700: rgba(42, 106, 45, 1);--red: #ff0000;--red-50: #fdf7f7;--red-100: #f0c9c9;--red-200: #f7dfdf;--red-300: #f2f2f2;--red-700: #941e1e;--yellow-50: #fffdf5;--yellow-100: #fff5e6;--yellow-200: #fff6da;--yellow-300: #ffefc1;--yellow-400: #fff9e7;--yellow-500: #bf7200;--yellow-600: #ffc107;--yellow-700: #bf9105;--yellow-800: #806003;--yellow-900: #bf9105;--orange-50: rgba(255, 251, 245, 1);--orange-100: #fff5e6;--orange-200: #fff0d9;--orange-600: #ff9800;--orange-700: rgba(191, 114, 0, 1);--box-shadow: #0a0d1208;--box-shadow-100: #0000001f;--box-shadow-200: #0a0d1214;--grid-box-shadow: #0000000a;--model-shadow: rgba(0, 0, 0, .08);--canvas-shadow: #00000014;--chunk-shadow: #0a0d120d;--loader-border: #6f7b93;--modal-bg: rgba(4, 13, 23, .3);--checkbox-border: #0d6efd;--filter-600: rgba(0, 0, 0, .644);--feather-bg: #fafafa}html{font-size:12px}.pointer{cursor:pointer}.d-none{display:none}.textTruncate{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}button{border:calc(.0833333333rem / var(--scale)) solid transparent;padding:0 calc(2.3333333333rem / var(--scale));height:calc(4.6666666667rem / var(--scale));min-width:calc(11.8333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale));border-radius:calc(.6666666667rem / var(--scale));font-size:var(--fs-18);line-height:\"\";font-weight:600;cursor:pointer}button:focus-visible{outline:none;border:0}button i-feather.icon{display:flex}button.primary_btn{background-color:var(--blue-600);color:var(--white)}button.secondary_btn{background-color:var(--neutral-100);color:var(--neutral-500)}button.outline_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300)}button.disable{pointer-events:none;opacity:.6}button.fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-600)}button.disable_fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-300);pointer-events:none}button.bg_logic_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200)}button.no_outline_btn{background-color:var(--blue-50);color:var(--blue-600);outline:none}button .close_outline_btn{background-color:var(--blue-50);border:calc(.0833333333rem / var(--scale)) solid var(--blue-50);color:var(--blue-600)}:root{--fs-6: 6px;--fs-8: 8px;--fs-12: 12px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--fs-20: 20px;--fs-24: 24px;--fs-28: 28px;--fs-30: 30px;--fs-32: 32px;--fs-42: 42px;--fs-48: 48px;--img-w: 28px;--scale: 1}@media only screen and (min-width: 1024px) and (max-width: 1280px){:root{--scale: 1.5;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1360px) and (max-width: 1440px){:root{--scale: 1.33;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1536px) and (max-width: 1919px){:root{--scale: 1.25;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;font-family:Open Sans,sans-serif}body{font-size:100%}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}h1,h2,h3,h4,h5,h6,ul,ol p{margin:0;padding:0;text-wrap:pretty}ul[role=list],ol[role=list],ul{list-style:none}img,picture{max-width:100%;display:block}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--neutral-200);border-radius:8px}input,select,textarea{outline:none;box-shadow:none}.radio_group{font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400}.radio_group.horizontal .radio_option_container{display:flex;flex-direction:row;justify-content:flex-start;align-items:stretch;flex-wrap:nowrap;gap:0}.radio_group.horizontal .radio_option_container .radio_option{padding-right:calc(2.5rem / var(--scale))}.radio_group .group_label{margin-bottom:calc(.6666666667rem / var(--scale));font-weight:500}.radio_group .radio_option_container{display:flex;flex-direction:column;justify-content:\"\";align-items:\"\";flex-wrap:nowrap;gap:\"\"}.radio_group .radio_option_container .radio_option{margin-bottom:calc(.6666666667rem / var(--scale))}.radio_group .radio_option_container .radio_option [type=radio]:not(:checked)[disabled]+label{color:var(--neutral-300);cursor:default}.radio_group .radio_option_container .radio_option [type=radio]:not(:checked)[disabled]+label:before{background-color:var(--neutral-100)}.radio_group .radio_option_container .radio_option [type=radio]:is(:checked)[disabled]+label{color:var(--neutral-300);cursor:default}.radio_group .radio_option_container .radio_option [type=radio]:is(:checked)[disabled]+label:before{border-color:var(--neutral-100)}.radio_group .radio_option_container .radio_option [type=radio]:is(:checked)[disabled]+label:after{background-color:var(--neutral-100)}.radio_group .radio_option_container .radio_option [type=radio]:not(:checked)+label:before,.radio_group .radio_option_container .radio_option [type=radio]:checked+label:before{content:\"\";position:absolute;top:0;left:0;width:calc(2rem / var(--scale));height:calc(2rem / var(--scale));background:var(--white)}.radio_group .radio_option_container .radio_option [type=radio]:checked,.radio_group .radio_option_container .radio_option [type=radio]:not(:checked){position:absolute;left:-9999px}.radio_group .radio_option_container .radio_option [type=radio]:checked+label,.radio_group .radio_option_container .radio_option [type=radio]:not(:checked)+label{position:relative;padding-left:calc(2.5rem / var(--scale));cursor:pointer;display:inline-block;color:var(--default)}.radio_group .radio_option_container .radio_option [type=radio]:checked+label:before{border:calc(.0833333333rem / var(--scale)) solid var(--blue-600);border-radius:100%}.radio_group .radio_option_container .radio_option [type=radio]:not(:checked)+label:before{border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:100%}.radio_group .radio_option_container .radio_option [type=radio]:checked+label:after,.radio_group .radio_option_container .radio_option [type=radio]:not(:checked)+label:after{content:\"\";width:calc(.8333333333rem / var(--scale));height:calc(.8333333333rem / var(--scale));background:var(--blue-600);position:absolute;top:calc(.5833333333rem / var(--scale));left:calc(.5833333333rem / var(--scale));border-radius:100%;transition:all .2s ease}.radio_group .radio_option_container .radio_option [type=radio]:not(:checked)+label:after{opacity:0;transform:scale(0)}.radio_group .radio_option_container .radio_option [type=radio]:checked+label:after{opacity:1;transform:scale(1)}\n"] }]
1550
- }], propDecorators: { config: [{
1551
- type: Input
1552
- }], optionList: [{
1553
- type: Input
1554
- }], selectionChange: [{
1555
- type: Output
1556
- }], selectedRadio: [{
1557
- type: Input
1558
- }] } });
1559
-
1560
- class DatePickerComponent {
1561
- minDate;
1562
- maxDate;
1563
- date = '';
1564
- isOpen = false;
1565
- selectedDay = 0;
1566
- currentDate = new Date();
1567
- daysInMonth = [];
1568
- calendarView = 'defaultView';
1569
- showYearSelector = false;
1570
- yearRange = [];
1571
- monthRange = {
1572
- '0': 'JAN',
1573
- '01': 'FEB',
1574
- '02': 'MAR',
1575
- '03': 'APR',
1576
- '04': 'MAY',
1577
- '05': 'JUN',
1578
- '06': 'JUL',
1579
- '07': 'AUG',
1580
- '08': 'SEP',
1581
- '09': 'OCT',
1582
- '10': 'NOV',
1583
- '11': 'DEC',
1584
- };
1585
- // constructor(@Optional() @Self() private ngControl: NgControl) {
1586
- // if (this.ngControl != null) {
1587
- // this.ngControl.valueAccessor = this;
1588
- // }
1589
- // }
1590
- onChange = (date) => { };
1591
- onTouched = () => { };
1592
- control;
1593
- disableControl = false;
1594
- writeValue(value) {
1595
- this.date = value || '';
1596
- if (this.date) {
1597
- this.currentDate = new Date(this.date);
1598
- this.selectedDay = this.currentDate.getDate();
1599
- }
1600
- this.generateCalendar();
1601
- }
1602
- registerOnChange(fn) {
1603
- this.onChange = fn;
1604
- }
1605
- registerOnTouched(fn) {
1606
- this.onTouched = fn;
1607
- }
1608
- setDisabledState(isDisabled) {
1609
- // Optional: Handle disabled state
1610
- this.disableControl = isDisabled;
1611
- }
1612
- validate(control) {
1613
- this.control = control;
1614
- const selected = this.date ? new Date(this.date) : null;
1615
- // Check required manually
1616
- const isRequired = control.validator && control.validator(control)?.['required'];
1617
- if ((isRequired || control.hasError('required')) &&
1618
- (!this.date || !this.selectedDay)) {
1619
- return { required: true };
1620
- }
1621
- else if (this.minDate && selected && selected < new Date(this.minDate)) {
1622
- return { minDate: true };
1623
- }
1624
- else if (this.maxDate && selected && selected > new Date(this.maxDate)) {
1625
- return { maxDate: true };
1626
- }
1627
- return null;
1628
- }
1629
- // validate(control: AbstractControl): ValidationErrors | null {
1630
- // this.control = control;
1631
- // const selected = this.date ? new Date(this.date) : null;
1632
- // const hasRequired = control?.validator?.['required'];
1633
- // if (hasRequired && (!this.date || !this.selectedDay)) {
1634
- // return { required: true };
1635
- // } else if (this.minDate && selected && selected < new Date(this.minDate)) {
1636
- // return { minDate: true };
1637
- // } else if (this.maxDate && selected && selected > new Date(this.maxDate)) {
1638
- // return { maxDate: true };
1639
- // }
1640
- // return null;
1641
- // }
1642
- ngOnInit() {
1643
- this.generateYearRange();
1644
- }
1645
- toggleCalendar() {
1646
- this.isOpen = !this.isOpen;
1647
- if (this.date && this.isOpen) {
1648
- this.currentDate = new Date(this.date);
1649
- this.selectedDay = this.currentDate.getDate();
1650
- }
1651
- this.calendarView = 'defaultView';
1652
- this.generateCalendar();
1653
- this.onTouched();
1654
- if (this.isOpen) {
1655
- let ele = document.getElementsByClassName('calendar-footer');
1656
- setTimeout(() => {
1657
- ele[0]?.scrollIntoView();
1658
- });
1659
- }
1660
- }
1661
- selectDate(day) {
1662
- this.selectedDay = day;
1663
- }
1664
- setSelectedDate() {
1665
- this.selectedDay = this.selectedDay || 1;
1666
- const month = this.currentDate.getMonth() + 1;
1667
- const year = this.currentDate.getFullYear();
1668
- this.date = `${month.toString().padStart(2, '0')}/${this.selectedDay
1669
- .toString()
1670
- .padStart(2, '0')}/${year}`;
1671
- this.onChange(this.date);
1672
- this.onTouched();
1673
- }
1674
- closeCalendar() {
1675
- this.isOpen = false;
1676
- this.calendarView = 'defaultView';
1677
- }
1678
- previousMonth() {
1679
- this.selectedDay = 0;
1680
- this.currentDate.setMonth(this.currentDate.getMonth() - 1);
1681
- this.generateCalendar();
1682
- }
1683
- nextMonth() {
1684
- this.selectedDay = 0;
1685
- this.currentDate.setMonth(this.currentDate.getMonth() + 1);
1686
- this.generateCalendar();
1687
- }
1688
- // @HostListener('window:keydown.arrowleft', ['$event'])
1689
- // handleLeftArrow(event: KeyboardEvent): void {
1690
- // if (this.isOpen) {
1691
- // this.previousMonth();
1692
- // }
1693
- // }
1694
- // @HostListener('window:keydown.arrowright', ['$event'])
1695
- // handleRightArrow(event: KeyboardEvent): void {
1696
- // if (this.isOpen) {
1697
- // this.nextMonth();
1698
- // }
1699
- // }
1700
- handleLeftArrow(event) {
1701
- const keyboardEvent = event;
1702
- if (this.isOpen) {
1703
- this.previousMonth();
1704
- }
1705
- }
1706
- handleRightArrow(event) {
1707
- const keyboardEvent = event;
1708
- if (this.isOpen) {
1709
- this.nextMonth();
1710
- }
1711
- }
1712
- // generateCalendar(): void {
1713
- // const year = this.currentDate.getFullYear();
1714
- // const month = this.currentDate.getMonth();
1715
- // const days = new Date(year, month + 1, 0).getDate();
1716
- // this.daysInMonth = Array.from({ length: days }, (_, i) => i + 1);
1717
- // }
1718
- generateCalendar() {
1719
- const year = this.currentDate.getFullYear();
1720
- const month = this.currentDate.getMonth();
1721
- const firstDayOfMonth = new Date(year, month, 1);
1722
- const firstWeekDay = (firstDayOfMonth.getDay() + 6) % 7; // Convert Sunday (0) to 6, Monday is 0
1723
- const daysInCurrentMonth = new Date(year, month + 1, 0).getDate();
1724
- const daysInPreviousMonth = new Date(year, month, 0).getDate();
1725
- const totalCells = 42; // 6 rows of 7 days
1726
- const calendarDays = [];
1727
- // Fill previous month days
1728
- for (let i = firstWeekDay - 1; i >= 0; i--) {
1729
- const day = daysInPreviousMonth - i;
1730
- const date = new Date(year, month - 1, day);
1731
- calendarDays.push({ day, date, isCurrentMonth: false });
1732
- }
1733
- // Fill current month days
1734
- for (let day = 1; day <= daysInCurrentMonth; day++) {
1735
- const date = new Date(year, month, day);
1736
- calendarDays.push({ day, date, isCurrentMonth: true });
1737
- }
1738
- // Fill next month days
1739
- const remaining = totalCells - calendarDays.length;
1740
- for (let day = 1; day <= remaining; day++) {
1741
- const date = new Date(year, month + 1, day);
1742
- calendarDays.push({ day, date, isCurrentMonth: false });
1743
- }
1744
- this.daysInMonth = calendarDays;
1745
- }
1746
- getMonthYear() {
1747
- return {
1748
- month: this.currentDate.toLocaleString('default', {
1749
- month: 'long',
1750
- }),
1751
- year: this.currentDate.toLocaleString('default', {
1752
- year: 'numeric',
1753
- }),
1754
- };
1755
- }
1756
- previousYearRange() {
1757
- this.yearRange = this.yearRange.map((year) => year - 20);
1758
- }
1759
- nextYearRange() {
1760
- this.yearRange = this.yearRange.map((year) => year + 20);
1761
- }
1762
- toggleYearSelector() {
1763
- this.showYearSelector = !this.showYearSelector;
1764
- this.generateYearRange();
1765
- }
1766
- selectYear(year) {
1767
- this.currentDate.setFullYear(year);
1768
- this.showYearSelector = false;
1769
- this.calendarView = 'defaultView';
1770
- this.selectedDay = 0;
1771
- this.generateCalendar();
1772
- }
1773
- selectMonth(month) {
1774
- this.currentDate.setMonth(month);
1775
- this.calendarView = 'defaultView';
1776
- this.selectedDay = 0;
1777
- this.generateCalendar();
1778
- }
1779
- generateYearRange() {
1780
- const currentYear = this.currentDate.getFullYear();
1781
- const startYear = currentYear - (currentYear % 20);
1782
- this.yearRange = Array.from({ length: 20 }, (_, i) => startYear + i);
1783
- }
1784
- isDateSelectable(date) {
1785
- const min = this.minDate ? new Date(this.minDate) : null;
1786
- const max = this.maxDate ? new Date(this.maxDate) : null;
1787
- if (min && date < min)
1788
- return false;
1789
- if (max && date > max)
1790
- return false;
1791
- return true;
1792
- }
1793
- isDayDisabled(day) {
1794
- const date = new Date(this.currentDate.getFullYear(), this.currentDate.getMonth(), day);
1795
- return !this.isDateSelectable(date);
1796
- }
1797
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1798
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: DatePickerComponent, isStandalone: true, selector: "cats-ui-date-picker", inputs: { minDate: "minDate", maxDate: "maxDate" }, host: { listeners: { "window:keydown.arrowleft": "handleLeftArrow($event)", "window:keydown.arrowright": "handleRightArrow($event)" } }, providers: [
1799
- {
1800
- provide: NG_VALUE_ACCESSOR,
1801
- useExisting: forwardRef(() => DatePickerComponent),
1802
- multi: true,
1803
- },
1804
- DatePipe,
1805
- ], ngImport: i0, template: "<div\r\n class=\"date-picker-container\"\r\n catsOutsideClick\r\n (clickOutside)=\"closeCalendar()\"\r\n [ngClass]=\"{ 'pe-none': disableControl }\"\r\n>\r\n <div (click)=\"toggleCalendar()\">\r\n <input\r\n type=\"text\"\r\n [value]=\"date | date : 'MM/dd/yyy'\"\r\n placeholder=\"MM/DD/YYYY\"\r\n readonly\r\n [disabled]=\"disableControl\"\r\n />\r\n <!-- <i-feather name=\"calendar\" class=\"calendar_icon\"></i-feather> -->\r\n </div>\r\n @if(isOpen){\r\n <div class=\"calendar-popup\">\r\n <div class=\"calendar-header\">\r\n <span class=\"navigation-button\" (click)=\"previousMonth()\">\r\n <!-- <i-feather name=\"chevron-left\"></i-feather> -->\r\n </span>\r\n <div>\r\n <span\r\n class=\"month-year pe-3 pointer\"\r\n (click)=\"calendarView = 'monthView'\"\r\n >{{ getMonthYear().month }}</span\r\n >\r\n <span class=\"month-year pointer\" (click)=\"calendarView = 'yearView'\">{{\r\n getMonthYear().year\r\n }}</span>\r\n </div>\r\n <span class=\"navigation-button\" (click)=\"nextMonth()\">\r\n <!-- <i-feather name=\"chevron-right\"></i-feather> -->\r\n </span>\r\n </div>\r\n\r\n @if(calendarView === \"monthView\"){\r\n <div class=\"month-grid\">\r\n @for(month of monthRange | keyvalue; track $index){\r\n <span\r\n class=\"month\"\r\n (click)=\"selectMonth(month.key)\"\r\n [ngClass]=\"{ selected: month.key == currentDate.getMonth() }\"\r\n >{{ month.value }}</span\r\n >\r\n }\r\n </div>\r\n } @else if(calendarView === 'yearView'){\r\n <div class=\"year-selector\">\r\n <span class=\"navigation-button\" (click)=\"previousYearRange()\">\r\n <!-- <i-feather name=\"chevron-left\"></i-feather> -->\r\n </span>\r\n <div class=\"year-grid\">\r\n @for(year of yearRange;track $index){\r\n <span\r\n class=\"year\"\r\n (click)=\"selectYear(year)\"\r\n [ngClass]=\"{ selected: year == currentDate.getFullYear() }\"\r\n >{{ year }}</span\r\n >\r\n }\r\n </div>\r\n <span class=\"navigation-button\" (click)=\"nextYearRange()\">\r\n <!-- <i-feather name=\"chevron-right\"></i-feather> -->\r\n </span>\r\n </div>\r\n } @else {\r\n <div class=\"calendar-grid\">\r\n <div\r\n *ngFor=\"let day of ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']\"\r\n class=\"days_name\"\r\n >\r\n {{ day }}\r\n </div>\r\n\r\n <div\r\n *ngFor=\"let dayObj of daysInMonth\"\r\n class=\"calendar-day\"\r\n [ngClass]=\"{\r\n selected:\r\n dayObj.date.getDate() === selectedDay && dayObj.isCurrentMonth,\r\n disabled: isDayDisabled(dayObj.date.getDate()),\r\n notInCurrentMonth: !dayObj.isCurrentMonth\r\n }\"\r\n (click)=\"selectDate(dayObj.day)\"\r\n >\r\n {{ dayObj.day }}\r\n </div>\r\n </div>\r\n\r\n <div id=\"calendar-footer\" class=\"calendar-footer\">\r\n <button type=\"button\" class=\"outline_blue\" (click)=\"closeCalendar()\">\r\n Cancel\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"fill_blue\"\r\n (click)=\"closeCalendar(); setSelectedDate()\"\r\n >\r\n Choose Date\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [":root{--white: #ffffff;--white-50: rgba(255, 255, 255, .582);--black: #1f1f1f;--default: #000000;--black-900: #202224;--pagination-text: var(--neutral-500);--black-dust: #1a1a1a;--neutral-cross: #d9d9d9;--neutral-40: #d5d7da;--neutral-50: #f0f0f0;--neutral-100: #e6e7e8;--neutral-200: #dadbdc;--neutral-300: #c0c2c5;--neutral-400: #81858a;--neutral-500: #434a51;--neutral-600: #040d17;--neutral-900: #010306;--blue-700: #1c60af;--blue-600: #2680ea;--blue-400: #92bff4;--blue-100: #eaf3fd;--blue-300: #c8dff9;--blue-200: #dfecfc;--blue-50: #f7fafe;--blue-800: #1849d6;--grey-50: #e9eaeb;--grey-100: #e2e8f0;--grey-150: #d6d6d6;--grey-200: #64748b;--grey-300: #414651;--grey-400: #8080808c;--grey-600: #535862;--light-grey: #81858a;--dark-grey: #4a4a4a;--green-50: #f7fbf7;--green-100: #ecf4ec;--green-200: #2a6a2d;--green-400: #9bc69d;--green-600: #388e3c;--green-700: rgba(42, 106, 45, 1);--red: #ff0000;--red-50: #fdf7f7;--red-100: #f0c9c9;--red-200: #f7dfdf;--red-300: #f2f2f2;--red-700: #941e1e;--yellow-50: #fffdf5;--yellow-100: #fff5e6;--yellow-200: #fff6da;--yellow-300: #ffefc1;--yellow-400: #fff9e7;--yellow-500: #bf7200;--yellow-600: #ffc107;--yellow-700: #bf9105;--yellow-800: #806003;--yellow-900: #bf9105;--orange-50: rgba(255, 251, 245, 1);--orange-100: #fff5e6;--orange-200: #fff0d9;--orange-600: #ff9800;--orange-700: rgba(191, 114, 0, 1);--box-shadow: #0a0d1208;--box-shadow-100: #0000001f;--box-shadow-200: #0a0d1214;--grid-box-shadow: #0000000a;--model-shadow: rgba(0, 0, 0, .08);--canvas-shadow: #00000014;--chunk-shadow: #0a0d120d;--loader-border: #6f7b93;--modal-bg: rgba(4, 13, 23, .3);--checkbox-border: #0d6efd;--filter-600: rgba(0, 0, 0, .644);--feather-bg: #fafafa}html{font-size:12px}.pointer{cursor:pointer}.d-none{display:none}.textTruncate{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}button{border:calc(.0833333333rem / var(--scale)) solid transparent;padding:0 calc(2.3333333333rem / var(--scale));height:calc(4.6666666667rem / var(--scale));min-width:calc(11.8333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale));border-radius:calc(.6666666667rem / var(--scale));font-size:var(--fs-18);line-height:\"\";font-weight:600;cursor:pointer}button:focus-visible{outline:none;border:0}button i-feather.icon{display:flex}button.primary_btn{background-color:var(--blue-600);color:var(--white)}button.secondary_btn{background-color:var(--neutral-100);color:var(--neutral-500)}button.outline_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300)}button.disable{pointer-events:none;opacity:.6}button.fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-600)}button.disable_fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-300);pointer-events:none}button.bg_logic_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200)}button.no_outline_btn{background-color:var(--blue-50);color:var(--blue-600);outline:none}button .close_outline_btn{background-color:var(--blue-50);border:calc(.0833333333rem / var(--scale)) solid var(--blue-50);color:var(--blue-600)}:root{--fs-6: 6px;--fs-8: 8px;--fs-12: 12px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--fs-20: 20px;--fs-24: 24px;--fs-28: 28px;--fs-30: 30px;--fs-32: 32px;--fs-42: 42px;--fs-48: 48px;--img-w: 28px;--scale: 1}@media only screen and (min-width: 1024px) and (max-width: 1280px){:root{--scale: 1.5;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1360px) and (max-width: 1440px){:root{--scale: 1.33;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1536px) and (max-width: 1919px){:root{--scale: 1.25;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;font-family:Open Sans,sans-serif}body{font-size:100%}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}h1,h2,h3,h4,h5,h6,ul,ol p{margin:0;padding:0;text-wrap:pretty}ul[role=list],ol[role=list],ul{list-style:none}img,picture{max-width:100%;display:block}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--neutral-200);border-radius:8px}input,select,textarea{outline:none;box-shadow:none}.date-picker-container{position:relative;display:inline-block;width:100%}.calendar_icon{position:absolute;top:calc(1.3333333333rem / var(--scale));right:calc(1.3333333333rem / var(--scale));stroke:var(--textSecondary);cursor:pointer;width:calc(1.6666666667rem / var(--scale));height:calc(1.6666666667rem / var(--scale))}input[type=text]{padding:calc(1.3333333333rem / var(--scale));border-radius:calc(1.3333333333rem / var(--scale));cursor:pointer}input::placeholder{color:var(--textSecondary70);font-size:var(--fs-16);line-height:140%;font-weight:400}.calendar-popup{position:absolute;top:calc(4.4166666667rem / var(--scale));right:0;z-index:10;background:var(--white);border:calc(.0833333333rem / var(--scale)) solid var(--border);padding:calc(1.3333333333rem / var(--scale));border-radius:calc(.6666666667rem / var(--scale));box-shadow:0 calc(.3333333333rem / var(--scale)) calc(.6666666667rem / var(--scale)) 0 var(--dropdown-shadow);width:calc(34.6666666667rem / var(--scale))}.calendar-header{height:calc(4rem / var(--scale));display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;margin-bottom:calc(.6666666667rem / var(--scale))}.calendar-header .month-year{font-size:var(--fs-16);line-height:calc(2.6666666667rem / var(--scale));font-weight:500;color:var(--textPrimary)}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);text-align:center}.calendar-grid .days_name{height:calc(4rem / var(--scale));font-size:var(--fs-16);line-height:calc(2.6666666667rem / var(--scale));font-weight:500;color:var(--textSecondary);display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:0}.calendar-day{border-radius:calc(.6666666667rem / var(--scale));cursor:pointer;background-color:var(--blue-50);width:calc(4rem / var(--scale));height:calc(4rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:0;font-size:var(--fs-16);line-height:calc(2.6666666667rem / var(--scale));font-weight:500;color:var(--textSecondary)}.calendar-day:not(:last-child){margin-bottom:calc(.6666666667rem / var(--scale))}.calendar-day:hover{background-color:var(--border);border:calc(.0833333333rem / var(--scale)) solid var(--blue-700);color:var(--blue-700);transition:ease-in-out .3s}.calendar-footer{margin-top:calc(1.3333333333rem / var(--scale));height:calc(4rem / var(--scale));display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:calc(1.3333333333rem / var(--scale))}.calendar-footer button{min-width:calc(10rem / var(--scale));width:100%;font-size:var(--fs-14);line-height:140%;font-weight:400;border:1px solid var(--primaryBlue)}.navigation-button{border-radius:calc(.6666666667rem / var(--scale));cursor:pointer;font-size:var(--fs-20)}.navigation-button i-feather{width:calc(2rem / var(--scale));height:calc(2rem / var(--scale))}.calendar-day.selected{background-color:var(--primaryOrange);color:var(--white)}.month-year{font-size:var(--fs-12);font-weight:500}.year-selector{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.year-grid,.month-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;font-size:var(--fs-16);line-height:calc(2.6666666667rem / var(--scale));font-weight:500}.year,.month{padding:4px 8px;border-radius:16px;cursor:pointer}.year.selected,.month.selected{color:var(--blue-700)}.year:hover,.month:hover{background-color:var(--border);color:var(--blue-700);transition:ease-in-out .3s}.calendar-day.disabled{color:#ccc;pointer-events:none;background:#f9f9f9}.notInCurrentMonth{pointer-events:none;background-color:#fff}@media only screen and (min-width: 0) and (max-width: 1360px){.year-grid,.month-grid{display:grid;grid-template-columns:repeat(4,1fr)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: OutsideClickDirective, selector: "[catsOutsideClick]", outputs: ["clickOutSide"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i1.KeyValuePipe, name: "keyvalue" }] });
1806
- }
1807
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: DatePickerComponent, decorators: [{
1808
- type: Component,
1809
- args: [{ selector: 'cats-ui-date-picker', imports: [CommonModule, OutsideClickDirective], providers: [
1810
- {
1811
- provide: NG_VALUE_ACCESSOR,
1812
- useExisting: forwardRef(() => DatePickerComponent),
1813
- multi: true,
1814
- },
1815
- DatePipe,
1816
- ], template: "<div\r\n class=\"date-picker-container\"\r\n catsOutsideClick\r\n (clickOutside)=\"closeCalendar()\"\r\n [ngClass]=\"{ 'pe-none': disableControl }\"\r\n>\r\n <div (click)=\"toggleCalendar()\">\r\n <input\r\n type=\"text\"\r\n [value]=\"date | date : 'MM/dd/yyy'\"\r\n placeholder=\"MM/DD/YYYY\"\r\n readonly\r\n [disabled]=\"disableControl\"\r\n />\r\n <!-- <i-feather name=\"calendar\" class=\"calendar_icon\"></i-feather> -->\r\n </div>\r\n @if(isOpen){\r\n <div class=\"calendar-popup\">\r\n <div class=\"calendar-header\">\r\n <span class=\"navigation-button\" (click)=\"previousMonth()\">\r\n <!-- <i-feather name=\"chevron-left\"></i-feather> -->\r\n </span>\r\n <div>\r\n <span\r\n class=\"month-year pe-3 pointer\"\r\n (click)=\"calendarView = 'monthView'\"\r\n >{{ getMonthYear().month }}</span\r\n >\r\n <span class=\"month-year pointer\" (click)=\"calendarView = 'yearView'\">{{\r\n getMonthYear().year\r\n }}</span>\r\n </div>\r\n <span class=\"navigation-button\" (click)=\"nextMonth()\">\r\n <!-- <i-feather name=\"chevron-right\"></i-feather> -->\r\n </span>\r\n </div>\r\n\r\n @if(calendarView === \"monthView\"){\r\n <div class=\"month-grid\">\r\n @for(month of monthRange | keyvalue; track $index){\r\n <span\r\n class=\"month\"\r\n (click)=\"selectMonth(month.key)\"\r\n [ngClass]=\"{ selected: month.key == currentDate.getMonth() }\"\r\n >{{ month.value }}</span\r\n >\r\n }\r\n </div>\r\n } @else if(calendarView === 'yearView'){\r\n <div class=\"year-selector\">\r\n <span class=\"navigation-button\" (click)=\"previousYearRange()\">\r\n <!-- <i-feather name=\"chevron-left\"></i-feather> -->\r\n </span>\r\n <div class=\"year-grid\">\r\n @for(year of yearRange;track $index){\r\n <span\r\n class=\"year\"\r\n (click)=\"selectYear(year)\"\r\n [ngClass]=\"{ selected: year == currentDate.getFullYear() }\"\r\n >{{ year }}</span\r\n >\r\n }\r\n </div>\r\n <span class=\"navigation-button\" (click)=\"nextYearRange()\">\r\n <!-- <i-feather name=\"chevron-right\"></i-feather> -->\r\n </span>\r\n </div>\r\n } @else {\r\n <div class=\"calendar-grid\">\r\n <div\r\n *ngFor=\"let day of ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']\"\r\n class=\"days_name\"\r\n >\r\n {{ day }}\r\n </div>\r\n\r\n <div\r\n *ngFor=\"let dayObj of daysInMonth\"\r\n class=\"calendar-day\"\r\n [ngClass]=\"{\r\n selected:\r\n dayObj.date.getDate() === selectedDay && dayObj.isCurrentMonth,\r\n disabled: isDayDisabled(dayObj.date.getDate()),\r\n notInCurrentMonth: !dayObj.isCurrentMonth\r\n }\"\r\n (click)=\"selectDate(dayObj.day)\"\r\n >\r\n {{ dayObj.day }}\r\n </div>\r\n </div>\r\n\r\n <div id=\"calendar-footer\" class=\"calendar-footer\">\r\n <button type=\"button\" class=\"outline_blue\" (click)=\"closeCalendar()\">\r\n Cancel\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"fill_blue\"\r\n (click)=\"closeCalendar(); setSelectedDate()\"\r\n >\r\n Choose Date\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [":root{--white: #ffffff;--white-50: rgba(255, 255, 255, .582);--black: #1f1f1f;--default: #000000;--black-900: #202224;--pagination-text: var(--neutral-500);--black-dust: #1a1a1a;--neutral-cross: #d9d9d9;--neutral-40: #d5d7da;--neutral-50: #f0f0f0;--neutral-100: #e6e7e8;--neutral-200: #dadbdc;--neutral-300: #c0c2c5;--neutral-400: #81858a;--neutral-500: #434a51;--neutral-600: #040d17;--neutral-900: #010306;--blue-700: #1c60af;--blue-600: #2680ea;--blue-400: #92bff4;--blue-100: #eaf3fd;--blue-300: #c8dff9;--blue-200: #dfecfc;--blue-50: #f7fafe;--blue-800: #1849d6;--grey-50: #e9eaeb;--grey-100: #e2e8f0;--grey-150: #d6d6d6;--grey-200: #64748b;--grey-300: #414651;--grey-400: #8080808c;--grey-600: #535862;--light-grey: #81858a;--dark-grey: #4a4a4a;--green-50: #f7fbf7;--green-100: #ecf4ec;--green-200: #2a6a2d;--green-400: #9bc69d;--green-600: #388e3c;--green-700: rgba(42, 106, 45, 1);--red: #ff0000;--red-50: #fdf7f7;--red-100: #f0c9c9;--red-200: #f7dfdf;--red-300: #f2f2f2;--red-700: #941e1e;--yellow-50: #fffdf5;--yellow-100: #fff5e6;--yellow-200: #fff6da;--yellow-300: #ffefc1;--yellow-400: #fff9e7;--yellow-500: #bf7200;--yellow-600: #ffc107;--yellow-700: #bf9105;--yellow-800: #806003;--yellow-900: #bf9105;--orange-50: rgba(255, 251, 245, 1);--orange-100: #fff5e6;--orange-200: #fff0d9;--orange-600: #ff9800;--orange-700: rgba(191, 114, 0, 1);--box-shadow: #0a0d1208;--box-shadow-100: #0000001f;--box-shadow-200: #0a0d1214;--grid-box-shadow: #0000000a;--model-shadow: rgba(0, 0, 0, .08);--canvas-shadow: #00000014;--chunk-shadow: #0a0d120d;--loader-border: #6f7b93;--modal-bg: rgba(4, 13, 23, .3);--checkbox-border: #0d6efd;--filter-600: rgba(0, 0, 0, .644);--feather-bg: #fafafa}html{font-size:12px}.pointer{cursor:pointer}.d-none{display:none}.textTruncate{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}button{border:calc(.0833333333rem / var(--scale)) solid transparent;padding:0 calc(2.3333333333rem / var(--scale));height:calc(4.6666666667rem / var(--scale));min-width:calc(11.8333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale));border-radius:calc(.6666666667rem / var(--scale));font-size:var(--fs-18);line-height:\"\";font-weight:600;cursor:pointer}button:focus-visible{outline:none;border:0}button i-feather.icon{display:flex}button.primary_btn{background-color:var(--blue-600);color:var(--white)}button.secondary_btn{background-color:var(--neutral-100);color:var(--neutral-500)}button.outline_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300)}button.disable{pointer-events:none;opacity:.6}button.fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-600)}button.disable_fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-300);pointer-events:none}button.bg_logic_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200)}button.no_outline_btn{background-color:var(--blue-50);color:var(--blue-600);outline:none}button .close_outline_btn{background-color:var(--blue-50);border:calc(.0833333333rem / var(--scale)) solid var(--blue-50);color:var(--blue-600)}:root{--fs-6: 6px;--fs-8: 8px;--fs-12: 12px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--fs-20: 20px;--fs-24: 24px;--fs-28: 28px;--fs-30: 30px;--fs-32: 32px;--fs-42: 42px;--fs-48: 48px;--img-w: 28px;--scale: 1}@media only screen and (min-width: 1024px) and (max-width: 1280px){:root{--scale: 1.5;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1360px) and (max-width: 1440px){:root{--scale: 1.33;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1536px) and (max-width: 1919px){:root{--scale: 1.25;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;font-family:Open Sans,sans-serif}body{font-size:100%}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}h1,h2,h3,h4,h5,h6,ul,ol p{margin:0;padding:0;text-wrap:pretty}ul[role=list],ol[role=list],ul{list-style:none}img,picture{max-width:100%;display:block}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--neutral-200);border-radius:8px}input,select,textarea{outline:none;box-shadow:none}.date-picker-container{position:relative;display:inline-block;width:100%}.calendar_icon{position:absolute;top:calc(1.3333333333rem / var(--scale));right:calc(1.3333333333rem / var(--scale));stroke:var(--textSecondary);cursor:pointer;width:calc(1.6666666667rem / var(--scale));height:calc(1.6666666667rem / var(--scale))}input[type=text]{padding:calc(1.3333333333rem / var(--scale));border-radius:calc(1.3333333333rem / var(--scale));cursor:pointer}input::placeholder{color:var(--textSecondary70);font-size:var(--fs-16);line-height:140%;font-weight:400}.calendar-popup{position:absolute;top:calc(4.4166666667rem / var(--scale));right:0;z-index:10;background:var(--white);border:calc(.0833333333rem / var(--scale)) solid var(--border);padding:calc(1.3333333333rem / var(--scale));border-radius:calc(.6666666667rem / var(--scale));box-shadow:0 calc(.3333333333rem / var(--scale)) calc(.6666666667rem / var(--scale)) 0 var(--dropdown-shadow);width:calc(34.6666666667rem / var(--scale))}.calendar-header{height:calc(4rem / var(--scale));display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;margin-bottom:calc(.6666666667rem / var(--scale))}.calendar-header .month-year{font-size:var(--fs-16);line-height:calc(2.6666666667rem / var(--scale));font-weight:500;color:var(--textPrimary)}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);text-align:center}.calendar-grid .days_name{height:calc(4rem / var(--scale));font-size:var(--fs-16);line-height:calc(2.6666666667rem / var(--scale));font-weight:500;color:var(--textSecondary);display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:0}.calendar-day{border-radius:calc(.6666666667rem / var(--scale));cursor:pointer;background-color:var(--blue-50);width:calc(4rem / var(--scale));height:calc(4rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:0;font-size:var(--fs-16);line-height:calc(2.6666666667rem / var(--scale));font-weight:500;color:var(--textSecondary)}.calendar-day:not(:last-child){margin-bottom:calc(.6666666667rem / var(--scale))}.calendar-day:hover{background-color:var(--border);border:calc(.0833333333rem / var(--scale)) solid var(--blue-700);color:var(--blue-700);transition:ease-in-out .3s}.calendar-footer{margin-top:calc(1.3333333333rem / var(--scale));height:calc(4rem / var(--scale));display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:calc(1.3333333333rem / var(--scale))}.calendar-footer button{min-width:calc(10rem / var(--scale));width:100%;font-size:var(--fs-14);line-height:140%;font-weight:400;border:1px solid var(--primaryBlue)}.navigation-button{border-radius:calc(.6666666667rem / var(--scale));cursor:pointer;font-size:var(--fs-20)}.navigation-button i-feather{width:calc(2rem / var(--scale));height:calc(2rem / var(--scale))}.calendar-day.selected{background-color:var(--primaryOrange);color:var(--white)}.month-year{font-size:var(--fs-12);font-weight:500}.year-selector{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.year-grid,.month-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;font-size:var(--fs-16);line-height:calc(2.6666666667rem / var(--scale));font-weight:500}.year,.month{padding:4px 8px;border-radius:16px;cursor:pointer}.year.selected,.month.selected{color:var(--blue-700)}.year:hover,.month:hover{background-color:var(--border);color:var(--blue-700);transition:ease-in-out .3s}.calendar-day.disabled{color:#ccc;pointer-events:none;background:#f9f9f9}.notInCurrentMonth{pointer-events:none;background-color:#fff}@media only screen and (min-width: 0) and (max-width: 1360px){.year-grid,.month-grid{display:grid;grid-template-columns:repeat(4,1fr)}}\n"] }]
1817
- }], propDecorators: { minDate: [{
1818
- type: Input
1819
- }], maxDate: [{
1820
- type: Input
1821
- }], handleLeftArrow: [{
1822
- type: HostListener,
1823
- args: ['window:keydown.arrowleft', ['$event']]
1824
- }], handleRightArrow: [{
1825
- type: HostListener,
1826
- args: ['window:keydown.arrowright', ['$event']]
1827
- }] } });
1828
-
1829
- class DateTimePickerComponent {
1830
- locale;
1831
- cd;
1832
- datePipe;
1833
- dateTimeSelected = new EventEmitter();
1834
- dateConfig;
1835
- minDate;
1836
- maxDate;
1837
- preSelectedValue;
1838
- selectedDateTime;
1839
- currentDate = new Date();
1840
- currentMonth = this.currentDate.getMonth();
1841
- currentYear = this.currentDate.getFullYear();
1842
- selectedDate = null;
1843
- selectedTime = null;
1844
- calendar = [];
1845
- timeSlots = [];
1846
- rangeStart = null;
1847
- rangeEnd = null;
1848
- selectedMonth;
1849
- selectedYear;
1850
- control;
1851
- disableControl = false;
1852
- date = '';
1853
- calendarView = 'defaultView';
1854
- yearRange = [];
1855
- daysInMonth = [];
1856
- selectedDay = 0;
1857
- selectedStartDate;
1858
- selectedEndDate;
1859
- isOpen = false;
1860
- showYearSelector = false;
1861
- monthRange = {
1862
- '0': 'JAN',
1863
- '01': 'FEB',
1864
- '02': 'MAR',
1865
- '03': 'APR',
1866
- '04': 'MAY',
1867
- '05': 'JUN',
1868
- '06': 'JUL',
1869
- '07': 'AUG',
1870
- '08': 'SEP',
1871
- '09': 'OCT',
1872
- '10': 'NOV',
1873
- '11': 'DEC',
1874
- };
1875
- constructor(locale, cd, datePipe) {
1876
- this.locale = locale;
1877
- this.cd = cd;
1878
- this.datePipe = datePipe;
1879
- }
1880
- ngOnChanges(_changes) {
1881
- if (!_changes['selectedDateTime']?.currentValue) {
1882
- this.selectedDateTime = [];
1883
- }
1884
- else {
1885
- this.writeValue(this.control?.value);
1886
- }
1887
- }
1888
- ngOnInit() {
1889
- this.generateYearRange();
1890
- // this.generateCalendar();
1891
- this.generateTimeRanges();
1892
- if (this.preSelectedValue) {
1893
- this.initializeCalendar();
1894
- }
1895
- }
1896
- onTouchedCallback = () => { };
1897
- onChangeCallback = () => { };
1898
- writeValue(value) {
1899
- if (value) {
1900
- this.selectedDateTime = value;
1901
- this.onChangeCallback(value);
1902
- this.cd.markForCheck();
1903
- }
1904
- }
1905
- registerOnChange(fn) {
1906
- this.onChangeCallback = fn;
1907
- }
1908
- registerOnTouched(fn) {
1909
- this.onTouchedCallback = fn;
1910
- }
1911
- setDisabledState(isDisabled) {
1912
- if (this.control) {
1913
- isDisabled ? this.control.disable() : this.control.enable();
1914
- }
1915
- }
1916
- /**
1917
- * @description Validates date time picker component
1918
- * @author Shiva Kant
1919
- * @param control
1920
- * @returns validate
1921
- */
1922
- validate(control) {
1923
- this.control = control;
1924
- const selected = this.date ? new Date(this.date) : null;
1925
- // Check required manually
1926
- const isRequired = control.validator && control.validator(control)?.['required'];
1927
- if ((isRequired || control.hasError('required')) &&
1928
- (!this.date || !this.selectedDay)) {
1929
- return { required: true };
1930
- }
1931
- else if (this.minDate && selected && selected < new Date(this.minDate)) {
1932
- return { minDate: true };
1933
- }
1934
- else if (this.maxDate && selected && selected > new Date(this.maxDate)) {
1935
- return { maxDate: true };
1936
- }
1937
- return null;
1938
- }
1939
- /**
1940
- * @description method to toggleCalendar
1941
- * @author Shiva Kant
1942
- */
1943
- toggleCalendar() {
1944
- this.isOpen = !this.isOpen;
1945
- if (this.date && this.isOpen) {
1946
- this.currentDate = new Date(this.date);
1947
- this.selectedDay = this.currentDate.getDate();
1948
- }
1949
- this.calendarView = 'defaultView';
1950
- this.generateCalendar();
1951
- if (this.isOpen) {
1952
- let ele = document.getElementsByClassName('calendar-footer');
1953
- setTimeout(() => {
1954
- ele[0]?.scrollIntoView();
1955
- });
1956
- }
1957
- }
1958
- /**
1959
- * @description Closes calendar
1960
- * @author Shiva Kant
1961
- */
1962
- closeCalendar() {
1963
- this.isOpen = false;
1964
- this.calendarView = 'defaultView';
1965
- }
1966
- /**
1967
- * @description Method to Gets month year
1968
- * @author Shiva Kant
1969
- * @returns month year
1970
- */
1971
- getMonthYear() {
1972
- return {
1973
- month: this.currentDate.toLocaleString('default', {
1974
- month: 'long',
1975
- }),
1976
- year: this.currentDate.toLocaleString('default', {
1977
- year: 'numeric',
1978
- }),
1979
- };
1980
- }
1981
- /**
1982
- * @description Method to Updates current year month
1983
- * @author Shiva Kant
1984
- */
1985
- updateCurrentYearMonth() {
1986
- this.currentYear = this.currentDate.getFullYear();
1987
- this.currentMonth = this.currentDate.getMonth();
1988
- }
1989
- /**
1990
- * @description Method to Selects year
1991
- * @author Shiva Kant
1992
- * @param year
1993
- */
1994
- selectYear(year) {
1995
- this.currentDate.setFullYear(year);
1996
- this.updateCurrentYearMonth();
1997
- this.showYearSelector = false;
1998
- this.calendarView = 'defaultView';
1999
- this.selectedDay = 0;
2000
- this.generateCalendar();
2001
- }
2002
- /**
2003
- * @description Method to Selects month
2004
- * @author Shiva Kant
2005
- * @param month
2006
- */
2007
- selectMonth(month) {
2008
- this.currentDate.setMonth(month);
2009
- this.updateCurrentYearMonth();
2010
- this.calendarView = 'defaultView';
2011
- this.selectedDay = 0;
2012
- this.generateCalendar();
2013
- }
2014
- /**
2015
- * @description Method to Previous year range
2016
- * @author Shiva Kant
2017
- */
2018
- previousYearRange() {
2019
- this.yearRange = this.yearRange.map((year) => year - 18);
2020
- }
2021
- /**
2022
- * @description Method to Next year range
2023
- * @author Shiva Kant
2024
- */
2025
- nextYearRange() {
2026
- this.yearRange = this.yearRange.map((year) => year + 18);
2027
- }
2028
- /**
2029
- * @description Method to Toggles year selector
2030
- * @author Shiva Kant
2031
- */
2032
- toggleYearSelector() {
2033
- this.showYearSelector = !this.showYearSelector;
2034
- this.generateYearRange();
2035
- }
2036
- /**
2037
- * @description Method to Generates year range
2038
- * @author Shiva Kant
2039
- */
2040
- generateYearRange() {
2041
- const currentYear = this.currentDate.getFullYear();
2042
- const startYear = currentYear - (currentYear % 20);
2043
- this.yearRange = Array.from({ length: 18 }, (_, i) => startYear + i);
2044
- }
2045
- /**
2046
- * @description Method to Determines whether date selectable is
2047
- * @author Shiva Kant
2048
- * @param date
2049
- * @returns true if date selectable
2050
- */
2051
- isDateSelectable(date) {
2052
- const min = this.minDate ? new Date(this.minDate) : null;
2053
- const max = this.maxDate ? new Date(this.maxDate) : null;
2054
- if (min && date < min)
2055
- return false;
2056
- if (max && date > max)
2057
- return false;
2058
- return true;
2059
- }
2060
- /**
2061
- * @description Method to Determines whether day disabled is
2062
- * @author Shiva Kant
2063
- * @param day
2064
- * @returns true if day disabled
2065
- */
2066
- isDayDisabled(day) {
2067
- const date = new Date(this.currentDate.getFullYear(), this.currentDate.getMonth(), day);
2068
- return !this.isDateSelectable(date);
2069
- }
2070
- /**
2071
- * @description Method to Generates calendar
2072
- * @author Shiva Kant
2073
- */
2074
- generateCalendar() {
2075
- const year = this.currentDate.getFullYear();
2076
- const month = this.currentDate.getMonth();
2077
- const firstDayOfMonth = new Date(year, month, 1);
2078
- const firstWeekDay = (firstDayOfMonth.getDay() + 6) % 7; // Convert Sunday (0) to 6, Monday is 0
2079
- const daysInCurrentMonth = new Date(year, month + 1, 0).getDate();
2080
- const daysInPreviousMonth = new Date(year, month, 0).getDate();
2081
- const totalCells = 42; // 6 rows of 7 days
2082
- const calendarDays = [];
2083
- // Fill previous month days
2084
- for (let i = firstWeekDay - 1; i >= 0; i--) {
2085
- const day = daysInPreviousMonth - i;
2086
- const date = new Date(year, month - 1, day);
2087
- calendarDays.push({ day, date, isCurrentMonth: false });
2088
- }
2089
- // Fill current month days
2090
- for (let day = 1; day <= daysInCurrentMonth; day++) {
2091
- const date = new Date(year, month, day);
2092
- calendarDays.push({ day, date, isCurrentMonth: true });
2093
- }
2094
- // Fill next month days
2095
- const remaining = totalCells - calendarDays.length;
2096
- for (let day = 1; day <= remaining; day++) {
2097
- const date = new Date(year, month + 1, day);
2098
- calendarDays.push({ day, date, isCurrentMonth: false });
2099
- }
2100
- this.daysInMonth = calendarDays;
2101
- }
2102
- /**
2103
- * @description Method to Previous month
2104
- * @author Shiva Kant
2105
- */
2106
- previousMonth() {
2107
- this.currentDate.setMonth(this.currentDate.getMonth() - 1);
2108
- this.updateCurrentYearMonth();
2109
- this.selectedDay = 0;
2110
- this.generateCalendar();
2111
- }
2112
- /**
2113
- * @description Method to Next month
2114
- * @author Shiva Kant
2115
- */
2116
- nextMonth() {
2117
- this.currentDate.setMonth(this.currentDate.getMonth() + 1);
2118
- this.updateCurrentYearMonth();
2119
- this.selectedDay = 0;
2120
- this.generateCalendar();
2121
- }
2122
- /**
2123
- * @description Method to Initializes calendar when preSelectedValue date
2124
- * @author Shiva Kant
2125
- * @returns calendar
2126
- */
2127
- initializeCalendar() {
2128
- if (!this.preSelectedValue)
2129
- return;
2130
- // Case 1: Single date (string or Date)
2131
- if (typeof this.preSelectedValue === 'string' ||
2132
- this.preSelectedValue instanceof Date) {
2133
- const date = new Date(this.preSelectedValue);
2134
- this.selectedDate = date.getDate();
2135
- this.selectedMonth = date.getMonth();
2136
- this.selectedYear = date.getFullYear();
2137
- this.selectedTime = this.formatTime(date);
2138
- // Update current view to show the month/year
2139
- this.currentDate = new Date(this.selectedYear, this.selectedMonth, this.selectedDate);
2140
- this.generateCalendar();
2141
- }
2142
- // Case 2: Range of dates
2143
- else if (this.preSelectedValue.start && this.preSelectedValue.end) {
2144
- const startDate = new Date(this.preSelectedValue.start);
2145
- const endDate = new Date(this.preSelectedValue.end);
2146
- // Patch component state
2147
- this.rangeStart = startDate.getDate();
2148
- this.rangeEnd = endDate.getDate();
2149
- this.selectedStartDate = startDate;
2150
- this.selectedEndDate = endDate;
2151
- this.selectedMonth = startDate.getMonth();
2152
- this.selectedYear = startDate.getFullYear();
2153
- // Set the current calendar view to the start month/year
2154
- this.currentDate = new Date(this.selectedYear, this.selectedMonth, 1);
2155
- this.generateCalendar();
2156
- // Optional: If your calendar requires a single selectedTime for range, you could pick start or end
2157
- this.selectedTime = this.formatTime(startDate);
2158
- // Emit initial range value
2159
- this.emitDateTime();
2160
- }
2161
- }
2162
- /**
2163
- * @description Method to Selects date
2164
- * @author Shiva Kant
2165
- * @param date
2166
- */
2167
- selectDate(date) {
2168
- const selectedFullDate = new Date(this.currentYear, this.currentMonth, date);
2169
- selectedFullDate.setHours(0, 0, 0, 0);
2170
- this.selectedMonth = this.currentMonth;
2171
- this.selectedYear = this.currentYear;
2172
- if (this.dateConfig.selectionMode === 'single') {
2173
- this.selectedDate = date;
2174
- this.rangeStart = null;
2175
- this.rangeEnd = null;
2176
- }
2177
- else {
2178
- if (!this.rangeStart || this.rangeEnd) {
2179
- this.rangeStart = date;
2180
- this.rangeEnd = null;
2181
- }
2182
- else {
2183
- this.rangeEnd = date < this.rangeStart ? this.rangeStart : date;
2184
- this.rangeStart = date < this.rangeStart ? date : this.rangeStart;
2185
- }
2186
- }
2187
- this.emitDateTime();
2188
- }
2189
- /**
2190
- * @description Method to Selects time
2191
- * @author Shiva Kant
2192
- * @param time
2193
- */
2194
- selectTime(time) {
2195
- this.selectedTime = time;
2196
- this.emitDateTime();
2197
- }
2198
- /**
2199
- * @description Method to Determines whether selected date is
2200
- * @author Shiva Kant
2201
- * @param date
2202
- * @returns
2203
- */
2204
- isSelectedDate(date, month, year) {
2205
- if (this.dateConfig.selectionMode === 'single') {
2206
- // Check if the day, month, and year match
2207
- return (this.selectedDate === date &&
2208
- this.selectedMonth === month &&
2209
- this.selectedYear === year);
2210
- }
2211
- else if (this.dateConfig.selectionMode === 'range') {
2212
- // Range selection checks, ensuring both start and end dates are within the same month and year
2213
- return !!((this.rangeStart &&
2214
- this.rangeStart === date &&
2215
- this.selectedMonth === month &&
2216
- this.selectedYear === year) ||
2217
- (this.rangeEnd &&
2218
- this.rangeEnd === date &&
2219
- this.selectedMonth === month &&
2220
- this.selectedYear === year) ||
2221
- (this.rangeStart &&
2222
- this.rangeEnd &&
2223
- date > this.rangeStart &&
2224
- date < this.rangeEnd &&
2225
- this.selectedMonth === month &&
2226
- this.selectedYear === year));
2227
- }
2228
- return false;
2229
- }
2230
- /**
2231
- * @description Method to Generates time ranges
2232
- * @author Shiva Kant
2233
- */
2234
- generateTimeRanges() {
2235
- const startTime = new Date();
2236
- startTime.setHours(0, 0, 0, 0);
2237
- this.timeSlots = Array.from({ length: 48 }, (_, i) => {
2238
- const time = new Date(startTime.getTime() + i * 30 * 60 * 1000);
2239
- return { value: time, label: this.formatTime(time) };
2240
- });
2241
- }
2242
- /**
2243
- * @description Method to Formats time
2244
- * @author Shiva Kant
2245
- * @param date
2246
- * @returns time
2247
- */
2248
- formatTime(date) {
2249
- return date.toLocaleTimeString('en-US', {
2250
- hour: '2-digit',
2251
- minute: '2-digit',
2252
- hour12: true,
2253
- });
2254
- }
2255
- /**
2256
- * @description Method to Formats date time
2257
- * @author Shiva Kant
2258
- * @param fullDate
2259
- * @param selectedTime
2260
- * @returns date time
2261
- */
2262
- formatDateTime(fullDate, selectedTime) {
2263
- const date = new Date(fullDate);
2264
- if (!selectedTime) {
2265
- // Only date formatting when time not required
2266
- return this.datePipe.transform(date, 'yyyy/MM/dd');
2267
- }
2268
- const [time, period] = selectedTime.split(' ');
2269
- let [hours, minutes] = time.split(':').map(Number);
2270
- // Convert 12-hour → 24-hour
2271
- if (period === 'PM' && hours !== 12)
2272
- hours += 12;
2273
- if (period === 'AM' && hours === 12)
2274
- hours = 0;
2275
- date.setHours(hours, minutes, 0, 0);
2276
- return this.datePipe.transform(date, 'yyyy/MM/dd hh:mm a');
2277
- }
2278
- /**
2279
- * @description Method to Emits date time
2280
- * @author Shiva Kant
2281
- * @returns date time
2282
- */
2283
- emitDateTime() {
2284
- if (this.dateConfig.enableTime && !this.selectedTime) {
2285
- return; // wait until user selects time
2286
- }
2287
- if (this.dateConfig.selectionMode === 'single') {
2288
- if (!this.selectedDate)
2289
- return;
2290
- const fullDate = new Date(this.currentYear, this.currentMonth, this.selectedDate);
2291
- this.selectedDateTime = this.formatDateTime(fullDate || '', this.dateConfig.enableTime ? this.selectedTime : null);
2292
- this.writeValue(this.selectedDateTime);
2293
- this.date = this.selectedDate;
2294
- this.dateTimeSelected.emit(this.selectedDateTime);
2295
- return;
2296
- }
2297
- if (this.dateConfig.selectionMode === 'range') {
2298
- if (!this.rangeStart || !this.rangeEnd)
2299
- return;
2300
- const startDate = new Date(this.currentYear, this.currentMonth, this.rangeStart);
2301
- const endDate = new Date(this.currentYear, this.currentMonth, this.rangeEnd);
2302
- const startDateTime = this.formatDateTime(startDate, this.dateConfig.enableTime ? this.selectedTime : null);
2303
- const endDateTime = this.formatDateTime(endDate, this.dateConfig.enableTime ? this.selectedTime : null);
2304
- const rangeResult = { start: startDateTime, end: endDateTime };
2305
- this.writeValue(rangeResult);
2306
- this.dateTimeSelected.emit(rangeResult);
2307
- }
2308
- }
2309
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: DateTimePickerComponent, deps: [{ token: LOCALE_ID }, { token: i0.ChangeDetectorRef }, { token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Component });
2310
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: DateTimePickerComponent, isStandalone: true, selector: "cats-ui-date-time-picker", inputs: { dateConfig: "dateConfig", minDate: "minDate", maxDate: "maxDate", preSelectedValue: "preSelectedValue" }, outputs: { dateTimeSelected: "dateTimeSelected" }, providers: [
2311
- {
2312
- provide: NG_VALUE_ACCESSOR,
2313
- useExisting: DateTimePickerComponent,
2314
- multi: true,
2315
- },
2316
- {
2317
- provide: NG_VALIDATORS,
2318
- useExisting: DateTimePickerComponent,
2319
- multi: true,
2320
- },
2321
- DatePipe,
2322
- ], usesOnChanges: true, ngImport: i0, template: "<!-- Calendar -->\r\n\r\n<div\r\n class=\"calendar_wrapper\"\r\n catsOutsideClick\r\n (clickOutSide)=\"closeCalendar()\"\r\n [ngClass]=\"{ 'pe-none': disableControl }\"\r\n>\r\n <div class=\"date_box\" (click)=\"toggleCalendar()\">\r\n @if (dateConfig.selectionMode=='single') {\r\n\r\n <input\r\n type=\"text\"\r\n placeholder=\"Select Date\"\r\n [value]=\"selectedDateTime\"\r\n readonly\r\n [disabled]=\"disableControl\"\r\n />\r\n } @else {\r\n <input\r\n type=\"text\"\r\n placeholder=\"Select date Range\"\r\n [value]=\"\r\n selectedDateTime.start\r\n | date\r\n : 'MM/dd/yyyy' +\r\n ' - ' +\r\n (selectedDateTime.end | date : 'MM/dd/yyyy')\r\n \"\r\n readonly\r\n />\r\n }\r\n <!-- <i-feather name=\"calendar\" class=\"calendar_icon\"></i-feather> -->\r\n <img src=\"images/calendar.svg\" alt=\"\" />\r\n </div>\r\n @if (isOpen) {\r\n <div class=\"calendar-popup\">\r\n <!-- for the header -->\r\n <div class=\"calendar-header\">\r\n <span class=\"navigation-button\" (click)=\"previousMonth()\">\r\n <img src=\"images/chevron-left.svg\" alt=\"\" />\r\n <!-- <i-feather name=\"chevron-left\"></i-feather -->\r\n </span>\r\n <div class=\"month-year\">\r\n <span class=\"month\" (click)=\"calendarView = 'monthView'\">\r\n {{ getMonthYear().month }}</span\r\n >\r\n <span class=\"year\" (click)=\"calendarView = 'yearView'\">{{\r\n getMonthYear().year\r\n }}</span>\r\n </div>\r\n\r\n <span class=\"navigation-button\" (click)=\"nextMonth()\">\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n\r\n <!-- <i-feather name=\"chevron-right\"></i-feather -->\r\n </span>\r\n </div>\r\n @if(calendarView === \"monthView\"){\r\n <div class=\"month-grid\">\r\n @for(month of monthRange | keyvalue; track $index){\r\n <span\r\n class=\"month\"\r\n (click)=\"selectMonth(month.key)\"\r\n [ngClass]=\"{ selected: month.key == currentDate.getMonth() }\"\r\n >{{ month.value }}</span\r\n >\r\n }\r\n </div>\r\n } @else if(calendarView === 'yearView'){\r\n <div class=\"year-selector\">\r\n <span class=\"navigation-button pointer\" (click)=\"previousYearRange()\">\r\n <img src=\"images/chevron-left.svg\" alt=\"\" />\r\n </span>\r\n <div class=\"year-grid\">\r\n @for(year of yearRange;track $index){\r\n <span\r\n class=\"year\"\r\n (click)=\"selectYear(year)\"\r\n [ngClass]=\"{ selected: year == currentDate.getFullYear() }\"\r\n >{{ year }}</span\r\n >\r\n }\r\n </div>\r\n <span class=\"navigation-button pointer\" (click)=\"nextYearRange()\">\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </span>\r\n </div>\r\n } @else {\r\n <div class=\"calendar_body\">\r\n <div class=\"calendar-grid\">\r\n <!-- Day names -->\r\n @for (day of ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']; track $index) {\r\n\r\n <div class=\"days_name\">\r\n {{ day }}\r\n </div>\r\n }\r\n\r\n <!-- Calendar dates -->\r\n @for (dayObj of daysInMonth; track $index) {\r\n <div\r\n class=\"calendar-day\"\r\n [ngClass]=\"{\r\n active:\r\n dayObj.isCurrentMonth &&\r\n dateConfig.selectionMode === 'single' &&\r\n isSelectedDate(\r\n dayObj.day,\r\n dayObj.date.getMonth(),\r\n dayObj.date.getFullYear()\r\n ),\r\n\r\n active_start:\r\n dayObj.isCurrentMonth &&\r\n dateConfig.selectionMode === 'range' &&\r\n isSelectedDate(\r\n dayObj.day,\r\n dayObj.date.getMonth(),\r\n dayObj.date.getFullYear()\r\n ) &&\r\n dayObj.day === rangeStart,\r\n\r\n active_end:\r\n dayObj.isCurrentMonth &&\r\n dateConfig.selectionMode === 'range' &&\r\n isSelectedDate(\r\n dayObj.day,\r\n dayObj.date.getMonth(),\r\n dayObj.date.getFullYear()\r\n ) &&\r\n dayObj.day === rangeEnd,\r\n\r\n range_between_active:\r\n dayObj.isCurrentMonth &&\r\n dateConfig.selectionMode === 'range' &&\r\n isSelectedDate(\r\n dayObj.day,\r\n dayObj.date.getMonth(),\r\n dayObj.date.getFullYear()\r\n ) &&\r\n rangeStart != null && rangeEnd != null &&\r\n dayObj.day > rangeStart &&\r\n dayObj.day < rangeEnd,\r\n\r\n other_month: !dayObj.isCurrentMonth,\r\n disabled: isDayDisabled(dayObj.day),\r\n notInCurrentMonth: !dayObj.isCurrentMonth\r\n }\"\r\n (click)=\"\r\n dayObj.isCurrentMonth &&\r\n !isDayDisabled(dayObj.day) &&\r\n selectDate(dayObj.day)\r\n \"\r\n >\r\n {{ dayObj.day }}\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- TIME SLOTS (only if showTime = true) -->\r\n @if (dateConfig.enableTime) {\r\n <div class=\"times\">\r\n @for (timeSlot of timeSlots; track $index) {\r\n <span\r\n class=\"span_time\"\r\n [ngClass]=\"{ active: selectedTime === timeSlot.label }\"\r\n (click)=\"selectTime(timeSlot.label)\"\r\n >\r\n {{ timeSlot.label }}\r\n </span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [":root{--white: #ffffff;--white-50: rgba(255, 255, 255, .582);--black: #1f1f1f;--default: #000000;--black-900: #202224;--pagination-text: var(--neutral-500);--black-dust: #1a1a1a;--neutral-cross: #d9d9d9;--neutral-40: #d5d7da;--neutral-50: #f0f0f0;--neutral-100: #e6e7e8;--neutral-200: #dadbdc;--neutral-300: #c0c2c5;--neutral-400: #81858a;--neutral-500: #434a51;--neutral-600: #040d17;--neutral-900: #010306;--blue-700: #1c60af;--blue-600: #2680ea;--blue-400: #92bff4;--blue-100: #eaf3fd;--blue-300: #c8dff9;--blue-200: #dfecfc;--blue-50: #f7fafe;--blue-800: #1849d6;--grey-50: #e9eaeb;--grey-100: #e2e8f0;--grey-150: #d6d6d6;--grey-200: #64748b;--grey-300: #414651;--grey-400: #8080808c;--grey-600: #535862;--light-grey: #81858a;--dark-grey: #4a4a4a;--green-50: #f7fbf7;--green-100: #ecf4ec;--green-200: #2a6a2d;--green-400: #9bc69d;--green-600: #388e3c;--green-700: rgba(42, 106, 45, 1);--red: #ff0000;--red-50: #fdf7f7;--red-100: #f0c9c9;--red-200: #f7dfdf;--red-300: #f2f2f2;--red-700: #941e1e;--yellow-50: #fffdf5;--yellow-100: #fff5e6;--yellow-200: #fff6da;--yellow-300: #ffefc1;--yellow-400: #fff9e7;--yellow-500: #bf7200;--yellow-600: #ffc107;--yellow-700: #bf9105;--yellow-800: #806003;--yellow-900: #bf9105;--orange-50: rgba(255, 251, 245, 1);--orange-100: #fff5e6;--orange-200: #fff0d9;--orange-600: #ff9800;--orange-700: rgba(191, 114, 0, 1);--box-shadow: #0a0d1208;--box-shadow-100: #0000001f;--box-shadow-200: #0a0d1214;--grid-box-shadow: #0000000a;--model-shadow: rgba(0, 0, 0, .08);--canvas-shadow: #00000014;--chunk-shadow: #0a0d120d;--loader-border: #6f7b93;--modal-bg: rgba(4, 13, 23, .3);--checkbox-border: #0d6efd;--filter-600: rgba(0, 0, 0, .644);--feather-bg: #fafafa}html{font-size:12px}.pointer{cursor:pointer}.d-none{display:none}.textTruncate{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}button{border:calc(.0833333333rem / var(--scale)) solid transparent;padding:0 calc(2.3333333333rem / var(--scale));height:calc(4.6666666667rem / var(--scale));min-width:calc(11.8333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale));border-radius:calc(.6666666667rem / var(--scale));font-size:var(--fs-18);line-height:\"\";font-weight:600;cursor:pointer}button:focus-visible{outline:none;border:0}button i-feather.icon{display:flex}button.primary_btn{background-color:var(--blue-600);color:var(--white)}button.secondary_btn{background-color:var(--neutral-100);color:var(--neutral-500)}button.outline_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300)}button.disable{pointer-events:none;opacity:.6}button.fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-600)}button.disable_fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-300);pointer-events:none}button.bg_logic_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200)}button.no_outline_btn{background-color:var(--blue-50);color:var(--blue-600);outline:none}button .close_outline_btn{background-color:var(--blue-50);border:calc(.0833333333rem / var(--scale)) solid var(--blue-50);color:var(--blue-600)}:root{--fs-6: 6px;--fs-8: 8px;--fs-12: 12px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--fs-20: 20px;--fs-24: 24px;--fs-28: 28px;--fs-30: 30px;--fs-32: 32px;--fs-42: 42px;--fs-48: 48px;--img-w: 28px;--scale: 1}@media only screen and (min-width: 1024px) and (max-width: 1280px){:root{--scale: 1.5;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1360px) and (max-width: 1440px){:root{--scale: 1.33;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1536px) and (max-width: 1919px){:root{--scale: 1.25;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;font-family:Open Sans,sans-serif}body{font-size:100%}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}h1,h2,h3,h4,h5,h6,ul,ol p{margin:0;padding:0;text-wrap:pretty}ul[role=list],ol[role=list],ul{list-style:none}img,picture{max-width:100%;display:block}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--neutral-200);border-radius:8px}input,select,textarea{outline:none;box-shadow:none}.calendar_wrapper{width:100%;height:100%;display:flex;flex-direction:column;justify-content:\"\";align-items:\"\";flex-wrap:nowrap;gap:\"\";position:relative}.calendar_wrapper .pe-none{pointer-events:none}.calendar_wrapper .date_box{display:flex;flex-direction:row;justify-content:flex-start;align-items:stretch;flex-wrap:nowrap;gap:0;border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.6666666667rem / var(--scale));height:calc(4.6666666667rem / var(--scale))}.calendar_wrapper .date_box input{font-size:var(--fs-16);line-height:140%;font-weight:400;width:100%;height:100%;cursor:pointer;border:0 solid var(--neutral-300);border-radius:calc(.6666666667rem / var(--scale));padding:calc(.6666666667rem / var(--scale)) calc(1.3333333333rem / var(--scale))}.calendar_wrapper .date_box input::placeholder{color:var(--neutral-400)}.calendar_wrapper .date_box img{max-width:calc(1.6666666667rem / var(--scale));margin-right:calc(1.3333333333rem / var(--scale));cursor:pointer}.calendar_wrapper .calendar-popup{position:absolute;top:calc(4.6666666667rem / var(--scale));right:0;z-index:10;background:var(--white);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.6666666667rem / var(--scale));padding:calc(.6666666667rem / var(--scale)) calc(.6666666667rem / var(--scale)) calc(0rem / var(--scale)) calc(.6666666667rem / var(--scale));box-shadow:0 calc(.3333333333rem / var(--scale)) calc(.6666666667rem / var(--scale)) 0 var(--box-shadow);width:auto;min-width:calc(33.3333333333rem / var(--scale));min-height:calc(37.5rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar-header{height:calc(4rem / var(--scale));display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;margin-bottom:calc(.6666666667rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar-header .navigation-button{border-radius:calc(.6666666667rem / var(--scale));cursor:pointer;font-size:var(--fs-20)}.calendar_wrapper .calendar-popup .calendar-header .navigation-button i-feather{width:calc(2rem / var(--scale));height:calc(2rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar-header .month-year{font-size:var(--fs-16);line-height:calc(2.3333333333rem / var(--scale));font-weight:600;color:var(--neutral-600)}.calendar_wrapper .calendar-popup .calendar-header .month-year .year,.calendar_wrapper .calendar-popup .calendar-header .month-year .month{padding:calc(.3333333333rem / var(--scale)) calc(.6666666667rem / var(--scale));border-radius:calc(1.3333333333rem / var(--scale));cursor:pointer}.calendar_wrapper .calendar-popup .calendar-header .month-year .year.selected,.calendar_wrapper .calendar-popup .calendar-header .month-year .month.selected{color:var(--blue-700)}.calendar_wrapper .calendar-popup .calendar-header .month-year:hover{color:var(--blue-700);transition:ease-in-out .2s}.calendar_wrapper .calendar-popup .year-selector{display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:0}.calendar_wrapper .calendar-popup .year-selector .year-grid{width:100%}.calendar_wrapper .calendar-popup .year-selector img{max-width:calc(1.6666666667rem / var(--scale))}.calendar_wrapper .calendar-popup .year-grid,.calendar_wrapper .calendar-popup .month-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:calc(.6666666667rem / var(--scale));font-size:var(--fs-16);line-height:calc(2.3333333333rem / var(--scale));font-weight:500;height:calc(31.25rem / var(--scale))}.calendar_wrapper .calendar-popup .year-grid .month,.calendar_wrapper .calendar-popup .year-grid .year,.calendar_wrapper .calendar-popup .month-grid .month,.calendar_wrapper .calendar-popup .month-grid .year{display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:0;cursor:pointer;border-radius:calc(.3333333333rem / var(--scale))}.calendar_wrapper .calendar-popup .year-grid .month:hover,.calendar_wrapper .calendar-popup .year-grid .month.selected,.calendar_wrapper .calendar-popup .year-grid .year:hover,.calendar_wrapper .calendar-popup .year-grid .year.selected,.calendar_wrapper .calendar-popup .month-grid .month:hover,.calendar_wrapper .calendar-popup .month-grid .month.selected,.calendar_wrapper .calendar-popup .month-grid .year:hover,.calendar_wrapper .calendar-popup .month-grid .year.selected{color:var(--white);background-color:var(--blue-600);transition:ease-in-out .2s}.calendar_wrapper .calendar-popup .calendar_body{display:flex;flex-direction:row;justify-content:space-between;align-items:stretch;flex-wrap:nowrap;gap:0}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;min-width:calc(31.8333333333rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .days_name{height:calc(4rem / var(--scale));font-size:var(--fs-16);line-height:calc(2.3333333333rem / var(--scale));font-weight:600;color:var(--neutral-600);display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:0}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.active_end,.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.active_start{background-color:var(--blue-600);color:var(--white);border-radius:0}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day{border-radius:calc(.6666666667rem / var(--scale));cursor:pointer;background-color:var(--blue-50);width:calc(4rem / var(--scale));height:calc(4rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:0;font-size:var(--fs-16);line-height:calc(2.6666666667rem / var(--scale));font-weight:500;color:var(--neutral-500)}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.active{background-color:var(--blue-600);color:var(--white)}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day:hover{background-color:var(--blue-100);border:calc(.0833333333rem / var(--scale)) solid var(--blue-700);color:var(--blue-700);transition:ease-in-out .3s}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day:not(:last-child){margin-bottom:calc(.6666666667rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.selected{background-color:var(--orange-600);color:var(--white)}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.disabled{color:var(--neutral-400);pointer-events:none;background:var(--neutral-200)}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.notInCurrentMonth{pointer-events:none;color:var(--neutral-300);background-color:var(--white)}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.active_start{border-top-left-radius:calc(.3333333333rem / var(--scale));border-bottom-left-radius:calc(.3333333333rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.range_between_active{color:var(--blue-600);background-color:var(--blue-100)}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.active_end{border-top-right-radius:calc(.3333333333rem / var(--scale));border-bottom-right-radius:calc(.3333333333rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar_body .times{min-width:calc(7.0833333333rem / var(--scale));max-height:calc(31.25rem / var(--scale));overflow-y:auto;overflow-x:hidden;padding:calc(.6666666667rem / var(--scale));border-radius:calc(.3333333333rem / var(--scale));background-color:var(--neutral-50);font-size:var(--fs-14);line-height:calc(2rem / var(--scale));font-weight:400;display:flex;flex-direction:column;justify-content:\"\";align-items:\"\";flex-wrap:nowrap;gap:calc(.3333333333rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar_body .times .span_time{color:var(--neutral-500);display:inline-block;width:calc(5.75rem / var(--scale));text-align:center;cursor:pointer;padding:0 calc(.3333333333rem / var(--scale));border-radius:calc(.3333333333rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar_body .times .span_time:hover,.calendar_wrapper .calendar-popup .calendar_body .times .span_time.active{background-color:var(--blue-600);color:var(--white)}@media only screen and (min-width: 1024px) and (max-width: 1280px){.calendar-grid{display:grid;grid-template-columns:repeat(4,1fr)}}.custom_disabled{color:var(--neutral-400);pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: OutsideClickDirective, selector: "[catsOutsideClick]", outputs: ["clickOutSide"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i1.KeyValuePipe, name: "keyvalue" }] });
2323
- }
2324
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: DateTimePickerComponent, decorators: [{
2325
- type: Component,
2326
- args: [{ selector: 'cats-ui-date-time-picker', imports: [CommonModule, OutsideClickDirective], providers: [
2327
- {
2328
- provide: NG_VALUE_ACCESSOR,
2329
- useExisting: DateTimePickerComponent,
2330
- multi: true,
2331
- },
2332
- {
2333
- provide: NG_VALIDATORS,
2334
- useExisting: DateTimePickerComponent,
2335
- multi: true,
2336
- },
2337
- DatePipe,
2338
- ], template: "<!-- Calendar -->\r\n\r\n<div\r\n class=\"calendar_wrapper\"\r\n catsOutsideClick\r\n (clickOutSide)=\"closeCalendar()\"\r\n [ngClass]=\"{ 'pe-none': disableControl }\"\r\n>\r\n <div class=\"date_box\" (click)=\"toggleCalendar()\">\r\n @if (dateConfig.selectionMode=='single') {\r\n\r\n <input\r\n type=\"text\"\r\n placeholder=\"Select Date\"\r\n [value]=\"selectedDateTime\"\r\n readonly\r\n [disabled]=\"disableControl\"\r\n />\r\n } @else {\r\n <input\r\n type=\"text\"\r\n placeholder=\"Select date Range\"\r\n [value]=\"\r\n selectedDateTime.start\r\n | date\r\n : 'MM/dd/yyyy' +\r\n ' - ' +\r\n (selectedDateTime.end | date : 'MM/dd/yyyy')\r\n \"\r\n readonly\r\n />\r\n }\r\n <!-- <i-feather name=\"calendar\" class=\"calendar_icon\"></i-feather> -->\r\n <img src=\"images/calendar.svg\" alt=\"\" />\r\n </div>\r\n @if (isOpen) {\r\n <div class=\"calendar-popup\">\r\n <!-- for the header -->\r\n <div class=\"calendar-header\">\r\n <span class=\"navigation-button\" (click)=\"previousMonth()\">\r\n <img src=\"images/chevron-left.svg\" alt=\"\" />\r\n <!-- <i-feather name=\"chevron-left\"></i-feather -->\r\n </span>\r\n <div class=\"month-year\">\r\n <span class=\"month\" (click)=\"calendarView = 'monthView'\">\r\n {{ getMonthYear().month }}</span\r\n >\r\n <span class=\"year\" (click)=\"calendarView = 'yearView'\">{{\r\n getMonthYear().year\r\n }}</span>\r\n </div>\r\n\r\n <span class=\"navigation-button\" (click)=\"nextMonth()\">\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n\r\n <!-- <i-feather name=\"chevron-right\"></i-feather -->\r\n </span>\r\n </div>\r\n @if(calendarView === \"monthView\"){\r\n <div class=\"month-grid\">\r\n @for(month of monthRange | keyvalue; track $index){\r\n <span\r\n class=\"month\"\r\n (click)=\"selectMonth(month.key)\"\r\n [ngClass]=\"{ selected: month.key == currentDate.getMonth() }\"\r\n >{{ month.value }}</span\r\n >\r\n }\r\n </div>\r\n } @else if(calendarView === 'yearView'){\r\n <div class=\"year-selector\">\r\n <span class=\"navigation-button pointer\" (click)=\"previousYearRange()\">\r\n <img src=\"images/chevron-left.svg\" alt=\"\" />\r\n </span>\r\n <div class=\"year-grid\">\r\n @for(year of yearRange;track $index){\r\n <span\r\n class=\"year\"\r\n (click)=\"selectYear(year)\"\r\n [ngClass]=\"{ selected: year == currentDate.getFullYear() }\"\r\n >{{ year }}</span\r\n >\r\n }\r\n </div>\r\n <span class=\"navigation-button pointer\" (click)=\"nextYearRange()\">\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </span>\r\n </div>\r\n } @else {\r\n <div class=\"calendar_body\">\r\n <div class=\"calendar-grid\">\r\n <!-- Day names -->\r\n @for (day of ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']; track $index) {\r\n\r\n <div class=\"days_name\">\r\n {{ day }}\r\n </div>\r\n }\r\n\r\n <!-- Calendar dates -->\r\n @for (dayObj of daysInMonth; track $index) {\r\n <div\r\n class=\"calendar-day\"\r\n [ngClass]=\"{\r\n active:\r\n dayObj.isCurrentMonth &&\r\n dateConfig.selectionMode === 'single' &&\r\n isSelectedDate(\r\n dayObj.day,\r\n dayObj.date.getMonth(),\r\n dayObj.date.getFullYear()\r\n ),\r\n\r\n active_start:\r\n dayObj.isCurrentMonth &&\r\n dateConfig.selectionMode === 'range' &&\r\n isSelectedDate(\r\n dayObj.day,\r\n dayObj.date.getMonth(),\r\n dayObj.date.getFullYear()\r\n ) &&\r\n dayObj.day === rangeStart,\r\n\r\n active_end:\r\n dayObj.isCurrentMonth &&\r\n dateConfig.selectionMode === 'range' &&\r\n isSelectedDate(\r\n dayObj.day,\r\n dayObj.date.getMonth(),\r\n dayObj.date.getFullYear()\r\n ) &&\r\n dayObj.day === rangeEnd,\r\n\r\n range_between_active:\r\n dayObj.isCurrentMonth &&\r\n dateConfig.selectionMode === 'range' &&\r\n isSelectedDate(\r\n dayObj.day,\r\n dayObj.date.getMonth(),\r\n dayObj.date.getFullYear()\r\n ) &&\r\n rangeStart != null && rangeEnd != null &&\r\n dayObj.day > rangeStart &&\r\n dayObj.day < rangeEnd,\r\n\r\n other_month: !dayObj.isCurrentMonth,\r\n disabled: isDayDisabled(dayObj.day),\r\n notInCurrentMonth: !dayObj.isCurrentMonth\r\n }\"\r\n (click)=\"\r\n dayObj.isCurrentMonth &&\r\n !isDayDisabled(dayObj.day) &&\r\n selectDate(dayObj.day)\r\n \"\r\n >\r\n {{ dayObj.day }}\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- TIME SLOTS (only if showTime = true) -->\r\n @if (dateConfig.enableTime) {\r\n <div class=\"times\">\r\n @for (timeSlot of timeSlots; track $index) {\r\n <span\r\n class=\"span_time\"\r\n [ngClass]=\"{ active: selectedTime === timeSlot.label }\"\r\n (click)=\"selectTime(timeSlot.label)\"\r\n >\r\n {{ timeSlot.label }}\r\n </span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [":root{--white: #ffffff;--white-50: rgba(255, 255, 255, .582);--black: #1f1f1f;--default: #000000;--black-900: #202224;--pagination-text: var(--neutral-500);--black-dust: #1a1a1a;--neutral-cross: #d9d9d9;--neutral-40: #d5d7da;--neutral-50: #f0f0f0;--neutral-100: #e6e7e8;--neutral-200: #dadbdc;--neutral-300: #c0c2c5;--neutral-400: #81858a;--neutral-500: #434a51;--neutral-600: #040d17;--neutral-900: #010306;--blue-700: #1c60af;--blue-600: #2680ea;--blue-400: #92bff4;--blue-100: #eaf3fd;--blue-300: #c8dff9;--blue-200: #dfecfc;--blue-50: #f7fafe;--blue-800: #1849d6;--grey-50: #e9eaeb;--grey-100: #e2e8f0;--grey-150: #d6d6d6;--grey-200: #64748b;--grey-300: #414651;--grey-400: #8080808c;--grey-600: #535862;--light-grey: #81858a;--dark-grey: #4a4a4a;--green-50: #f7fbf7;--green-100: #ecf4ec;--green-200: #2a6a2d;--green-400: #9bc69d;--green-600: #388e3c;--green-700: rgba(42, 106, 45, 1);--red: #ff0000;--red-50: #fdf7f7;--red-100: #f0c9c9;--red-200: #f7dfdf;--red-300: #f2f2f2;--red-700: #941e1e;--yellow-50: #fffdf5;--yellow-100: #fff5e6;--yellow-200: #fff6da;--yellow-300: #ffefc1;--yellow-400: #fff9e7;--yellow-500: #bf7200;--yellow-600: #ffc107;--yellow-700: #bf9105;--yellow-800: #806003;--yellow-900: #bf9105;--orange-50: rgba(255, 251, 245, 1);--orange-100: #fff5e6;--orange-200: #fff0d9;--orange-600: #ff9800;--orange-700: rgba(191, 114, 0, 1);--box-shadow: #0a0d1208;--box-shadow-100: #0000001f;--box-shadow-200: #0a0d1214;--grid-box-shadow: #0000000a;--model-shadow: rgba(0, 0, 0, .08);--canvas-shadow: #00000014;--chunk-shadow: #0a0d120d;--loader-border: #6f7b93;--modal-bg: rgba(4, 13, 23, .3);--checkbox-border: #0d6efd;--filter-600: rgba(0, 0, 0, .644);--feather-bg: #fafafa}html{font-size:12px}.pointer{cursor:pointer}.d-none{display:none}.textTruncate{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}button{border:calc(.0833333333rem / var(--scale)) solid transparent;padding:0 calc(2.3333333333rem / var(--scale));height:calc(4.6666666667rem / var(--scale));min-width:calc(11.8333333333rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale));border-radius:calc(.6666666667rem / var(--scale));font-size:var(--fs-18);line-height:\"\";font-weight:600;cursor:pointer}button:focus-visible{outline:none;border:0}button i-feather.icon{display:flex}button.primary_btn{background-color:var(--blue-600);color:var(--white)}button.secondary_btn{background-color:var(--neutral-100);color:var(--neutral-500)}button.outline_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300)}button.disable{pointer-events:none;opacity:.6}button.fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-600)}button.disable_fill_lightBlue_btn{background-color:var(--blue-50);color:var(--blue-300);pointer-events:none}button.bg_logic_btn{background-color:var(--white);color:var(--neutral-500);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-200)}button.no_outline_btn{background-color:var(--blue-50);color:var(--blue-600);outline:none}button .close_outline_btn{background-color:var(--blue-50);border:calc(.0833333333rem / var(--scale)) solid var(--blue-50);color:var(--blue-600)}:root{--fs-6: 6px;--fs-8: 8px;--fs-12: 12px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--fs-20: 20px;--fs-24: 24px;--fs-28: 28px;--fs-30: 30px;--fs-32: 32px;--fs-42: 42px;--fs-48: 48px;--img-w: 28px;--scale: 1}@media only screen and (min-width: 1024px) and (max-width: 1280px){:root{--scale: 1.5;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1360px) and (max-width: 1440px){:root{--scale: 1.33;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}@media only screen and (min-width: 1536px) and (max-width: 1919px){:root{--scale: 1.25;--fs-6: calc(6px / var(--scale));--fs-8: calc(8px / var(--scale));--fs-12: calc(12px / var(--scale));--fs-14: calc(14px / var(--scale));--fs-16: calc(16px / var(--scale));--fs-18: calc(18px / var(--scale));--fs-20: calc(20px / var(--scale));--fs-24: calc(24px / var(--scale));--fs-28: calc(28px / var(--scale));--fs-30: calc(30px / var(--scale));--fs-32: calc(32px / var(--scale));--fs-42: calc(42px / var(--scale));--fs-48: calc(48px / var(--scale))}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;font-family:Open Sans,sans-serif}body{font-size:100%}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}h1,h2,h3,h4,h5,h6,ul,ol p{margin:0;padding:0;text-wrap:pretty}ul[role=list],ol[role=list],ul{list-style:none}img,picture{max-width:100%;display:block}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--neutral-200);border-radius:8px}input,select,textarea{outline:none;box-shadow:none}.calendar_wrapper{width:100%;height:100%;display:flex;flex-direction:column;justify-content:\"\";align-items:\"\";flex-wrap:nowrap;gap:\"\";position:relative}.calendar_wrapper .pe-none{pointer-events:none}.calendar_wrapper .date_box{display:flex;flex-direction:row;justify-content:flex-start;align-items:stretch;flex-wrap:nowrap;gap:0;border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.6666666667rem / var(--scale));height:calc(4.6666666667rem / var(--scale))}.calendar_wrapper .date_box input{font-size:var(--fs-16);line-height:140%;font-weight:400;width:100%;height:100%;cursor:pointer;border:0 solid var(--neutral-300);border-radius:calc(.6666666667rem / var(--scale));padding:calc(.6666666667rem / var(--scale)) calc(1.3333333333rem / var(--scale))}.calendar_wrapper .date_box input::placeholder{color:var(--neutral-400)}.calendar_wrapper .date_box img{max-width:calc(1.6666666667rem / var(--scale));margin-right:calc(1.3333333333rem / var(--scale));cursor:pointer}.calendar_wrapper .calendar-popup{position:absolute;top:calc(4.6666666667rem / var(--scale));right:0;z-index:10;background:var(--white);border:calc(.0833333333rem / var(--scale)) solid var(--neutral-300);border-radius:calc(.6666666667rem / var(--scale));padding:calc(.6666666667rem / var(--scale)) calc(.6666666667rem / var(--scale)) calc(0rem / var(--scale)) calc(.6666666667rem / var(--scale));box-shadow:0 calc(.3333333333rem / var(--scale)) calc(.6666666667rem / var(--scale)) 0 var(--box-shadow);width:auto;min-width:calc(33.3333333333rem / var(--scale));min-height:calc(37.5rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar-header{height:calc(4rem / var(--scale));display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:0;margin-bottom:calc(.6666666667rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar-header .navigation-button{border-radius:calc(.6666666667rem / var(--scale));cursor:pointer;font-size:var(--fs-20)}.calendar_wrapper .calendar-popup .calendar-header .navigation-button i-feather{width:calc(2rem / var(--scale));height:calc(2rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar-header .month-year{font-size:var(--fs-16);line-height:calc(2.3333333333rem / var(--scale));font-weight:600;color:var(--neutral-600)}.calendar_wrapper .calendar-popup .calendar-header .month-year .year,.calendar_wrapper .calendar-popup .calendar-header .month-year .month{padding:calc(.3333333333rem / var(--scale)) calc(.6666666667rem / var(--scale));border-radius:calc(1.3333333333rem / var(--scale));cursor:pointer}.calendar_wrapper .calendar-popup .calendar-header .month-year .year.selected,.calendar_wrapper .calendar-popup .calendar-header .month-year .month.selected{color:var(--blue-700)}.calendar_wrapper .calendar-popup .calendar-header .month-year:hover{color:var(--blue-700);transition:ease-in-out .2s}.calendar_wrapper .calendar-popup .year-selector{display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:0}.calendar_wrapper .calendar-popup .year-selector .year-grid{width:100%}.calendar_wrapper .calendar-popup .year-selector img{max-width:calc(1.6666666667rem / var(--scale))}.calendar_wrapper .calendar-popup .year-grid,.calendar_wrapper .calendar-popup .month-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:calc(.6666666667rem / var(--scale));font-size:var(--fs-16);line-height:calc(2.3333333333rem / var(--scale));font-weight:500;height:calc(31.25rem / var(--scale))}.calendar_wrapper .calendar-popup .year-grid .month,.calendar_wrapper .calendar-popup .year-grid .year,.calendar_wrapper .calendar-popup .month-grid .month,.calendar_wrapper .calendar-popup .month-grid .year{display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:0;cursor:pointer;border-radius:calc(.3333333333rem / var(--scale))}.calendar_wrapper .calendar-popup .year-grid .month:hover,.calendar_wrapper .calendar-popup .year-grid .month.selected,.calendar_wrapper .calendar-popup .year-grid .year:hover,.calendar_wrapper .calendar-popup .year-grid .year.selected,.calendar_wrapper .calendar-popup .month-grid .month:hover,.calendar_wrapper .calendar-popup .month-grid .month.selected,.calendar_wrapper .calendar-popup .month-grid .year:hover,.calendar_wrapper .calendar-popup .month-grid .year.selected{color:var(--white);background-color:var(--blue-600);transition:ease-in-out .2s}.calendar_wrapper .calendar-popup .calendar_body{display:flex;flex-direction:row;justify-content:space-between;align-items:stretch;flex-wrap:nowrap;gap:0}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;min-width:calc(31.8333333333rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .days_name{height:calc(4rem / var(--scale));font-size:var(--fs-16);line-height:calc(2.3333333333rem / var(--scale));font-weight:600;color:var(--neutral-600);display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:0}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.active_end,.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.active_start{background-color:var(--blue-600);color:var(--white);border-radius:0}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day{border-radius:calc(.6666666667rem / var(--scale));cursor:pointer;background-color:var(--blue-50);width:calc(4rem / var(--scale));height:calc(4rem / var(--scale));display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:nowrap;gap:0;font-size:var(--fs-16);line-height:calc(2.6666666667rem / var(--scale));font-weight:500;color:var(--neutral-500)}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.active{background-color:var(--blue-600);color:var(--white)}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day:hover{background-color:var(--blue-100);border:calc(.0833333333rem / var(--scale)) solid var(--blue-700);color:var(--blue-700);transition:ease-in-out .3s}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day:not(:last-child){margin-bottom:calc(.6666666667rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.selected{background-color:var(--orange-600);color:var(--white)}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.disabled{color:var(--neutral-400);pointer-events:none;background:var(--neutral-200)}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.notInCurrentMonth{pointer-events:none;color:var(--neutral-300);background-color:var(--white)}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.active_start{border-top-left-radius:calc(.3333333333rem / var(--scale));border-bottom-left-radius:calc(.3333333333rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.range_between_active{color:var(--blue-600);background-color:var(--blue-100)}.calendar_wrapper .calendar-popup .calendar_body .calendar-grid .calendar-day.active_end{border-top-right-radius:calc(.3333333333rem / var(--scale));border-bottom-right-radius:calc(.3333333333rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar_body .times{min-width:calc(7.0833333333rem / var(--scale));max-height:calc(31.25rem / var(--scale));overflow-y:auto;overflow-x:hidden;padding:calc(.6666666667rem / var(--scale));border-radius:calc(.3333333333rem / var(--scale));background-color:var(--neutral-50);font-size:var(--fs-14);line-height:calc(2rem / var(--scale));font-weight:400;display:flex;flex-direction:column;justify-content:\"\";align-items:\"\";flex-wrap:nowrap;gap:calc(.3333333333rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar_body .times .span_time{color:var(--neutral-500);display:inline-block;width:calc(5.75rem / var(--scale));text-align:center;cursor:pointer;padding:0 calc(.3333333333rem / var(--scale));border-radius:calc(.3333333333rem / var(--scale))}.calendar_wrapper .calendar-popup .calendar_body .times .span_time:hover,.calendar_wrapper .calendar-popup .calendar_body .times .span_time.active{background-color:var(--blue-600);color:var(--white)}@media only screen and (min-width: 1024px) and (max-width: 1280px){.calendar-grid{display:grid;grid-template-columns:repeat(4,1fr)}}.custom_disabled{color:var(--neutral-400);pointer-events:none}\n"] }]
2339
- }], ctorParameters: () => [{ type: undefined, decorators: [{
2340
- type: Inject,
2341
- args: [LOCALE_ID]
2342
- }] }, { type: i0.ChangeDetectorRef }, { type: i1.DatePipe }], propDecorators: { dateTimeSelected: [{
2343
- type: Output
2344
- }], dateConfig: [{
2345
- type: Input
2346
- }], minDate: [{
2347
- type: Input
2348
- }], maxDate: [{
2349
- type: Input
2350
- }], preSelectedValue: [{
2351
- type: Input
2352
- }] } });
2353
-
2354
- class CatsUiTooltipDirective {
2355
- el;
2356
- renderer;
2357
- tooltipText = '';
2358
- tooltipEl;
2359
- constructor(el, renderer) {
2360
- this.el = el;
2361
- this.renderer = renderer;
2362
- }
2363
- ngOnInit() { }
2364
- ngOnDestroy() {
2365
- this.removeTooltip();
2366
- }
2367
- showTooltip() {
2368
- this.createTooltip();
2369
- this.positionTooltip();
2370
- }
2371
- hideTooltip() {
2372
- this.removeTooltip();
2373
- }
2374
- adjustOnWindowChange() {
2375
- if (this.tooltipEl)
2376
- this.positionTooltip();
2377
- }
2378
- /**
2379
- * @description Creates tooltip
2380
- * @author Shiva Kant
2381
- * @returns
2382
- */
2383
- createTooltip() {
2384
- if (this.tooltipEl)
2385
- return;
2386
- this.tooltipEl = this.renderer.createElement('div');
2387
- this.tooltipEl.innerText = this.tooltipText;
2388
- this.renderer.setStyle(this.tooltipEl, 'position', 'fixed');
2389
- this.renderer.setStyle(this.tooltipEl, 'padding', '6px 10px');
2390
- this.renderer.setStyle(this.tooltipEl, 'background', '#333');
2391
- this.renderer.setStyle(this.tooltipEl, 'color', '#fff');
2392
- this.renderer.setStyle(this.tooltipEl, 'borderRadius', '4px');
2393
- this.renderer.setStyle(this.tooltipEl, 'zIndex', '9999');
2394
- this.renderer.setStyle(this.tooltipEl, 'whiteSpace', 'nowrap');
2395
- document.body.appendChild(this.tooltipEl);
2396
- }
2397
- /**
2398
- * @description Removes tooltip
2399
- * @author Shiva Kant
2400
- */
2401
- removeTooltip() {
2402
- if (this.tooltipEl) {
2403
- this.tooltipEl.remove();
2404
- this.tooltipEl = null;
2405
- }
2406
- }
2407
- /**
2408
- * @description Positions tooltip
2409
- * @author Shiva Kant
2410
- */
2411
- positionTooltip() {
2412
- const hostRect = this.el.nativeElement.getBoundingClientRect();
2413
- const tooltipRect = this.tooltipEl.getBoundingClientRect();
2414
- const spacing = 8; // distance from host element
2415
- const fitsAbove = hostRect.top >= tooltipRect.height + spacing;
2416
- const fitsBelow = window.innerHeight - hostRect.bottom >= tooltipRect.height + spacing;
2417
- const fitsLeft = hostRect.left >= tooltipRect.width + spacing;
2418
- const fitsRight = window.innerWidth - hostRect.right >= tooltipRect.width + spacing;
2419
- let top = 0;
2420
- let left = 0;
2421
- // Priority: bottom → top → right → left
2422
- if (fitsBelow) {
2423
- top = hostRect.bottom + spacing;
2424
- left = hostRect.left + (hostRect.width - tooltipRect.width) / 2;
2425
- }
2426
- else if (fitsAbove) {
2427
- top = hostRect.top - tooltipRect.height - spacing;
2428
- left = hostRect.left + (hostRect.width - tooltipRect.width) / 2;
2429
- }
2430
- else if (fitsRight) {
2431
- top = hostRect.top + (hostRect.height - tooltipRect.height) / 2;
2432
- left = hostRect.right + spacing;
2433
- }
2434
- else if (fitsLeft) {
2435
- top = hostRect.top + (hostRect.height - tooltipRect.height) / 2;
2436
- left = hostRect.left - tooltipRect.width - spacing;
2437
- }
2438
- else {
2439
- // fallback → bottom with clamped position
2440
- top = hostRect.bottom + spacing;
2441
- left = Math.min(Math.max(10, hostRect.left), window.innerWidth - tooltipRect.width - 10);
2442
- }
2443
- this.renderer.setStyle(this.tooltipEl, 'top', `${top}px`);
2444
- this.renderer.setStyle(this.tooltipEl, 'left', `${left}px`);
2445
- }
2446
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: CatsUiTooltipDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
2447
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.14", type: CatsUiTooltipDirective, isStandalone: true, selector: "[catsUiTooltip]", inputs: { tooltipText: ["catsUiTooltip", "tooltipText"] }, host: { listeners: { "mouseenter": "showTooltip()", "mouseleave": "hideTooltip()", "window:resize": "adjustOnWindowChange()", "window:scroll": "adjustOnWindowChange()" } }, ngImport: i0 });
2448
- }
2449
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: CatsUiTooltipDirective, decorators: [{
2450
- type: Directive,
2451
- args: [{
2452
- selector: '[catsUiTooltip]',
2453
- }]
2454
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { tooltipText: [{
2455
- type: Input,
2456
- args: ['catsUiTooltip']
2457
- }], showTooltip: [{
2458
- type: HostListener,
2459
- args: ['mouseenter']
2460
- }], hideTooltip: [{
2461
- type: HostListener,
2462
- args: ['mouseleave']
2463
- }], adjustOnWindowChange: [{
2464
- type: HostListener,
2465
- args: ['window:resize']
2466
- }, {
2467
- type: HostListener,
2468
- args: ['window:scroll']
2469
- }] } });
2470
-
2471
- class AccordionComponent {
2472
- openedIndex = null;
2473
- /**
2474
- * @description Toggles accordion component
2475
- * @author Shiva Kant
2476
- * @param index
2477
- */
2478
- toggle(index) {
2479
- this.openedIndex = this.openedIndex === index ? null : index;
2480
- }
2481
- /**
2482
- * @description Determines whether open is
2483
- * @author Shiva Kant
2484
- * @param index
2485
- * @returns true if open
2486
- */
2487
- isOpen(index) {
2488
- return this.openedIndex === index;
2489
- }
2490
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: AccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2491
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.14", type: AccordionComponent, isStandalone: true, selector: "cats-ui-accordion", ngImport: i0, template: "<div class=\"accordion\">\r\n <ng-content></ng-content> <!-- Will contain AccordionItem components -->\r\n</div>\r\n", styles: [".accordion{width:100%;max-width:600px;margin:0 auto}\n"] });
2492
- }
2493
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: AccordionComponent, decorators: [{
2494
- type: Component,
2495
- args: [{ selector: 'cats-ui-accordion', imports: [], template: "<div class=\"accordion\">\r\n <ng-content></ng-content> <!-- Will contain AccordionItem components -->\r\n</div>\r\n", styles: [".accordion{width:100%;max-width:600px;margin:0 auto}\n"] }]
2496
- }] });
2497
-
2498
- class AccordionItemComponent {
2499
- accordion;
2500
- title = '';
2501
- index = 0;
2502
- // Change this to allow null instead of undefined
2503
- contentTemplate = null;
2504
- constructor(accordion) {
2505
- this.accordion = accordion;
2506
- }
2507
- /**
2508
- * @description Determines whether open is
2509
- * @author Shiva Kant
2510
- * @returns true if open
2511
- */
2512
- isOpen() {
2513
- return this.accordion.isOpen(this.index);
2514
- }
2515
- /**
2516
- * @description Toggles accordion item component
2517
- * @author Shiva Kant
2518
- */
2519
- toggle() {
2520
- this.accordion.toggle(this.index);
2521
- }
2522
- /**
2523
- * @description perform any initialization after content is injected
2524
- * @author Shiva Kant
2525
- */
2526
- ngAfterContentInit() {
2527
- if (!this.contentTemplate) {
2528
- console.error('No content template provided for accordion item:', this.title);
2529
- }
2530
- }
2531
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: AccordionItemComponent, deps: [{ token: AccordionComponent }], target: i0.ɵɵFactoryTarget.Component });
2532
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: AccordionItemComponent, isStandalone: true, selector: "cats-ui-accordion-item", inputs: { title: "title", index: "index" }, queries: [{ propertyName: "contentTemplate", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: "<div class=\"accordion-item\">\r\n <div class=\"accordion-header\" (click)=\"toggle()\">\r\n <h3>{{ title }}</h3>\r\n <img [src]=\"isOpen()?'images/chevron-up.svg':'images/chevron-down.svg'\" alt=\"\">\r\n \r\n </div>\r\n @if (isOpen()) {\r\n\r\n <div class=\"accordion-body\" >\r\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\r\n </div>\r\n }\r\n</div>\r\n", styles: [".accordion-item{border:1px solid #ccc;margin-bottom:10px}.accordion-header{display:flex;background-color:#f1f1f1;padding:10px;cursor:pointer}.accordion-body{padding:10px;background-color:#fafafa}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
2533
- }
2534
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: AccordionItemComponent, decorators: [{
2535
- type: Component,
2536
- args: [{ selector: 'cats-ui-accordion-item', imports: [CommonModule], template: "<div class=\"accordion-item\">\r\n <div class=\"accordion-header\" (click)=\"toggle()\">\r\n <h3>{{ title }}</h3>\r\n <img [src]=\"isOpen()?'images/chevron-up.svg':'images/chevron-down.svg'\" alt=\"\">\r\n \r\n </div>\r\n @if (isOpen()) {\r\n\r\n <div class=\"accordion-body\" >\r\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\r\n </div>\r\n }\r\n</div>\r\n", styles: [".accordion-item{border:1px solid #ccc;margin-bottom:10px}.accordion-header{display:flex;background-color:#f1f1f1;padding:10px;cursor:pointer}.accordion-body{padding:10px;background-color:#fafafa}\n"] }]
2537
- }], ctorParameters: () => [{ type: AccordionComponent, decorators: [{
2538
- type: Inject,
2539
- args: [AccordionComponent]
2540
- }] }], propDecorators: { title: [{
2541
- type: Input
2542
- }], index: [{
2543
- type: Input
2544
- }], contentTemplate: [{
2545
- type: ContentChild,
2546
- args: [TemplateRef]
2547
- }] } });
2548
-
2549
- /*
2550
- * Public API Surface of cats-ui
2551
- */
2552
-
2553
- /**
2554
- * Generated bundle index. Do not edit.
2555
- */
2556
-
2557
- export { AccordionComponent, AccordionItemComponent, AutoCompleteMultiSelectComponent, AutoCompleteMultiSelectConfig, AutoCompleteSingleSelectComponent, AutoCompleteSingleSelectConfig, CatsUiService, CatsUiTooltipDirective, CheckBoxConfig, CheckBoxSubtask, CheckboxButtonComponent, DatePickerComponent, DateTimePickerComponent, InputComponent, InputConfig, MULTI_SELECT_CONTROL_VALUE_ACCESSOR, MULTI_SELECT_CONTROL_VALUE_VALIDATOR, MultiSelectComponent, MultiSelectConfig, OutsideClickDirective, RadioButtonComponent, SINGLE_SELECT_CONTROL_VALUE_ACCESSOR, SINGLE_SELECT_CONTROL_VALUE_VALIDATOR, SearchBoxComponent, SearchConfig, SingleSelectComponent, SingleSelectConfig, ToggleConfig, ToogleButtonComponent };
2558
- //# sourceMappingURL=cats-ui.mjs.map