cats-ui-lib 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (323) hide show
  1. package/README.md +63 -0
  2. package/assets/images/activity.svg +1 -0
  3. package/assets/images/airplay.svg +1 -0
  4. package/assets/images/alert-circle.svg +1 -0
  5. package/assets/images/alert-octagon.svg +1 -0
  6. package/assets/images/alert-triangle.svg +1 -0
  7. package/assets/images/align-center.svg +1 -0
  8. package/assets/images/align-justify.svg +1 -0
  9. package/assets/images/align-left.svg +1 -0
  10. package/assets/images/align-right.svg +1 -0
  11. package/assets/images/anchor.svg +1 -0
  12. package/assets/images/aperture.svg +1 -0
  13. package/assets/images/archive.svg +1 -0
  14. package/assets/images/arrow-down-circle.svg +1 -0
  15. package/assets/images/arrow-down-left.svg +1 -0
  16. package/assets/images/arrow-down-right.svg +1 -0
  17. package/assets/images/arrow-down.svg +1 -0
  18. package/assets/images/arrow-left-circle.svg +1 -0
  19. package/assets/images/arrow-left.svg +1 -0
  20. package/assets/images/arrow-right-circle.svg +1 -0
  21. package/assets/images/arrow-right.svg +1 -0
  22. package/assets/images/arrow-up-circle.svg +1 -0
  23. package/assets/images/arrow-up-left.svg +1 -0
  24. package/assets/images/arrow-up-right.svg +1 -0
  25. package/assets/images/arrow-up.svg +1 -0
  26. package/assets/images/at-sign.svg +1 -0
  27. package/assets/images/award.svg +1 -0
  28. package/assets/images/bar-chart-2.svg +1 -0
  29. package/assets/images/bar-chart.svg +1 -0
  30. package/assets/images/battery-charging.svg +1 -0
  31. package/assets/images/battery.svg +1 -0
  32. package/assets/images/bell-off.svg +1 -0
  33. package/assets/images/bell.svg +1 -0
  34. package/assets/images/bluetooth.svg +1 -0
  35. package/assets/images/bold.svg +1 -0
  36. package/assets/images/book-open.svg +1 -0
  37. package/assets/images/book.svg +1 -0
  38. package/assets/images/bookmark.svg +1 -0
  39. package/assets/images/box.svg +1 -0
  40. package/assets/images/briefcase.svg +1 -0
  41. package/assets/images/calendar.svg +1 -0
  42. package/assets/images/camera-off.svg +1 -0
  43. package/assets/images/camera.svg +1 -0
  44. package/assets/images/cast.svg +1 -0
  45. package/assets/images/check-circle.svg +1 -0
  46. package/assets/images/check-square.svg +1 -0
  47. package/assets/images/check.svg +1 -0
  48. package/assets/images/chevron-down.svg +1 -0
  49. package/assets/images/chevron-left.svg +1 -0
  50. package/assets/images/chevron-right.svg +1 -0
  51. package/assets/images/chevron-up.svg +1 -0
  52. package/assets/images/chevrons-down.svg +1 -0
  53. package/assets/images/chevrons-left.svg +1 -0
  54. package/assets/images/chevrons-right.svg +1 -0
  55. package/assets/images/chevrons-up.svg +1 -0
  56. package/assets/images/chrome.svg +1 -0
  57. package/assets/images/circle.svg +1 -0
  58. package/assets/images/clipboard.svg +1 -0
  59. package/assets/images/clock.svg +1 -0
  60. package/assets/images/cloud-drizzle.svg +1 -0
  61. package/assets/images/cloud-lightning.svg +1 -0
  62. package/assets/images/cloud-off.svg +1 -0
  63. package/assets/images/cloud-rain.svg +1 -0
  64. package/assets/images/cloud-snow.svg +1 -0
  65. package/assets/images/cloud.svg +1 -0
  66. package/assets/images/code.svg +1 -0
  67. package/assets/images/codepen.svg +1 -0
  68. package/assets/images/codesandbox.svg +1 -0
  69. package/assets/images/coffee.svg +1 -0
  70. package/assets/images/columns.svg +1 -0
  71. package/assets/images/command.svg +1 -0
  72. package/assets/images/compass.svg +1 -0
  73. package/assets/images/copy.svg +1 -0
  74. package/assets/images/corner-down-left.svg +1 -0
  75. package/assets/images/corner-down-right.svg +1 -0
  76. package/assets/images/corner-left-down.svg +1 -0
  77. package/assets/images/corner-left-up.svg +1 -0
  78. package/assets/images/corner-right-down.svg +1 -0
  79. package/assets/images/corner-right-up.svg +1 -0
  80. package/assets/images/corner-up-left.svg +1 -0
  81. package/assets/images/corner-up-right.svg +1 -0
  82. package/assets/images/cpu.svg +1 -0
  83. package/assets/images/credit-card.svg +1 -0
  84. package/assets/images/crop.svg +1 -0
  85. package/assets/images/crosshair.svg +1 -0
  86. package/assets/images/database.svg +1 -0
  87. package/assets/images/delete.svg +1 -0
  88. package/assets/images/disc.svg +1 -0
  89. package/assets/images/divide-circle.svg +1 -0
  90. package/assets/images/divide-square.svg +1 -0
  91. package/assets/images/divide.svg +1 -0
  92. package/assets/images/dollar-sign.svg +1 -0
  93. package/assets/images/download-cloud.svg +1 -0
  94. package/assets/images/download.svg +1 -0
  95. package/assets/images/dribbble.svg +1 -0
  96. package/assets/images/droplet.svg +1 -0
  97. package/assets/images/edit-2.svg +1 -0
  98. package/assets/images/edit-3.svg +1 -0
  99. package/assets/images/edit.svg +1 -0
  100. package/assets/images/external-link.svg +1 -0
  101. package/assets/images/eye-off.svg +1 -0
  102. package/assets/images/eye.svg +1 -0
  103. package/assets/images/facebook.svg +1 -0
  104. package/assets/images/fast-forward.svg +1 -0
  105. package/assets/images/feather.svg +1 -0
  106. package/assets/images/figma.svg +1 -0
  107. package/assets/images/file-minus.svg +1 -0
  108. package/assets/images/file-plus.svg +1 -0
  109. package/assets/images/file-text.svg +1 -0
  110. package/assets/images/file.svg +1 -0
  111. package/assets/images/film.svg +1 -0
  112. package/assets/images/filter.svg +1 -0
  113. package/assets/images/flag.svg +1 -0
  114. package/assets/images/folder-minus.svg +1 -0
  115. package/assets/images/folder-plus.svg +1 -0
  116. package/assets/images/folder.svg +1 -0
  117. package/assets/images/framer.svg +1 -0
  118. package/assets/images/frown.svg +1 -0
  119. package/assets/images/gift.svg +1 -0
  120. package/assets/images/git-branch.svg +1 -0
  121. package/assets/images/git-commit.svg +1 -0
  122. package/assets/images/git-merge.svg +1 -0
  123. package/assets/images/git-pull-request.svg +1 -0
  124. package/assets/images/github.svg +1 -0
  125. package/assets/images/gitlab.svg +1 -0
  126. package/assets/images/globe.svg +1 -0
  127. package/assets/images/grid.svg +1 -0
  128. package/assets/images/hard-drive.svg +1 -0
  129. package/assets/images/hash.svg +1 -0
  130. package/assets/images/headphones.svg +1 -0
  131. package/assets/images/heart.svg +1 -0
  132. package/assets/images/help-circle.svg +1 -0
  133. package/assets/images/hexagon.svg +1 -0
  134. package/assets/images/home.svg +1 -0
  135. package/assets/images/icon-checked.svg +1 -0
  136. package/assets/images/image.svg +1 -0
  137. package/assets/images/inbox.svg +1 -0
  138. package/assets/images/indeterminate.svg +3 -0
  139. package/assets/images/info.svg +1 -0
  140. package/assets/images/instagram.svg +1 -0
  141. package/assets/images/italic.svg +1 -0
  142. package/assets/images/key.svg +1 -0
  143. package/assets/images/layers.svg +1 -0
  144. package/assets/images/layout.svg +1 -0
  145. package/assets/images/life-buoy.svg +1 -0
  146. package/assets/images/link-2.svg +1 -0
  147. package/assets/images/link.svg +1 -0
  148. package/assets/images/linkedin.svg +1 -0
  149. package/assets/images/list.svg +1 -0
  150. package/assets/images/loader.svg +1 -0
  151. package/assets/images/lock.svg +1 -0
  152. package/assets/images/log-in.svg +1 -0
  153. package/assets/images/log-out.svg +1 -0
  154. package/assets/images/mail.svg +1 -0
  155. package/assets/images/map-pin.svg +1 -0
  156. package/assets/images/map.svg +1 -0
  157. package/assets/images/maximize-2.svg +1 -0
  158. package/assets/images/maximize.svg +1 -0
  159. package/assets/images/meh.svg +1 -0
  160. package/assets/images/menu.svg +1 -0
  161. package/assets/images/message-circle.svg +1 -0
  162. package/assets/images/message-square.svg +1 -0
  163. package/assets/images/mic-off.svg +1 -0
  164. package/assets/images/mic.svg +1 -0
  165. package/assets/images/minimize-2.svg +1 -0
  166. package/assets/images/minimize.svg +1 -0
  167. package/assets/images/minus-circle.svg +1 -0
  168. package/assets/images/minus-square.svg +1 -0
  169. package/assets/images/minus.svg +1 -0
  170. package/assets/images/monitor.svg +1 -0
  171. package/assets/images/moon.svg +1 -0
  172. package/assets/images/more-horizontal.svg +1 -0
  173. package/assets/images/more-vertical.svg +1 -0
  174. package/assets/images/mouse-pointer.svg +1 -0
  175. package/assets/images/move.svg +1 -0
  176. package/assets/images/music.svg +1 -0
  177. package/assets/images/navigation-2.svg +1 -0
  178. package/assets/images/navigation.svg +1 -0
  179. package/assets/images/octagon.svg +1 -0
  180. package/assets/images/package.svg +1 -0
  181. package/assets/images/paperclip.svg +1 -0
  182. package/assets/images/pause-circle.svg +1 -0
  183. package/assets/images/pause.svg +1 -0
  184. package/assets/images/pen-tool.svg +1 -0
  185. package/assets/images/percent.svg +1 -0
  186. package/assets/images/phone-call.svg +1 -0
  187. package/assets/images/phone-forwarded.svg +1 -0
  188. package/assets/images/phone-incoming.svg +1 -0
  189. package/assets/images/phone-missed.svg +1 -0
  190. package/assets/images/phone-off.svg +1 -0
  191. package/assets/images/phone-outgoing.svg +1 -0
  192. package/assets/images/phone.svg +1 -0
  193. package/assets/images/pie-chart.svg +1 -0
  194. package/assets/images/play-circle.svg +1 -0
  195. package/assets/images/play.svg +1 -0
  196. package/assets/images/plus-circle.svg +1 -0
  197. package/assets/images/plus-square.svg +1 -0
  198. package/assets/images/plus.svg +1 -0
  199. package/assets/images/pocket.svg +1 -0
  200. package/assets/images/power.svg +1 -0
  201. package/assets/images/printer.svg +1 -0
  202. package/assets/images/radio.svg +1 -0
  203. package/assets/images/refresh-ccw.svg +1 -0
  204. package/assets/images/refresh-cw.svg +1 -0
  205. package/assets/images/repeat.svg +1 -0
  206. package/assets/images/rewind.svg +1 -0
  207. package/assets/images/rotate-ccw.svg +1 -0
  208. package/assets/images/rotate-cw.svg +1 -0
  209. package/assets/images/rss.svg +1 -0
  210. package/assets/images/save.svg +1 -0
  211. package/assets/images/scissors.svg +1 -0
  212. package/assets/images/search.svg +1 -0
  213. package/assets/images/send.svg +1 -0
  214. package/assets/images/server.svg +1 -0
  215. package/assets/images/settings.svg +1 -0
  216. package/assets/images/share-2.svg +1 -0
  217. package/assets/images/share.svg +1 -0
  218. package/assets/images/shield-off.svg +1 -0
  219. package/assets/images/shield.svg +1 -0
  220. package/assets/images/shopping-bag.svg +1 -0
  221. package/assets/images/shopping-cart.svg +1 -0
  222. package/assets/images/shuffle.svg +1 -0
  223. package/assets/images/sidebar.svg +1 -0
  224. package/assets/images/skip-back.svg +1 -0
  225. package/assets/images/skip-forward.svg +1 -0
  226. package/assets/images/slack.svg +1 -0
  227. package/assets/images/slash.svg +1 -0
  228. package/assets/images/sliders.svg +1 -0
  229. package/assets/images/smartphone.svg +1 -0
  230. package/assets/images/smile.svg +1 -0
  231. package/assets/images/speaker.svg +1 -0
  232. package/assets/images/square.svg +1 -0
  233. package/assets/images/star.svg +1 -0
  234. package/assets/images/stop-circle.svg +1 -0
  235. package/assets/images/sun.svg +1 -0
  236. package/assets/images/sunrise.svg +1 -0
  237. package/assets/images/sunset.svg +1 -0
  238. package/assets/images/table.svg +1 -0
  239. package/assets/images/tablet.svg +1 -0
  240. package/assets/images/tag.svg +1 -0
  241. package/assets/images/target.svg +1 -0
  242. package/assets/images/terminal.svg +1 -0
  243. package/assets/images/thermometer.svg +1 -0
  244. package/assets/images/thumbs-down.svg +1 -0
  245. package/assets/images/thumbs-up.svg +1 -0
  246. package/assets/images/toggle-left.svg +1 -0
  247. package/assets/images/toggle-right.svg +1 -0
  248. package/assets/images/tool.svg +1 -0
  249. package/assets/images/trash-2.svg +1 -0
  250. package/assets/images/trash.svg +1 -0
  251. package/assets/images/trello.svg +1 -0
  252. package/assets/images/trending-down.svg +1 -0
  253. package/assets/images/trending-up.svg +1 -0
  254. package/assets/images/triangle.svg +1 -0
  255. package/assets/images/truck.svg +1 -0
  256. package/assets/images/tv.svg +1 -0
  257. package/assets/images/twitch.svg +1 -0
  258. package/assets/images/twitter.svg +1 -0
  259. package/assets/images/type.svg +1 -0
  260. package/assets/images/umbrella.svg +1 -0
  261. package/assets/images/underline.svg +1 -0
  262. package/assets/images/unlock.svg +1 -0
  263. package/assets/images/upload-cloud.svg +1 -0
  264. package/assets/images/upload.svg +1 -0
  265. package/assets/images/user-check.svg +1 -0
  266. package/assets/images/user-minus.svg +1 -0
  267. package/assets/images/user-plus.svg +1 -0
  268. package/assets/images/user-x.svg +1 -0
  269. package/assets/images/user.svg +1 -0
  270. package/assets/images/users.svg +1 -0
  271. package/assets/images/video-off.svg +1 -0
  272. package/assets/images/video.svg +1 -0
  273. package/assets/images/voicemail.svg +1 -0
  274. package/assets/images/volume-1.svg +1 -0
  275. package/assets/images/volume-2.svg +1 -0
  276. package/assets/images/volume-x.svg +1 -0
  277. package/assets/images/volume.svg +1 -0
  278. package/assets/images/watch.svg +1 -0
  279. package/assets/images/wifi-off.svg +1 -0
  280. package/assets/images/wifi.svg +1 -0
  281. package/assets/images/wind.svg +1 -0
  282. package/assets/images/x-circle.svg +1 -0
  283. package/assets/images/x-octagon.svg +1 -0
  284. package/assets/images/x-square.svg +1 -0
  285. package/assets/images/x.svg +1 -0
  286. package/assets/images/youtube.svg +1 -0
  287. package/assets/images/zap-off.svg +1 -0
  288. package/assets/images/zap.svg +1 -0
  289. package/assets/images/zoom-in.svg +1 -0
  290. package/assets/images/zoom-out.svg +1 -0
  291. package/fesm2022/cats-ui.mjs +1394 -0
  292. package/fesm2022/cats-ui.mjs.map +1 -0
  293. package/index.d.ts +5 -0
  294. package/lib/components/auto-complete-multi-select/auto-complete-multi-select.component.d.ts +69 -0
  295. package/lib/components/auto-complete-multi-select/index.d.ts +1 -0
  296. package/lib/components/auto-complete-single-select/auto-complete-single-select.component.d.ts +58 -0
  297. package/lib/components/auto-complete-single-select/index.d.ts +1 -0
  298. package/lib/components/checkbox-button/checkbox-button.component.d.ts +29 -0
  299. package/lib/components/checkbox-button/index.d.ts +1 -0
  300. package/lib/components/directives/outside-click.directive.d.ts +10 -0
  301. package/lib/components/input/index.d.ts +1 -0
  302. package/lib/components/input/input.component.d.ts +54 -0
  303. package/lib/components/multi-select/index.d.ts +1 -0
  304. package/lib/components/multi-select/multi-select.component.d.ts +83 -0
  305. package/lib/components/radio-button/index.d.ts +1 -0
  306. package/lib/components/radio-button/radio-button.component.d.ts +5 -0
  307. package/lib/components/search-box/index.d.ts +1 -0
  308. package/lib/components/search-box/search-box.component.d.ts +30 -0
  309. package/lib/components/single-select/index.d.ts +1 -0
  310. package/lib/components/single-select/single-select.component.d.ts +89 -0
  311. package/lib/components/toogle-button/index.d.ts +1 -0
  312. package/lib/components/toogle-button/toogle-button.component.d.ts +16 -0
  313. package/lib/modal/cats-ui.modal.d.ts +71 -0
  314. package/lib/services/cats-ui.service.d.ts +6 -0
  315. package/package.json +23 -0
  316. package/public-api.d.ts +12 -0
  317. package/styles/_fonts.scss +74 -0
  318. package/styles/_functions.scss +10 -0
  319. package/styles/_index.scss +6 -0
  320. package/styles/_mixins.scss +65 -0
  321. package/styles/_reset.scss +69 -0
  322. package/styles/_utilities.scss +80 -0
  323. package/styles/_variables.scss +92 -0
@@ -0,0 +1,1394 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Injectable, EventEmitter, forwardRef, Output, Input, Component, HostListener, ContentChild, ChangeDetectionStrategy, Directive } from '@angular/core';
3
+ import * as i1 from '@angular/common';
4
+ import { CommonModule, NgClass } 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: "19.2.15", ngImport: i0, type: CatsUiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
11
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CatsUiService, providedIn: 'root' });
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", 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
+ onChange = (value) => { };
29
+ onTouched = () => { };
30
+ /**
31
+ * @description Method to when value changes
32
+ * @author Shiva Kant
33
+ */
34
+ handleInput(event) {
35
+ const target = event.target;
36
+ this.value = target.value;
37
+ this.onChange(this.value);
38
+ if (this.control) {
39
+ this.control.markAsDirty();
40
+ this.control.updateValueAndValidity();
41
+ }
42
+ }
43
+ /**
44
+ * @description Method to Handle key down event
45
+ * @author Shiva Kant
46
+ */
47
+ handleKeyDown(event) {
48
+ this.onKeyDown.emit({ value: this.value, ...event });
49
+ }
50
+ /**
51
+ * @description Method to handle key up event
52
+ * @author Shiva Kant
53
+ */
54
+ handleKeyUp(event) {
55
+ this.onKeyUp.emit({ value: this.value, ...event });
56
+ }
57
+ /**
58
+ * @description Method to Handle blur (touched
59
+ * @author Shiva Kant
60
+ */
61
+ handleBlur(event) {
62
+ this.touched = true;
63
+ this.onTouched();
64
+ const control = event.target?.control;
65
+ control?.markAsTouched?.();
66
+ }
67
+ /**
68
+ * @description Method to ControlValueAccessor methods
69
+ * @author Shiva Kant
70
+ */
71
+ writeValue(value) {
72
+ this.value = value ?? '';
73
+ }
74
+ registerOnChange(fn) {
75
+ this.onChange = fn;
76
+ }
77
+ registerOnTouched(fn) {
78
+ this.onTouched = fn;
79
+ }
80
+ setDisabledState(isDisabled) {
81
+ this.disabled = isDisabled;
82
+ }
83
+ /**
84
+ * @description Method to Validator interface
85
+ * @author Shiva Kant
86
+ */
87
+ validate(control) {
88
+ this.control = control;
89
+ }
90
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: InputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
91
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: InputComponent, isStandalone: true, selector: "cats-ui-input", inputs: { inputConfig: "inputConfig" }, outputs: { onKeyDown: "onKeyDown", onKeyUp: "onKeyUp" }, providers: [
92
+ {
93
+ provide: NG_VALUE_ACCESSOR,
94
+ useExisting: forwardRef(() => InputComponent),
95
+ multi: true,
96
+ },
97
+ {
98
+ provide: NG_VALIDATORS,
99
+ useExisting: forwardRef(() => InputComponent),
100
+ multi: true,
101
+ },
102
+ ], ngImport: i0, template: "<div class=\"custom-input\">\r\n @if (inputConfig.label) {\r\n <label>{{ inputConfig.label }}</label>\r\n }\r\n\r\n <input\r\n class=\"input-box\"\r\n [type]=\"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\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-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-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-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-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}.custom-input{display:flex;flex-direction:column;margin-bottom:calc(1.3333333333rem / var(--scale))}.custom-input label{margin-bottom:calc(1rem / var(--scale));font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:600}.custom-input input{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}.custom-input input:focus{outline:none;border-color:var(--blue-700)}.custom-input input:disabled{background-color:var(--neutral-100);cursor:not-allowed}.custom-input .error-message{color:var(--red-700);font-size:calc(1.1666666667rem / var(--scale));margin-top:calc(.3333333333rem / var(--scale))}\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"] }] });
103
+ }
104
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: InputComponent, decorators: [{
105
+ type: Component,
106
+ args: [{ selector: 'cats-ui-input', standalone: true, imports: [CommonModule, FormsModule], providers: [
107
+ {
108
+ provide: NG_VALUE_ACCESSOR,
109
+ useExisting: forwardRef(() => InputComponent),
110
+ multi: true,
111
+ },
112
+ {
113
+ provide: NG_VALIDATORS,
114
+ useExisting: forwardRef(() => InputComponent),
115
+ multi: true,
116
+ },
117
+ ], template: "<div class=\"custom-input\">\r\n @if (inputConfig.label) {\r\n <label>{{ inputConfig.label }}</label>\r\n }\r\n\r\n <input\r\n class=\"input-box\"\r\n [type]=\"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\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-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-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-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-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}.custom-input{display:flex;flex-direction:column;margin-bottom:calc(1.3333333333rem / var(--scale))}.custom-input label{margin-bottom:calc(1rem / var(--scale));font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:600}.custom-input input{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}.custom-input input:focus{outline:none;border-color:var(--blue-700)}.custom-input input:disabled{background-color:var(--neutral-100);cursor:not-allowed}.custom-input .error-message{color:var(--red-700);font-size:calc(1.1666666667rem / var(--scale));margin-top:calc(.3333333333rem / var(--scale))}\n"] }]
118
+ }], propDecorators: { inputConfig: [{
119
+ type: Input
120
+ }], onKeyDown: [{
121
+ type: Output
122
+ }], onKeyUp: [{
123
+ type: Output
124
+ }] } });
125
+
126
+ class SingleSelectConfig {
127
+ idField = 'id';
128
+ textField = 'name';
129
+ disabledField = '';
130
+ placeholder = 'Select Option';
131
+ prefixLabel = '';
132
+ enableSearch = false;
133
+ required = false;
134
+ }
135
+ class MultiSelectConfig {
136
+ idField = 'id';
137
+ textField = 'name';
138
+ disabledField = '';
139
+ placeholder = 'Select Option';
140
+ prefixLabel = '';
141
+ enableSearch = false;
142
+ chipLimit = 2;
143
+ selectAll = true;
144
+ required = false;
145
+ }
146
+ class SearchConfig {
147
+ serachValue = '';
148
+ borderRequired = true;
149
+ placeholder = 'Search';
150
+ }
151
+ class InputConfig {
152
+ type = 'text';
153
+ placeholder = '';
154
+ label = '';
155
+ }
156
+ class AutoCompleteSingleSelectConfig {
157
+ idField = 'id';
158
+ textField = 'name';
159
+ disabledField = '';
160
+ placeholder = 'Enter or Select';
161
+ required = false;
162
+ customInput = false;
163
+ }
164
+ class AutoCompleteMultiSelectConfig {
165
+ idField = 'id';
166
+ textField = 'name';
167
+ disabledField = '';
168
+ selectAll = true;
169
+ placeholder = 'Enter or Select';
170
+ required = false;
171
+ chipLimit = 2;
172
+ customInput = false;
173
+ pattern = '';
174
+ }
175
+ class ToggleConfig {
176
+ checked = false;
177
+ disabled = false;
178
+ }
179
+ class CheckBoxSubtask {
180
+ name = '';
181
+ id = '';
182
+ checked = false;
183
+ }
184
+ class CheckBoxConfig {
185
+ id = '';
186
+ name = '';
187
+ checked = false;
188
+ subtasks;
189
+ }
190
+
191
+ const noop$1 = () => { };
192
+ const SINGLE_SELECT_CONTROL_VALUE_ACCESSOR = {
193
+ provide: NG_VALUE_ACCESSOR,
194
+ useExisting: forwardRef(() => SingleSelectComponent),
195
+ multi: true,
196
+ };
197
+ const SINGLE_SELECT_CONTROL_VALUE_VALIDATOR = {
198
+ provide: NG_VALIDATORS,
199
+ useExisting: forwardRef(() => SingleSelectComponent),
200
+ multi: true,
201
+ };
202
+ class SingleSelectComponent {
203
+ cd;
204
+ el;
205
+ optionList = [];
206
+ singleSelectConfig = new SingleSelectConfig();
207
+ selectedOption;
208
+ onSelection = new EventEmitter();
209
+ showDropdown = false;
210
+ searchText = '';
211
+ inValid = false;
212
+ control;
213
+ disableControl = false;
214
+ onScroll = new EventEmitter();
215
+ parentNativeElement;
216
+ selectedData;
217
+ constructor(cd, el) {
218
+ this.cd = cd;
219
+ this.el = el;
220
+ }
221
+ // These lifecycle hooks will be in use for further implementation
222
+ ngOnInit() { }
223
+ ngOnChanges(_changes) {
224
+ if (!_changes['optionList']?.currentValue) {
225
+ this.optionList = [];
226
+ }
227
+ else {
228
+ if (this.optionList.length > 10)
229
+ this.singleSelectConfig.enableSearch = true;
230
+ this.writeValue(this.control?.value);
231
+ }
232
+ }
233
+ /**
234
+ * @description Method to toggle dropdown list
235
+ * @author Shiva Kant
236
+ */
237
+ toggleDropdown() {
238
+ this.showDropdown = !this.showDropdown;
239
+ if (this.parentNativeElement) {
240
+ this.parentNativeElement.scrollIntoView({
241
+ behavior: 'smooth',
242
+ block: 'center',
243
+ });
244
+ let parentDiv = document.getElementById(this.parentNativeElement);
245
+ setTimeout(() => {
246
+ let parentBoundary = parentDiv?.getBoundingClientRect() || {};
247
+ let dropdonwList = document.getElementById('container_scroll');
248
+ let elBoundary = dropdonwList?.getBoundingClientRect() || {};
249
+ if (parentBoundary?.['bottom'] < elBoundary?.['bottom']) {
250
+ dropdonwList.style['transform'] = `translate(0px,-${elBoundary?.['height'] + 54}px`;
251
+ }
252
+ }, 20);
253
+ }
254
+ }
255
+ /**
256
+ * @description Method to check if provide arg is an object or not
257
+ * @author Shiva Kant
258
+ * @param Obj:any
259
+ * @returns boolean
260
+ */
261
+ isObjEmpty(obj) {
262
+ if (typeof obj == 'string' || typeof obj == 'number')
263
+ return true;
264
+ return !(obj && Object.keys(obj).length > 0);
265
+ }
266
+ /**
267
+ * @description Method is to update selected option and then
268
+ * update formcontrol by call onChangeCallback.
269
+ * @author Shiva Kant
270
+ * @param item
271
+ * @returns void
272
+ */
273
+ updateSelectedOption(item) {
274
+ this.selectedOption = item;
275
+ this.toggleDropdown();
276
+ this.inValid = false;
277
+ this.onChangeCallback(item);
278
+ this.onTouchedCallback();
279
+ this.onSelection.emit(item);
280
+ }
281
+ validate(control) {
282
+ this.control = control;
283
+ }
284
+ // Below Methods are used to register form API methods in these variable to use them later
285
+ onTouchedCallback = noop$1;
286
+ onChangeCallback = noop$1;
287
+ // Below are the CVA interface methods to make this component able to bind with formcontrol in parent component
288
+ /**
289
+ * @description method to update value of selectedOption
290
+ * @author Shiva Kant
291
+ * @param obj this is provided by formcontrol
292
+ * @returns void
293
+ */
294
+ writeValue(obj) {
295
+ this.selectedOption = '';
296
+ if (this.optionList.length && obj) {
297
+ if (typeof obj === 'string' || typeof obj === 'number') {
298
+ if (typeof this.optionList?.[0] === 'string' ||
299
+ typeof this.optionList?.[0] === 'number') {
300
+ if (this.optionList.includes(obj)) {
301
+ this.selectedOption = obj;
302
+ }
303
+ }
304
+ else if (obj != '') {
305
+ for (const option of this.optionList) {
306
+ if (option[this.singleSelectConfig.idField] == obj ||
307
+ option[this.singleSelectConfig.textField] == obj) {
308
+ this.selectedOption = option;
309
+ break;
310
+ }
311
+ }
312
+ }
313
+ }
314
+ else {
315
+ if (obj?.hasOwnProperty(this.singleSelectConfig.idField) &&
316
+ !this.isObjEmpty(this.optionList[0])) {
317
+ for (const option of this.optionList) {
318
+ if (option[this.singleSelectConfig.idField] ==
319
+ obj[this.singleSelectConfig.idField]) {
320
+ this.selectedOption = option;
321
+ break;
322
+ }
323
+ }
324
+ }
325
+ }
326
+ setTimeout(() => {
327
+ this.onChangeCallback(this.selectedOption);
328
+ }, 0);
329
+ this.cd.markForCheck();
330
+ }
331
+ }
332
+ /**
333
+ * @description method to register on change callback from form API
334
+ * @author Shiva Kant
335
+ * @param fn
336
+ * @returns void
337
+ */
338
+ registerOnChange(fn) {
339
+ this.onChangeCallback = fn;
340
+ }
341
+ /**
342
+ * @description method to register on touch callback from form API
343
+ * @author Shiva Kant
344
+ * @param fn
345
+ * @returns void
346
+ */
347
+ registerOnTouched(fn) {
348
+ this.onTouchedCallback = fn;
349
+ }
350
+ //willbe used in further implementation
351
+ setDisabledState(isDisabled) {
352
+ this.disableControl = isDisabled;
353
+ }
354
+ /**
355
+ * @description method to update ontouchcallback on blur
356
+ * @author Shiva Kant
357
+ */
358
+ onTouched() {
359
+ this.onTouchedCallback();
360
+ }
361
+ /**
362
+ * @description method to toggle dropdown on outside click
363
+ * @author Shiva Kant
364
+ */
365
+ closeDropdown(event) {
366
+ if (!this.el.nativeElement.contains(event.target)) {
367
+ if (this.showDropdown && this.singleSelectConfig.required) {
368
+ this.inValid =
369
+ this.selectedOption == '' ||
370
+ JSON.stringify(this.selectedOption) == '{}';
371
+ }
372
+ if (this.showDropdown)
373
+ this.onTouchedCallback();
374
+ this.showDropdown = false;
375
+ }
376
+ }
377
+ /**
378
+ * @description method to load more list
379
+ * @author Shiva Kant
380
+ * @param event
381
+ */
382
+ onDivScroll(event) {
383
+ if (event.target.offsetHeight + event.target.scrollTop >=
384
+ event.target.scrollHeight - 1 &&
385
+ this.optionList.length) {
386
+ this.onScroll.emit();
387
+ }
388
+ }
389
+ get filteredOptionsValue() {
390
+ if (!this.searchText || this.searchText.trim() === '') {
391
+ return this.optionList;
392
+ }
393
+ return this.optionList.filter((option) => {
394
+ if (typeof option != 'object') {
395
+ return option?.toLowerCase().includes(this.searchText.toLowerCase());
396
+ }
397
+ else {
398
+ return option[this.singleSelectConfig.textField]
399
+ ?.toLowerCase()
400
+ .includes(this.searchText.toLowerCase());
401
+ }
402
+ });
403
+ }
404
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SingleSelectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
405
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", 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: [
406
+ {
407
+ provide: NG_VALUE_ACCESSOR,
408
+ useExisting: SingleSelectComponent,
409
+ multi: true,
410
+ },
411
+ SINGLE_SELECT_CONTROL_VALUE_VALIDATOR,
412
+ ], 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=\"input_text 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=\"input_text textTruncate\">\r\n {{ selectedOption }}\r\n </span>\r\n </ng-template>\r\n }@else{\r\n <span class=\"default_text placeholderColor textTruncate\">{{\r\n singleSelectConfig.placeholder\r\n }}</span>\r\n\r\n }\r\n </div>\r\n <span>\r\n <!-- <i-feather name=\"chevron-up\"></i-feather> -->\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 src=\"images/x.svg\" class=\"cross_icon\" alt=\"\" />\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-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-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-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-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:solid calc(.0833333333rem / var(--scale)) 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(--neutral-900);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.disable_input{pointer-events:none;background-color:var(--neutral-50)}.main-wrapper .single-select-dropdown .input_text{max-width:100%}.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:calc(1.1666666667rem / var(--scale));background-color:var(--neutral-300);color:var(--neutral-600);border-top-left-radius:calc(.3333333333rem / var(--scale));border-bottom-left-radius:calc(.3333333333rem / var(--scale));margin:0 calc(1.3333333333rem / var(--scale)) 0 calc(-1.3333333333rem / 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{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-radius:calc(.6666666667rem / var(--scale));top:calc(5rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-100)}.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 .disabled_option{opacity:.3;pointer-events:none}.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(--neutral-900)}.main-wrapper .dropdown-list ul li:hover{background-color:var(--neutral-50)}.main-wrapper .dropdown-list ul li:first-child{border-radius:calc(.4166666667rem / var(--scale)) calc(.4166666667rem / var(--scale)) 0 0}.main-wrapper .dropdown-list ul li:last-child{border-radius:0 0 calc(.4166666667rem / var(--scale)) calc(.4166666667rem / 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 .search_icon{opacity:.4;flex-direction:row;justify-content:calc(2rem / var(--scale));align-items:calc(2rem / var(--scale));flex-wrap:nowrap;gap:0;display:flex}.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(--neutral-600)}.main-wrapper .dropdown-list .search_bar .input_box .cross_icon{opacity:.7;cursor:pointer}.disable-control{pointer-events:none;opacity:.7;background-color:var(--blue-50)}.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}.placeholderColor{color:var(--neutral-400)}\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 });
413
+ }
414
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SingleSelectComponent, decorators: [{
415
+ type: Component,
416
+ args: [{ selector: 'cats-ui-single-select', imports: [CommonModule, FormsModule], providers: [
417
+ {
418
+ provide: NG_VALUE_ACCESSOR,
419
+ useExisting: SingleSelectComponent,
420
+ multi: true,
421
+ },
422
+ SINGLE_SELECT_CONTROL_VALUE_VALIDATOR,
423
+ ], 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=\"input_text 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=\"input_text textTruncate\">\r\n {{ selectedOption }}\r\n </span>\r\n </ng-template>\r\n }@else{\r\n <span class=\"default_text placeholderColor textTruncate\">{{\r\n singleSelectConfig.placeholder\r\n }}</span>\r\n\r\n }\r\n </div>\r\n <span>\r\n <!-- <i-feather name=\"chevron-up\"></i-feather> -->\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 src=\"images/x.svg\" class=\"cross_icon\" alt=\"\" />\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-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-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-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-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:solid calc(.0833333333rem / var(--scale)) 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(--neutral-900);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.disable_input{pointer-events:none;background-color:var(--neutral-50)}.main-wrapper .single-select-dropdown .input_text{max-width:100%}.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:calc(1.1666666667rem / var(--scale));background-color:var(--neutral-300);color:var(--neutral-600);border-top-left-radius:calc(.3333333333rem / var(--scale));border-bottom-left-radius:calc(.3333333333rem / var(--scale));margin:0 calc(1.3333333333rem / var(--scale)) 0 calc(-1.3333333333rem / 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{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-radius:calc(.6666666667rem / var(--scale));top:calc(5rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--neutral-100)}.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 .disabled_option{opacity:.3;pointer-events:none}.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(--neutral-900)}.main-wrapper .dropdown-list ul li:hover{background-color:var(--neutral-50)}.main-wrapper .dropdown-list ul li:first-child{border-radius:calc(.4166666667rem / var(--scale)) calc(.4166666667rem / var(--scale)) 0 0}.main-wrapper .dropdown-list ul li:last-child{border-radius:0 0 calc(.4166666667rem / var(--scale)) calc(.4166666667rem / 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 .search_icon{opacity:.4;flex-direction:row;justify-content:calc(2rem / var(--scale));align-items:calc(2rem / var(--scale));flex-wrap:nowrap;gap:0;display:flex}.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(--neutral-600)}.main-wrapper .dropdown-list .search_bar .input_box .cross_icon{opacity:.7;cursor:pointer}.disable-control{pointer-events:none;opacity:.7;background-color:var(--blue-50)}.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}.placeholderColor{color:var(--neutral-400)}\n"] }]
424
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], propDecorators: { optionList: [{
425
+ type: Input
426
+ }], singleSelectConfig: [{
427
+ type: Input
428
+ }], selectedOption: [{
429
+ type: Input
430
+ }], onSelection: [{
431
+ type: Output
432
+ }], onScroll: [{
433
+ type: Output
434
+ }], parentNativeElement: [{
435
+ type: Input
436
+ }], selectedData: [{
437
+ type: ContentChild,
438
+ args: ['selectedData']
439
+ }], onTouched: [{
440
+ type: HostListener,
441
+ args: ['blur']
442
+ }], closeDropdown: [{
443
+ type: HostListener,
444
+ args: ['document:click', ['$event']]
445
+ }] } });
446
+
447
+ const noop = () => { };
448
+ const MULTI_SELECT_CONTROL_VALUE_ACCESSOR = {
449
+ provide: NG_VALUE_ACCESSOR,
450
+ useExisting: forwardRef(() => MultiSelectComponent),
451
+ multi: true,
452
+ };
453
+ const MULTI_SELECT_CONTROL_VALUE_VALIDATOR = {
454
+ provide: NG_VALIDATORS,
455
+ useExisting: forwardRef(() => MultiSelectComponent),
456
+ multi: true,
457
+ };
458
+ class MultiSelectComponent {
459
+ cd;
460
+ el;
461
+ optionList = [];
462
+ multiSelectConfig = new MultiSelectConfig();
463
+ selectedOptions = [];
464
+ onSelection = new EventEmitter();
465
+ control;
466
+ showDropdown = false;
467
+ isListArrayOfObject = false;
468
+ isSelectedAll = false;
469
+ inValid = false;
470
+ searchText = '';
471
+ disabledControl = false;
472
+ constructor(cd, el) {
473
+ this.cd = cd;
474
+ this.el = el;
475
+ }
476
+ // These lifecycle hooks will be in use for further implementation
477
+ ngOnInit() { }
478
+ ngOnChanges(_changes) {
479
+ if (_changes['optionList'].currentValue &&
480
+ _changes['optionList'].currentValue.length > 0) {
481
+ if (typeof this.optionList[0] === 'string' ||
482
+ typeof this.optionList[0] === 'number') {
483
+ this.optionList = this.optionList.map((option) => {
484
+ const item = {
485
+ [this.multiSelectConfig.idField]: option,
486
+ [this.multiSelectConfig.textField]: option,
487
+ isSelected: false,
488
+ };
489
+ if (this.multiSelectConfig.disabledField) {
490
+ item[this.multiSelectConfig.disabledField] = false;
491
+ }
492
+ return item;
493
+ });
494
+ }
495
+ else {
496
+ this.isListArrayOfObject = true;
497
+ this.optionList = this.optionList.map((option) => {
498
+ return {
499
+ ...option,
500
+ isSelected: false,
501
+ };
502
+ });
503
+ }
504
+ if (this.optionList.length > 10)
505
+ this.multiSelectConfig.enableSearch = true;
506
+ this.writeValue(this.control?.value);
507
+ }
508
+ }
509
+ /**
510
+ * @description Method to toggle dropdown list
511
+ * @author Shiva Kant
512
+ */
513
+ toggleDropdown() {
514
+ this.showDropdown = !this.showDropdown;
515
+ }
516
+ /**
517
+ * @description Method to check if provide arg is an object or not
518
+ * @author Shiva Kant
519
+ * @param Obj:any
520
+ * @returns boolean
521
+ */
522
+ isObjEmpty(obj) {
523
+ return !(obj && Object.keys(obj).length > 0);
524
+ }
525
+ /**
526
+ * @description Method is to update selected option and then
527
+ * update formcontrol by call onChangeCallback.
528
+ * @author Shiva Kant
529
+ * @param item
530
+ * @returns void
531
+ */
532
+ updateSelectedOption(item) {
533
+ item.isSelected = !item.isSelected;
534
+ if (!item.isSelected) {
535
+ let ind = this.selectedOptions.findIndex((option) => item[this.multiSelectConfig.idField] == option[this.multiSelectConfig.idField]);
536
+ if (ind >= 0)
537
+ this.selectedOptions.splice(ind, 1);
538
+ }
539
+ else {
540
+ this.selectedOptions.push(item);
541
+ }
542
+ this.isSelectedAll = this.optionList.every((option) => option.isSelected == true);
543
+ this.inValid = false;
544
+ this.onChangeCallback(this.selectedOptions);
545
+ this.onTouchedCallback();
546
+ this.onSelection.emit(this.selectedOptions);
547
+ this.cd.markForCheck();
548
+ }
549
+ // Below Methods are used to register form API methods in these variable to use them later
550
+ onTouchedCallback = noop;
551
+ onChangeCallback = noop;
552
+ validate(control) {
553
+ this.control = control;
554
+ }
555
+ // Below are the CVA interface methods to make this component able to bind with formcontrol in parent component
556
+ /**
557
+ * @description method to update value of selectedOption
558
+ * @author Shiva Kant
559
+ * @param controlValue this is provided by formcontrol
560
+ * @returns void
561
+ */
562
+ writeValue(controlValue) {
563
+ if (this.optionList.length) {
564
+ this.selectedOptions = [];
565
+ if (controlValue && controlValue.length > 0) {
566
+ if (typeof controlValue[0] === 'string' ||
567
+ typeof controlValue[0] === 'number') {
568
+ controlValue = controlValue.map((option) => {
569
+ return {
570
+ [this.multiSelectConfig.idField]: option,
571
+ [this.multiSelectConfig.textField]: option,
572
+ };
573
+ });
574
+ }
575
+ for (const option of controlValue) {
576
+ let ind = this.optionList.findIndex((item) => item[this.multiSelectConfig.idField] == option[this.multiSelectConfig.idField] ||
577
+ item[this.multiSelectConfig.textField] == option[this.multiSelectConfig.textField]);
578
+ if (ind >= 0) {
579
+ this.optionList[ind] = {
580
+ ...this.optionList[ind],
581
+ isSelected: true,
582
+ };
583
+ this.selectedOptions.push(this.optionList[ind]);
584
+ }
585
+ }
586
+ }
587
+ this.isSelectedAll = this.optionList.every((option) => option.isSelected == true);
588
+ this.onChangeCallback(this.selectedOptions);
589
+ this.cd.markForCheck();
590
+ }
591
+ }
592
+ /**
593
+ * @description method to register on change callback from form API
594
+ * @author Shiva Kant
595
+ * @param fn
596
+ * @returns void
597
+ */
598
+ registerOnChange(fn) {
599
+ this.onChangeCallback = fn;
600
+ }
601
+ /**
602
+ * @description method to register on touch callback from form API
603
+ * @author Shiva Kant
604
+ * @param fn
605
+ * @returns void
606
+ */
607
+ registerOnTouched(fn) {
608
+ this.onTouchedCallback = fn;
609
+ }
610
+ //willbe used in further implementation
611
+ setDisabledState(isDisabled) {
612
+ this.disabledControl = isDisabled;
613
+ }
614
+ /**
615
+ * @description method to update ontouchcallback on blur
616
+ * @author Shiva Kant
617
+ */
618
+ onTouched() {
619
+ this.onTouchedCallback();
620
+ }
621
+ /**
622
+ * @description method to toggle dropdown on outside click
623
+ * @author Shiva Kant
624
+ */
625
+ closeDropdown(event) {
626
+ if (!this.el.nativeElement.contains(event.target)) {
627
+ if (this.showDropdown && this.multiSelectConfig.required) {
628
+ this.inValid = this.selectedOptions.length < 0;
629
+ }
630
+ this.showDropdown = false;
631
+ }
632
+ }
633
+ checkUncheckAll() {
634
+ if (this.isSelectedAll) {
635
+ this.optionList = this.optionList.map((option) => {
636
+ return { ...option, isSelected: false };
637
+ });
638
+ this.isSelectedAll = false;
639
+ this.selectedOptions = [];
640
+ }
641
+ else {
642
+ this.optionList = this.optionList.map((option) => {
643
+ return { ...option, isSelected: true };
644
+ });
645
+ this.isSelectedAll = true;
646
+ this.selectedOptions = [...this.optionList];
647
+ }
648
+ this.onChangeCallback(this.selectedOptions);
649
+ this.onSelection.emit(this.selectedOptions);
650
+ }
651
+ get filteredOptionsValue() {
652
+ if (!this.searchText || this.searchText.trim() === '') {
653
+ return this.optionList;
654
+ }
655
+ return this.optionList.filter((option) => option[this.multiSelectConfig.textField]
656
+ ?.toLowerCase()
657
+ .includes(this.searchText.toLowerCase()));
658
+ }
659
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: MultiSelectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
660
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", 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: [
661
+ MULTI_SELECT_CONTROL_VALUE_ACCESSOR,
662
+ MULTI_SELECT_CONTROL_VALUE_VALIDATOR,
663
+ ], 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 @if(multiSelectConfig.prefixLabel){\r\n <span class=\"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=\"default_text 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\r\n <span class=\"feather_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\" 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 src=\"images/x.svg\" class=\"cross_icon\" alt=\"\" />\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-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-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-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-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 .checkbox_label_wrapper{display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale))}.main-wrapper .checkbox_label_wrapper .query_text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(8.8333333333rem / var(--scale))}.main-wrapper .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{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale));border:solid calc(.0833333333rem / var(--scale)) 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 .input_text,.main-wrapper .display-div .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-wrapper .display-div .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;order:2}.main-wrapper .display-div .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 .input_text span{max-width:calc(10rem / var(--scale));font-weight:400}.main-wrapper .display-div .input_text .cross-icon{display:flex;width:calc(1.6666666667rem / var(--scale));height:calc(1.6666666667rem / var(--scale))}.main-wrapper .display-div .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(3rem / var(--scale));font-size:calc(1.1666666667rem / var(--scale));background-color:gray;color:#000;border-top-left-radius:calc(.4166666667rem / var(--scale));border-bottom-left-radius:calc(.4166666667rem / var(--scale));margin-top:calc(-.5833333333rem / var(--scale));margin-left:calc(-.8333333333rem / var(--scale));margin-right:calc(.8333333333rem / var(--scale))}.main-wrapper .display-div .label p{margin-bottom:0;max-width:calc(10.8333333333rem / var(--scale))}.main-wrapper .display-div .feather_icon{margin-left:auto;order:2}.main-wrapper .display-div.danger_outline{border:calc(.0833333333rem / var(--scale)) solid var(--red)}.main-wrapper .display-div:has(.view_more) .feather_icon{margin-left:calc(.8333333333rem / var(--scale));order:2}.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(5rem / 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 .search_icon{opacity:.4;flex-direction:row;justify-content:calc(2rem / var(--scale));align-items:calc(2rem / var(--scale));flex-wrap:nowrap;gap:0;display:flex}.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(--neutral-600)}.main-wrapper .dropdown-list .search_bar .input_box .cross_icon{opacity:.7;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 .disabled_option{opacity:.3;pointer-events:none}.main-wrapper .dropdown-list ul .add_chunk{display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale))}.main-wrapper .dropdown-list ul .add_chunk img{max-width:calc(2rem / var(--scale))}.main-wrapper .dropdown-list ul .add_chunk .add_chunk_text{font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400}.main-wrapper .dropdown-list ul:has(.no_data) li:hover{cursor:default}.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(--neutral-900)}.main-wrapper .dropdown-list ul li:not(:first-child):hover{background-color:var(--neutral-50)}.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)}.placeholderColor{color:var(--neutral-400)}.disable-control{pointer-events:none;opacity:.7;background-color:var(--blue-50)}\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 });
664
+ }
665
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: MultiSelectComponent, decorators: [{
666
+ type: Component,
667
+ args: [{ selector: 'cats-ui-multi-select', imports: [NgClass, FormsModule], providers: [
668
+ MULTI_SELECT_CONTROL_VALUE_ACCESSOR,
669
+ MULTI_SELECT_CONTROL_VALUE_VALIDATOR,
670
+ ], 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 @if(multiSelectConfig.prefixLabel){\r\n <span class=\"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=\"default_text 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\r\n <span class=\"feather_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\" 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 src=\"images/x.svg\" class=\"cross_icon\" alt=\"\" />\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-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-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-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-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 .checkbox_label_wrapper{display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale))}.main-wrapper .checkbox_label_wrapper .query_text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(8.8333333333rem / var(--scale))}.main-wrapper .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{display:flex;flex-direction:row;justify-content:space-between;align-items:center;flex-wrap:nowrap;gap:calc(1rem / var(--scale));border:solid calc(.0833333333rem / var(--scale)) 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 .input_text,.main-wrapper .display-div .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-wrapper .display-div .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;order:2}.main-wrapper .display-div .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 .input_text span{max-width:calc(10rem / var(--scale));font-weight:400}.main-wrapper .display-div .input_text .cross-icon{display:flex;width:calc(1.6666666667rem / var(--scale));height:calc(1.6666666667rem / var(--scale))}.main-wrapper .display-div .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(3rem / var(--scale));font-size:calc(1.1666666667rem / var(--scale));background-color:gray;color:#000;border-top-left-radius:calc(.4166666667rem / var(--scale));border-bottom-left-radius:calc(.4166666667rem / var(--scale));margin-top:calc(-.5833333333rem / var(--scale));margin-left:calc(-.8333333333rem / var(--scale));margin-right:calc(.8333333333rem / var(--scale))}.main-wrapper .display-div .label p{margin-bottom:0;max-width:calc(10.8333333333rem / var(--scale))}.main-wrapper .display-div .feather_icon{margin-left:auto;order:2}.main-wrapper .display-div.danger_outline{border:calc(.0833333333rem / var(--scale)) solid var(--red)}.main-wrapper .display-div:has(.view_more) .feather_icon{margin-left:calc(.8333333333rem / var(--scale));order:2}.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(5rem / 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 .search_icon{opacity:.4;flex-direction:row;justify-content:calc(2rem / var(--scale));align-items:calc(2rem / var(--scale));flex-wrap:nowrap;gap:0;display:flex}.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(--neutral-600)}.main-wrapper .dropdown-list .search_bar .input_box .cross_icon{opacity:.7;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 .disabled_option{opacity:.3;pointer-events:none}.main-wrapper .dropdown-list ul .add_chunk{display:flex;flex-direction:row;justify-content:\"\";align-items:center;flex-wrap:nowrap;gap:calc(.6666666667rem / var(--scale))}.main-wrapper .dropdown-list ul .add_chunk img{max-width:calc(2rem / var(--scale))}.main-wrapper .dropdown-list ul .add_chunk .add_chunk_text{font-size:var(--fs-16);line-height:calc(2rem / var(--scale));font-weight:400}.main-wrapper .dropdown-list ul:has(.no_data) li:hover{cursor:default}.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(--neutral-900)}.main-wrapper .dropdown-list ul li:not(:first-child):hover{background-color:var(--neutral-50)}.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)}.placeholderColor{color:var(--neutral-400)}.disable-control{pointer-events:none;opacity:.7;background-color:var(--blue-50)}\n"] }]
671
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], propDecorators: { optionList: [{
672
+ type: Input
673
+ }], multiSelectConfig: [{
674
+ type: Input
675
+ }], selectedOptions: [{
676
+ type: Input
677
+ }], onSelection: [{
678
+ type: Output
679
+ }], onTouched: [{
680
+ type: HostListener,
681
+ args: ['blur']
682
+ }], closeDropdown: [{
683
+ type: HostListener,
684
+ args: ['document:click', ['$event']]
685
+ }] } });
686
+
687
+ class SearchBoxComponent {
688
+ searchParam = '';
689
+ searchConfig = new SearchConfig();
690
+ onClose = new EventEmitter();
691
+ searchParamValue = new EventEmitter();
692
+ onChange = () => { };
693
+ onTouched = () => { };
694
+ isDisabled = false;
695
+ ngOnInit() {
696
+ this.searchParam = this.searchConfig?.serachValue || '';
697
+ }
698
+ /**
699
+ * @description Method to Called when input changes
700
+ * @author Shiva Kant
701
+ */
702
+ onInputChange(event) {
703
+ const value = event.target?.value;
704
+ this.searchParam = value;
705
+ this.onChange(value);
706
+ this.searchParamValue.emit(value);
707
+ }
708
+ /**
709
+ * @description Method to closeSearchBar
710
+ * @author Shiva Kant
711
+ */
712
+ closeSearchBar() {
713
+ this.searchParam = '';
714
+ this.onChange('');
715
+ this.searchParamValue.emit('');
716
+ this.onClose.emit();
717
+ }
718
+ // -------- ControlValueAccessor methods --------
719
+ writeValue(value) {
720
+ this.searchParam = value || '';
721
+ }
722
+ registerOnChange(fn) {
723
+ this.onChange = fn;
724
+ }
725
+ registerOnTouched(fn) {
726
+ this.onTouched = fn;
727
+ }
728
+ setDisabledState(isDisabled) {
729
+ this.isDisabled = isDisabled;
730
+ }
731
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SearchBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
732
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: SearchBoxComponent, isStandalone: true, selector: "cats-ui-search-box", inputs: { searchConfig: "searchConfig" }, outputs: { onClose: "onClose", searchParamValue: "searchParamValue" }, providers: [
733
+ {
734
+ provide: NG_VALUE_ACCESSOR,
735
+ useExisting: forwardRef(() => SearchBoxComponent),
736
+ multi: true,
737
+ },
738
+ ], ngImport: i0, template: "<div class=\"seach_input\">\r\n <div class=\"icon_warpper\">\r\n <img src=\"images/search.svg\" alt=\"\" srcset=\"\">\r\n <!-- <i-feather name=\"search\" class=\"search_icon\"></i-feather> -->\r\n </div>\r\n\r\n <input\r\n type=\"text\"\r\n [value]=\"searchParam\"\r\n (input)=\"onInputChange($event)\"\r\n (blur)=\"onTouched()\"\r\n />\r\n <!-- [placeholder]=\"searchConfig?.placeholder\" -->\r\n\r\n @if (searchParam.length > 0) {\r\n <div class=\"cross_icon_wrapper cross_icon\">\r\n <img src=\"images/x.svg\" alt=\"\" srcset=\"\" (click)=\"closeSearchBar()\">\r\n <!-- // <i-feather name=\"x\" (click)=\"closeSearchBar()\" /> -->\r\n </div>\r\n\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-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-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-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-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}.searchBar{position:relative;width:calc(48.3333333333rem / var(--scale));height:calc(4rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--border);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:0;margin-right:calc(.25rem / var(--scale))}.searchBar i-feather{width:calc(2rem / var(--scale));height:calc(2rem / var(--scale))}.searchBar input{height:100%;width:100%;border:0;padding-left:calc(1rem / var(--scale));font-size:var(--fs-16);line-height:140%;font-weight:500;color:var(--textPrimary)}.searchBar input::placeholder{color:var(--textSecondary70);font-size:var(--fs-16);line-height:140%;font-weight:500}.searchBar .search_img{width:calc(1.6666666667rem / var(--scale));height:calc(1.6666666667rem / var(--scale))}.searchBar .custom_feather_cross{stroke:var(--white);fill:var(--textSecondary);cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }] });
739
+ }
740
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SearchBoxComponent, decorators: [{
741
+ type: Component,
742
+ args: [{ selector: 'cats-ui-search-box', imports: [FormsModule], providers: [
743
+ {
744
+ provide: NG_VALUE_ACCESSOR,
745
+ useExisting: forwardRef(() => SearchBoxComponent),
746
+ multi: true,
747
+ },
748
+ ], template: "<div class=\"seach_input\">\r\n <div class=\"icon_warpper\">\r\n <img src=\"images/search.svg\" alt=\"\" srcset=\"\">\r\n <!-- <i-feather name=\"search\" class=\"search_icon\"></i-feather> -->\r\n </div>\r\n\r\n <input\r\n type=\"text\"\r\n [value]=\"searchParam\"\r\n (input)=\"onInputChange($event)\"\r\n (blur)=\"onTouched()\"\r\n />\r\n <!-- [placeholder]=\"searchConfig?.placeholder\" -->\r\n\r\n @if (searchParam.length > 0) {\r\n <div class=\"cross_icon_wrapper cross_icon\">\r\n <img src=\"images/x.svg\" alt=\"\" srcset=\"\" (click)=\"closeSearchBar()\">\r\n <!-- // <i-feather name=\"x\" (click)=\"closeSearchBar()\" /> -->\r\n </div>\r\n\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-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-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-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-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}.searchBar{position:relative;width:calc(48.3333333333rem / var(--scale));height:calc(4rem / var(--scale));border:calc(.0833333333rem / var(--scale)) solid var(--border);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:0;margin-right:calc(.25rem / var(--scale))}.searchBar i-feather{width:calc(2rem / var(--scale));height:calc(2rem / var(--scale))}.searchBar input{height:100%;width:100%;border:0;padding-left:calc(1rem / var(--scale));font-size:var(--fs-16);line-height:140%;font-weight:500;color:var(--textPrimary)}.searchBar input::placeholder{color:var(--textSecondary70);font-size:var(--fs-16);line-height:140%;font-weight:500}.searchBar .search_img{width:calc(1.6666666667rem / var(--scale));height:calc(1.6666666667rem / var(--scale))}.searchBar .custom_feather_cross{stroke:var(--white);fill:var(--textSecondary);cursor:pointer}\n"] }]
749
+ }], propDecorators: { searchConfig: [{
750
+ type: Input
751
+ }], onClose: [{
752
+ type: Output
753
+ }], searchParamValue: [{
754
+ type: Output
755
+ }] } });
756
+
757
+ class OutsideClickDirective {
758
+ elementRef;
759
+ clickOutSide = new EventEmitter();
760
+ constructor(elementRef) {
761
+ this.elementRef = elementRef;
762
+ }
763
+ onClick(event) {
764
+ const targetElement = event.target;
765
+ // Guard clause: exit early if no target or not an element
766
+ if (!targetElement) {
767
+ return;
768
+ }
769
+ const clickInside = this.elementRef.nativeElement.contains(targetElement);
770
+ if (!clickInside) {
771
+ this.clickOutSide.emit(event);
772
+ }
773
+ }
774
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: OutsideClickDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
775
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: OutsideClickDirective, isStandalone: true, selector: "[catsOutsideClick]", outputs: { clickOutSide: "clickOutSide" }, host: { listeners: { "document:click": "onClick($event)" } }, ngImport: i0 });
776
+ }
777
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: OutsideClickDirective, decorators: [{
778
+ type: Directive,
779
+ args: [{
780
+ selector: '[catsOutsideClick]',
781
+ standalone: true,
782
+ }]
783
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { clickOutSide: [{
784
+ type: Output
785
+ }], onClick: [{
786
+ type: HostListener,
787
+ args: ['document:click', ['$event']]
788
+ }] } });
789
+
790
+ ;
791
+ class AutoCompleteSingleSelectComponent {
792
+ autoSingleSelectConfig = new AutoCompleteSingleSelectConfig();
793
+ selectedItem;
794
+ optionsList = [];
795
+ parentNativeElement;
796
+ onItemSelection = new EventEmitter();
797
+ onScroll = new EventEmitter();
798
+ showDropdown = false;
799
+ inputValue = '';
800
+ selectedOption;
801
+ constructor() { }
802
+ ngOnInit() { }
803
+ /**
804
+ * @description Method to toggle dropdown list
805
+ * @author Shiva Kant
806
+ */
807
+ toggleDropdown() {
808
+ this.showDropdown = !this.showDropdown;
809
+ if (this.parentNativeElement) {
810
+ this.parentNativeElement.scrollIntoView({
811
+ behavior: 'smooth',
812
+ block: 'center',
813
+ });
814
+ let parentDiv = document.getElementById(this.parentNativeElement);
815
+ setTimeout(() => {
816
+ let parentBoundary = parentDiv?.getBoundingClientRect() || {};
817
+ let dropdonwList = document.getElementById('container_scroll');
818
+ let elBoundary = dropdonwList?.getBoundingClientRect() || {};
819
+ if (parentBoundary?.['bottom'] < elBoundary?.['bottom']) {
820
+ dropdonwList.style['transform'] = `translate(0px,-${elBoundary?.['height'] + 54}px`;
821
+ }
822
+ }, 20);
823
+ }
824
+ }
825
+ /**
826
+ * @description method to update selected item
827
+ * @author Shiva Kant
828
+ * @param item this is selected item from list
829
+ * @param type type of list
830
+ * @returns none
831
+ */
832
+ updateSelectedItem(item, type) {
833
+ if (type == 'object') {
834
+ this.inputValue = item[this.autoSingleSelectConfig.textField];
835
+ }
836
+ else {
837
+ this.inputValue = item;
838
+ }
839
+ this.selectedOption = item;
840
+ this.showDropdown = false;
841
+ this.onItemSelection.emit(this.selectedOption);
842
+ }
843
+ /**
844
+ * @description this method is use to update input value
845
+ */
846
+ updateInputValue() {
847
+ let data = this.selectedOption;
848
+ if (!data ||
849
+ (typeof data == 'object'
850
+ ? data[this.autoSingleSelectConfig.textField] != this.inputValue
851
+ : data != this.inputValue)) {
852
+ data = this.inputValue;
853
+ if (this.isObject(this.optionsList?.[0])) {
854
+ data = {
855
+ [this.autoSingleSelectConfig.idField]: null,
856
+ [this.autoSingleSelectConfig.textField]: this.inputValue,
857
+ };
858
+ }
859
+ }
860
+ this.onItemSelection.emit(data);
861
+ }
862
+ /**
863
+ * @description method to update dropdown list state on input type
864
+ * @author Shiva Kant
865
+ */
866
+ updateDropdownStatus() {
867
+ this.showDropdown = !!this.inputValue;
868
+ }
869
+ /**
870
+ * @description method to check if the list is Array of string or object
871
+ * @author Shiva Kant
872
+ * @param data this is the any one one item of list
873
+ * @returns boolean
874
+ */
875
+ isObject(data) {
876
+ const type = typeof data;
877
+ return data && type != 'string';
878
+ }
879
+ /**
880
+ * @description This method is use to close dropdown on click outside
881
+ */
882
+ outsideClicked() {
883
+ if (this.showDropdown) {
884
+ if (this.autoSingleSelectConfig.customInput) {
885
+ this.updateInputValue();
886
+ }
887
+ }
888
+ this.showDropdown = false;
889
+ }
890
+ onClickEnter(control) {
891
+ if (this.autoSingleSelectConfig.customInput) {
892
+ this.updateInputValue();
893
+ }
894
+ }
895
+ /**
896
+ * @description method to load more list
897
+ * @author Shiva Kant
898
+ * @param event
899
+ */
900
+ onDivScroll(event) {
901
+ if (event.target.offsetHeight + event.target.scrollTop >=
902
+ event.target.scrollHeight - 1 &&
903
+ this.optionsList.length) {
904
+ this.onScroll.emit();
905
+ }
906
+ }
907
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AutoCompleteSingleSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
908
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", 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: "-\r\n<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=\"drop_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 ? 'opacity-50 pe-none'\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 ? 'opacity-50 pe-none'\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-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-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-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-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(--neutral-900);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 .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(5rem / 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(--neutral-900)}.main_container .dropdown_list_single_auto_select ul li:hover{background-color:var(--neutral-50)}.disableInput .input-container{pointer-events:none;background-color:#e4e4e4;border:1px solid #afafaf;border-radius:3px}.disableInput .input-container input{pointer-events:none;background-color:#e4e4e4}\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"] }] });
909
+ }
910
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AutoCompleteSingleSelectComponent, decorators: [{
911
+ type: Component,
912
+ args: [{ selector: 'cats-ui-auto-complete-single-select', imports: [CommonModule, FormsModule, OutsideClickDirective], template: "-\r\n<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=\"drop_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 ? 'opacity-50 pe-none'\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 ? 'opacity-50 pe-none'\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-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-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-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-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(--neutral-900);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 .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(5rem / 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(--neutral-900)}.main_container .dropdown_list_single_auto_select ul li:hover{background-color:var(--neutral-50)}.disableInput .input-container{pointer-events:none;background-color:#e4e4e4;border:1px solid #afafaf;border-radius:3px}.disableInput .input-container input{pointer-events:none;background-color:#e4e4e4}\n"] }]
913
+ }], ctorParameters: () => [], propDecorators: { autoSingleSelectConfig: [{
914
+ type: Input
915
+ }], selectedItem: [{
916
+ type: Input
917
+ }], optionsList: [{
918
+ type: Input
919
+ }], parentNativeElement: [{
920
+ type: Input
921
+ }], onItemSelection: [{
922
+ type: Output
923
+ }], onScroll: [{
924
+ type: Output
925
+ }] } });
926
+
927
+ class AutoCompleteMultiSelectComponent {
928
+ autoCompleteMultiSelectConfig;
929
+ selectedItem;
930
+ optionsList = [];
931
+ parentNativeElement;
932
+ onItemSelection = new EventEmitter();
933
+ onScroll = new EventEmitter();
934
+ showDropdown = false;
935
+ inputValue = '';
936
+ selectedOptions = [];
937
+ isSelectedAll = false;
938
+ constructor() { }
939
+ ngOnInit() { }
940
+ ngOnChanges() {
941
+ this.applyDefaultConfig();
942
+ }
943
+ applyDefaultConfig() {
944
+ const defaults = new AutoCompleteMultiSelectConfig();
945
+ this.autoCompleteMultiSelectConfig = {
946
+ ...defaults,
947
+ ...this.autoCompleteMultiSelectConfig,
948
+ };
949
+ }
950
+ /**
951
+ * @description Method to toggle dropdown list
952
+ * @author Shiva Kant
953
+ */
954
+ toggleDropdown() {
955
+ this.showDropdown = !this.showDropdown;
956
+ if (this.parentNativeElement) {
957
+ this.parentNativeElement.scrollIntoView({
958
+ behavior: 'smooth',
959
+ block: 'center',
960
+ });
961
+ let parentDiv = document.getElementById(this.parentNativeElement);
962
+ setTimeout(() => {
963
+ let parentBoundary = parentDiv?.getBoundingClientRect() || {};
964
+ let dropdonwList = document.getElementById('container_scroll');
965
+ let elBoundary = dropdonwList?.getBoundingClientRect() || {};
966
+ if (parentBoundary?.['bottom'] < elBoundary?.['bottom']) {
967
+ dropdonwList.style['transform'] = `translate(0px,-${elBoundary?.['height'] + 54}px`;
968
+ }
969
+ }, 20);
970
+ }
971
+ }
972
+ /**
973
+ * @description method to update selected item
974
+ * @author Shiva Kant
975
+ * @param item this is selected item from list
976
+ * @param type type of list
977
+ * @returns none
978
+ */
979
+ updateSelectedItem(item, type) {
980
+ if (type === 'object') {
981
+ // Toggle the option's isSelected
982
+ item.isSelected = !item.isSelected;
983
+ if (item.isSelected) {
984
+ // add to selectedOptions if not already present
985
+ const exists = this.selectedOptions.some((opt) => this.isObject(opt) &&
986
+ opt[this.autoCompleteMultiSelectConfig.textField] ===
987
+ item[this.autoCompleteMultiSelectConfig.textField]);
988
+ if (!exists)
989
+ this.selectedOptions.push(item);
990
+ }
991
+ else {
992
+ // remove from selectedOptions
993
+ this.selectedOptions = this.selectedOptions.filter((opt) => !(this.isObject(opt) &&
994
+ opt[this.autoCompleteMultiSelectConfig.textField] ===
995
+ item[this.autoCompleteMultiSelectConfig.textField]));
996
+ }
997
+ }
998
+ else {
999
+ // string type
1000
+ const existsIndex = this.selectedOptions.findIndex((opt) => opt === item);
1001
+ if (existsIndex > -1) {
1002
+ // remove
1003
+ this.selectedOptions.splice(existsIndex, 1);
1004
+ }
1005
+ else {
1006
+ // add
1007
+ this.selectedOptions.push(item);
1008
+ }
1009
+ // If optionsList contains this string, also toggle its isSelected there
1010
+ const idxInOptions = this.optionsList.findIndex((o) => typeof o === 'string' && o === item);
1011
+ if (idxInOptions > -1) {
1012
+ // toggle corresponding option's isSelected
1013
+ const opt = this.optionsList[idxInOptions];
1014
+ opt.isSelected = !opt.isSelected;
1015
+ }
1016
+ }
1017
+ // keep select all state consistent
1018
+ this.updateSelectAllState();
1019
+ this.onItemSelection.emit(this.selectedOptions);
1020
+ }
1021
+ /**
1022
+ * @description method to checkUncheckAll
1023
+ * @author Shiva Kant
1024
+ */
1025
+ checkUncheckAll(event) {
1026
+ if (event)
1027
+ event.stopPropagation();
1028
+ this.isSelectedAll = !this.isSelectedAll;
1029
+ this.optionsList.forEach((item) => {
1030
+ if (!this.autoCompleteMultiSelectConfig.disabledField ||
1031
+ !item[this.autoCompleteMultiSelectConfig.disabledField]) {
1032
+ item.isSelected = this.isSelectedAll;
1033
+ }
1034
+ });
1035
+ // Keep custom values intact
1036
+ const customChips = this.selectedOptions.filter((opt) => this.isObject(opt)
1037
+ ? !this.optionsList.some((o) => o[this.autoCompleteMultiSelectConfig.textField] ===
1038
+ opt[this.autoCompleteMultiSelectConfig.textField])
1039
+ : !this.optionsList.includes(opt));
1040
+ const selectedOptionItems = this.optionsList.filter((opt) => opt.isSelected);
1041
+ this.selectedOptions = [...customChips, ...selectedOptionItems];
1042
+ this.onItemSelection.emit(this.selectedOptions);
1043
+ }
1044
+ /**
1045
+ * @description method to removeChip
1046
+ * @author Shiva Kant
1047
+ */
1048
+ removeChip(item) {
1049
+ // Remove from selectedOptions
1050
+ this.selectedOptions = this.selectedOptions.filter((opt) => this.isObject(opt)
1051
+ ? opt[this.autoCompleteMultiSelectConfig.textField] !==
1052
+ (this.isObject(item)
1053
+ ? item[this.autoCompleteMultiSelectConfig.textField]
1054
+ : item)
1055
+ : opt !== item);
1056
+ // If item corresponds to an optionsList entry, unselect it there too
1057
+ if (this.isObject(item)) {
1058
+ const idx = this.optionsList.findIndex((o) => this.isObject(o) &&
1059
+ o[this.autoCompleteMultiSelectConfig.textField] ===
1060
+ item[this.autoCompleteMultiSelectConfig.textField]);
1061
+ if (idx > -1) {
1062
+ (this.optionsList[idx]).isSelected = false;
1063
+ }
1064
+ }
1065
+ else {
1066
+ // string case
1067
+ const idx = this.optionsList.findIndex((o) => o === item);
1068
+ if (idx > -1) {
1069
+ (this.optionsList[idx]).isSelected = false;
1070
+ }
1071
+ }
1072
+ // update select all state & emit
1073
+ this.updateSelectAllState();
1074
+ this.onItemSelection.emit(this.selectedOptions);
1075
+ }
1076
+ /**
1077
+ * @description method to update dropdown list state on input type
1078
+ * @author Shiva Kant
1079
+ */
1080
+ updateDropdownStatus() {
1081
+ this.showDropdown = true;
1082
+ }
1083
+ /**
1084
+ * @description method to check if the list is Array of string or object
1085
+ * @author Shiva Kant
1086
+ * @param data this is the any one one item of list
1087
+ * @returns boolean
1088
+ */
1089
+ isObject(data) {
1090
+ const type = typeof data;
1091
+ return data && type != 'string';
1092
+ }
1093
+ /**
1094
+ * @description This method is use to close dropdown on onClickEnter
1095
+ * @author Shiva Kant
1096
+ */
1097
+ onClickEnter(control) {
1098
+ if (!this.inputValue.trim())
1099
+ return;
1100
+ // pattern check
1101
+ if (this.autoCompleteMultiSelectConfig.pattern) {
1102
+ const regex = new RegExp(this.autoCompleteMultiSelectConfig.pattern);
1103
+ if (!regex.test(this.inputValue)) {
1104
+ this.inputValue = '';
1105
+ return;
1106
+ }
1107
+ }
1108
+ const val = this.inputValue.trim();
1109
+ const valLower = val.toLowerCase();
1110
+ // Avoid duplicate
1111
+ const exists = this.selectedOptions.some((opt) => this.isObject(opt)
1112
+ ? opt[this.autoCompleteMultiSelectConfig.textField].toLowerCase() ===
1113
+ valLower
1114
+ : opt.toLowerCase() === valLower);
1115
+ if (exists) {
1116
+ this.inputValue = '';
1117
+ return;
1118
+ }
1119
+ // Try find matched item in optionsList
1120
+ const matchedItem = this.isObject(this.optionsList?.[0])
1121
+ ? this.optionsList.find((opt) => opt[this.autoCompleteMultiSelectConfig.textField].toLowerCase() ===
1122
+ valLower)
1123
+ : this.optionsList.find((opt) => opt.toLowerCase() === valLower);
1124
+ if (matchedItem) {
1125
+ // If matched, ensure option is marked selected and present in selectedOptions
1126
+ matchedItem.isSelected = true;
1127
+ const already = this.selectedOptions.some((opt) => this.isObject(opt)
1128
+ ? opt[this.autoCompleteMultiSelectConfig.textField] ===
1129
+ matchedItem[this.autoCompleteMultiSelectConfig.textField]
1130
+ : opt === matchedItem);
1131
+ if (!already)
1132
+ this.selectedOptions.push(matchedItem);
1133
+ }
1134
+ else if (this.autoCompleteMultiSelectConfig.customInput) {
1135
+ // create custom item and mark it selected
1136
+ let newItem = val;
1137
+ if (this.isObject(this.optionsList?.[0])) {
1138
+ newItem = {
1139
+ [this.autoCompleteMultiSelectConfig.idField]: null,
1140
+ [this.autoCompleteMultiSelectConfig.textField]: val,
1141
+ isSelected: true, // mark selected for consistency
1142
+ __isCustom: true, // optional flag to identify custom items
1143
+ };
1144
+ }
1145
+ this.selectedOptions.push(newItem);
1146
+ }
1147
+ // reset input but keep dropdown open (as you wanted)
1148
+ this.inputValue = '';
1149
+ // update select all state and emit
1150
+ this.updateSelectAllState();
1151
+ this.onItemSelection.emit(this.selectedOptions);
1152
+ }
1153
+ outsideClicked() {
1154
+ this.showDropdown = false;
1155
+ }
1156
+ /**
1157
+ * @description method to load more list
1158
+ * @author Shiva Kant
1159
+ * @param event
1160
+ */
1161
+ onDivScroll(event) {
1162
+ if (event.target.offsetHeight + event.target.scrollTop >=
1163
+ event.target.scrollHeight - 1 &&
1164
+ this.optionsList.length) {
1165
+ this.onScroll.emit();
1166
+ }
1167
+ }
1168
+ updateSelectAllState() {
1169
+ // only consider non-disabled items for select-all state
1170
+ const selectable = this.optionsList.filter((opt) => !(this.autoCompleteMultiSelectConfig.disabledField &&
1171
+ opt[this.autoCompleteMultiSelectConfig.disabledField]));
1172
+ this.isSelectedAll =
1173
+ selectable.length > 0 && selectable.every((opt) => !!opt.isSelected);
1174
+ }
1175
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AutoCompleteMultiSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1176
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", 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=\"drop_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\">\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-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-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-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-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(--neutral-900);flex:1;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 .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(5rem / 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(--neutral-900)}.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:not(:first-child):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"] }] });
1177
+ }
1178
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AutoCompleteMultiSelectComponent, decorators: [{
1179
+ type: Component,
1180
+ 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=\"drop_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\">\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-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-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-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-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(--neutral-900);flex:1;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 .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(5rem / 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(--neutral-900)}.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:not(:first-child):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"] }]
1181
+ }], ctorParameters: () => [], propDecorators: { autoCompleteMultiSelectConfig: [{
1182
+ type: Input
1183
+ }], selectedItem: [{
1184
+ type: Input
1185
+ }], optionsList: [{
1186
+ type: Input
1187
+ }], parentNativeElement: [{
1188
+ type: Input
1189
+ }], onItemSelection: [{
1190
+ type: Output
1191
+ }], onScroll: [{
1192
+ type: Output
1193
+ }] } });
1194
+
1195
+ class ToogleButtonComponent {
1196
+ toggleConfig;
1197
+ onToggled = new EventEmitter();
1198
+ onChange = () => { };
1199
+ onTouched = () => { };
1200
+ toggle() {
1201
+ if (!this.toggleConfig.disabled) {
1202
+ this.toggleConfig.checked = !this.toggleConfig.checked;
1203
+ this.onToggled.emit(this.toggleConfig.checked);
1204
+ }
1205
+ }
1206
+ // ControlValueAccessor methods
1207
+ writeValue(value) {
1208
+ this.toggleConfig.checked = value;
1209
+ }
1210
+ registerOnChange(fn) {
1211
+ this.onChange = fn;
1212
+ }
1213
+ registerOnTouched(fn) {
1214
+ this.onTouched = fn;
1215
+ }
1216
+ setDisabledState(isDisabled) {
1217
+ this.toggleConfig.disabled = isDisabled;
1218
+ }
1219
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ToogleButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1220
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: ToogleButtonComponent, isStandalone: true, selector: "cats-ui-toogle-button", inputs: { toggleConfig: "toggleConfig" }, outputs: { onToggled: "onToggled" }, providers: [
1221
+ {
1222
+ provide: NG_VALUE_ACCESSOR,
1223
+ useExisting: forwardRef(() => ToogleButtonComponent),
1224
+ multi: true,
1225
+ },
1226
+ ], 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-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-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-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-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%}\n"] });
1227
+ }
1228
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ToogleButtonComponent, decorators: [{
1229
+ type: Component,
1230
+ args: [{ selector: 'cats-ui-toogle-button', imports: [], providers: [
1231
+ {
1232
+ provide: NG_VALUE_ACCESSOR,
1233
+ useExisting: forwardRef(() => ToogleButtonComponent),
1234
+ multi: true,
1235
+ },
1236
+ ], 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-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-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-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-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%}\n"] }]
1237
+ }], propDecorators: { toggleConfig: [{
1238
+ type: Input
1239
+ }], onToggled: [{
1240
+ type: Output
1241
+ }] } });
1242
+
1243
+ class CheckboxButtonComponent {
1244
+ checkBoxConfig = [];
1245
+ onCheckBoxSelection = new EventEmitter();
1246
+ selectedOptions = [];
1247
+ onChange = () => { };
1248
+ onTouched = () => { };
1249
+ ngOnChanges() {
1250
+ if (this.selectedOptions?.length) {
1251
+ this.applySelectedOptions();
1252
+ }
1253
+ }
1254
+ /**
1255
+ * @description Method is to Apply selectedOptions on input change
1256
+ * @author Shiva Kant
1257
+ */
1258
+ applySelectedOptions() {
1259
+ this.checkBoxConfig = this.checkBoxConfig.map((task) => {
1260
+ const parentChecked = this.selectedOptions.includes(task.id) ||
1261
+ this.selectedOptions.includes(task.name);
1262
+ const updatedSubtasks = (task.subtasks ?? []).map((sub) => {
1263
+ const subChecked = this.selectedOptions.includes(sub.id) ||
1264
+ this.selectedOptions.includes(sub.name);
1265
+ return { ...sub, checked: subChecked ?? false };
1266
+ });
1267
+ const hasCheckedSub = updatedSubtasks.some((s) => s.checked);
1268
+ return {
1269
+ ...task,
1270
+ checked: parentChecked || hasCheckedSub,
1271
+ subtasks: updatedSubtasks,
1272
+ };
1273
+ });
1274
+ }
1275
+ /**
1276
+ * @description Method is to Checkbox change handler
1277
+ * @author Shiva Kant
1278
+ */
1279
+ onCheckboxChange(event, parentIndex, subIndex) {
1280
+ const checked = event.target.checked;
1281
+ this.checkBoxConfig = this.checkBoxConfig.map((task, i) => {
1282
+ // Ensure `checked` and `subtasks` always exist safely
1283
+ const safeTask = {
1284
+ ...task,
1285
+ checked: task.checked ?? false,
1286
+ subtasks: task.subtasks ?? [],
1287
+ };
1288
+ if (i === parentIndex) {
1289
+ if (subIndex === undefined) {
1290
+ // Parent checkbox toggled
1291
+ safeTask.checked = checked;
1292
+ safeTask.subtasks = safeTask.subtasks.map((sub) => ({
1293
+ ...sub,
1294
+ checked: checked,
1295
+ }));
1296
+ }
1297
+ else if (safeTask.subtasks[subIndex]) {
1298
+ // Subtask toggled safely
1299
+ safeTask.subtasks[subIndex].checked = checked;
1300
+ // Parent becomes checked only if all subtasks are checked
1301
+ safeTask.checked = safeTask.subtasks.every((sub) => sub.checked);
1302
+ }
1303
+ }
1304
+ return safeTask;
1305
+ });
1306
+ // Emit only checked items
1307
+ const checkedTasks = this.checkBoxConfig
1308
+ .filter((task) => (task.checked ?? false) ||
1309
+ task.subtasks?.some((s) => s.checked ?? false))
1310
+ .map((task) => ({
1311
+ ...task,
1312
+ checked: (task.checked ?? false) ||
1313
+ task.subtasks?.some((s) => s.checked ?? false),
1314
+ subtasks: task.subtasks?.filter((s) => s.checked ?? false) || [],
1315
+ }));
1316
+ this.onCheckBoxSelection.emit(checkedTasks);
1317
+ this.onChange(this.checkBoxConfig);
1318
+ this.onTouched();
1319
+ }
1320
+ // --- Indeterminate state for parent ---
1321
+ partiallyComplete(task) {
1322
+ if (!task?.subtasks?.length)
1323
+ return false;
1324
+ const done = task.subtasks.filter((t) => t.checked).length;
1325
+ return done > 0 && done < task.subtasks.length;
1326
+ }
1327
+ // --- ControlValueAccessor methods ---
1328
+ writeValue(value) {
1329
+ if (value) {
1330
+ this.checkBoxConfig = value.map((task) => ({
1331
+ ...task,
1332
+ subtasks: task.subtasks ? [...task.subtasks] : [],
1333
+ }));
1334
+ }
1335
+ }
1336
+ registerOnChange(fn) {
1337
+ this.onChange = fn;
1338
+ }
1339
+ registerOnTouched(fn) {
1340
+ this.onTouched = fn;
1341
+ }
1342
+ setDisabledState(isDisabled) {
1343
+ if (isDisabled) {
1344
+ this.checkBoxConfig.forEach((task) => {
1345
+ task.checked = false;
1346
+ task.subtasks?.forEach((sub) => (sub.checked = false));
1347
+ });
1348
+ }
1349
+ }
1350
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CheckboxButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1351
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CheckboxButtonComponent, isStandalone: true, selector: "cats-ui-checkbox-button", inputs: { checkBoxConfig: "checkBoxConfig", selectedOptions: "selectedOptions" }, outputs: { onCheckBoxSelection: "onCheckBoxSelection" }, providers: [
1352
+ {
1353
+ provide: NG_VALUE_ACCESSOR,
1354
+ useExisting: forwardRef(() => CheckboxButtonComponent),
1355
+ multi: true,
1356
+ },
1357
+ ], usesOnChanges: true, ngImport: i0, template: "<div class=\"parent_container\">\r\n <ul>\r\n @for (task of checkBoxConfig; 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 [checked]=\"task.checked\"\r\n [indeterminate]=\"partiallyComplete(task)\"\r\n (change)=\"onCheckboxChange($event, $index)\"\r\n />\r\n <span class=\"textTruncate\">{{ task.name }}</span>\r\n </label>\r\n <!-- Subtasks -->\r\n @if (task.subtasks && task.subtasks.length > 0) {\r\n <ul>\r\n @for ( sub of task.subtasks; let idx = $index ;track $index; ) {\r\n <li class=\"checkbox_container sub\">\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=\"textTruncate\">{{ sub.name }}</span>\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-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-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-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-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]{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"] });
1358
+ }
1359
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CheckboxButtonComponent, decorators: [{
1360
+ type: Component,
1361
+ args: [{ selector: 'cats-ui-checkbox-button', imports: [], providers: [
1362
+ {
1363
+ provide: NG_VALUE_ACCESSOR,
1364
+ useExisting: forwardRef(() => CheckboxButtonComponent),
1365
+ multi: true,
1366
+ },
1367
+ ], template: "<div class=\"parent_container\">\r\n <ul>\r\n @for (task of checkBoxConfig; 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 [checked]=\"task.checked\"\r\n [indeterminate]=\"partiallyComplete(task)\"\r\n (change)=\"onCheckboxChange($event, $index)\"\r\n />\r\n <span class=\"textTruncate\">{{ task.name }}</span>\r\n </label>\r\n <!-- Subtasks -->\r\n @if (task.subtasks && task.subtasks.length > 0) {\r\n <ul>\r\n @for ( sub of task.subtasks; let idx = $index ;track $index; ) {\r\n <li class=\"checkbox_container sub\">\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=\"textTruncate\">{{ sub.name }}</span>\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-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-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-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-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]{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"] }]
1368
+ }], propDecorators: { checkBoxConfig: [{
1369
+ type: Input
1370
+ }], onCheckBoxSelection: [{
1371
+ type: Output
1372
+ }], selectedOptions: [{
1373
+ type: Input
1374
+ }] } });
1375
+
1376
+ class RadioButtonComponent {
1377
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: RadioButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1378
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: RadioButtonComponent, isStandalone: true, selector: "cats-ui-radio-button", ngImport: i0, template: "<p>radio-button works!</p>\r\n", styles: [""] });
1379
+ }
1380
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: RadioButtonComponent, decorators: [{
1381
+ type: Component,
1382
+ args: [{ selector: 'cats-ui-radio-button', imports: [], template: "<p>radio-button works!</p>\r\n" }]
1383
+ }] });
1384
+
1385
+ /*
1386
+ * Public API Surface of cats-ui
1387
+ */
1388
+
1389
+ /**
1390
+ * Generated bundle index. Do not edit.
1391
+ */
1392
+
1393
+ export { AutoCompleteMultiSelectComponent, AutoCompleteMultiSelectConfig, AutoCompleteSingleSelectComponent, AutoCompleteSingleSelectConfig, CatsUiService, CheckBoxConfig, CheckBoxSubtask, CheckboxButtonComponent, 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 };
1394
+ //# sourceMappingURL=cats-ui.mjs.map