@koobiq/components 16.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1007) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +6 -0
  3. package/_index.scss +3 -0
  4. package/alert/README.md +0 -0
  5. package/alert/_alert-theme.scss +61 -0
  6. package/alert/alert.component.d.ts +22 -0
  7. package/alert/alert.component.scss +81 -0
  8. package/alert/alert.module.d.ts +10 -0
  9. package/alert/index.d.ts +1 -0
  10. package/alert/public-api.d.ts +2 -0
  11. package/autocomplete/README.md +0 -0
  12. package/autocomplete/_autocomplete-theme.scss +21 -0
  13. package/autocomplete/autocomplete-origin.directive.d.ts +12 -0
  14. package/autocomplete/autocomplete-trigger.directive.d.ts +167 -0
  15. package/autocomplete/autocomplete.component.d.ts +73 -0
  16. package/autocomplete/autocomplete.module.d.ts +12 -0
  17. package/autocomplete/autocomplete.scss +63 -0
  18. package/autocomplete/index.d.ts +1 -0
  19. package/autocomplete/public-api.d.ts +4 -0
  20. package/button/README.md +0 -0
  21. package/button/_button-base.scss +69 -0
  22. package/button/_button-theme.scss +180 -0
  23. package/button/button.component.d.ts +58 -0
  24. package/button/button.module.d.ts +11 -0
  25. package/button/button.scss +59 -0
  26. package/button/index.d.ts +1 -0
  27. package/button/public-api.d.ts +2 -0
  28. package/button-toggle/README.md +0 -0
  29. package/button-toggle/_button-toggle-theme.scss +92 -0
  30. package/button-toggle/button-toggle.component.d.ts +145 -0
  31. package/button-toggle/button-toggle.module.d.ts +10 -0
  32. package/button-toggle/button-toggle.scss +163 -0
  33. package/button-toggle/index.d.ts +1 -0
  34. package/button-toggle/public-api.d.ts +2 -0
  35. package/card/README.md +0 -0
  36. package/card/_card-theme.scss +61 -0
  37. package/card/card.component.d.ts +28 -0
  38. package/card/card.component.scss +40 -0
  39. package/card/card.module.d.ts +10 -0
  40. package/card/index.d.ts +1 -0
  41. package/card/public-api.d.ts +2 -0
  42. package/checkbox/README.md +1 -0
  43. package/checkbox/_checkbox-theme.scss +120 -0
  44. package/checkbox/checkbox-config.d.ts +13 -0
  45. package/checkbox/checkbox-module.d.ts +9 -0
  46. package/checkbox/checkbox-required-validator.d.ts +13 -0
  47. package/checkbox/checkbox.d.ts +133 -0
  48. package/checkbox/checkbox.scss +177 -0
  49. package/checkbox/index.d.ts +1 -0
  50. package/checkbox/public-api.d.ts +4 -0
  51. package/code-block/README.md +32 -0
  52. package/code-block/_code-block-theme.scss +326 -0
  53. package/code-block/actionbar.component.d.ts +22 -0
  54. package/code-block/actionbar.component.scss +27 -0
  55. package/code-block/code-block.component.d.ts +74 -0
  56. package/code-block/code-block.module.d.ts +14 -0
  57. package/code-block/code-block.scss +128 -0
  58. package/code-block/code-block.types.d.ts +16 -0
  59. package/code-block/index.d.ts +1 -0
  60. package/code-block/public-api.d.ts +3 -0
  61. package/core/_index.scss +1 -0
  62. package/core/animation/animation.d.ts +6 -0
  63. package/core/animation/fade-animations.d.ts +2 -0
  64. package/core/animation/index.d.ts +3 -0
  65. package/core/animation/select-animations.d.ts +12 -0
  66. package/core/common-behaviors/color.d.ts +33 -0
  67. package/core/common-behaviors/common-module.d.ts +25 -0
  68. package/core/common-behaviors/constructor.d.ts +9 -0
  69. package/core/common-behaviors/disabled.d.ts +8 -0
  70. package/core/common-behaviors/error-state.d.ts +28 -0
  71. package/core/common-behaviors/index.d.ts +5 -0
  72. package/core/common-behaviors/tabindex.d.ts +8 -0
  73. package/core/datetime/date-adapter.d.ts +12 -0
  74. package/core/datetime/date-formats.d.ts +4 -0
  75. package/core/datetime/index.d.ts +2 -0
  76. package/core/error/error-options.d.ts +14 -0
  77. package/core/form-field/form-field-ref.d.ts +11 -0
  78. package/core/form-field/index.d.ts +1 -0
  79. package/core/formatters/date/formatter.d.ts +9 -0
  80. package/core/formatters/date/formatter.pipe.d.ts +109 -0
  81. package/core/formatters/index.d.ts +11 -0
  82. package/core/formatters/number/formatter.d.ts +37 -0
  83. package/core/forms/_forms-theme.scss +34 -0
  84. package/core/forms/_forms.scss +114 -0
  85. package/core/forms/forms-module.d.ts +7 -0
  86. package/core/forms/forms.directive.d.ts +22 -0
  87. package/core/forms/index.d.ts +2 -0
  88. package/core/highlight/_highlight-theme.scss +8 -0
  89. package/core/highlight/highlight.pipe.d.ts +8 -0
  90. package/core/highlight/index.d.ts +9 -0
  91. package/core/index.d.ts +1 -0
  92. package/core/label/label-options.d.ts +13 -0
  93. package/core/line/line.d.ts +28 -0
  94. package/core/locales/en-US.d.ts +11 -0
  95. package/core/locales/es-LA.d.ts +7 -0
  96. package/core/locales/fa-IR.d.ts +7 -0
  97. package/core/locales/index.d.ts +4 -0
  98. package/core/locales/locale-service.d.ts +63 -0
  99. package/core/locales/locale-service.module.d.ts +6 -0
  100. package/core/locales/pt-BR.d.ts +7 -0
  101. package/core/locales/ru-RU.d.ts +11 -0
  102. package/core/locales/zh-CN.d.ts +7 -0
  103. package/core/option/_optgroup-theme.scss +25 -0
  104. package/core/option/_option-action-theme.scss +41 -0
  105. package/core/option/_option-theme.scss +44 -0
  106. package/core/option/action.d.ts +44 -0
  107. package/core/option/action.scss +28 -0
  108. package/core/option/index.d.ts +4 -0
  109. package/core/option/optgroup.d.ts +16 -0
  110. package/core/option/optgroup.scss +16 -0
  111. package/core/option/option-module.d.ts +11 -0
  112. package/core/option/option.d.ts +116 -0
  113. package/core/option/option.scss +62 -0
  114. package/core/overlay/overlay-position-map.d.ts +34 -0
  115. package/core/pop-up/_pop-up.scss +129 -0
  116. package/core/pop-up/constants.d.ts +30 -0
  117. package/core/pop-up/index.d.ts +3 -0
  118. package/core/pop-up/pop-up-trigger.d.ts +71 -0
  119. package/core/pop-up/pop-up.d.ts +36 -0
  120. package/core/public-api.d.ts +21 -0
  121. package/core/select/constants.d.ts +23 -0
  122. package/core/select/errors.d.ts +19 -0
  123. package/core/select/events.d.ts +1 -0
  124. package/core/select/index.d.ts +3 -0
  125. package/core/selection/constants.d.ts +4 -0
  126. package/core/selection/index.d.ts +3 -0
  127. package/core/selection/pseudo-checkbox/_pseudo-checkbox-theme.scss +48 -0
  128. package/core/selection/pseudo-checkbox/pseudo-checkbox.d.ts +32 -0
  129. package/core/selection/pseudo-checkbox/pseudo-checkbox.module.d.ts +8 -0
  130. package/core/selection/pseudo-checkbox/pseudo-checkbox.scss +77 -0
  131. package/core/services/measure-scrollbar.service.d.ts +11 -0
  132. package/core/styles/_core.scss +11 -0
  133. package/core/styles/_koobiq-theme.scss +153 -0
  134. package/core/styles/_tokens.kbq.import.scss +4 -0
  135. package/core/styles/_tokens.scss +6 -0
  136. package/core/styles/_variables.scss +9 -0
  137. package/core/styles/common/_animation.scss +35 -0
  138. package/core/styles/common/_button.scss +10 -0
  139. package/core/styles/common/_clearfix.scss +13 -0
  140. package/core/styles/common/_groups.scss +119 -0
  141. package/core/styles/common/_index.scss +13 -0
  142. package/core/styles/common/_input.scss +28 -0
  143. package/core/styles/common/_layout.scss +8 -0
  144. package/core/styles/common/_list.scss +46 -0
  145. package/core/styles/common/_overlay.scss +173 -0
  146. package/core/styles/common/_popup.scss +11 -0
  147. package/core/styles/common/_rtl.scss +33 -0
  148. package/core/styles/common/_size.scss +8 -0
  149. package/core/styles/common/_vendor-prefixes.scss +24 -0
  150. package/core/styles/common/_visually-hidden.scss +36 -0
  151. package/core/styles/functions/_index.scss +3 -0
  152. package/core/styles/functions/_number.scss +65 -0
  153. package/core/styles/functions/_string.scss +19 -0
  154. package/core/styles/functions/_timing.scss +30 -0
  155. package/core/styles/theming/_badges-theme.scss +118 -0
  156. package/core/styles/theming/_badges.scss +57 -0
  157. package/core/styles/theming/_components-theming.scss +1218 -0
  158. package/core/styles/theming/_index.scss +2 -0
  159. package/core/styles/theming/_scrollbars-theme.scss +77 -0
  160. package/core/styles/theming/_theming.scss +144 -0
  161. package/core/styles/theming/prebuilt/light-theme.scss +20 -0
  162. package/core/styles/typography/_index.scss +2 -0
  163. package/core/styles/typography/_typography-utils.scss +78 -0
  164. package/core/styles/typography/_typography.scss +191 -0
  165. package/core/styles/visual/_body.scss +35 -0
  166. package/core/styles/visual/_index.scss +3 -0
  167. package/core/styles/visual/_layout-media.scss +7 -0
  168. package/core/styles/visual/_layout.scss +527 -0
  169. package/core/title/index.d.ts +1 -0
  170. package/core/title/title-text-ref.d.ts +6 -0
  171. package/core/utils/data-size/config.d.ts +20 -0
  172. package/core/utils/data-size/data-size.pipe.d.ts +13 -0
  173. package/core/utils/data-size/index.d.ts +3 -0
  174. package/core/utils/data-size/size.d.ts +16 -0
  175. package/core/utils/index.d.ts +1 -0
  176. package/core/utils/public-api.d.ts +2 -0
  177. package/core/utils/utils.d.ts +2 -0
  178. package/core/validation/index.d.ts +1 -0
  179. package/core/validation/validation.d.ts +7 -0
  180. package/core/version.d.ts +2 -0
  181. package/datepicker/README.md +0 -0
  182. package/datepicker/_datepicker-theme.scss +101 -0
  183. package/datepicker/calendar-body.component.d.ts +55 -0
  184. package/datepicker/calendar-body.scss +61 -0
  185. package/datepicker/calendar-header.component.d.ts +45 -0
  186. package/datepicker/calendar-header.scss +75 -0
  187. package/datepicker/calendar.component.d.ts +81 -0
  188. package/datepicker/calendar.scss +68 -0
  189. package/datepicker/datepicker-animations.d.ts +9 -0
  190. package/datepicker/datepicker-content.scss +33 -0
  191. package/datepicker/datepicker-errors.d.ts +2 -0
  192. package/datepicker/datepicker-input.directive.d.ts +180 -0
  193. package/datepicker/datepicker-input.scss +15 -0
  194. package/datepicker/datepicker-intl.d.ts +32 -0
  195. package/datepicker/datepicker-module.d.ts +20 -0
  196. package/datepicker/datepicker-toggle.component.d.ts +35 -0
  197. package/datepicker/datepicker-toggle.scss +41 -0
  198. package/datepicker/datepicker.component.d.ts +148 -0
  199. package/datepicker/index.d.ts +1 -0
  200. package/datepicker/month-view.component.d.ts +74 -0
  201. package/datepicker/public-api.d.ts +10 -0
  202. package/divider/README.md +0 -0
  203. package/divider/_divider-theme.scss +10 -0
  204. package/divider/divider.component.d.ts +14 -0
  205. package/divider/divider.module.d.ts +8 -0
  206. package/divider/divider.scss +47 -0
  207. package/divider/index.d.ts +1 -0
  208. package/divider/public-api.d.ts +2 -0
  209. package/dl/README.md +0 -0
  210. package/dl/_dl-theme.scss +86 -0
  211. package/dl/dl.component.d.ts +27 -0
  212. package/dl/dl.module.d.ts +10 -0
  213. package/dl/dl.scss +99 -0
  214. package/dl/index.d.ts +1 -0
  215. package/dl/public-api.d.ts +2 -0
  216. package/dropdown/_dropdown-theme.scss +85 -0
  217. package/dropdown/dropdown-animations.d.ts +11 -0
  218. package/dropdown/dropdown-content.directive.d.ts +32 -0
  219. package/dropdown/dropdown-errors.d.ts +17 -0
  220. package/dropdown/dropdown-item.component.d.ts +52 -0
  221. package/dropdown/dropdown-item.scss +82 -0
  222. package/dropdown/dropdown-trigger.directive.d.ts +136 -0
  223. package/dropdown/dropdown.component.d.ts +121 -0
  224. package/dropdown/dropdown.module.d.ts +13 -0
  225. package/dropdown/dropdown.scss +79 -0
  226. package/dropdown/dropdown.types.d.ts +53 -0
  227. package/dropdown/index.d.ts +1 -0
  228. package/dropdown/public-api.d.ts +8 -0
  229. package/ellipsis-center/ellipsis-center.directive.d.ts +27 -0
  230. package/ellipsis-center/index.d.ts +1 -0
  231. package/ellipsis-center/public-api.d.ts +1 -0
  232. package/esm2022/alert/alert.component.mjs +67 -0
  233. package/esm2022/alert/alert.module.mjs +44 -0
  234. package/esm2022/alert/index.mjs +2 -0
  235. package/esm2022/alert/koobiq-components-alert.mjs +5 -0
  236. package/esm2022/alert/public-api.mjs +3 -0
  237. package/esm2022/autocomplete/autocomplete-origin.directive.mjs +21 -0
  238. package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +552 -0
  239. package/esm2022/autocomplete/autocomplete.component.mjs +153 -0
  240. package/esm2022/autocomplete/autocomplete.module.mjs +34 -0
  241. package/esm2022/autocomplete/index.mjs +2 -0
  242. package/esm2022/autocomplete/koobiq-components-autocomplete.mjs +5 -0
  243. package/esm2022/autocomplete/public-api.mjs +5 -0
  244. package/esm2022/button/button.component.mjs +164 -0
  245. package/esm2022/button/button.module.mjs +40 -0
  246. package/esm2022/button/index.mjs +2 -0
  247. package/esm2022/button/koobiq-components-button.mjs +5 -0
  248. package/esm2022/button/public-api.mjs +3 -0
  249. package/esm2022/button-toggle/button-toggle.component.mjs +381 -0
  250. package/esm2022/button-toggle/button-toggle.module.mjs +20 -0
  251. package/esm2022/button-toggle/index.mjs +2 -0
  252. package/esm2022/button-toggle/koobiq-components-button-toggle.mjs +5 -0
  253. package/esm2022/button-toggle/public-api.mjs +3 -0
  254. package/esm2022/card/card.component.mjs +80 -0
  255. package/esm2022/card/card.module.mjs +28 -0
  256. package/esm2022/card/index.mjs +2 -0
  257. package/esm2022/card/koobiq-components-card.mjs +5 -0
  258. package/esm2022/card/public-api.mjs +3 -0
  259. package/esm2022/checkbox/checkbox-config.mjs +6 -0
  260. package/esm2022/checkbox/checkbox-module.mjs +19 -0
  261. package/esm2022/checkbox/checkbox-required-validator.mjs +27 -0
  262. package/esm2022/checkbox/checkbox.mjs +304 -0
  263. package/esm2022/checkbox/index.mjs +2 -0
  264. package/esm2022/checkbox/koobiq-components-checkbox.mjs +5 -0
  265. package/esm2022/checkbox/public-api.mjs +5 -0
  266. package/esm2022/code-block/actionbar.component.mjs +67 -0
  267. package/esm2022/code-block/code-block.component.mjs +157 -0
  268. package/esm2022/code-block/code-block.module.mjs +60 -0
  269. package/esm2022/code-block/code-block.types.mjs +2 -0
  270. package/esm2022/code-block/index.mjs +2 -0
  271. package/esm2022/code-block/koobiq-components-code-block.mjs +5 -0
  272. package/esm2022/code-block/public-api.mjs +4 -0
  273. package/esm2022/core/animation/animation.mjs +8 -0
  274. package/esm2022/core/animation/fade-animations.mjs +9 -0
  275. package/esm2022/core/animation/index.mjs +4 -0
  276. package/esm2022/core/animation/select-animations.mjs +45 -0
  277. package/esm2022/core/common-behaviors/color.mjs +45 -0
  278. package/esm2022/core/common-behaviors/common-module.mjs +83 -0
  279. package/esm2022/core/common-behaviors/constructor.mjs +2 -0
  280. package/esm2022/core/common-behaviors/disabled.mjs +17 -0
  281. package/esm2022/core/common-behaviors/error-state.mjs +21 -0
  282. package/esm2022/core/common-behaviors/index.mjs +6 -0
  283. package/esm2022/core/common-behaviors/tabindex.mjs +18 -0
  284. package/esm2022/core/datetime/date-adapter.mjs +15 -0
  285. package/esm2022/core/datetime/date-formats.mjs +3 -0
  286. package/esm2022/core/datetime/index.mjs +3 -0
  287. package/esm2022/core/error/error-options.mjs +26 -0
  288. package/esm2022/core/form-field/form-field-ref.mjs +8 -0
  289. package/esm2022/core/form-field/index.mjs +2 -0
  290. package/esm2022/core/formatters/date/formatter.mjs +21 -0
  291. package/esm2022/core/formatters/date/formatter.pipe.mjs +220 -0
  292. package/esm2022/core/formatters/index.mjs +78 -0
  293. package/esm2022/core/formatters/number/formatter.mjs +129 -0
  294. package/esm2022/core/forms/forms-module.mjs +24 -0
  295. package/esm2022/core/forms/forms.directive.mjs +66 -0
  296. package/esm2022/core/forms/index.mjs +3 -0
  297. package/esm2022/core/highlight/highlight.pipe.mjs +23 -0
  298. package/esm2022/core/highlight/index.mjs +19 -0
  299. package/esm2022/core/index.mjs +2 -0
  300. package/esm2022/core/koobiq-components-core.mjs +5 -0
  301. package/esm2022/core/label/label-options.mjs +4 -0
  302. package/esm2022/core/line/line.mjs +70 -0
  303. package/esm2022/core/locales/en-US.mjs +10 -0
  304. package/esm2022/core/locales/es-LA.mjs +6 -0
  305. package/esm2022/core/locales/fa-IR.mjs +6 -0
  306. package/esm2022/core/locales/index.mjs +5 -0
  307. package/esm2022/core/locales/locale-service.mjs +70 -0
  308. package/esm2022/core/locales/locale-service.module.mjs +19 -0
  309. package/esm2022/core/locales/pt-BR.mjs +6 -0
  310. package/esm2022/core/locales/ru-RU.mjs +10 -0
  311. package/esm2022/core/locales/zh-CN.mjs +6 -0
  312. package/esm2022/core/option/action.mjs +122 -0
  313. package/esm2022/core/option/index.mjs +5 -0
  314. package/esm2022/core/option/optgroup.mjs +31 -0
  315. package/esm2022/core/option/option-module.mjs +21 -0
  316. package/esm2022/core/option/option.mjs +262 -0
  317. package/esm2022/core/overlay/overlay-position-map.mjs +244 -0
  318. package/esm2022/core/pop-up/constants.mjs +36 -0
  319. package/esm2022/core/pop-up/index.mjs +4 -0
  320. package/esm2022/core/pop-up/pop-up-trigger.mjs +247 -0
  321. package/esm2022/core/pop-up/pop-up.mjs +94 -0
  322. package/esm2022/core/public-api.mjs +22 -0
  323. package/esm2022/core/select/constants.mjs +27 -0
  324. package/esm2022/core/select/errors.mjs +26 -0
  325. package/esm2022/core/select/events.mjs +2 -0
  326. package/esm2022/core/select/index.mjs +4 -0
  327. package/esm2022/core/selection/constants.mjs +6 -0
  328. package/esm2022/core/selection/index.mjs +4 -0
  329. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +52 -0
  330. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.module.mjs +18 -0
  331. package/esm2022/core/services/measure-scrollbar.service.mjs +48 -0
  332. package/esm2022/core/title/index.mjs +2 -0
  333. package/esm2022/core/title/title-text-ref.mjs +3 -0
  334. package/esm2022/core/utils/data-size/config.mjs +22 -0
  335. package/esm2022/core/utils/data-size/data-size.pipe.mjs +32 -0
  336. package/esm2022/core/utils/data-size/index.mjs +4 -0
  337. package/esm2022/core/utils/data-size/size.mjs +50 -0
  338. package/esm2022/core/utils/index.mjs +2 -0
  339. package/esm2022/core/utils/public-api.mjs +3 -0
  340. package/esm2022/core/utils/utils.mjs +5 -0
  341. package/esm2022/core/validation/index.mjs +2 -0
  342. package/esm2022/core/validation/validation.mjs +5 -0
  343. package/esm2022/core/version.mjs +3 -0
  344. package/esm2022/datepicker/calendar-body.component.mjs +87 -0
  345. package/esm2022/datepicker/calendar-header.component.mjs +134 -0
  346. package/esm2022/datepicker/calendar.component.mjs +175 -0
  347. package/esm2022/datepicker/datepicker-animations.mjs +32 -0
  348. package/esm2022/datepicker/datepicker-errors.mjs +6 -0
  349. package/esm2022/datepicker/datepicker-input.directive.mjs +954 -0
  350. package/esm2022/datepicker/datepicker-intl.mjs +40 -0
  351. package/esm2022/datepicker/datepicker-module.mjs +97 -0
  352. package/esm2022/datepicker/datepicker-toggle.component.mjs +86 -0
  353. package/esm2022/datepicker/datepicker.component.mjs +393 -0
  354. package/esm2022/datepicker/index.mjs +2 -0
  355. package/esm2022/datepicker/koobiq-components-datepicker.mjs +5 -0
  356. package/esm2022/datepicker/month-view.component.mjs +158 -0
  357. package/esm2022/datepicker/public-api.mjs +11 -0
  358. package/esm2022/divider/divider.component.mjs +49 -0
  359. package/esm2022/divider/divider.module.mjs +18 -0
  360. package/esm2022/divider/index.mjs +2 -0
  361. package/esm2022/divider/koobiq-components-divider.mjs +5 -0
  362. package/esm2022/divider/public-api.mjs +3 -0
  363. package/esm2022/dl/dl.component.mjs +82 -0
  364. package/esm2022/dl/dl.module.mjs +40 -0
  365. package/esm2022/dl/index.mjs +2 -0
  366. package/esm2022/dl/koobiq-components-dl.mjs +5 -0
  367. package/esm2022/dl/public-api.mjs +3 -0
  368. package/esm2022/dropdown/dropdown-animations.mjs +41 -0
  369. package/esm2022/dropdown/dropdown-content.directive.mjs +64 -0
  370. package/esm2022/dropdown/dropdown-errors.mjs +29 -0
  371. package/esm2022/dropdown/dropdown-item.component.mjs +146 -0
  372. package/esm2022/dropdown/dropdown-trigger.directive.mjs +489 -0
  373. package/esm2022/dropdown/dropdown.component.mjs +292 -0
  374. package/esm2022/dropdown/dropdown.module.mjs +48 -0
  375. package/esm2022/dropdown/dropdown.types.mjs +24 -0
  376. package/esm2022/dropdown/index.mjs +2 -0
  377. package/esm2022/dropdown/koobiq-components-dropdown.mjs +5 -0
  378. package/esm2022/dropdown/public-api.mjs +9 -0
  379. package/esm2022/ellipsis-center/ellipsis-center.directive.mjs +106 -0
  380. package/esm2022/ellipsis-center/index.mjs +2 -0
  381. package/esm2022/ellipsis-center/koobiq-components-ellipsis-center.mjs +5 -0
  382. package/esm2022/ellipsis-center/public-api.mjs +2 -0
  383. package/esm2022/file-upload/file-drop.mjs +43 -0
  384. package/esm2022/file-upload/file-upload.mjs +4 -0
  385. package/esm2022/file-upload/file-upload.module.mjs +66 -0
  386. package/esm2022/file-upload/index.mjs +2 -0
  387. package/esm2022/file-upload/koobiq-components-file-upload.mjs +5 -0
  388. package/esm2022/file-upload/multiple-file-upload.component.mjs +161 -0
  389. package/esm2022/file-upload/public-api.mjs +6 -0
  390. package/esm2022/file-upload/single-file-upload.component.mjs +130 -0
  391. package/esm2022/form-field/cleaner.mjs +14 -0
  392. package/esm2022/form-field/form-field-control.mjs +5 -0
  393. package/esm2022/form-field/form-field-errors.mjs +7 -0
  394. package/esm2022/form-field/form-field.mjs +276 -0
  395. package/esm2022/form-field/form-field.module.mjs +71 -0
  396. package/esm2022/form-field/hint.mjs +34 -0
  397. package/esm2022/form-field/index.mjs +2 -0
  398. package/esm2022/form-field/koobiq-components-form-field.mjs +5 -0
  399. package/esm2022/form-field/password-hint.mjs +144 -0
  400. package/esm2022/form-field/password-toggle.mjs +64 -0
  401. package/esm2022/form-field/prefix.mjs +13 -0
  402. package/esm2022/form-field/public-api.mjs +13 -0
  403. package/esm2022/form-field/stepper.mjs +71 -0
  404. package/esm2022/form-field/suffix.mjs +13 -0
  405. package/esm2022/form-field/validate.directive.mjs +158 -0
  406. package/esm2022/icon/icon.component.mjs +145 -0
  407. package/esm2022/icon/icon.module.mjs +40 -0
  408. package/esm2022/icon/index.mjs +2 -0
  409. package/esm2022/icon/koobiq-components-icon.mjs +5 -0
  410. package/esm2022/icon/public-api.mjs +3 -0
  411. package/esm2022/index.mjs +2 -0
  412. package/esm2022/input/index.mjs +2 -0
  413. package/esm2022/input/input-errors.mjs +4 -0
  414. package/esm2022/input/input-number-validators.mjs +88 -0
  415. package/esm2022/input/input-number.mjs +168 -0
  416. package/esm2022/input/input-password.mjs +233 -0
  417. package/esm2022/input/input-value-accessor.mjs +3 -0
  418. package/esm2022/input/input.mjs +297 -0
  419. package/esm2022/input/input.module.mjs +63 -0
  420. package/esm2022/input/koobiq-components-input.mjs +5 -0
  421. package/esm2022/input/public-api.mjs +7 -0
  422. package/esm2022/koobiq-components.mjs +5 -0
  423. package/esm2022/link/index.mjs +2 -0
  424. package/esm2022/link/koobiq-components-link.mjs +5 -0
  425. package/esm2022/link/link.component.mjs +132 -0
  426. package/esm2022/link/link.module.mjs +24 -0
  427. package/esm2022/link/public-api.mjs +3 -0
  428. package/esm2022/list/index.mjs +2 -0
  429. package/esm2022/list/koobiq-components-list.mjs +5 -0
  430. package/esm2022/list/list-selection.component.mjs +705 -0
  431. package/esm2022/list/list.component.mjs +44 -0
  432. package/esm2022/list/list.module.mjs +53 -0
  433. package/esm2022/list/public-api.mjs +4 -0
  434. package/esm2022/loader-overlay/index.mjs +2 -0
  435. package/esm2022/loader-overlay/koobiq-components-loader-overlay.mjs +5 -0
  436. package/esm2022/loader-overlay/loader-overlay.component.mjs +103 -0
  437. package/esm2022/loader-overlay/loader-overlay.module.mjs +48 -0
  438. package/esm2022/loader-overlay/public-api.mjs +3 -0
  439. package/esm2022/markdown/index.mjs +2 -0
  440. package/esm2022/markdown/koobiq-components-markdown.mjs +5 -0
  441. package/esm2022/markdown/markdown.component.mjs +53 -0
  442. package/esm2022/markdown/markdown.module.mjs +23 -0
  443. package/esm2022/markdown/markdown.service.mjs +25 -0
  444. package/esm2022/markdown/markdown.values.mjs +29 -0
  445. package/esm2022/markdown/public-api.mjs +5 -0
  446. package/esm2022/modal/css-unit.pipe.mjs +17 -0
  447. package/esm2022/modal/index.mjs +2 -0
  448. package/esm2022/modal/koobiq-components-modal.mjs +5 -0
  449. package/esm2022/modal/modal-control.service.mjs +85 -0
  450. package/esm2022/modal/modal-ref.class.mjs +8 -0
  451. package/esm2022/modal/modal-util.mjs +17 -0
  452. package/esm2022/modal/modal.component.mjs +509 -0
  453. package/esm2022/modal/modal.directive.mjs +52 -0
  454. package/esm2022/modal/modal.module.mjs +69 -0
  455. package/esm2022/modal/modal.service.mjs +124 -0
  456. package/esm2022/modal/modal.type.mjs +9 -0
  457. package/esm2022/modal/public-api.mjs +7 -0
  458. package/esm2022/navbar/index.mjs +2 -0
  459. package/esm2022/navbar/koobiq-components-navbar.mjs +5 -0
  460. package/esm2022/navbar/navbar-item.component.mjs +605 -0
  461. package/esm2022/navbar/navbar.component.mjs +239 -0
  462. package/esm2022/navbar/navbar.module.mjs +90 -0
  463. package/esm2022/navbar/public-api.mjs +5 -0
  464. package/esm2022/navbar/vertical-navbar.animation.mjs +10 -0
  465. package/esm2022/navbar/vertical-navbar.component.mjs +114 -0
  466. package/esm2022/popover/index.mjs +2 -0
  467. package/esm2022/popover/koobiq-components-popover.mjs +5 -0
  468. package/esm2022/popover/popover-animations.mjs +16 -0
  469. package/esm2022/popover/popover-confirm.component.mjs +108 -0
  470. package/esm2022/popover/popover.component.mjs +266 -0
  471. package/esm2022/popover/popover.module.mjs +29 -0
  472. package/esm2022/popover/public-api.mjs +5 -0
  473. package/esm2022/progress-bar/index.mjs +2 -0
  474. package/esm2022/progress-bar/koobiq-components-progress-bar.mjs +5 -0
  475. package/esm2022/progress-bar/progress-bar.component.mjs +70 -0
  476. package/esm2022/progress-bar/progress-bar.module.mjs +36 -0
  477. package/esm2022/progress-bar/public-api.mjs +3 -0
  478. package/esm2022/progress-spinner/index.mjs +2 -0
  479. package/esm2022/progress-spinner/koobiq-components-progress-spinner.mjs +5 -0
  480. package/esm2022/progress-spinner/progress-spinner.component.mjs +85 -0
  481. package/esm2022/progress-spinner/progress-spinner.module.mjs +36 -0
  482. package/esm2022/progress-spinner/public-api.mjs +3 -0
  483. package/esm2022/public-api.mjs +2 -0
  484. package/esm2022/radio/index.mjs +2 -0
  485. package/esm2022/radio/koobiq-components-radio.mjs +5 -0
  486. package/esm2022/radio/public-api.mjs +3 -0
  487. package/esm2022/radio/radio.component.mjs +460 -0
  488. package/esm2022/radio/radio.module.mjs +20 -0
  489. package/esm2022/select/index.mjs +2 -0
  490. package/esm2022/select/koobiq-components-select.mjs +5 -0
  491. package/esm2022/select/public-api.mjs +4 -0
  492. package/esm2022/select/select-option.directive.mjs +65 -0
  493. package/esm2022/select/select.component.mjs +1146 -0
  494. package/esm2022/select/select.module.mjs +79 -0
  495. package/esm2022/sidebar/index.mjs +2 -0
  496. package/esm2022/sidebar/koobiq-components-sidebar.mjs +5 -0
  497. package/esm2022/sidebar/public-api.mjs +3 -0
  498. package/esm2022/sidebar/sidebar-animations.mjs +23 -0
  499. package/esm2022/sidebar/sidebar.component.mjs +146 -0
  500. package/esm2022/sidebar/sidebar.module.mjs +30 -0
  501. package/esm2022/sidepanel/index.mjs +2 -0
  502. package/esm2022/sidepanel/koobiq-components-sidepanel.mjs +5 -0
  503. package/esm2022/sidepanel/public-api.mjs +7 -0
  504. package/esm2022/sidepanel/sidepanel-animations.mjs +26 -0
  505. package/esm2022/sidepanel/sidepanel-config.mjs +33 -0
  506. package/esm2022/sidepanel/sidepanel-container.component.mjs +110 -0
  507. package/esm2022/sidepanel/sidepanel-directives.mjs +167 -0
  508. package/esm2022/sidepanel/sidepanel-ref.mjs +53 -0
  509. package/esm2022/sidepanel/sidepanel.module.mjs +75 -0
  510. package/esm2022/sidepanel/sidepanel.service.mjs +171 -0
  511. package/esm2022/splitter/index.mjs +2 -0
  512. package/esm2022/splitter/koobiq-components-splitter.mjs +5 -0
  513. package/esm2022/splitter/public-api.mjs +3 -0
  514. package/esm2022/splitter/splitter.component.mjs +482 -0
  515. package/esm2022/splitter/splitter.module.mjs +38 -0
  516. package/esm2022/table/index.mjs +2 -0
  517. package/esm2022/table/koobiq-components-table.mjs +5 -0
  518. package/esm2022/table/public-api.mjs +3 -0
  519. package/esm2022/table/table.component.mjs +13 -0
  520. package/esm2022/table/table.module.mjs +28 -0
  521. package/esm2022/tabs/index.mjs +2 -0
  522. package/esm2022/tabs/koobiq-components-tabs.mjs +5 -0
  523. package/esm2022/tabs/paginated-tab-header.mjs +479 -0
  524. package/esm2022/tabs/public-api.mjs +11 -0
  525. package/esm2022/tabs/tab-body.component.mjs +179 -0
  526. package/esm2022/tabs/tab-content.directive.mjs +15 -0
  527. package/esm2022/tabs/tab-group.component.mjs +349 -0
  528. package/esm2022/tabs/tab-header.component.mjs +67 -0
  529. package/esm2022/tabs/tab-label-wrapper.directive.mjs +78 -0
  530. package/esm2022/tabs/tab-label.directive.mjs +17 -0
  531. package/esm2022/tabs/tab-nav-bar/index.mjs +2 -0
  532. package/esm2022/tabs/tab-nav-bar/tab-nav-bar.mjs +111 -0
  533. package/esm2022/tabs/tab.component.mjs +134 -0
  534. package/esm2022/tabs/tabs-animations.mjs +24 -0
  535. package/esm2022/tabs/tabs.module.mjs +106 -0
  536. package/esm2022/tags/index.mjs +2 -0
  537. package/esm2022/tags/koobiq-components-tags.mjs +5 -0
  538. package/esm2022/tags/public-api.mjs +6 -0
  539. package/esm2022/tags/tag-default-options.mjs +4 -0
  540. package/esm2022/tags/tag-input.mjs +248 -0
  541. package/esm2022/tags/tag-list.component.mjs +714 -0
  542. package/esm2022/tags/tag-text-control.mjs +2 -0
  543. package/esm2022/tags/tag.component.mjs +381 -0
  544. package/esm2022/tags/tag.module.mjs +56 -0
  545. package/esm2022/textarea/index.mjs +2 -0
  546. package/esm2022/textarea/koobiq-components-textarea.mjs +5 -0
  547. package/esm2022/textarea/public-api.mjs +3 -0
  548. package/esm2022/textarea/textarea.component.mjs +254 -0
  549. package/esm2022/textarea/textarea.module.mjs +21 -0
  550. package/esm2022/timepicker/index.mjs +2 -0
  551. package/esm2022/timepicker/koobiq-components-timepicker.mjs +5 -0
  552. package/esm2022/timepicker/public-api.mjs +4 -0
  553. package/esm2022/timepicker/timepicker.constants.mjs +25 -0
  554. package/esm2022/timepicker/timepicker.directive.mjs +647 -0
  555. package/esm2022/timepicker/timepicker.module.mjs +32 -0
  556. package/esm2022/timezone/cities-by-filter.pipe.mjs +17 -0
  557. package/esm2022/timezone/index.mjs +2 -0
  558. package/esm2022/timezone/koobiq-components-timezone.mjs +5 -0
  559. package/esm2022/timezone/public-api.mjs +7 -0
  560. package/esm2022/timezone/timezone-option.component.mjs +48 -0
  561. package/esm2022/timezone/timezone-option.directive.mjs +60 -0
  562. package/esm2022/timezone/timezone-select.component.mjs +40 -0
  563. package/esm2022/timezone/timezone.models.mjs +3 -0
  564. package/esm2022/timezone/timezone.module.mjs +75 -0
  565. package/esm2022/timezone/timezone.utils.mjs +79 -0
  566. package/esm2022/timezone/utc-offset.pipe.mjs +17 -0
  567. package/esm2022/title/index.mjs +2 -0
  568. package/esm2022/title/koobiq-components-title.mjs +5 -0
  569. package/esm2022/title/public-api.mjs +3 -0
  570. package/esm2022/title/title.directive.mjs +107 -0
  571. package/esm2022/title/title.module.mjs +18 -0
  572. package/esm2022/toast/index.mjs +2 -0
  573. package/esm2022/toast/koobiq-components-toast.mjs +5 -0
  574. package/esm2022/toast/public-api.mjs +6 -0
  575. package/esm2022/toast/toast-animations.mjs +9 -0
  576. package/esm2022/toast/toast-container.component.mjs +44 -0
  577. package/esm2022/toast/toast.component.mjs +92 -0
  578. package/esm2022/toast/toast.module.mjs +42 -0
  579. package/esm2022/toast/toast.service.mjs +188 -0
  580. package/esm2022/toast/toast.type.mjs +15 -0
  581. package/esm2022/toggle/index.mjs +2 -0
  582. package/esm2022/toggle/koobiq-components-toggle.mjs +5 -0
  583. package/esm2022/toggle/public-api.mjs +3 -0
  584. package/esm2022/toggle/toggle.component.mjs +160 -0
  585. package/esm2022/toggle/toggle.module.mjs +20 -0
  586. package/esm2022/tooltip/index.mjs +2 -0
  587. package/esm2022/tooltip/koobiq-components-tooltip.mjs +5 -0
  588. package/esm2022/tooltip/public-api.mjs +3 -0
  589. package/esm2022/tooltip/tooltip.animations.mjs +19 -0
  590. package/esm2022/tooltip/tooltip.component.mjs +308 -0
  591. package/esm2022/tooltip/tooltip.module.mjs +42 -0
  592. package/esm2022/tree/control/base-tree-control.mjs +60 -0
  593. package/esm2022/tree/control/flat-tree-control.mjs +130 -0
  594. package/esm2022/tree/control/nested-tree-control.mjs +41 -0
  595. package/esm2022/tree/control/tree-control.mjs +2 -0
  596. package/esm2022/tree/data-source/flat-data-source.mjs +162 -0
  597. package/esm2022/tree/data-source/nested-data-source.mjs +30 -0
  598. package/esm2022/tree/index.mjs +2 -0
  599. package/esm2022/tree/koobiq-components-tree.mjs +5 -0
  600. package/esm2022/tree/node.mjs +31 -0
  601. package/esm2022/tree/outlet.mjs +15 -0
  602. package/esm2022/tree/padding.directive.mjs +113 -0
  603. package/esm2022/tree/public-api.mjs +16 -0
  604. package/esm2022/tree/toggle.mjs +81 -0
  605. package/esm2022/tree/tree-base.mjs +243 -0
  606. package/esm2022/tree/tree-errors.mjs +36 -0
  607. package/esm2022/tree/tree-option.component.mjs +299 -0
  608. package/esm2022/tree/tree-selection.component.mjs +557 -0
  609. package/esm2022/tree/tree.mjs +15 -0
  610. package/esm2022/tree/tree.module.mjs +57 -0
  611. package/esm2022/tree-select/index.mjs +2 -0
  612. package/esm2022/tree-select/koobiq-components-tree-select.mjs +5 -0
  613. package/esm2022/tree-select/public-api.mjs +3 -0
  614. package/esm2022/tree-select/tree-select.component.mjs +936 -0
  615. package/esm2022/tree-select/tree-select.module.mjs +45 -0
  616. package/fesm2022/koobiq-components-alert.mjs +115 -0
  617. package/fesm2022/koobiq-components-alert.mjs.map +1 -0
  618. package/fesm2022/koobiq-components-autocomplete.mjs +748 -0
  619. package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -0
  620. package/fesm2022/koobiq-components-button-toggle.mjs +403 -0
  621. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -0
  622. package/fesm2022/koobiq-components-button.mjs +207 -0
  623. package/fesm2022/koobiq-components-button.mjs.map +1 -0
  624. package/fesm2022/koobiq-components-card.mjs +111 -0
  625. package/fesm2022/koobiq-components-card.mjs.map +1 -0
  626. package/fesm2022/koobiq-components-checkbox.mjs +353 -0
  627. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -0
  628. package/fesm2022/koobiq-components-code-block.mjs +278 -0
  629. package/fesm2022/koobiq-components-code-block.mjs.map +1 -0
  630. package/fesm2022/koobiq-components-core.mjs +2338 -0
  631. package/fesm2022/koobiq-components-core.mjs.map +1 -0
  632. package/fesm2022/koobiq-components-datepicker.mjs +2101 -0
  633. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -0
  634. package/fesm2022/koobiq-components-divider.mjs +71 -0
  635. package/fesm2022/koobiq-components-divider.mjs.map +1 -0
  636. package/fesm2022/koobiq-components-dl.mjs +126 -0
  637. package/fesm2022/koobiq-components-dl.mjs.map +1 -0
  638. package/fesm2022/koobiq-components-dropdown.mjs +1102 -0
  639. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -0
  640. package/fesm2022/koobiq-components-ellipsis-center.mjs +111 -0
  641. package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -0
  642. package/fesm2022/koobiq-components-file-upload.mjs +388 -0
  643. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -0
  644. package/fesm2022/koobiq-components-form-field.mjs +825 -0
  645. package/fesm2022/koobiq-components-form-field.mjs.map +1 -0
  646. package/fesm2022/koobiq-components-icon.mjs +188 -0
  647. package/fesm2022/koobiq-components-icon.mjs.map +1 -0
  648. package/fesm2022/koobiq-components-input.mjs +831 -0
  649. package/fesm2022/koobiq-components-input.mjs.map +1 -0
  650. package/fesm2022/koobiq-components-link.mjs +159 -0
  651. package/fesm2022/koobiq-components-link.mjs.map +1 -0
  652. package/fesm2022/koobiq-components-list.mjs +800 -0
  653. package/fesm2022/koobiq-components-list.mjs.map +1 -0
  654. package/fesm2022/koobiq-components-loader-overlay.mjs +155 -0
  655. package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -0
  656. package/fesm2022/koobiq-components-markdown.mjs +127 -0
  657. package/fesm2022/koobiq-components-markdown.mjs.map +1 -0
  658. package/fesm2022/koobiq-components-modal.mjs +868 -0
  659. package/fesm2022/koobiq-components-modal.mjs.map +1 -0
  660. package/fesm2022/koobiq-components-navbar.mjs +1037 -0
  661. package/fesm2022/koobiq-components-navbar.mjs.map +1 -0
  662. package/fesm2022/koobiq-components-popover.mjs +407 -0
  663. package/fesm2022/koobiq-components-popover.mjs.map +1 -0
  664. package/fesm2022/koobiq-components-progress-bar.mjs +110 -0
  665. package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -0
  666. package/fesm2022/koobiq-components-progress-spinner.mjs +125 -0
  667. package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -0
  668. package/fesm2022/koobiq-components-radio.mjs +481 -0
  669. package/fesm2022/koobiq-components-radio.mjs.map +1 -0
  670. package/fesm2022/koobiq-components-select.mjs +1278 -0
  671. package/fesm2022/koobiq-components-select.mjs.map +1 -0
  672. package/fesm2022/koobiq-components-sidebar.mjs +202 -0
  673. package/fesm2022/koobiq-components-sidebar.mjs.map +1 -0
  674. package/fesm2022/koobiq-components-sidepanel.mjs +613 -0
  675. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -0
  676. package/fesm2022/koobiq-components-splitter.mjs +524 -0
  677. package/fesm2022/koobiq-components-splitter.mjs.map +1 -0
  678. package/fesm2022/koobiq-components-table.mjs +45 -0
  679. package/fesm2022/koobiq-components-table.mjs.map +1 -0
  680. package/fesm2022/koobiq-components-tabs.mjs +1499 -0
  681. package/fesm2022/koobiq-components-tabs.mjs.map +1 -0
  682. package/fesm2022/koobiq-components-tags.mjs +1383 -0
  683. package/fesm2022/koobiq-components-tags.mjs.map +1 -0
  684. package/fesm2022/koobiq-components-textarea.mjs +277 -0
  685. package/fesm2022/koobiq-components-textarea.mjs.map +1 -0
  686. package/fesm2022/koobiq-components-timepicker.mjs +706 -0
  687. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -0
  688. package/fesm2022/koobiq-components-timezone.mjs +314 -0
  689. package/fesm2022/koobiq-components-timezone.mjs.map +1 -0
  690. package/fesm2022/koobiq-components-title.mjs +125 -0
  691. package/fesm2022/koobiq-components-title.mjs.map +1 -0
  692. package/fesm2022/koobiq-components-toast.mjs +375 -0
  693. package/fesm2022/koobiq-components-toast.mjs.map +1 -0
  694. package/fesm2022/koobiq-components-toggle.mjs +182 -0
  695. package/fesm2022/koobiq-components-toggle.mjs.map +1 -0
  696. package/fesm2022/koobiq-components-tooltip.mjs +370 -0
  697. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -0
  698. package/fesm2022/koobiq-components-tree-select.mjs +978 -0
  699. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -0
  700. package/fesm2022/koobiq-components-tree.mjs +1802 -0
  701. package/fesm2022/koobiq-components-tree.mjs.map +1 -0
  702. package/fesm2022/koobiq-components.mjs +4 -0
  703. package/fesm2022/koobiq-components.mjs.map +1 -0
  704. package/file-upload/README.md +0 -0
  705. package/file-upload/_file-upload-theme.scss +174 -0
  706. package/file-upload/file-drop.d.ts +11 -0
  707. package/file-upload/file-upload.d.ts +22 -0
  708. package/file-upload/file-upload.module.d.ts +18 -0
  709. package/file-upload/file-upload.scss +46 -0
  710. package/file-upload/index.d.ts +1 -0
  711. package/file-upload/multiple-file-upload.component.d.ts +51 -0
  712. package/file-upload/multiple-file-upload.component.scss +148 -0
  713. package/file-upload/public-api.d.ts +5 -0
  714. package/file-upload/single-file-upload.component.d.ts +34 -0
  715. package/file-upload/single-file-upload.component.scss +60 -0
  716. package/form-field/README.md +0 -0
  717. package/form-field/_form-field-theme.scss +112 -0
  718. package/form-field/_hint-theme.scss +67 -0
  719. package/form-field/cleaner.d.ts +5 -0
  720. package/form-field/cleaner.scss +22 -0
  721. package/form-field/form-field-control.d.ts +37 -0
  722. package/form-field/form-field-errors.d.ts +2 -0
  723. package/form-field/form-field.d.ts +84 -0
  724. package/form-field/form-field.module.d.ts +17 -0
  725. package/form-field/form-field.scss +143 -0
  726. package/form-field/hint.d.ts +17 -0
  727. package/form-field/hint.scss +15 -0
  728. package/form-field/index.d.ts +1 -0
  729. package/form-field/password-hint.d.ts +40 -0
  730. package/form-field/password-hint.scss +11 -0
  731. package/form-field/password-toggle.d.ts +18 -0
  732. package/form-field/password-toggle.scss +29 -0
  733. package/form-field/prefix.d.ts +5 -0
  734. package/form-field/public-api.d.ts +12 -0
  735. package/form-field/stepper.d.ts +11 -0
  736. package/form-field/stepper.scss +33 -0
  737. package/form-field/suffix.d.ts +5 -0
  738. package/form-field/validate.directive.d.ts +33 -0
  739. package/icon/README.md +0 -0
  740. package/icon/_icon-theme.scss +267 -0
  741. package/icon/icon.component.d.ts +47 -0
  742. package/icon/icon.module.d.ts +10 -0
  743. package/icon/icon.scss +73 -0
  744. package/icon/index.d.ts +1 -0
  745. package/icon/public-api.d.ts +2 -0
  746. package/index.d.ts +1 -0
  747. package/input/_input-theme.scss +13 -0
  748. package/input/index.d.ts +1 -0
  749. package/input/input-errors.d.ts +1 -0
  750. package/input/input-number-validators.d.ts +35 -0
  751. package/input/input-number.d.ts +33 -0
  752. package/input/input-password.d.ts +92 -0
  753. package/input/input-value-accessor.d.ts +4 -0
  754. package/input/input.d.ts +117 -0
  755. package/input/input.module.d.ts +15 -0
  756. package/input/input.scss +48 -0
  757. package/input/public-api.d.ts +6 -0
  758. package/link/README.md +0 -0
  759. package/link/_link-theme.scss +178 -0
  760. package/link/index.d.ts +1 -0
  761. package/link/link.component.d.ts +47 -0
  762. package/link/link.module.d.ts +9 -0
  763. package/link/public-api.d.ts +2 -0
  764. package/list/README.md +0 -0
  765. package/list/_list-base.scss +54 -0
  766. package/list/_list-theme.scss +47 -0
  767. package/list/index.d.ts +1 -0
  768. package/list/list-selection.component.d.ts +172 -0
  769. package/list/list.component.d.ts +18 -0
  770. package/list/list.module.d.ts +11 -0
  771. package/list/list.scss +52 -0
  772. package/list/public-api.d.ts +3 -0
  773. package/loader-overlay/README.md +0 -0
  774. package/loader-overlay/_loader-overlay-theme.scss +34 -0
  775. package/loader-overlay/index.d.ts +1 -0
  776. package/loader-overlay/loader-overlay.component.d.ts +34 -0
  777. package/loader-overlay/loader-overlay.module.d.ts +11 -0
  778. package/loader-overlay/loader-overlay.scss +64 -0
  779. package/loader-overlay/public-api.d.ts +2 -0
  780. package/markdown/README.md +0 -0
  781. package/markdown/_markdown-theme.scss +142 -0
  782. package/markdown/index.d.ts +1 -0
  783. package/markdown/markdown.component.d.ts +19 -0
  784. package/markdown/markdown.module.d.ts +11 -0
  785. package/markdown/markdown.scss +249 -0
  786. package/markdown/markdown.service.d.ts +7 -0
  787. package/markdown/markdown.values.d.ts +3 -0
  788. package/markdown/public-api.d.ts +4 -0
  789. package/modal/README.md +34 -0
  790. package/modal/_modal-animation.scss +114 -0
  791. package/modal/_modal-confirm.scss +53 -0
  792. package/modal/_modal-theme.scss +90 -0
  793. package/modal/css-unit.pipe.d.ts +7 -0
  794. package/modal/index.d.ts +1 -0
  795. package/modal/modal-control.service.d.ts +20 -0
  796. package/modal/modal-ref.class.d.ts +36 -0
  797. package/modal/modal-util.d.ts +12 -0
  798. package/modal/modal.component.d.ts +128 -0
  799. package/modal/modal.directive.d.ts +17 -0
  800. package/modal/modal.module.d.ts +14 -0
  801. package/modal/modal.scss +143 -0
  802. package/modal/modal.service.d.ts +33 -0
  803. package/modal/modal.type.d.ts +61 -0
  804. package/modal/public-api.d.ts +6 -0
  805. package/navbar/README.md +41 -0
  806. package/navbar/_navbar-theme.scss +123 -0
  807. package/navbar/index.d.ts +1 -0
  808. package/navbar/navbar-brand.scss +70 -0
  809. package/navbar/navbar-divider.scss +18 -0
  810. package/navbar/navbar-item.component.d.ts +167 -0
  811. package/navbar/navbar-item.scss +159 -0
  812. package/navbar/navbar.component.d.ts +58 -0
  813. package/navbar/navbar.module.d.ts +14 -0
  814. package/navbar/navbar.scss +20 -0
  815. package/navbar/public-api.d.ts +4 -0
  816. package/navbar/vertical-navbar.animation.d.ts +2 -0
  817. package/navbar/vertical-navbar.component.d.ts +23 -0
  818. package/navbar/vertical-navbar.scss +46 -0
  819. package/package.json +323 -0
  820. package/popover/README.md +32 -0
  821. package/popover/_popover-theme.scss +111 -0
  822. package/popover/index.d.ts +1 -0
  823. package/popover/popover-animations.d.ts +4 -0
  824. package/popover/popover-confirm.component.d.ts +33 -0
  825. package/popover/popover.component.d.ts +75 -0
  826. package/popover/popover.module.d.ts +12 -0
  827. package/popover/popover.scss +114 -0
  828. package/popover/public-api.d.ts +4 -0
  829. package/prebuilt-themes/dark-theme.css +1 -0
  830. package/prebuilt-themes/light-theme.css +1 -0
  831. package/progress-bar/README.md +0 -0
  832. package/progress-bar/_progress-bar-theme.scss +41 -0
  833. package/progress-bar/index.d.ts +1 -0
  834. package/progress-bar/progress-bar.component.d.ts +28 -0
  835. package/progress-bar/progress-bar.module.d.ts +9 -0
  836. package/progress-bar/progress-bar.scss +68 -0
  837. package/progress-bar/public-api.d.ts +2 -0
  838. package/progress-spinner/README.md +0 -0
  839. package/progress-spinner/_progress-spinner-theme.scss +35 -0
  840. package/progress-spinner/index.d.ts +1 -0
  841. package/progress-spinner/progress-spinner.component.d.ts +34 -0
  842. package/progress-spinner/progress-spinner.module.d.ts +9 -0
  843. package/progress-spinner/progress-spinner.scss +72 -0
  844. package/progress-spinner/public-api.d.ts +2 -0
  845. package/public-api.d.ts +1 -0
  846. package/radio/_radio-theme.scss +95 -0
  847. package/radio/index.d.ts +1 -0
  848. package/radio/public-api.d.ts +2 -0
  849. package/radio/radio.component.d.ts +204 -0
  850. package/radio/radio.module.d.ts +10 -0
  851. package/radio/radio.scss +143 -0
  852. package/select/README.md +0 -0
  853. package/select/_select-theme.scss +55 -0
  854. package/select/index.d.ts +1 -0
  855. package/select/public-api.d.ts +3 -0
  856. package/select/select-option.directive.d.ts +20 -0
  857. package/select/select.component.d.ts +330 -0
  858. package/select/select.module.d.ts +15 -0
  859. package/select/select.scss +222 -0
  860. package/sidebar/index.d.ts +1 -0
  861. package/sidebar/public-api.d.ts +2 -0
  862. package/sidebar/sidebar-animations.d.ts +8 -0
  863. package/sidebar/sidebar.component.d.ts +53 -0
  864. package/sidebar/sidebar.module.d.ts +8 -0
  865. package/sidebar/sidebar.scss +12 -0
  866. package/sidepanel/_sidepanel-theme.scss +67 -0
  867. package/sidepanel/index.d.ts +1 -0
  868. package/sidepanel/public-api.d.ts +6 -0
  869. package/sidepanel/sidepanel-animations.d.ts +14 -0
  870. package/sidepanel/sidepanel-config.d.ts +31 -0
  871. package/sidepanel/sidepanel-container.component.d.ts +46 -0
  872. package/sidepanel/sidepanel-directives.d.ts +50 -0
  873. package/sidepanel/sidepanel-ref.d.ts +24 -0
  874. package/sidepanel/sidepanel.module.d.ts +16 -0
  875. package/sidepanel/sidepanel.scss +203 -0
  876. package/sidepanel/sidepanel.service.d.ts +57 -0
  877. package/splitter/_splitter-theme.scss +31 -0
  878. package/splitter/index.d.ts +1 -0
  879. package/splitter/public-api.d.ts +2 -0
  880. package/splitter/splitter.component.d.ts +130 -0
  881. package/splitter/splitter.module.d.ts +9 -0
  882. package/splitter/splitter.scss +48 -0
  883. package/table/README.md +0 -0
  884. package/table/_table-theme.scss +65 -0
  885. package/table/index.d.ts +1 -0
  886. package/table/public-api.d.ts +2 -0
  887. package/table/table.component.d.ts +5 -0
  888. package/table/table.module.d.ts +10 -0
  889. package/table/table.scss +76 -0
  890. package/tabs/README.md +0 -0
  891. package/tabs/_tabs-common.scss +197 -0
  892. package/tabs/_tabs-theme.scss +240 -0
  893. package/tabs/index.d.ts +1 -0
  894. package/tabs/paginated-tab-header.d.ts +179 -0
  895. package/tabs/public-api.d.ts +10 -0
  896. package/tabs/tab-body.component.d.ts +95 -0
  897. package/tabs/tab-body.scss +8 -0
  898. package/tabs/tab-content.directive.d.ts +9 -0
  899. package/tabs/tab-group.component.d.ts +134 -0
  900. package/tabs/tab-group.scss +63 -0
  901. package/tabs/tab-header.component.d.ts +35 -0
  902. package/tabs/tab-header.scss +106 -0
  903. package/tabs/tab-label-wrapper.directive.d.ts +31 -0
  904. package/tabs/tab-label.directive.d.ts +9 -0
  905. package/tabs/tab-nav-bar/index.d.ts +1 -0
  906. package/tabs/tab-nav-bar/tab-nav-bar.d.ts +40 -0
  907. package/tabs/tab-nav-bar/tab-nav-bar.scss +54 -0
  908. package/tabs/tab.component.d.ts +68 -0
  909. package/tabs/tabs-animations.d.ts +4 -0
  910. package/tabs/tabs.module.d.ts +21 -0
  911. package/tags/README.md +0 -0
  912. package/tags/_tag-theme.scss +100 -0
  913. package/tags/index.d.ts +1 -0
  914. package/tags/public-api.d.ts +5 -0
  915. package/tags/tag-default-options.d.ts +8 -0
  916. package/tags/tag-input.d.ts +87 -0
  917. package/tags/tag-list.component.d.ts +246 -0
  918. package/tags/tag-list.scss +66 -0
  919. package/tags/tag-text-control.d.ts +10 -0
  920. package/tags/tag.component.d.ts +140 -0
  921. package/tags/tag.module.d.ts +11 -0
  922. package/tags/tag.scss +67 -0
  923. package/textarea/README.md +0 -0
  924. package/textarea/_textarea-theme.scss +13 -0
  925. package/textarea/index.d.ts +1 -0
  926. package/textarea/public-api.d.ts +2 -0
  927. package/textarea/textarea.component.d.ts +114 -0
  928. package/textarea/textarea.module.d.ts +11 -0
  929. package/textarea/textarea.scss +45 -0
  930. package/timepicker/README.md +0 -0
  931. package/timepicker/index.d.ts +1 -0
  932. package/timepicker/public-api.d.ts +3 -0
  933. package/timepicker/timepicker.constants.d.ts +20 -0
  934. package/timepicker/timepicker.directive.d.ts +141 -0
  935. package/timepicker/timepicker.module.d.ts +11 -0
  936. package/timepicker/timepicker.scss +18 -0
  937. package/timezone/README.md +0 -0
  938. package/timezone/_timezone-option-theme.scss +34 -0
  939. package/timezone/cities-by-filter.pipe.d.ts +7 -0
  940. package/timezone/index.d.ts +1 -0
  941. package/timezone/public-api.d.ts +6 -0
  942. package/timezone/timezone-option.component.d.ts +15 -0
  943. package/timezone/timezone-option.component.scss +35 -0
  944. package/timezone/timezone-option.directive.d.ts +20 -0
  945. package/timezone/timezone-select.component.d.ts +14 -0
  946. package/timezone/timezone.models.d.ts +16 -0
  947. package/timezone/timezone.module.d.ts +19 -0
  948. package/timezone/timezone.utils.d.ts +18 -0
  949. package/timezone/utc-offset.pipe.d.ts +7 -0
  950. package/title/index.d.ts +1 -0
  951. package/title/public-api.d.ts +2 -0
  952. package/title/title.directive.d.ts +31 -0
  953. package/title/title.module.d.ts +8 -0
  954. package/toast/_toast-theme.scss +61 -0
  955. package/toast/index.d.ts +1 -0
  956. package/toast/public-api.d.ts +5 -0
  957. package/toast/toast-animations.d.ts +4 -0
  958. package/toast/toast-container.component.d.ts +15 -0
  959. package/toast/toast-container.component.scss +23 -0
  960. package/toast/toast.component.d.ts +35 -0
  961. package/toast/toast.component.scss +76 -0
  962. package/toast/toast.module.d.ts +13 -0
  963. package/toast/toast.service.d.ts +51 -0
  964. package/toast/toast.type.d.ts +27 -0
  965. package/toggle/_toggle-theme.scss +98 -0
  966. package/toggle/index.d.ts +1 -0
  967. package/toggle/public-api.d.ts +2 -0
  968. package/toggle/toggle.component.d.ts +57 -0
  969. package/toggle/toggle.module.d.ts +10 -0
  970. package/toggle/toggle.scss +99 -0
  971. package/tooltip/_tooltip-theme.scss +49 -0
  972. package/tooltip/index.d.ts +1 -0
  973. package/tooltip/public-api.d.ts +2 -0
  974. package/tooltip/tooltip.animations.d.ts +8 -0
  975. package/tooltip/tooltip.component.d.ts +94 -0
  976. package/tooltip/tooltip.module.d.ts +9 -0
  977. package/tooltip/tooltip.scss +54 -0
  978. package/tree/_tree-theme.scss +69 -0
  979. package/tree/control/base-tree-control.d.ts +40 -0
  980. package/tree/control/flat-tree-control.d.ts +53 -0
  981. package/tree/control/nested-tree-control.d.ts +19 -0
  982. package/tree/control/tree-control.d.ts +44 -0
  983. package/tree/data-source/flat-data-source.d.ts +80 -0
  984. package/tree/data-source/nested-data-source.d.ts +15 -0
  985. package/tree/index.d.ts +1 -0
  986. package/tree/node.d.ts +34 -0
  987. package/tree/outlet.d.ts +9 -0
  988. package/tree/padding.directive.d.ts +47 -0
  989. package/tree/public-api.d.ts +15 -0
  990. package/tree/toggle.d.ts +30 -0
  991. package/tree/toggle.scss +35 -0
  992. package/tree/tree-base.d.ts +97 -0
  993. package/tree/tree-errors.d.ts +25 -0
  994. package/tree/tree-option.component.d.ts +80 -0
  995. package/tree/tree-option.scss +67 -0
  996. package/tree/tree-selection.component.d.ts +134 -0
  997. package/tree/tree-selection.scss +3 -0
  998. package/tree/tree.d.ts +6 -0
  999. package/tree/tree.module.d.ts +16 -0
  1000. package/tree/tree.scss +3 -0
  1001. package/tree-select/README.md +0 -0
  1002. package/tree-select/_tree-select-theme.scss +41 -0
  1003. package/tree-select/index.d.ts +1 -0
  1004. package/tree-select/public-api.d.ts +2 -0
  1005. package/tree-select/tree-select.component.d.ts +283 -0
  1006. package/tree-select/tree-select.module.d.ts +14 -0
  1007. package/tree-select/tree-select.scss +225 -0
@@ -0,0 +1,1278 @@
1
+ import * as i2$1 from '@angular/cdk/overlay';
2
+ import { CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';
3
+ import * as i5 from '@angular/common';
4
+ import { CommonModule } from '@angular/common';
5
+ import * as i0 from '@angular/core';
6
+ import { Directive, Inject, Optional, ContentChild, EventEmitter, isDevMode, TemplateRef, Component, ViewEncapsulation, ChangeDetectionStrategy, Self, ViewChild, ViewChildren, ContentChildren, Input, Output, NgModule } from '@angular/core';
7
+ import * as i2 from '@koobiq/components/core';
8
+ import { mixinTabIndex, mixinDisabled, mixinErrorState, getKbqSelectDynamicMultipleError, getKbqSelectNonFunctionValueError, getKbqSelectNonArrayValueError, SELECT_PANEL_PADDING_X, SELECT_PANEL_INDENT_PADDING_X, SELECT_PANEL_VIEWPORT_PADDING, KBQ_SELECT_SCROLL_STRATEGY, KBQ_LOCALE_SERVICE, KBQ_OPTION_PARENT_COMPONENT, KbqOption, KbqOptgroup, mcSelectAnimations, KbqOptionModule, KBQ_SELECT_SCROLL_STRATEGY_PROVIDER } from '@koobiq/components/core';
9
+ import * as i1 from '@koobiq/components/form-field';
10
+ import { KbqFormFieldControl, KbqFormFieldModule } from '@koobiq/components/form-field';
11
+ import * as i7 from '@koobiq/components/icon';
12
+ import { KbqIconModule } from '@koobiq/components/icon';
13
+ import * as i8 from '@koobiq/components/tags';
14
+ import { KbqTag, KbqTagsModule } from '@koobiq/components/tags';
15
+ import { KbqTooltipTrigger, KBQ_TOOLTIP_SCROLL_STRATEGY, KbqToolTipModule } from '@koobiq/components/tooltip';
16
+ import * as i3 from '@angular/cdk/bidi';
17
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
18
+ import { SelectionModel } from '@angular/cdk/collections';
19
+ import * as i4 from '@angular/forms';
20
+ import { ActiveDescendantKeyManager } from '@koobiq/cdk/a11y';
21
+ import { ESCAPE, SPACE, HOME, END, DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW, ENTER, TAB, PAGE_UP, PAGE_DOWN, A } from '@koobiq/cdk/keycodes';
22
+ import { KbqInput } from '@koobiq/components/input';
23
+ import { Subscription, Subject, defer, merge, BehaviorSubject } from 'rxjs';
24
+ import { take, switchMap, filter, map, distinctUntilChanged, takeUntil, startWith } from 'rxjs/operators';
25
+
26
+ class KbqOptionTooltip extends KbqTooltipTrigger {
27
+ get textElement() {
28
+ return this.option.textElement.nativeElement;
29
+ }
30
+ get isOverflown() {
31
+ return this.textElement.clientWidth < this.textElement.scrollWidth;
32
+ }
33
+ constructor(option, overlay, elementRef, ngZone, scrollDispatcher, hostView, scrollStrategy, direction) {
34
+ super(overlay, elementRef, ngZone, scrollDispatcher, hostView, scrollStrategy, direction);
35
+ this.option = option;
36
+ }
37
+ ngAfterViewInit() {
38
+ this.content = this.option.viewValue;
39
+ this.resizeObserver = new ResizeObserver(() => this.disabled = !this.isOverflown);
40
+ this.mutationObserver = new MutationObserver(() => this.content = this.option.viewValue);
41
+ this.mutationObserver.observe(this.textElement, {
42
+ characterData: true, attributes: false, childList: true, subtree: true
43
+ });
44
+ }
45
+ ngOnDestroy() {
46
+ super.ngOnDestroy();
47
+ if (this.resizeObserver) {
48
+ this.resizeObserver.unobserve(this.textElement);
49
+ this.resizeObserver.disconnect();
50
+ }
51
+ if (this.mutationObserver) {
52
+ this.mutationObserver.disconnect();
53
+ }
54
+ }
55
+ onMouseEnter() {
56
+ this.resizeObserver.observe(this.textElement);
57
+ this.disabled = !this.isOverflown;
58
+ }
59
+ onMouseLeave() {
60
+ this.resizeObserver.unobserve(this.textElement);
61
+ this.disabled = true;
62
+ }
63
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqOptionTooltip, deps: [{ token: i2.KbqOption }, { token: i2$1.Overlay }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i2$1.ScrollDispatcher }, { token: i0.ViewContainerRef }, { token: KBQ_TOOLTIP_SCROLL_STRATEGY }, { token: i3.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
64
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: KbqOptionTooltip, selector: "kbq-option", host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()" } }, usesInheritance: true, ngImport: i0 }); }
65
+ }
66
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqOptionTooltip, decorators: [{
67
+ type: Directive,
68
+ args: [{
69
+ selector: 'kbq-option',
70
+ host: {
71
+ '(mouseenter)': 'onMouseEnter()',
72
+ '(mouseleave)': 'onMouseLeave()'
73
+ }
74
+ }]
75
+ }], ctorParameters: function () { return [{ type: i2.KbqOption }, { type: i2$1.Overlay }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i2$1.ScrollDispatcher }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
76
+ type: Inject,
77
+ args: [KBQ_TOOLTIP_SCROLL_STRATEGY]
78
+ }] }, { type: i3.Directionality, decorators: [{
79
+ type: Optional
80
+ }] }]; } });
81
+
82
+ /* tslint:disable:no-empty */
83
+ let nextUniqueId = 0;
84
+ /** Change event object that is emitted when the select value has changed. */
85
+ class KbqSelectChange {
86
+ constructor(source, value) {
87
+ this.source = source;
88
+ this.value = value;
89
+ }
90
+ }
91
+ class KbqSelectFooter {
92
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqSelectFooter, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
93
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: KbqSelectFooter, selector: "kbq-select-footer", host: { classAttribute: "kbq-select__footer" }, ngImport: i0 }); }
94
+ }
95
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqSelectFooter, decorators: [{
96
+ type: Directive,
97
+ args: [{ selector: 'kbq-select-footer', host: { class: 'kbq-select__footer' } }]
98
+ }] });
99
+ class KbqSelectSearch {
100
+ constructor(formField) {
101
+ this.searchChangesSubscription = new Subscription();
102
+ this.isSearchChanged = false;
103
+ formField.canCleanerClearByEsc = false;
104
+ }
105
+ focus() {
106
+ this.input.focus();
107
+ }
108
+ reset() {
109
+ this.input.ngControl.reset();
110
+ }
111
+ ngAfterContentInit() {
112
+ if (!this.input) {
113
+ throw Error('KbqSelectSearch does not work without mcInput');
114
+ }
115
+ if (!this.input.ngControl) {
116
+ throw Error('KbqSelectSearch does not work without ngControl');
117
+ }
118
+ Promise.resolve().then(() => {
119
+ this.searchChangesSubscription = this.input.ngControl.valueChanges.subscribe(() => {
120
+ this.isSearchChanged = true;
121
+ });
122
+ });
123
+ }
124
+ ngOnDestroy() {
125
+ this.searchChangesSubscription.unsubscribe();
126
+ }
127
+ handleKeydown(event) {
128
+ // tslint:disable-next-line:deprecation
129
+ if (event.keyCode === ESCAPE) {
130
+ if (this.input.value) {
131
+ this.reset();
132
+ event.stopPropagation();
133
+ }
134
+ }
135
+ // tslint:disable-next-line:deprecation
136
+ if ([SPACE, HOME, END].includes(event.keyCode)) {
137
+ event.stopPropagation();
138
+ }
139
+ }
140
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqSelectSearch, deps: [{ token: i1.KbqFormField }], target: i0.ɵɵFactoryTarget.Directive }); }
141
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: KbqSelectSearch, selector: "[mcSelectSearch]", host: { listeners: { "keydown": "handleKeydown($event)" } }, queries: [{ propertyName: "input", first: true, predicate: KbqInput, descendants: true }], exportAs: ["mcSelectSearch"], ngImport: i0 }); }
142
+ }
143
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqSelectSearch, decorators: [{
144
+ type: Directive,
145
+ args: [{
146
+ selector: '[mcSelectSearch]',
147
+ exportAs: 'mcSelectSearch',
148
+ host: {
149
+ '(keydown)': 'handleKeydown($event)'
150
+ }
151
+ }]
152
+ }], ctorParameters: function () { return [{ type: i1.KbqFormField }]; }, propDecorators: { input: [{
153
+ type: ContentChild,
154
+ args: [KbqInput, { static: false }]
155
+ }] } });
156
+ class KbqSelectSearchEmptyResult {
157
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqSelectSearchEmptyResult, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
158
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: KbqSelectSearchEmptyResult, selector: "[kbq-select-search-empty-result]", exportAs: ["mcSelectSearchEmptyResult"], ngImport: i0 }); }
159
+ }
160
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqSelectSearchEmptyResult, decorators: [{
161
+ type: Directive,
162
+ args: [{
163
+ selector: '[kbq-select-search-empty-result]',
164
+ exportAs: 'mcSelectSearchEmptyResult'
165
+ }]
166
+ }] });
167
+ class KbqSelectTrigger {
168
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqSelectTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
169
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: KbqSelectTrigger, selector: "kbq-select-trigger, [kbq-select-trigger]", ngImport: i0 }); }
170
+ }
171
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqSelectTrigger, decorators: [{
172
+ type: Directive,
173
+ args: [{ selector: 'kbq-select-trigger, [kbq-select-trigger]' }]
174
+ }] });
175
+ class KbqSelectMatcher {
176
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqSelectMatcher, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
177
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: KbqSelectMatcher, selector: "kbq-select-matcher, [kbq-select-matcher]", ngImport: i0 }); }
178
+ }
179
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqSelectMatcher, decorators: [{
180
+ type: Directive,
181
+ args: [{ selector: 'kbq-select-matcher, [kbq-select-matcher]' }]
182
+ }] });
183
+ /** @docs-private */
184
+ class KbqSelectBase {
185
+ constructor(elementRef, defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl) {
186
+ this.elementRef = elementRef;
187
+ this.defaultErrorStateMatcher = defaultErrorStateMatcher;
188
+ this.parentForm = parentForm;
189
+ this.parentFormGroup = parentFormGroup;
190
+ this.ngControl = ngControl;
191
+ /**
192
+ * Emits whenever the component state changes and should cause the parent
193
+ * form-field to update. Implemented as part of `KbqFormFieldControl`.
194
+ * @docs-private
195
+ */
196
+ this.stateChanges = new Subject();
197
+ }
198
+ }
199
+ /** @docs-private */
200
+ const KbqSelectMixinBase = mixinTabIndex(mixinDisabled(mixinErrorState(KbqSelectBase)));
201
+ class KbqSelect extends KbqSelectMixinBase {
202
+ get hasBackdrop() {
203
+ return this._hasBackdrop;
204
+ }
205
+ set hasBackdrop(value) {
206
+ this._hasBackdrop = coerceBooleanProperty(value);
207
+ }
208
+ get placeholder() {
209
+ return this._placeholder;
210
+ }
211
+ set placeholder(value) {
212
+ this._placeholder = value;
213
+ this.stateChanges.next();
214
+ }
215
+ get required() {
216
+ return this._required;
217
+ }
218
+ set required(value) {
219
+ this._required = coerceBooleanProperty(value);
220
+ this.stateChanges.next();
221
+ }
222
+ get multiple() {
223
+ return this._multiple;
224
+ }
225
+ set multiple(value) {
226
+ if (this.selectionModel) {
227
+ throw getKbqSelectDynamicMultipleError();
228
+ }
229
+ this._multiple = coerceBooleanProperty(value);
230
+ }
231
+ /**
232
+ * Function to compare the option values with the selected values. The first argument
233
+ * is a value from an option. The second is a value from the selection. A boolean
234
+ * should be returned.
235
+ */
236
+ get compareWith() {
237
+ return this._compareWith;
238
+ }
239
+ set compareWith(fn) {
240
+ /* tslint:disable-next-line:strict-type-predicates */
241
+ if (typeof fn !== 'function') {
242
+ throw getKbqSelectNonFunctionValueError();
243
+ }
244
+ this._compareWith = fn;
245
+ if (this.selectionModel) {
246
+ // A different comparator means the selection could change.
247
+ this.initializeSelection();
248
+ }
249
+ }
250
+ /** Value of the select control. */
251
+ get value() {
252
+ return this._value;
253
+ }
254
+ set value(newValue) {
255
+ if (newValue !== this._value) {
256
+ this.writeValue(newValue);
257
+ this._value = newValue;
258
+ }
259
+ }
260
+ get id() {
261
+ return this._id;
262
+ }
263
+ set id(value) {
264
+ this._id = value || this.uid;
265
+ this.stateChanges.next();
266
+ }
267
+ get disabled() {
268
+ return this._disabled;
269
+ }
270
+ set disabled(value) {
271
+ this._disabled = coerceBooleanProperty(value);
272
+ if (this.parentFormField) {
273
+ this._disabled ? this.parentFormField.stopFocusMonitor() : this.parentFormField.runFocusMonitor();
274
+ }
275
+ }
276
+ /** Whether the select is focused. */
277
+ get focused() {
278
+ return this._focused || this.panelOpen;
279
+ }
280
+ set focused(value) {
281
+ this._focused = value;
282
+ }
283
+ get isEmptySearchResult() {
284
+ return this.search && this.options.length === 0 && !!this.search.input.value;
285
+ }
286
+ get canShowCleaner() {
287
+ return !this.disabled && this.cleaner && this.selectionModel.hasValue();
288
+ }
289
+ get selected() {
290
+ return this.multiple ? this.selectionModel.selected : this.selectionModel.selected[0];
291
+ }
292
+ get triggerValue() {
293
+ if (this.empty) {
294
+ return '';
295
+ }
296
+ return this.selectionModel.selected[0].viewValue;
297
+ }
298
+ get triggerValues() {
299
+ if (this.empty) {
300
+ return [];
301
+ }
302
+ const selectedOptions = this.selectionModel.selected;
303
+ if (this.isRtl()) {
304
+ selectedOptions.reverse();
305
+ }
306
+ return selectedOptions;
307
+ }
308
+ get empty() {
309
+ return !this.selectionModel || this.selectionModel.isEmpty();
310
+ }
311
+ constructor(_changeDetectorRef, _ngZone, _renderer, defaultErrorStateMatcher, elementRef, _dir, parentForm, parentFormGroup, parentFormField, ngControl, scrollStrategyFactory, localeService) {
312
+ super(elementRef, defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl);
313
+ this._changeDetectorRef = _changeDetectorRef;
314
+ this._ngZone = _ngZone;
315
+ this._renderer = _renderer;
316
+ this._dir = _dir;
317
+ this.parentFormField = parentFormField;
318
+ this.scrollStrategyFactory = scrollStrategyFactory;
319
+ this.localeService = localeService;
320
+ /** A name for this control that can be used by `kbq-form-field`. */
321
+ this.controlType = 'select';
322
+ this.hiddenItems = 0;
323
+ /** The cached font-size of the trigger element. */
324
+ this.triggerFontSize = 0;
325
+ this.previousSelectionModelSelected = [];
326
+ /** The value of the select panel's transform-origin property. */
327
+ this.transformOrigin = 'top';
328
+ /** Emits when the panel element is finished transforming in. */
329
+ this.panelDoneAnimatingStream = new Subject();
330
+ /** Strategy that will be used to handle scrolling while the select panel is open. */
331
+ this.scrollStrategy = this.scrollStrategyFactory();
332
+ /**
333
+ * The y-offset of the overlay panel in relation to the trigger's top start corner.
334
+ * This must be adjusted to align the selected option text over the trigger text.
335
+ * when the panel opens. Will change based on the y-position of the selected option.
336
+ */
337
+ this.offsetY = 0;
338
+ /**
339
+ * This position config ensures that the top "start" corner of the overlay
340
+ * is aligned with with the top "start" of the origin by default (overlapping
341
+ * the trigger completely). If the panel cannot fit below the trigger, it
342
+ * will fall back to a position above the trigger.
343
+ */
344
+ this.positions = [
345
+ {
346
+ originX: 'start',
347
+ originY: 'bottom',
348
+ overlayX: 'start',
349
+ overlayY: 'top'
350
+ },
351
+ {
352
+ originX: 'start',
353
+ originY: 'top',
354
+ overlayX: 'start',
355
+ overlayY: 'bottom'
356
+ }
357
+ ];
358
+ this.hiddenItemsText = 'еще';
359
+ this.backdropClass = 'cdk-overlay-transparent-backdrop';
360
+ /** Combined stream of all of the child options' change events. */
361
+ this.optionSelectionChanges = defer(() => {
362
+ if (this.options) {
363
+ return merge(...this.options.map((option) => option.onSelectionChange), ...this.selectionModel.selected.map((option) => option.onSelectionChange));
364
+ }
365
+ return this._ngZone.onStable
366
+ .asObservable()
367
+ .pipe(take(1), switchMap(() => this.optionSelectionChanges));
368
+ });
369
+ /** Event emitted when the select panel has been toggled. */
370
+ this.openedChange = new EventEmitter();
371
+ /** Event emitted when the select has been opened. */
372
+ this.openedStream = this.openedChange.pipe(filter((o) => o), map(() => { }));
373
+ /** Event emitted when the select has been closed. */
374
+ this.closedStream = this.openedChange.pipe(filter((o) => !o), map(() => { }));
375
+ /** Event emitted when the selected value has been changed by the user. */
376
+ this.selectionChange = new EventEmitter();
377
+ /**
378
+ * Event that emits whenever the raw value of the select changes. This is here primarily
379
+ * to facilitate the two-way binding for the `value` input.
380
+ * @docs-private
381
+ */
382
+ this.valueChange = new EventEmitter();
383
+ this._hasBackdrop = false;
384
+ this._required = false;
385
+ this._multiple = false;
386
+ this._disabled = false;
387
+ this._focused = false;
388
+ this.panelOpen = false;
389
+ this.closeSubscription = Subscription.EMPTY;
390
+ /** The scroll position of the overlay panel, calculated to center the selected option. */
391
+ this.scrollTop = 0;
392
+ /** Unique id for this input. */
393
+ this.uid = `kbq-select-${nextUniqueId++}`;
394
+ this.visibleChanges = new BehaviorSubject(false);
395
+ /** Emits whenever the component is destroyed. */
396
+ this.destroy = new Subject();
397
+ /** `View -> model callback called when value changes` */
398
+ this.onChange = () => { };
399
+ /** `View -> model callback called when select has been touched` */
400
+ this.onTouched = () => { };
401
+ this.updateLocaleParams = () => {
402
+ this.hiddenItemsText = this.localeService?.getParams('select').hiddenItemsText;
403
+ this._changeDetectorRef.markForCheck();
404
+ };
405
+ /** Comparison function to specify which option is displayed. Defaults to object equality. */
406
+ this._compareWith = (o1, o2) => o1 === o2;
407
+ this.localeService?.changes
408
+ .subscribe(this.updateLocaleParams);
409
+ if (this.ngControl) {
410
+ // Note: we provide the value accessor through here, instead of
411
+ // the `providers` to avoid running into a circular import.
412
+ this.ngControl.valueAccessor = this;
413
+ }
414
+ // Force setter to be called in case id was not specified.
415
+ this.id = this.id;
416
+ }
417
+ ngOnInit() {
418
+ this.selectionModel = new SelectionModel(this.multiple);
419
+ this.stateChanges.next();
420
+ // We need `distinctUntilChanged` here, because some browsers will
421
+ // fire the animation end event twice for the same animation. See:
422
+ // https://github.com/angular/angular/issues/24084
423
+ this.panelDoneAnimatingStream
424
+ .pipe(distinctUntilChanged(), takeUntil(this.destroy))
425
+ .subscribe(() => {
426
+ if (this.panelOpen) {
427
+ this.scrollTop = 0;
428
+ if (this.search) {
429
+ this.search.focus();
430
+ }
431
+ this.openedChange.emit(true);
432
+ }
433
+ else {
434
+ this.openedChange.emit(false);
435
+ this._changeDetectorRef.markForCheck();
436
+ }
437
+ });
438
+ merge(this.optionSelectionChanges, this.visibleChanges).pipe(takeUntil(this.destroy), distinctUntilChanged())
439
+ .subscribe(() => setTimeout(() => this.calculateHiddenItems(), 0));
440
+ }
441
+ ngAfterContentInit() {
442
+ this.initKeyManager();
443
+ this.selectionModel.changed
444
+ .pipe(takeUntil(this.destroy))
445
+ .subscribe((event) => {
446
+ event.added.forEach((option) => option.select());
447
+ event.removed.forEach((option) => option.deselect());
448
+ });
449
+ this.options.changes
450
+ .pipe(startWith(null), takeUntil(this.destroy))
451
+ .subscribe(() => {
452
+ this.resetOptions();
453
+ this.initializeSelection();
454
+ });
455
+ }
456
+ ngAfterViewInit() {
457
+ this.tags.changes
458
+ .subscribe(() => {
459
+ setTimeout(() => this.calculateHiddenItems(), 0);
460
+ });
461
+ }
462
+ ngDoCheck() {
463
+ this.visibleChanges.next(this.isVisible());
464
+ if (this.ngControl) {
465
+ this.updateErrorState();
466
+ }
467
+ }
468
+ ngOnChanges(changes) {
469
+ // Updating the disabled state is handled by `mixinDisabled`, but we need to additionally let
470
+ // the parent form field know to run change detection when the disabled state changes.
471
+ if (changes.disabled) {
472
+ this.stateChanges.next();
473
+ }
474
+ }
475
+ ngOnDestroy() {
476
+ this.destroy.next();
477
+ this.destroy.complete();
478
+ this.stateChanges.complete();
479
+ this.closeSubscription.unsubscribe();
480
+ }
481
+ hiddenItemsTextFormatter(hiddenItemsText, hiddenItems) {
482
+ return `${hiddenItemsText} ${hiddenItems}`;
483
+ }
484
+ clearValue($event) {
485
+ $event.stopPropagation();
486
+ this.selectionModel.clear();
487
+ this.keyManager.setActiveItem(-1);
488
+ this.propagateChanges();
489
+ }
490
+ resetSearch() {
491
+ if (!this.search) {
492
+ return;
493
+ }
494
+ this.search.reset();
495
+ /*
496
+ todo the incorrect behaviour of keyManager is possible here
497
+ to avoid first item selection (to provide correct options flipping on closed select)
498
+ we should process options update like it is the first options appearance
499
+ */
500
+ this.search.isSearchChanged = false;
501
+ }
502
+ /** Toggles the overlay panel open or closed. */
503
+ toggle() {
504
+ if (this.panelOpen) {
505
+ this.close();
506
+ }
507
+ else {
508
+ this.open();
509
+ }
510
+ }
511
+ /** Opens the overlay panel. */
512
+ open() {
513
+ if (this.disabled || !this.options?.length || this.panelOpen) {
514
+ return;
515
+ }
516
+ this.triggerRect = this.trigger.nativeElement.getBoundingClientRect();
517
+ // Note: The computed font-size will be a string pixel value (e.g. "16px").
518
+ // `parseInt` ignores the trailing 'px' and converts this to a number.
519
+ this.triggerFontSize = parseInt(getComputedStyle(this.trigger.nativeElement)['font-size']);
520
+ this.panelOpen = true;
521
+ this.keyManager.withHorizontalOrientation(null);
522
+ this.highlightCorrectOption();
523
+ this._changeDetectorRef.markForCheck();
524
+ // Set the font size on the panel element once it exists.
525
+ this._ngZone.onStable.asObservable()
526
+ .pipe(take(1))
527
+ .subscribe(() => {
528
+ this.scrollActiveOptionIntoView();
529
+ if (this.triggerFontSize && this.overlayDir.overlayRef && this.overlayDir.overlayRef.overlayElement) {
530
+ this.overlayDir.overlayRef.overlayElement.style.fontSize = `${this.triggerFontSize}px`;
531
+ }
532
+ });
533
+ }
534
+ /** Closes the overlay panel and focuses the host element. */
535
+ close() {
536
+ if (!this.panelOpen) {
537
+ return;
538
+ }
539
+ // the order of calls is important
540
+ this.resetSearch();
541
+ this.panelOpen = false;
542
+ this.keyManager.withHorizontalOrientation(this.isRtl() ? 'rtl' : 'ltr');
543
+ this._changeDetectorRef.markForCheck();
544
+ this.onTouched();
545
+ }
546
+ /**
547
+ * Sets the select's value. Part of the ControlValueAccessor interface
548
+ * required to integrate with Angular's core forms API.
549
+ *
550
+ * @param value New value to be written to the model.
551
+ */
552
+ writeValue(value) {
553
+ if (this.options) {
554
+ this.setSelectionByValue(value);
555
+ }
556
+ }
557
+ /**
558
+ * Saves a callback function to be invoked when the select's value
559
+ * changes from user input. Part of the ControlValueAccessor interface
560
+ * required to integrate with Angular's core forms API.
561
+ *
562
+ * @param fn Callback to be triggered when the value changes.
563
+ */
564
+ registerOnChange(fn) {
565
+ this.onChange = fn;
566
+ }
567
+ /**
568
+ * Saves a callback function to be invoked when the select is blurred
569
+ * by the user. Part of the ControlValueAccessor interface required
570
+ * to integrate with Angular's core forms API.
571
+ *
572
+ * @param fn Callback to be triggered when the component has been touched.
573
+ */
574
+ registerOnTouched(fn) {
575
+ this.onTouched = fn;
576
+ }
577
+ /**
578
+ * Disables the select. Part of the ControlValueAccessor interface required
579
+ * to integrate with Angular's core forms API.
580
+ *
581
+ * @param isDisabled Sets whether the component is disabled.
582
+ */
583
+ setDisabledState(isDisabled) {
584
+ this.disabled = isDisabled;
585
+ this._changeDetectorRef.markForCheck();
586
+ this.stateChanges.next();
587
+ }
588
+ isRtl() {
589
+ return this._dir ? this._dir.value === 'rtl' : false;
590
+ }
591
+ handleKeydown(event) {
592
+ if (this.disabled) {
593
+ return;
594
+ }
595
+ if (this.panelOpen) {
596
+ this.handleOpenKeydown(event);
597
+ }
598
+ else {
599
+ this.handleClosedKeydown(event);
600
+ }
601
+ }
602
+ onFocus() {
603
+ if (!this.disabled) {
604
+ this._focused = true;
605
+ this.stateChanges.next();
606
+ }
607
+ }
608
+ /**
609
+ * Calls the touched callback only if the panel is closed. Otherwise, the trigger will
610
+ * "blur" to the panel when it opens, causing a false positive.
611
+ */
612
+ onBlur() {
613
+ this._focused = false;
614
+ if (!this.disabled && !this.panelOpen) {
615
+ this.onTouched();
616
+ this._changeDetectorRef.markForCheck();
617
+ this.stateChanges.next();
618
+ if (this.ngControl?.control) {
619
+ const control = this.ngControl.control;
620
+ control.updateValueAndValidity({ emitEvent: false });
621
+ control.statusChanges.emit(control.status);
622
+ }
623
+ }
624
+ }
625
+ /**
626
+ * Callback that is invoked when the overlay panel has been attached.
627
+ */
628
+ onAttached() {
629
+ this.overlayDir.positionChange
630
+ .pipe(take(1))
631
+ .subscribe(() => {
632
+ this._changeDetectorRef.detectChanges();
633
+ this.setOverlayPosition();
634
+ this.optionsContainer.nativeElement.scrollTop = this.scrollTop;
635
+ this.updateScrollSize();
636
+ });
637
+ this.closeSubscription = this.closingActions()
638
+ .subscribe(() => this.close());
639
+ }
640
+ /** Returns the theme to be used on the panel. */
641
+ getPanelTheme() {
642
+ return this.parentFormField ? `kbq-${this.parentFormField.color}` : '';
643
+ }
644
+ /** Focuses the select element. */
645
+ focus() {
646
+ this.elementRef.nativeElement.focus();
647
+ }
648
+ /**
649
+ * Implemented as part of KbqFormFieldControl.
650
+ * @docs-private
651
+ */
652
+ onContainerClick() {
653
+ this.focus();
654
+ }
655
+ /** Invoked when an option is clicked. */
656
+ onRemoveMatcherItem(option, $event) {
657
+ $event.stopPropagation();
658
+ option.deselect();
659
+ }
660
+ calculateHiddenItems() {
661
+ if (this.customTrigger || this.empty || !this.multiple) {
662
+ return;
663
+ }
664
+ const totalItemsWidth = this.getTotalItemsWidthInMatcher();
665
+ const [totalVisibleItemsWidth, visibleItems] = this.getTotalVisibleItems();
666
+ this.hiddenItems = this.selected.length - visibleItems;
667
+ this._changeDetectorRef.detectChanges();
668
+ if (this.hiddenItems) {
669
+ const itemsCounter = this.trigger.nativeElement.querySelector('.kbq-select__match-hidden-text');
670
+ const matcherList = this.trigger.nativeElement.querySelector('.kbq-select__match-list');
671
+ const itemsCounterShowed = itemsCounter.offsetTop < itemsCounter.offsetHeight;
672
+ const itemsCounterWidth = Math.floor(itemsCounter.getBoundingClientRect().width);
673
+ const matcherListWidth = Math.floor(matcherList.getBoundingClientRect().width);
674
+ const matcherWidth = matcherListWidth + (itemsCounterShowed ? itemsCounterWidth : 0);
675
+ if (itemsCounterShowed && (totalItemsWidth < matcherWidth)) {
676
+ this.hiddenItems = 0;
677
+ this._changeDetectorRef.detectChanges();
678
+ }
679
+ if (totalVisibleItemsWidth === matcherListWidth ||
680
+ (totalVisibleItemsWidth + itemsCounterWidth) < matcherListWidth) {
681
+ this._changeDetectorRef.markForCheck();
682
+ return;
683
+ }
684
+ }
685
+ this._changeDetectorRef.markForCheck();
686
+ }
687
+ getItemHeight() {
688
+ return this.options.first ? this.options.first.getHeight() : 0;
689
+ }
690
+ isVisible() {
691
+ return this.elementRef.nativeElement.offsetTop < this.elementRef.nativeElement.offsetHeight;
692
+ }
693
+ closingActions() {
694
+ return merge(this.overlayDir.overlayRef.outsidePointerEvents()
695
+ .pipe(filter((event) => !this.elementRef.nativeElement.contains(event.target))), this.overlayDir.overlayRef.detachments());
696
+ }
697
+ getHeightOfOptionsContainer() {
698
+ return this.optionsContainer.nativeElement.getClientRects()[0].height;
699
+ }
700
+ updateScrollSize() {
701
+ if (!this.options.first) {
702
+ return;
703
+ }
704
+ this.keyManager.withScrollSize(Math.floor(this.getHeightOfOptionsContainer() / this.options.first.getHeight()));
705
+ }
706
+ getTotalItemsWidthInMatcher() {
707
+ const triggerClone = this.buildTriggerClone();
708
+ triggerClone.querySelector('.kbq-select__match-hidden-text')?.remove();
709
+ this._renderer.appendChild(this.trigger.nativeElement, triggerClone);
710
+ let totalItemsWidth = 0;
711
+ triggerClone.querySelectorAll('kbq-tag')
712
+ .forEach((item) => totalItemsWidth += this.getItemWidth(item));
713
+ triggerClone.remove();
714
+ return totalItemsWidth;
715
+ }
716
+ getItemWidth(element) {
717
+ const computedStyle = window.getComputedStyle(element);
718
+ const width = parseInt(computedStyle.width);
719
+ const marginLeft = parseInt(computedStyle.marginLeft);
720
+ const marginRight = parseInt(computedStyle.marginRight);
721
+ return width + marginLeft + marginRight;
722
+ }
723
+ /** Handles keyboard events while the select is closed. */
724
+ handleClosedKeydown(event) {
725
+ /* tslint:disable-next-line */
726
+ const keyCode = event.keyCode;
727
+ const isArrowKey = [DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW].includes(keyCode);
728
+ const isOpenKey = [ENTER, SPACE].includes(keyCode);
729
+ // Open the select on ALT + arrow key to match the native <select>
730
+ if (isOpenKey || ((this.multiple || event.altKey) && isArrowKey)) {
731
+ event.preventDefault(); // prevents the page from scrolling down when pressing space
732
+ this.open();
733
+ }
734
+ else if (!this.multiple) {
735
+ this.keyManager.onKeydown(event);
736
+ }
737
+ }
738
+ /** Handles keyboard events when the selected is open. */
739
+ handleOpenKeydown(event) {
740
+ /* tslint:disable-next-line */
741
+ const keyCode = event.keyCode;
742
+ const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;
743
+ if (isArrowKey && event.altKey || keyCode === ESCAPE || keyCode === TAB) {
744
+ // Close the select on ALT + arrow key to match the native <select>
745
+ event.preventDefault();
746
+ this.close();
747
+ this.focus();
748
+ }
749
+ else if (keyCode === HOME) {
750
+ event.preventDefault();
751
+ this.keyManager.setFirstItemActive();
752
+ }
753
+ else if (keyCode === END) {
754
+ event.preventDefault();
755
+ this.keyManager.setLastItemActive();
756
+ }
757
+ else if (keyCode === PAGE_UP) {
758
+ event.preventDefault();
759
+ this.keyManager.setPreviousPageItemActive();
760
+ }
761
+ else if (keyCode === PAGE_DOWN) {
762
+ event.preventDefault();
763
+ this.keyManager.setNextPageItemActive();
764
+ }
765
+ else if ((keyCode === ENTER || keyCode === SPACE) && this.keyManager.activeItem) {
766
+ event.preventDefault();
767
+ this.keyManager.activeItem.selectViaInteraction();
768
+ }
769
+ else if (this._multiple && keyCode === A && event.ctrlKey) {
770
+ event.preventDefault();
771
+ const hasDeselectedOptions = this.options.some((option) => !option.selected);
772
+ this.options.forEach((option) => {
773
+ if (hasDeselectedOptions && !option.disabled) {
774
+ option.select();
775
+ }
776
+ else {
777
+ option.deselect();
778
+ }
779
+ });
780
+ }
781
+ else {
782
+ const previouslyFocusedIndex = this.keyManager.activeItemIndex;
783
+ this.keyManager.onKeydown(event);
784
+ if (this._multiple && isArrowKey && event.shiftKey && this.keyManager.activeItem &&
785
+ this.keyManager.activeItemIndex !== previouslyFocusedIndex) {
786
+ this.keyManager.activeItem.selectViaInteraction();
787
+ }
788
+ if (this.search) {
789
+ this.search.focus();
790
+ }
791
+ }
792
+ }
793
+ initializeSelection() {
794
+ // Defer setting the value in order to avoid the "Expression
795
+ // has changed after it was checked" errors from Angular.
796
+ Promise.resolve().then(() => {
797
+ this.setSelectionByValue(this.ngControl ? this.ngControl.value : this._value);
798
+ });
799
+ }
800
+ /**
801
+ * Sets the selected option based on a value. If no option can be
802
+ * found with the designated value, the select trigger is cleared.
803
+ */
804
+ setSelectionByValue(value) {
805
+ this.previousSelectionModelSelected = this.selectionModel.selected;
806
+ if (this.multiple && value) {
807
+ if (!Array.isArray(value)) {
808
+ throw getKbqSelectNonArrayValueError();
809
+ }
810
+ this.selectionModel.clear();
811
+ value.forEach((currentValue) => this.selectValue(currentValue));
812
+ this.sortValues();
813
+ }
814
+ else {
815
+ this.selectionModel.clear();
816
+ const correspondingOption = this.selectValue(value);
817
+ // Shift focus to the active item. Note that we shouldn't do this in multiple
818
+ // mode, because we don't know what option the user interacted with last.
819
+ if (correspondingOption) {
820
+ this.keyManager.setActiveItem(correspondingOption);
821
+ }
822
+ }
823
+ this._changeDetectorRef.markForCheck();
824
+ }
825
+ getCorrespondOption(value) {
826
+ return [
827
+ ...this.options.toArray(),
828
+ ...this.previousSelectionModelSelected
829
+ ].find((option) => {
830
+ try {
831
+ // Treat null as a special reset value.
832
+ return option.value != null && this.compareWith(option.value, value);
833
+ }
834
+ catch (error) {
835
+ if (isDevMode()) {
836
+ // Notify developers of errors in their comparator.
837
+ console.warn(error);
838
+ }
839
+ return false;
840
+ }
841
+ });
842
+ }
843
+ /**
844
+ * Finds and selects and option based on its value.
845
+ * @returns Option that has the corresponding value.
846
+ */
847
+ selectValue(value) {
848
+ const correspondingOption = this.getCorrespondOption(value);
849
+ if (correspondingOption) {
850
+ this.selectionModel.select(correspondingOption);
851
+ }
852
+ return correspondingOption;
853
+ }
854
+ /** Sets up a key manager to listen to keyboard events on the overlay panel. */
855
+ initKeyManager() {
856
+ const typeAheadDebounce = 200;
857
+ this.keyManager = new ActiveDescendantKeyManager(this.options)
858
+ .withTypeAhead(typeAheadDebounce, this.search ? -1 : 0)
859
+ .withVerticalOrientation()
860
+ .withHorizontalOrientation(this.isRtl() ? 'rtl' : 'ltr');
861
+ this.keyManager.change
862
+ .pipe(takeUntil(this.destroy))
863
+ .subscribe(() => {
864
+ if (this.panelOpen && this.panel) {
865
+ this.scrollActiveOptionIntoView();
866
+ }
867
+ else if (!this.panelOpen && !this.multiple && this.keyManager.activeItem) {
868
+ this.keyManager.activeItem.selectViaInteraction();
869
+ }
870
+ });
871
+ }
872
+ /** Drops current option subscriptions and IDs and resets from scratch. */
873
+ resetOptions() {
874
+ const changedOrDestroyed = merge(this.options.changes, this.destroy);
875
+ this.optionSelectionChanges
876
+ .pipe(takeUntil(changedOrDestroyed))
877
+ .subscribe((event) => {
878
+ this.onSelect(event.source, event.isUserInput);
879
+ if (this.search && this.search.isSearchChanged) {
880
+ Promise.resolve().then(() => this.keyManager.updateActiveItem(0));
881
+ this.search.isSearchChanged = false;
882
+ }
883
+ if (event.isUserInput && !this.multiple && this.panelOpen) {
884
+ this.close();
885
+ this.focus();
886
+ }
887
+ });
888
+ // Listen to changes in the internal state of the options and react accordingly.
889
+ // Handles cases like the labels of the selected options changing.
890
+ merge(...this.options.map((option) => option.stateChanges))
891
+ .pipe(takeUntil(changedOrDestroyed))
892
+ .subscribe(() => {
893
+ this._changeDetectorRef.markForCheck();
894
+ this.stateChanges.next();
895
+ });
896
+ }
897
+ /** Invoked when an option is clicked. */
898
+ onSelect(option, isUserInput) {
899
+ const wasSelected = this.selectionModel.isSelected(option);
900
+ if (option.value == null && !this._multiple) {
901
+ option.deselect();
902
+ this.selectionModel.clear();
903
+ this.propagateChanges(option.value);
904
+ }
905
+ else {
906
+ if (option.selected) {
907
+ this.selectionModel.select(option);
908
+ }
909
+ else {
910
+ this.selectionModel.deselect(option);
911
+ }
912
+ if (isUserInput) {
913
+ this.keyManager.setActiveItem(option);
914
+ }
915
+ if (this.multiple) {
916
+ this.sortValues();
917
+ if (isUserInput) {
918
+ // In case the user selected the option with their mouse, we
919
+ // want to restore focus back to the trigger, in order to
920
+ // prevent the select keyboard controls from clashing with
921
+ // the ones from `kbq-option`.
922
+ // If search is avaliable then we focus search again.
923
+ if (this.search) {
924
+ this.search.focus();
925
+ }
926
+ else {
927
+ this.focus();
928
+ }
929
+ }
930
+ }
931
+ }
932
+ if (wasSelected !== this.selectionModel.isSelected(option)) {
933
+ this.propagateChanges();
934
+ }
935
+ this.stateChanges.next();
936
+ }
937
+ /** Sorts the selected values in the selected based on their order in the panel. */
938
+ sortValues() {
939
+ if (this.multiple) {
940
+ const options = this.options.toArray();
941
+ this.selectionModel.sort((a, b) => {
942
+ return this.sortComparator ? this.sortComparator(a, b, options) :
943
+ options.indexOf(a) - options.indexOf(b);
944
+ });
945
+ this.stateChanges.next();
946
+ }
947
+ }
948
+ /** Emits change event to set the model value. */
949
+ propagateChanges(fallbackValue) {
950
+ let valueToEmit;
951
+ if (this.multiple) {
952
+ valueToEmit = this.selected.map((option) => option.value);
953
+ }
954
+ else {
955
+ valueToEmit = this.selected ? this.selected.value : fallbackValue;
956
+ }
957
+ this._value = valueToEmit;
958
+ this.valueChange.emit(valueToEmit);
959
+ this.onChange(valueToEmit);
960
+ this.selectionChange.emit(new KbqSelectChange(this, valueToEmit));
961
+ this._changeDetectorRef.markForCheck();
962
+ }
963
+ /**
964
+ * Highlights the selected item. If no option is selected, it will highlight
965
+ * the first item instead.
966
+ */
967
+ highlightCorrectOption() {
968
+ if (this.keyManager) {
969
+ if (this.empty) {
970
+ this.keyManager.setFirstItemActive();
971
+ }
972
+ else {
973
+ this.keyManager.setActiveItem(this.selectionModel.selected[0]);
974
+ }
975
+ }
976
+ }
977
+ /** Scrolls the active option into view. */
978
+ scrollActiveOptionIntoView() {
979
+ this.keyManager.activeItem?.focus();
980
+ }
981
+ /**
982
+ * Sets the x-offset of the overlay panel in relation to the trigger's top start corner.
983
+ * This must be adjusted to align the selected option text over the trigger text when
984
+ * the panel opens. Will change based on LTR or RTL text direction. Note that the offset
985
+ * can't be calculated until the panel has been attached, because we need to know the
986
+ * content width in order to constrain the panel within the viewport.
987
+ */
988
+ setOverlayPosition() {
989
+ this.resetOverlay();
990
+ const overlayRect = this.getOverlayRect();
991
+ // Window width without scrollbar
992
+ const windowWidth = this.getOverlayWidth();
993
+ const isRtl = this.isRtl();
994
+ /* tslint:disable-next-line:no-magic-numbers */
995
+ const paddingWidth = SELECT_PANEL_PADDING_X * 2;
996
+ let offsetX = SELECT_PANEL_PADDING_X;
997
+ let overlayMaxWidth;
998
+ // Invert the offset in LTR.
999
+ if (!isRtl) {
1000
+ offsetX *= -1;
1001
+ }
1002
+ // Determine if select overflows on either side.
1003
+ const leftOverflow = 0 - (overlayRect.left + offsetX - (isRtl ? paddingWidth : 0));
1004
+ const rightOverflow = overlayRect.right + offsetX - windowWidth
1005
+ + (isRtl ? 0 : paddingWidth);
1006
+ // If the element overflows on either side, reduce the offset to allow it to fit.
1007
+ if (leftOverflow > 0 || rightOverflow > 0) {
1008
+ [offsetX, overlayMaxWidth] = this.calculateOverlayXPosition(overlayRect, windowWidth, offsetX);
1009
+ this.overlayDir.overlayRef.overlayElement.style.maxWidth = `${overlayMaxWidth}px`;
1010
+ }
1011
+ // Set the offset directly in order to avoid having to go through change detection and
1012
+ // potentially triggering "changed after it was checked" errors. Round the value to avoid
1013
+ // blurry content in some browsers.
1014
+ this.overlayDir.offsetX = Math.round(offsetX);
1015
+ this.overlayDir.overlayRef.updatePosition();
1016
+ }
1017
+ calculateOverlayXPosition(overlayRect, windowWidth, basicOffsetX) {
1018
+ let offsetX = basicOffsetX;
1019
+ const leftIndent = this.triggerRect.left;
1020
+ const rightIndent = windowWidth - this.triggerRect.right;
1021
+ // Setting direction of dropdown expansion
1022
+ const isRightDirection = leftIndent <= rightIndent;
1023
+ let maxDropdownWidth;
1024
+ let overlayMaxWidth;
1025
+ const triggerWidth = this.triggerRect.width + SELECT_PANEL_INDENT_PADDING_X;
1026
+ if (isRightDirection) {
1027
+ maxDropdownWidth = rightIndent + triggerWidth - SELECT_PANEL_VIEWPORT_PADDING;
1028
+ overlayMaxWidth = overlayRect.width < maxDropdownWidth ? overlayRect.width : maxDropdownWidth;
1029
+ }
1030
+ else {
1031
+ let leftOffset;
1032
+ maxDropdownWidth = leftIndent + triggerWidth - SELECT_PANEL_VIEWPORT_PADDING;
1033
+ if (overlayRect.width < maxDropdownWidth) {
1034
+ overlayMaxWidth = overlayRect.width;
1035
+ leftOffset = this.triggerRect.right - overlayMaxWidth;
1036
+ }
1037
+ else {
1038
+ overlayMaxWidth = maxDropdownWidth;
1039
+ leftOffset = this.triggerRect.right - (overlayMaxWidth - SELECT_PANEL_INDENT_PADDING_X);
1040
+ }
1041
+ offsetX -= this.triggerRect.left - leftOffset;
1042
+ }
1043
+ return [offsetX, overlayMaxWidth];
1044
+ }
1045
+ resetOverlay() {
1046
+ this.overlayDir.offsetX = 0;
1047
+ this.overlayDir.overlayRef.overlayElement.style.maxWidth = 'unset';
1048
+ this.overlayDir.overlayRef.updatePosition();
1049
+ }
1050
+ getOverlayRect() {
1051
+ return this.overlayDir.overlayRef.overlayElement.getBoundingClientRect();
1052
+ }
1053
+ getOverlayWidth() {
1054
+ return this.scrollStrategy._overlayRef.hostElement.clientWidth;
1055
+ }
1056
+ getTotalVisibleItems() {
1057
+ const triggerClone = this.buildTriggerClone();
1058
+ this._renderer.setStyle(triggerClone.querySelector('.kbq-select__match-hidden-text'), 'display', 'block');
1059
+ this._renderer.appendChild(this.trigger.nativeElement, triggerClone);
1060
+ let visibleItemsCount = 0;
1061
+ let totalVisibleItemsWidth = 0;
1062
+ triggerClone.querySelectorAll('kbq-tag')
1063
+ .forEach((item) => {
1064
+ if (item.offsetTop < item.offsetHeight) {
1065
+ totalVisibleItemsWidth += this.getItemWidth(item);
1066
+ visibleItemsCount++;
1067
+ }
1068
+ });
1069
+ triggerClone.remove();
1070
+ return [totalVisibleItemsWidth, visibleItemsCount];
1071
+ }
1072
+ buildTriggerClone() {
1073
+ const triggerClone = this.trigger.nativeElement.cloneNode(true);
1074
+ this._renderer.setStyle(triggerClone, 'position', 'absolute');
1075
+ this._renderer.setStyle(triggerClone, 'visibility', 'hidden');
1076
+ this._renderer.setStyle(triggerClone, 'top', '-100%');
1077
+ this._renderer.setStyle(triggerClone, 'left', '0');
1078
+ return triggerClone;
1079
+ }
1080
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqSelect, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i2.ErrorStateMatcher }, { token: i0.ElementRef }, { token: i3.Directionality, optional: true }, { token: i4.NgForm, optional: true }, { token: i4.FormGroupDirective, optional: true }, { token: i1.KbqFormField, optional: true }, { token: i4.NgControl, optional: true, self: true }, { token: KBQ_SELECT_SCROLL_STRATEGY }, { token: KBQ_LOCALE_SERVICE, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
1081
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqSelect, selector: "kbq-select", inputs: { disabled: "disabled", tabIndex: "tabIndex", hiddenItemsText: "hiddenItemsText", panelClass: "panelClass", backdropClass: "backdropClass", errorStateMatcher: "errorStateMatcher", sortComparator: "sortComparator", hasBackdrop: "hasBackdrop", placeholder: "placeholder", required: "required", multiple: "multiple", compareWith: "compareWith", value: "value", id: "id", hiddenItemsTextFormatter: "hiddenItemsTextFormatter" }, outputs: { openedChange: "openedChange", openedStream: "opened", closedStream: "closed", selectionChange: "selectionChange", valueChange: "valueChange" }, host: { listeners: { "keydown": "handleKeydown($event)", "focus": "onFocus()", "blur": "onBlur()", "window:resize": "calculateHiddenItems()" }, properties: { "attr.id": "id", "attr.tabindex": "tabIndex", "attr.disabled": "disabled || null", "class.kbq-disabled": "disabled", "class.kbq-invalid": "errorState" }, classAttribute: "kbq-select" }, providers: [
1082
+ { provide: KbqFormFieldControl, useExisting: KbqSelect },
1083
+ { provide: KBQ_OPTION_PARENT_COMPONENT, useExisting: KbqSelect }
1084
+ ], queries: [{ propertyName: "customTrigger", first: true, predicate: KbqSelectTrigger, descendants: true }, { propertyName: "customMatcher", first: true, predicate: KbqSelectMatcher, descendants: true }, { propertyName: "customTagTemplateRef", first: true, predicate: ["mcSelectTagContent"], descendants: true, read: TemplateRef }, { propertyName: "cleaner", first: true, predicate: ["mcSelectCleaner"], descendants: true, static: true }, { propertyName: "search", first: true, predicate: KbqSelectSearch, descendants: true }, { propertyName: "options", predicate: KbqOption, descendants: true }, { propertyName: "optionGroups", predicate: KbqOptgroup }], viewQueries: [{ propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true }, { propertyName: "panel", first: true, predicate: ["panel"], descendants: true }, { propertyName: "optionsContainer", first: true, predicate: ["optionsContainer"], descendants: true }, { propertyName: "overlayDir", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "tags", predicate: KbqTag, descendants: true }], exportAs: ["mcSelect"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div cdk-overlay-origin\n class=\"kbq-select__trigger\"\n (click)=\"toggle()\"\n [class.kbq-select__trigger_multiple]=\"multiple\"\n #origin=\"cdkOverlayOrigin\"\n #trigger\n [ngSwitch]=\"!!customMatcher\">\n\n <div class=\"kbq-select__matcher\" *ngSwitchCase=\"false\">\n <span class=\"kbq-select__placeholder\" *ngIf=\"empty\">{{ placeholder || '\\u00A0' }}</span>\n <span *ngIf=\"!empty\" [ngSwitch]=\"!!customTrigger\">\n <div *ngSwitchDefault [ngSwitch]=\"multiple\" class=\"kbq-select__match-container\">\n <span *ngSwitchCase=\"false\" class=\"kbq-select__matcher-text\">{{ triggerValue }}</span>\n <div *ngSwitchCase=\"true\" class=\"kbq-select__match-list\">\n <ng-container *ngIf=\"!customTagTemplateRef\">\n <kbq-tag *ngFor=\"let option of triggerValues\"\n [disabled]=\"option.disabled || disabled\"\n [selectable]=\"false\"\n [class.kbq-error]=\"errorState\">\n {{ option.viewValue }}\n <i kbq-icon=\"mc-close-S_16\" mcTagRemove\n *ngIf=\"!option.disabled && !disabled\"\n (click)=\"onRemoveMatcherItem(option, $event)\">\n </i>\n </kbq-tag>\n </ng-container>\n <ng-container *ngIf=\"customTagTemplateRef\">\n <ng-container *ngFor=\"let option of triggerValues\"\n [ngTemplateOutlet]=\"customTagTemplateRef\"\n [ngTemplateOutletContext]=\"{$implicit: option, select: this}\">\n </ng-container>\n </ng-container>\n </div>\n <div class=\"kbq-select__match-hidden-text\" [style.display]=\"hiddenItems > 0 ? 'block' : 'none'\">\n {{ hiddenItemsTextFormatter(hiddenItemsText, hiddenItems) }}\n </div>\n </div>\n <ng-content select=\"kbq-select-trigger, [kbq-select-trigger]\" *ngSwitchCase=\"true\"></ng-content>\n </span>\n\n <div class=\"kbq-select__cleaner\" *ngIf=\"canShowCleaner\" (click)=\"clearValue($event)\">\n <ng-content select=\"kbq-cleaner\"></ng-content>\n </div>\n\n <div class=\"kbq-select__arrow-wrapper\">\n <i class=\"kbq-select__arrow\" kbq-icon=\"mc-angle-down-S_16\"></i>\n </div>\n </div>\n\n <ng-content select=\"kbq-select-matcher, [kbq-select-matcher]\" *ngSwitchCase=\"true\"></ng-content>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\"\n [cdkConnectedOverlayBackdropClass]=\"backdropClass\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayMinWidth]=\"triggerRect?.width!\"\n [cdkConnectedOverlayOffsetY]=\"offsetY\"\n (backdropClick)=\"close()\"\n (attach)=\"onAttached()\"\n (detach)=\"close()\">\n <div\n #panel\n class=\"kbq-select__panel {{ getPanelTheme() }}\"\n [ngClass]=\"panelClass\"\n [style.transformOrigin]=\"transformOrigin\"\n [style.font-size.px]=\"triggerFontSize\"\n (keydown)=\"handleKeydown($event)\">\n\n <div *ngIf=\"search\" class=\"kbq-select__search-container\">\n <ng-content select=\"[mcSelectSearch]\"></ng-content>\n </div>\n\n <div #optionsContainer\n class=\"kbq-select__content kbq-scrollbar\"\n [@fadeInContent]=\"'showing'\"\n (@fadeInContent.done)=\"panelDoneAnimatingStream.next($event.toState)\">\n\n <div *ngIf=\"isEmptySearchResult\" class=\"kbq-select__no-options-message\">\n <ng-content select=\"[kbq-select-search-empty-result]\"></ng-content>\n </div>\n <ng-content></ng-content>\n </div>\n\n <ng-content select=\"kbq-select-footer,[kbq-select-footer]\"></ng-content>\n </div>\n</ng-template>\n", styles: [".kbq-select__matcher{display:flex;align-items:center;width:100%;overflow:hidden;white-space:nowrap}.kbq-select__matcher>span{flex:1;overflow:hidden}.kbq-select__match-container{width:100%;text-overflow:ellipsis;overflow:hidden}.kbq-select__match-container .kbq-select__match-hidden-text{flex:0 0 70px;align-self:center;padding:0 8px;text-align:right}.kbq-select{box-sizing:border-box;display:inline-block;width:100%;outline:none}.kbq-select .kbq-select__trigger{display:flex;box-sizing:border-box;position:relative;height:calc(var(--kbq-form-field-size-height, 32px) - var(--kbq-form-field-size-border-width, 1px) * 2);cursor:pointer}.kbq-select .kbq-select__trigger .kbq-select__matcher{padding-left:calc(var(--kbq-select-size-left-padding, ) - var(--kbq-form-field-size-border-width, 1px));padding-right:calc(var(--kbq-select-size-right-padding, ) - var(--kbq-form-field-size-border-width, 1px))}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiple .kbq-select__matcher{padding-left:calc(var(--kbq-select-size-left-padding-multiple, ) - var(--kbq-form-field-size-border-width, 1px))}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiple .kbq-select__matcher .kbq-select__match-container{display:flex}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiple .kbq-select__matcher .kbq-tag.kbq-disabled .kbq-tag__text{margin-right:7px}.kbq-select.kbq-disabled .kbq-select__trigger{-webkit-user-select:none;user-select:none;cursor:default}.kbq-select__no-options-message{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;position:relative;max-width:100%;height:var(--kbq-option-size-height, 32px);cursor:default;outline:none;padding-left:var(--kbq-option-size-horizontal-padding, 12px);padding-right:var(--kbq-option-size-horizontal-padding, 12px);border:var(--kbq-option-size-border-width, 2px) solid transparent}.kbq-select__match-list{display:flex;flex-wrap:wrap;overflow:hidden;max-height:calc(var(--kbq-form-field-size-height, 32px) - 4px);height:calc(var(--kbq-form-field-size-height, 32px) - 4px)}.kbq-select__match-list .kbq-tag{margin-right:4px}.kbq-select__arrow-wrapper{display:flex;align-self:center}.kbq-form-field-appearance-fill .kbq-select__arrow-wrapper,.kbq-form-field-appearance-standard .kbq-select__arrow-wrapper{transform:translateY(-50%)}.kbq-form-field-appearance-outline .kbq-select__arrow-wrapper{transform:translateY(-25%)}.kbq-select__panel{min-width:100%;max-width:var(--kbq-select-panel-size-max-width, );overflow:hidden;border-width:var(--kbq-select-panel-size-border-width, );border-style:solid;border-bottom-left-radius:var(--kbq-select-panel-size-border-radius, 8px);border-bottom-right-radius:var(--kbq-select-panel-size-border-radius, 8px)}.kbq-select__panel .kbq-optgroup-label,.kbq-select__panel .kbq-option{font-size:inherit;line-height:var(--kbq-option-size-height, 32px);height:var(--kbq-option-size-height, 32px)}.kbq-select__panel .kbq-select__footer{display:flex;align-items:center;box-sizing:border-box;padding:4px 12px;border-top-width:1px;border-top-style:solid;min-height:var(--kbq-list-size-footer-min-height, )}.kbq-select__content{max-height:var(--kbq-select-panel-size-max-height, 256px);padding:var(--kbq-select-panel-size-vertical-padding, ) 0;overflow:hidden auto}.kbq-select__content .cdk-virtual-scroll-viewport{max-height:calc(var(--kbq-select-panel-size-max-height, 256px))}.kbq-form-field-type-select:not(.kbq-disabled) .kbq-form-field-flex{cursor:pointer}.kbq-select__search-container{border-bottom-width:1px;border-bottom-style:solid}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i5.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i2$1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i2$1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: i7.KbqIcon, selector: "[kbq-icon]", inputs: ["color", "small", "autoColor"] }, { kind: "component", type: i8.KbqTag, selector: "kbq-tag, [kbq-tag], kbq-basic-tag, [kbq-basic-tag]", inputs: ["color", "selected", "value", "selectable", "removable", "tabindex", "disabled"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["mcTag"] }, { kind: "directive", type: i8.KbqTagRemove, selector: "[mcTagRemove]" }], animations: [
1085
+ mcSelectAnimations.transformPanel,
1086
+ mcSelectAnimations.fadeInContent
1087
+ ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1088
+ }
1089
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqSelect, decorators: [{
1090
+ type: Component,
1091
+ args: [{ selector: 'kbq-select', exportAs: 'mcSelect', inputs: ['disabled', 'tabIndex'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
1092
+ '[attr.id]': 'id',
1093
+ '[attr.tabindex]': 'tabIndex',
1094
+ '[attr.disabled]': 'disabled || null',
1095
+ class: 'kbq-select',
1096
+ '[class.kbq-disabled]': 'disabled',
1097
+ '[class.kbq-invalid]': 'errorState',
1098
+ '(keydown)': 'handleKeydown($event)',
1099
+ '(focus)': 'onFocus()',
1100
+ '(blur)': 'onBlur()',
1101
+ '(window:resize)': 'calculateHiddenItems()'
1102
+ }, animations: [
1103
+ mcSelectAnimations.transformPanel,
1104
+ mcSelectAnimations.fadeInContent
1105
+ ], providers: [
1106
+ { provide: KbqFormFieldControl, useExisting: KbqSelect },
1107
+ { provide: KBQ_OPTION_PARENT_COMPONENT, useExisting: KbqSelect }
1108
+ ], template: "<div cdk-overlay-origin\n class=\"kbq-select__trigger\"\n (click)=\"toggle()\"\n [class.kbq-select__trigger_multiple]=\"multiple\"\n #origin=\"cdkOverlayOrigin\"\n #trigger\n [ngSwitch]=\"!!customMatcher\">\n\n <div class=\"kbq-select__matcher\" *ngSwitchCase=\"false\">\n <span class=\"kbq-select__placeholder\" *ngIf=\"empty\">{{ placeholder || '\\u00A0' }}</span>\n <span *ngIf=\"!empty\" [ngSwitch]=\"!!customTrigger\">\n <div *ngSwitchDefault [ngSwitch]=\"multiple\" class=\"kbq-select__match-container\">\n <span *ngSwitchCase=\"false\" class=\"kbq-select__matcher-text\">{{ triggerValue }}</span>\n <div *ngSwitchCase=\"true\" class=\"kbq-select__match-list\">\n <ng-container *ngIf=\"!customTagTemplateRef\">\n <kbq-tag *ngFor=\"let option of triggerValues\"\n [disabled]=\"option.disabled || disabled\"\n [selectable]=\"false\"\n [class.kbq-error]=\"errorState\">\n {{ option.viewValue }}\n <i kbq-icon=\"mc-close-S_16\" mcTagRemove\n *ngIf=\"!option.disabled && !disabled\"\n (click)=\"onRemoveMatcherItem(option, $event)\">\n </i>\n </kbq-tag>\n </ng-container>\n <ng-container *ngIf=\"customTagTemplateRef\">\n <ng-container *ngFor=\"let option of triggerValues\"\n [ngTemplateOutlet]=\"customTagTemplateRef\"\n [ngTemplateOutletContext]=\"{$implicit: option, select: this}\">\n </ng-container>\n </ng-container>\n </div>\n <div class=\"kbq-select__match-hidden-text\" [style.display]=\"hiddenItems > 0 ? 'block' : 'none'\">\n {{ hiddenItemsTextFormatter(hiddenItemsText, hiddenItems) }}\n </div>\n </div>\n <ng-content select=\"kbq-select-trigger, [kbq-select-trigger]\" *ngSwitchCase=\"true\"></ng-content>\n </span>\n\n <div class=\"kbq-select__cleaner\" *ngIf=\"canShowCleaner\" (click)=\"clearValue($event)\">\n <ng-content select=\"kbq-cleaner\"></ng-content>\n </div>\n\n <div class=\"kbq-select__arrow-wrapper\">\n <i class=\"kbq-select__arrow\" kbq-icon=\"mc-angle-down-S_16\"></i>\n </div>\n </div>\n\n <ng-content select=\"kbq-select-matcher, [kbq-select-matcher]\" *ngSwitchCase=\"true\"></ng-content>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\"\n [cdkConnectedOverlayBackdropClass]=\"backdropClass\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayMinWidth]=\"triggerRect?.width!\"\n [cdkConnectedOverlayOffsetY]=\"offsetY\"\n (backdropClick)=\"close()\"\n (attach)=\"onAttached()\"\n (detach)=\"close()\">\n <div\n #panel\n class=\"kbq-select__panel {{ getPanelTheme() }}\"\n [ngClass]=\"panelClass\"\n [style.transformOrigin]=\"transformOrigin\"\n [style.font-size.px]=\"triggerFontSize\"\n (keydown)=\"handleKeydown($event)\">\n\n <div *ngIf=\"search\" class=\"kbq-select__search-container\">\n <ng-content select=\"[mcSelectSearch]\"></ng-content>\n </div>\n\n <div #optionsContainer\n class=\"kbq-select__content kbq-scrollbar\"\n [@fadeInContent]=\"'showing'\"\n (@fadeInContent.done)=\"panelDoneAnimatingStream.next($event.toState)\">\n\n <div *ngIf=\"isEmptySearchResult\" class=\"kbq-select__no-options-message\">\n <ng-content select=\"[kbq-select-search-empty-result]\"></ng-content>\n </div>\n <ng-content></ng-content>\n </div>\n\n <ng-content select=\"kbq-select-footer,[kbq-select-footer]\"></ng-content>\n </div>\n</ng-template>\n", styles: [".kbq-select__matcher{display:flex;align-items:center;width:100%;overflow:hidden;white-space:nowrap}.kbq-select__matcher>span{flex:1;overflow:hidden}.kbq-select__match-container{width:100%;text-overflow:ellipsis;overflow:hidden}.kbq-select__match-container .kbq-select__match-hidden-text{flex:0 0 70px;align-self:center;padding:0 8px;text-align:right}.kbq-select{box-sizing:border-box;display:inline-block;width:100%;outline:none}.kbq-select .kbq-select__trigger{display:flex;box-sizing:border-box;position:relative;height:calc(var(--kbq-form-field-size-height, 32px) - var(--kbq-form-field-size-border-width, 1px) * 2);cursor:pointer}.kbq-select .kbq-select__trigger .kbq-select__matcher{padding-left:calc(var(--kbq-select-size-left-padding, ) - var(--kbq-form-field-size-border-width, 1px));padding-right:calc(var(--kbq-select-size-right-padding, ) - var(--kbq-form-field-size-border-width, 1px))}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiple .kbq-select__matcher{padding-left:calc(var(--kbq-select-size-left-padding-multiple, ) - var(--kbq-form-field-size-border-width, 1px))}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiple .kbq-select__matcher .kbq-select__match-container{display:flex}.kbq-select .kbq-select__trigger.kbq-select__trigger_multiple .kbq-select__matcher .kbq-tag.kbq-disabled .kbq-tag__text{margin-right:7px}.kbq-select.kbq-disabled .kbq-select__trigger{-webkit-user-select:none;user-select:none;cursor:default}.kbq-select__no-options-message{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;position:relative;max-width:100%;height:var(--kbq-option-size-height, 32px);cursor:default;outline:none;padding-left:var(--kbq-option-size-horizontal-padding, 12px);padding-right:var(--kbq-option-size-horizontal-padding, 12px);border:var(--kbq-option-size-border-width, 2px) solid transparent}.kbq-select__match-list{display:flex;flex-wrap:wrap;overflow:hidden;max-height:calc(var(--kbq-form-field-size-height, 32px) - 4px);height:calc(var(--kbq-form-field-size-height, 32px) - 4px)}.kbq-select__match-list .kbq-tag{margin-right:4px}.kbq-select__arrow-wrapper{display:flex;align-self:center}.kbq-form-field-appearance-fill .kbq-select__arrow-wrapper,.kbq-form-field-appearance-standard .kbq-select__arrow-wrapper{transform:translateY(-50%)}.kbq-form-field-appearance-outline .kbq-select__arrow-wrapper{transform:translateY(-25%)}.kbq-select__panel{min-width:100%;max-width:var(--kbq-select-panel-size-max-width, );overflow:hidden;border-width:var(--kbq-select-panel-size-border-width, );border-style:solid;border-bottom-left-radius:var(--kbq-select-panel-size-border-radius, 8px);border-bottom-right-radius:var(--kbq-select-panel-size-border-radius, 8px)}.kbq-select__panel .kbq-optgroup-label,.kbq-select__panel .kbq-option{font-size:inherit;line-height:var(--kbq-option-size-height, 32px);height:var(--kbq-option-size-height, 32px)}.kbq-select__panel .kbq-select__footer{display:flex;align-items:center;box-sizing:border-box;padding:4px 12px;border-top-width:1px;border-top-style:solid;min-height:var(--kbq-list-size-footer-min-height, )}.kbq-select__content{max-height:var(--kbq-select-panel-size-max-height, 256px);padding:var(--kbq-select-panel-size-vertical-padding, ) 0;overflow:hidden auto}.kbq-select__content .cdk-virtual-scroll-viewport{max-height:calc(var(--kbq-select-panel-size-max-height, 256px))}.kbq-form-field-type-select:not(.kbq-disabled) .kbq-form-field-flex{cursor:pointer}.kbq-select__search-container{border-bottom-width:1px;border-bottom-style:solid}\n"] }]
1109
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i2.ErrorStateMatcher }, { type: i0.ElementRef }, { type: i3.Directionality, decorators: [{
1110
+ type: Optional
1111
+ }] }, { type: i4.NgForm, decorators: [{
1112
+ type: Optional
1113
+ }] }, { type: i4.FormGroupDirective, decorators: [{
1114
+ type: Optional
1115
+ }] }, { type: i1.KbqFormField, decorators: [{
1116
+ type: Optional
1117
+ }] }, { type: i4.NgControl, decorators: [{
1118
+ type: Self
1119
+ }, {
1120
+ type: Optional
1121
+ }] }, { type: undefined, decorators: [{
1122
+ type: Inject,
1123
+ args: [KBQ_SELECT_SCROLL_STRATEGY]
1124
+ }] }, { type: i2.KbqLocaleService, decorators: [{
1125
+ type: Optional
1126
+ }, {
1127
+ type: Inject,
1128
+ args: [KBQ_LOCALE_SERVICE]
1129
+ }] }]; }, propDecorators: { trigger: [{
1130
+ type: ViewChild,
1131
+ args: ['trigger', { static: false }]
1132
+ }], panel: [{
1133
+ type: ViewChild,
1134
+ args: ['panel', { static: false }]
1135
+ }], optionsContainer: [{
1136
+ type: ViewChild,
1137
+ args: ['optionsContainer', { static: false }]
1138
+ }], overlayDir: [{
1139
+ type: ViewChild,
1140
+ args: [CdkConnectedOverlay, { static: false }]
1141
+ }], tags: [{
1142
+ type: ViewChildren,
1143
+ args: [KbqTag]
1144
+ }], customTrigger: [{
1145
+ type: ContentChild,
1146
+ args: [KbqSelectTrigger, { static: false }]
1147
+ }], customMatcher: [{
1148
+ type: ContentChild,
1149
+ args: [KbqSelectMatcher, { static: false }]
1150
+ }], customTagTemplateRef: [{
1151
+ type: ContentChild,
1152
+ args: ['mcSelectTagContent', { static: false, read: TemplateRef }]
1153
+ }], cleaner: [{
1154
+ type: ContentChild,
1155
+ args: ['mcSelectCleaner', { static: true }]
1156
+ }], options: [{
1157
+ type: ContentChildren,
1158
+ args: [KbqOption, { descendants: true }]
1159
+ }], optionGroups: [{
1160
+ type: ContentChildren,
1161
+ args: [KbqOptgroup]
1162
+ }], search: [{
1163
+ type: ContentChild,
1164
+ args: [KbqSelectSearch, { static: false }]
1165
+ }], hiddenItemsText: [{
1166
+ type: Input
1167
+ }], panelClass: [{
1168
+ type: Input
1169
+ }], backdropClass: [{
1170
+ type: Input
1171
+ }], errorStateMatcher: [{
1172
+ type: Input
1173
+ }], sortComparator: [{
1174
+ type: Input
1175
+ }], openedChange: [{
1176
+ type: Output
1177
+ }], openedStream: [{
1178
+ type: Output,
1179
+ args: ['opened']
1180
+ }], closedStream: [{
1181
+ type: Output,
1182
+ args: ['closed']
1183
+ }], selectionChange: [{
1184
+ type: Output
1185
+ }], valueChange: [{
1186
+ type: Output
1187
+ }], hasBackdrop: [{
1188
+ type: Input
1189
+ }], placeholder: [{
1190
+ type: Input
1191
+ }], required: [{
1192
+ type: Input
1193
+ }], multiple: [{
1194
+ type: Input
1195
+ }], compareWith: [{
1196
+ type: Input
1197
+ }], value: [{
1198
+ type: Input
1199
+ }], id: [{
1200
+ type: Input
1201
+ }], hiddenItemsTextFormatter: [{
1202
+ type: Input
1203
+ }] } });
1204
+
1205
+ class KbqSelectModule {
1206
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1207
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.5", ngImport: i0, type: KbqSelectModule, declarations: [KbqSelect,
1208
+ KbqSelectSearch,
1209
+ KbqSelectSearchEmptyResult,
1210
+ KbqSelectTrigger,
1211
+ KbqSelectMatcher,
1212
+ KbqOptionTooltip,
1213
+ KbqSelectFooter], imports: [CommonModule,
1214
+ OverlayModule,
1215
+ KbqOptionModule,
1216
+ KbqIconModule,
1217
+ KbqTagsModule,
1218
+ KbqToolTipModule], exports: [KbqFormFieldModule,
1219
+ KbqSelect,
1220
+ KbqSelectSearch,
1221
+ KbqSelectSearchEmptyResult,
1222
+ KbqSelectTrigger,
1223
+ KbqSelectMatcher,
1224
+ KbqSelectFooter,
1225
+ KbqOptionTooltip,
1226
+ KbqOptionModule,
1227
+ CommonModule] }); }
1228
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqSelectModule, providers: [KBQ_SELECT_SCROLL_STRATEGY_PROVIDER], imports: [CommonModule,
1229
+ OverlayModule,
1230
+ KbqOptionModule,
1231
+ KbqIconModule,
1232
+ KbqTagsModule,
1233
+ KbqToolTipModule, KbqFormFieldModule,
1234
+ KbqOptionModule,
1235
+ CommonModule] }); }
1236
+ }
1237
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqSelectModule, decorators: [{
1238
+ type: NgModule,
1239
+ args: [{
1240
+ imports: [
1241
+ CommonModule,
1242
+ OverlayModule,
1243
+ KbqOptionModule,
1244
+ KbqIconModule,
1245
+ KbqTagsModule,
1246
+ KbqToolTipModule
1247
+ ],
1248
+ exports: [
1249
+ KbqFormFieldModule,
1250
+ KbqSelect,
1251
+ KbqSelectSearch,
1252
+ KbqSelectSearchEmptyResult,
1253
+ KbqSelectTrigger,
1254
+ KbqSelectMatcher,
1255
+ KbqSelectFooter,
1256
+ KbqOptionTooltip,
1257
+ KbqOptionModule,
1258
+ CommonModule
1259
+ ],
1260
+ declarations: [
1261
+ KbqSelect,
1262
+ KbqSelectSearch,
1263
+ KbqSelectSearchEmptyResult,
1264
+ KbqSelectTrigger,
1265
+ KbqSelectMatcher,
1266
+ KbqOptionTooltip,
1267
+ KbqSelectFooter
1268
+ ],
1269
+ providers: [KBQ_SELECT_SCROLL_STRATEGY_PROVIDER]
1270
+ }]
1271
+ }] });
1272
+
1273
+ /**
1274
+ * Generated bundle index. Do not edit.
1275
+ */
1276
+
1277
+ export { KbqOptionTooltip, KbqSelect, KbqSelectBase, KbqSelectChange, KbqSelectFooter, KbqSelectMatcher, KbqSelectModule, KbqSelectSearch, KbqSelectSearchEmptyResult, KbqSelectTrigger };
1278
+ //# sourceMappingURL=koobiq-components-select.mjs.map