@koobiq/components 17.0.0-rc.1 → 17.0.0-rc.11

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 (669) hide show
  1. package/README.md +1 -2
  2. package/alert/_alert-theme.scss +48 -24
  3. package/alert/alert.component.d.ts +23 -3
  4. package/alert/alert.component.scss +91 -59
  5. package/alert/public-api.d.ts +1 -1
  6. package/autocomplete/_autocomplete-theme.scss +3 -3
  7. package/autocomplete/autocomplete.scss +8 -18
  8. package/autocomplete/public-api.d.ts +2 -2
  9. package/badge/_badge-theme.scss +30 -45
  10. package/badge/badge.component.scss +18 -39
  11. package/badge/public-api.d.ts +1 -1
  12. package/button/_button-base.scss +7 -14
  13. package/button/_button-theme.scss +30 -86
  14. package/button/button.component.d.ts +4 -3
  15. package/button/button.scss +7 -17
  16. package/button/public-api.d.ts +1 -1
  17. package/button-toggle/_button-toggle-theme.scss +19 -20
  18. package/button-toggle/button-toggle.scss +17 -44
  19. package/button-toggle/public-api.d.ts +1 -1
  20. package/card/_card-theme.scss +18 -17
  21. package/card/card.component.d.ts +1 -1
  22. package/card/card.component.scss +3 -6
  23. package/card/public-api.d.ts +1 -1
  24. package/checkbox/_checkbox-theme.scss +50 -50
  25. package/checkbox/checkbox.scss +31 -35
  26. package/code-block/README.md +18 -14
  27. package/code-block/_code-block-theme.scss +53 -23
  28. package/code-block/actionbar.component.scss +11 -25
  29. package/code-block/code-block.component.d.ts +12 -4
  30. package/code-block/code-block.scss +62 -77
  31. package/code-block/public-api.d.ts +1 -1
  32. package/core/animation/index.d.ts +1 -1
  33. package/core/common-behaviors/index.d.ts +3 -3
  34. package/core/datetime/index.d.ts +1 -1
  35. package/core/form-field/form-field-ref.d.ts +2 -0
  36. package/core/formatters/index.d.ts +1 -1
  37. package/core/forms/_forms-theme.scss +4 -8
  38. package/core/forms/_forms.scss +13 -43
  39. package/core/forms/index.d.ts +1 -1
  40. package/core/locales/formatters.d.ts +96 -0
  41. package/core/locales/index.d.ts +1 -1
  42. package/core/locales/locale-service.d.ts +97 -0
  43. package/core/option/_optgroup-theme.scss +4 -6
  44. package/core/option/_option-action-theme.scss +8 -11
  45. package/core/option/_option-theme.scss +15 -20
  46. package/core/option/index.d.ts +2 -2
  47. package/core/option/optgroup.scss +2 -3
  48. package/core/option/option.scss +0 -1
  49. package/core/pop-up/_pop-up.scss +0 -1
  50. package/core/pop-up/pop-up-trigger.d.ts +4 -2
  51. package/core/public-api.d.ts +3 -3
  52. package/core/select/common.d.ts +35 -0
  53. package/core/select/constants.d.ts +1 -1
  54. package/core/select/index.d.ts +3 -2
  55. package/core/selection/pseudo-checkbox/_pseudo-checkbox-theme.scss +15 -19
  56. package/core/selection/pseudo-checkbox/pseudo-checkbox.scss +9 -9
  57. package/core/services/theme.service.d.ts +3 -2
  58. package/core/styles/_core.scss +0 -1
  59. package/core/styles/_koobiq-theme.scss +5 -3
  60. package/core/styles/common/_animation.scss +9 -8
  61. package/core/styles/common/_button.scss +0 -2
  62. package/core/styles/common/_clearfix.scss +1 -1
  63. package/core/styles/common/_groups.scss +3 -9
  64. package/core/styles/common/_list.scss +24 -66
  65. package/core/styles/common/_overlay.scss +4 -3
  66. package/core/styles/common/_popup.scss +5 -5
  67. package/core/styles/common/_rtl.scss +4 -4
  68. package/core/styles/common/_select.scss +48 -42
  69. package/core/styles/common/_tokens.scss +47 -0
  70. package/core/styles/functions/_number.scss +14 -19
  71. package/core/styles/functions/_string.scss +18 -19
  72. package/core/styles/functions/_timing.scss +24 -24
  73. package/core/styles/theming/_components-theming.scss +1322 -1326
  74. package/core/styles/theming/_scrollbar-theme.scss +8 -5
  75. package/core/styles/theming/_theming.scss +26 -29
  76. package/core/styles/typography/_typography-utils.scss +1 -2
  77. package/core/styles/typography/_typography.scss +138 -85
  78. package/core/styles/visual/_body.scss +0 -2
  79. package/core/styles/visual/_layout.scss +44 -38
  80. package/core/utils/data-size/config.d.ts +20 -2
  81. package/core/utils/data-size/data-size.pipe.d.ts +10 -9
  82. package/core/utils/data-size/index.d.ts +1 -1
  83. package/core/utils/data-size/size.d.ts +3 -4
  84. package/core/utils/public-api.d.ts +1 -1
  85. package/datepicker/_datepicker-theme.scss +38 -40
  86. package/datepicker/calendar-body.scss +3 -11
  87. package/datepicker/calendar-header.scss +4 -10
  88. package/datepicker/calendar.scss +5 -17
  89. package/datepicker/datepicker-content.scss +5 -15
  90. package/datepicker/datepicker-input.directive.d.ts +1 -0
  91. package/datepicker/datepicker-input.scss +0 -5
  92. package/datepicker/datepicker-toggle.scss +3 -3
  93. package/datepicker/public-api.d.ts +4 -4
  94. package/divider/_divider-theme.scss +2 -1
  95. package/divider/divider.scss +9 -26
  96. package/dl/_dl-theme.scss +5 -8
  97. package/dl/dl.scss +5 -20
  98. package/dl/public-api.d.ts +1 -1
  99. package/dropdown/_dropdown-theme.scss +30 -22
  100. package/dropdown/dropdown-content.directive.d.ts +1 -1
  101. package/dropdown/dropdown-item.component.d.ts +1 -1
  102. package/dropdown/dropdown-item.scss +12 -16
  103. package/dropdown/dropdown-trigger.directive.d.ts +2 -2
  104. package/dropdown/dropdown.component.d.ts +1 -1
  105. package/dropdown/dropdown.scss +6 -15
  106. package/dropdown/public-api.d.ts +5 -5
  107. package/ellipsis-center/ellipsis-center.directive.d.ts +4 -3
  108. package/empty-state/README.md +0 -0
  109. package/empty-state/_empty-state-theme.scss +56 -0
  110. package/empty-state/empty-state.component.d.ts +31 -0
  111. package/empty-state/empty-state.module.d.ts +10 -0
  112. package/empty-state/empty-state.scss +81 -0
  113. package/empty-state/index.d.ts +1 -0
  114. package/empty-state/public-api.d.ts +2 -0
  115. package/esm2022/alert/alert.component.mjs +52 -5
  116. package/esm2022/alert/alert.module.mjs +1 -1
  117. package/esm2022/alert/public-api.mjs +2 -2
  118. package/esm2022/autocomplete/autocomplete-origin.directive.mjs +1 -1
  119. package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +23 -31
  120. package/esm2022/autocomplete/autocomplete.component.mjs +14 -9
  121. package/esm2022/autocomplete/autocomplete.module.mjs +3 -3
  122. package/esm2022/autocomplete/public-api.mjs +3 -3
  123. package/esm2022/badge/badge.component.mjs +8 -6
  124. package/esm2022/badge/badge.module.mjs +1 -1
  125. package/esm2022/badge/public-api.mjs +2 -2
  126. package/esm2022/button/button.component.mjs +20 -10
  127. package/esm2022/button/button.module.mjs +1 -1
  128. package/esm2022/button/public-api.mjs +2 -2
  129. package/esm2022/button-toggle/button-toggle.component.mjs +24 -16
  130. package/esm2022/button-toggle/button-toggle.module.mjs +1 -1
  131. package/esm2022/button-toggle/public-api.mjs +2 -2
  132. package/esm2022/card/card.component.mjs +2 -2
  133. package/esm2022/card/card.module.mjs +1 -1
  134. package/esm2022/card/public-api.mjs +2 -2
  135. package/esm2022/checkbox/checkbox-config.mjs +1 -1
  136. package/esm2022/checkbox/checkbox-module.mjs +1 -1
  137. package/esm2022/checkbox/checkbox-required-validator.mjs +1 -1
  138. package/esm2022/checkbox/checkbox.mjs +6 -6
  139. package/esm2022/checkbox/public-api.mjs +1 -1
  140. package/esm2022/code-block/actionbar.component.mjs +4 -6
  141. package/esm2022/code-block/code-block.component.mjs +64 -17
  142. package/esm2022/code-block/code-block.module.mjs +9 -5
  143. package/esm2022/code-block/public-api.mjs +2 -2
  144. package/esm2022/core/animation/fade-animations.mjs +1 -1
  145. package/esm2022/core/animation/index.mjs +2 -2
  146. package/esm2022/core/animation/select-animations.mjs +5 -5
  147. package/esm2022/core/common-behaviors/color.mjs +4 -2
  148. package/esm2022/core/common-behaviors/common-module.mjs +2 -2
  149. package/esm2022/core/common-behaviors/constructor.mjs +1 -1
  150. package/esm2022/core/common-behaviors/disabled.mjs +1 -1
  151. package/esm2022/core/common-behaviors/error-state.mjs +1 -1
  152. package/esm2022/core/common-behaviors/index.mjs +4 -4
  153. package/esm2022/core/common-behaviors/tabindex.mjs +1 -1
  154. package/esm2022/core/datetime/date-adapter.mjs +1 -1
  155. package/esm2022/core/datetime/date-formats.mjs +1 -1
  156. package/esm2022/core/datetime/index.mjs +2 -2
  157. package/esm2022/core/error/error-options.mjs +1 -1
  158. package/esm2022/core/form-field/form-field-ref.mjs +1 -1
  159. package/esm2022/core/formatters/date/formatter.mjs +1 -1
  160. package/esm2022/core/formatters/date/formatter.pipe.mjs +1 -1
  161. package/esm2022/core/formatters/index.mjs +2 -2
  162. package/esm2022/core/formatters/number/formatter.mjs +19 -20
  163. package/esm2022/core/forms/forms-module.mjs +1 -1
  164. package/esm2022/core/forms/forms.directive.mjs +1 -1
  165. package/esm2022/core/forms/index.mjs +2 -2
  166. package/esm2022/core/highlight/highlight.pipe.mjs +1 -1
  167. package/esm2022/core/highlight/index.mjs +1 -1
  168. package/esm2022/core/label/label-options.mjs +1 -1
  169. package/esm2022/core/line/line.mjs +2 -2
  170. package/esm2022/core/locales/en-US.mjs +1 -1
  171. package/esm2022/core/locales/es-LA.mjs +1 -1
  172. package/esm2022/core/locales/fa-IR.mjs +1 -1
  173. package/esm2022/core/locales/formatters.mjs +97 -1
  174. package/esm2022/core/locales/index.mjs +2 -2
  175. package/esm2022/core/locales/locale-service.mjs +10 -4
  176. package/esm2022/core/locales/locale-service.module.mjs +1 -1
  177. package/esm2022/core/locales/pt-BR.mjs +1 -1
  178. package/esm2022/core/locales/ru-RU.mjs +3 -3
  179. package/esm2022/core/locales/zh-CN.mjs +1 -1
  180. package/esm2022/core/option/action.mjs +20 -12
  181. package/esm2022/core/option/index.mjs +3 -3
  182. package/esm2022/core/option/optgroup.mjs +4 -4
  183. package/esm2022/core/option/option-module.mjs +1 -1
  184. package/esm2022/core/option/option.mjs +13 -7
  185. package/esm2022/core/overlay/overlay-position-map.mjs +1 -1
  186. package/esm2022/core/pop-up/pop-up-trigger.mjs +29 -30
  187. package/esm2022/core/pop-up/pop-up.mjs +1 -1
  188. package/esm2022/core/public-api.mjs +4 -4
  189. package/esm2022/core/select/common.mjs +120 -0
  190. package/esm2022/core/select/constants.mjs +1 -1
  191. package/esm2022/core/select/index.mjs +4 -3
  192. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +3 -3
  193. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.module.mjs +1 -1
  194. package/esm2022/core/services/measure-scrollbar.service.mjs +1 -1
  195. package/esm2022/core/services/theme.service.mjs +5 -4
  196. package/esm2022/core/title/title-text-ref.mjs +1 -1
  197. package/esm2022/core/utils/data-size/config.mjs +5 -17
  198. package/esm2022/core/utils/data-size/data-size.pipe.mjs +35 -22
  199. package/esm2022/core/utils/data-size/index.mjs +2 -2
  200. package/esm2022/core/utils/data-size/size.mjs +7 -14
  201. package/esm2022/core/utils/public-api.mjs +2 -2
  202. package/esm2022/core/utils/utils.mjs +4 -2
  203. package/esm2022/core/validation/validation.mjs +4 -2
  204. package/esm2022/core/version.mjs +2 -2
  205. package/esm2022/datepicker/calendar-body.component.mjs +3 -3
  206. package/esm2022/datepicker/calendar-header.component.mjs +8 -7
  207. package/esm2022/datepicker/calendar.component.mjs +6 -6
  208. package/esm2022/datepicker/datepicker-animations.mjs +2 -2
  209. package/esm2022/datepicker/datepicker-errors.mjs +1 -1
  210. package/esm2022/datepicker/datepicker-input.directive.mjs +42 -34
  211. package/esm2022/datepicker/datepicker-intl.mjs +1 -1
  212. package/esm2022/datepicker/datepicker-module.mjs +2 -2
  213. package/esm2022/datepicker/datepicker-toggle.component.mjs +11 -10
  214. package/esm2022/datepicker/datepicker.component.mjs +15 -15
  215. package/esm2022/datepicker/month-view.component.mjs +14 -13
  216. package/esm2022/datepicker/public-api.mjs +5 -5
  217. package/esm2022/divider/divider.component.mjs +1 -1
  218. package/esm2022/divider/divider.module.mjs +1 -1
  219. package/esm2022/dl/dl.component.mjs +1 -1
  220. package/esm2022/dl/dl.module.mjs +2 -2
  221. package/esm2022/dl/public-api.mjs +2 -2
  222. package/esm2022/dropdown/dropdown-animations.mjs +5 -5
  223. package/esm2022/dropdown/dropdown-content.directive.mjs +3 -3
  224. package/esm2022/dropdown/dropdown-item.component.mjs +5 -5
  225. package/esm2022/dropdown/dropdown-trigger.directive.mjs +25 -31
  226. package/esm2022/dropdown/dropdown.component.mjs +10 -18
  227. package/esm2022/dropdown/dropdown.module.mjs +1 -1
  228. package/esm2022/dropdown/dropdown.types.mjs +1 -1
  229. package/esm2022/dropdown/public-api.mjs +6 -6
  230. package/esm2022/ellipsis-center/ellipsis-center.directive.mjs +9 -7
  231. package/esm2022/empty-state/empty-state.component.mjs +104 -0
  232. package/esm2022/empty-state/empty-state.module.mjs +50 -0
  233. package/esm2022/empty-state/index.mjs +2 -0
  234. package/esm2022/empty-state/koobiq-components-empty-state.mjs +5 -0
  235. package/esm2022/empty-state/public-api.mjs +3 -0
  236. package/esm2022/file-upload/file-drop.mjs +2 -2
  237. package/esm2022/file-upload/file-upload.mjs +1 -1
  238. package/esm2022/file-upload/file-upload.module.mjs +12 -6
  239. package/esm2022/file-upload/index.mjs +1 -1
  240. package/esm2022/file-upload/multiple-file-upload.component.mjs +96 -29
  241. package/esm2022/file-upload/public-api.mjs +2 -2
  242. package/esm2022/file-upload/single-file-upload.component.mjs +100 -25
  243. package/esm2022/form-field/cleaner.mjs +13 -3
  244. package/esm2022/form-field/form-field-control.mjs +1 -1
  245. package/esm2022/form-field/form-field-errors.mjs +1 -1
  246. package/esm2022/form-field/form-field.mjs +8 -13
  247. package/esm2022/form-field/form-field.module.mjs +1 -1
  248. package/esm2022/form-field/hint.mjs +4 -4
  249. package/esm2022/form-field/password-hint.mjs +15 -15
  250. package/esm2022/form-field/password-toggle.mjs +14 -15
  251. package/esm2022/form-field/prefix.mjs +1 -1
  252. package/esm2022/form-field/public-api.mjs +4 -4
  253. package/esm2022/form-field/stepper.mjs +33 -29
  254. package/esm2022/form-field/suffix.mjs +1 -1
  255. package/esm2022/form-field/validate.directive.mjs +6 -5
  256. package/esm2022/icon/icon-button.component.mjs +2 -2
  257. package/esm2022/icon/icon-item.component.mjs +16 -6
  258. package/esm2022/icon/icon.component.mjs +3 -4
  259. package/esm2022/icon/icon.module.mjs +1 -1
  260. package/esm2022/icon/public-api.mjs +3 -3
  261. package/esm2022/input/input-number-validators.mjs +1 -1
  262. package/esm2022/input/input-number.mjs +35 -36
  263. package/esm2022/input/input-password.mjs +13 -7
  264. package/esm2022/input/input-value-accessor.mjs +1 -1
  265. package/esm2022/input/input.mjs +13 -7
  266. package/esm2022/input/input.module.mjs +1 -1
  267. package/esm2022/input/public-api.mjs +3 -3
  268. package/esm2022/link/link.component.mjs +2 -2
  269. package/esm2022/link/link.module.mjs +1 -1
  270. package/esm2022/link/public-api.mjs +2 -2
  271. package/esm2022/list/list-selection.component.mjs +34 -36
  272. package/esm2022/list/list.component.mjs +3 -3
  273. package/esm2022/list/list.module.mjs +2 -2
  274. package/esm2022/list/public-api.mjs +3 -3
  275. package/esm2022/loader-overlay/loader-overlay.component.mjs +4 -4
  276. package/esm2022/loader-overlay/loader-overlay.module.mjs +1 -1
  277. package/esm2022/loader-overlay/public-api.mjs +2 -2
  278. package/esm2022/markdown/markdown.component.mjs +22 -8
  279. package/esm2022/markdown/markdown.module.mjs +1 -1
  280. package/esm2022/markdown/markdown.service.mjs +1 -1
  281. package/esm2022/modal/css-unit.pipe.mjs +1 -1
  282. package/esm2022/modal/modal-control.service.mjs +3 -2
  283. package/esm2022/modal/modal-ref.class.mjs +1 -1
  284. package/esm2022/modal/modal-util.mjs +1 -1
  285. package/esm2022/modal/modal.component.mjs +54 -32
  286. package/esm2022/modal/modal.directive.mjs +27 -11
  287. package/esm2022/modal/modal.module.mjs +2 -2
  288. package/esm2022/modal/modal.service.mjs +3 -2
  289. package/esm2022/modal/modal.type.mjs +1 -1
  290. package/esm2022/modal/public-api.mjs +3 -3
  291. package/esm2022/navbar/index.mjs +1 -1
  292. package/esm2022/navbar/navbar-item.component.mjs +47 -38
  293. package/esm2022/navbar/navbar.component.mjs +19 -28
  294. package/esm2022/navbar/navbar.module.mjs +2 -2
  295. package/esm2022/navbar/public-api.mjs +3 -3
  296. package/esm2022/navbar/vertical-navbar.component.mjs +17 -18
  297. package/esm2022/popover/popover-animations.mjs +1 -1
  298. package/esm2022/popover/popover-confirm.component.mjs +3 -3
  299. package/esm2022/popover/popover.component.mjs +5 -5
  300. package/esm2022/popover/popover.module.mjs +1 -1
  301. package/esm2022/popover/public-api.mjs +3 -3
  302. package/esm2022/progress-bar/progress-bar.component.mjs +4 -4
  303. package/esm2022/progress-bar/progress-bar.module.mjs +2 -2
  304. package/esm2022/progress-bar/public-api.mjs +2 -2
  305. package/esm2022/progress-spinner/progress-spinner.component.mjs +4 -4
  306. package/esm2022/progress-spinner/progress-spinner.module.mjs +1 -1
  307. package/esm2022/progress-spinner/public-api.mjs +2 -2
  308. package/esm2022/radio/public-api.mjs +2 -2
  309. package/esm2022/radio/radio.component.mjs +9 -10
  310. package/esm2022/radio/radio.module.mjs +1 -1
  311. package/esm2022/risk-level/public-api.mjs +2 -2
  312. package/esm2022/risk-level/risk-level.component.mjs +1 -1
  313. package/esm2022/risk-level/risk-level.module.mjs +1 -1
  314. package/esm2022/scrollbar/public-api.mjs +2 -2
  315. package/esm2022/scrollbar/scrollbar.component.mjs +15 -13
  316. package/esm2022/scrollbar/scrollbar.directive.mjs +3 -3
  317. package/esm2022/scrollbar/scrollbar.module.mjs +2 -2
  318. package/esm2022/scrollbar/scrollbar.types.mjs +3 -2
  319. package/esm2022/select/public-api.mjs +3 -3
  320. package/esm2022/select/select-option.directive.mjs +14 -9
  321. package/esm2022/select/select.component.mjs +92 -172
  322. package/esm2022/select/select.module.mjs +28 -28
  323. package/esm2022/sidebar/public-api.mjs +2 -2
  324. package/esm2022/sidebar/sidebar-animations.mjs +1 -1
  325. package/esm2022/sidebar/sidebar.component.mjs +3 -3
  326. package/esm2022/sidebar/sidebar.module.mjs +1 -1
  327. package/esm2022/sidepanel/public-api.mjs +4 -4
  328. package/esm2022/sidepanel/sidepanel-animations.mjs +7 -3
  329. package/esm2022/sidepanel/sidepanel-config.mjs +1 -1
  330. package/esm2022/sidepanel/sidepanel-container.component.mjs +4 -4
  331. package/esm2022/sidepanel/sidepanel-directives.mjs +30 -16
  332. package/esm2022/sidepanel/sidepanel-ref.mjs +10 -4
  333. package/esm2022/sidepanel/sidepanel.module.mjs +1 -1
  334. package/esm2022/sidepanel/sidepanel.service.mjs +11 -14
  335. package/esm2022/splitter/public-api.mjs +2 -2
  336. package/esm2022/splitter/splitter.component.mjs +45 -35
  337. package/esm2022/splitter/splitter.module.mjs +1 -1
  338. package/esm2022/table/public-api.mjs +2 -2
  339. package/esm2022/table/table.component.mjs +29 -6
  340. package/esm2022/table/table.module.mjs +14 -6
  341. package/esm2022/tabs/paginated-tab-header.mjs +8 -11
  342. package/esm2022/tabs/public-api.mjs +6 -6
  343. package/esm2022/tabs/tab-body.component.mjs +9 -9
  344. package/esm2022/tabs/tab-content.directive.mjs +1 -1
  345. package/esm2022/tabs/tab-group.component.mjs +61 -21
  346. package/esm2022/tabs/tab-header.component.mjs +4 -4
  347. package/esm2022/tabs/tab-label-wrapper.directive.mjs +1 -1
  348. package/esm2022/tabs/tab-label.directive.mjs +1 -1
  349. package/esm2022/tabs/tab-nav-bar/index.mjs +1 -1
  350. package/esm2022/tabs/tab-nav-bar/tab-nav-bar.mjs +4 -4
  351. package/esm2022/tabs/tab.component.mjs +4 -6
  352. package/esm2022/tabs/tabs-animations.mjs +1 -1
  353. package/esm2022/tabs/tabs.module.mjs +2 -2
  354. package/esm2022/tags/public-api.mjs +5 -5
  355. package/esm2022/tags/tag-default-options.mjs +1 -1
  356. package/esm2022/tags/tag-input.mjs +26 -14
  357. package/esm2022/tags/tag-list.component.mjs +14 -20
  358. package/esm2022/tags/tag-text-control.mjs +1 -1
  359. package/esm2022/tags/tag.component.mjs +6 -8
  360. package/esm2022/tags/tag.module.mjs +9 -5
  361. package/esm2022/textarea/index.mjs +1 -1
  362. package/esm2022/textarea/textarea.component.mjs +15 -15
  363. package/esm2022/textarea/textarea.module.mjs +1 -1
  364. package/esm2022/timepicker/public-api.mjs +2 -2
  365. package/esm2022/timepicker/timepicker.constants.mjs +6 -1
  366. package/esm2022/timepicker/timepicker.directive.mjs +72 -28
  367. package/esm2022/timepicker/timepicker.module.mjs +1 -1
  368. package/esm2022/timezone/cities-by-filter.pipe.mjs +1 -1
  369. package/esm2022/timezone/timezone-option.component.mjs +12 -11
  370. package/esm2022/timezone/timezone-option.directive.mjs +9 -7
  371. package/esm2022/timezone/timezone-select.component.mjs +7 -7
  372. package/esm2022/timezone/timezone.module.mjs +1 -1
  373. package/esm2022/timezone/timezone.utils.mjs +5 -9
  374. package/esm2022/timezone/utc-offset.pipe.mjs +1 -1
  375. package/esm2022/title/public-api.mjs +2 -2
  376. package/esm2022/title/title.directive.mjs +11 -8
  377. package/esm2022/title/title.module.mjs +1 -1
  378. package/esm2022/toast/public-api.mjs +4 -4
  379. package/esm2022/toast/toast-animations.mjs +2 -2
  380. package/esm2022/toast/toast-container.component.mjs +5 -6
  381. package/esm2022/toast/toast.component.mjs +6 -6
  382. package/esm2022/toast/toast.module.mjs +1 -1
  383. package/esm2022/toast/toast.service.mjs +26 -37
  384. package/esm2022/toast/toast.type.mjs +3 -1
  385. package/esm2022/toggle/public-api.mjs +2 -2
  386. package/esm2022/toggle/toggle.component.mjs +17 -9
  387. package/esm2022/toggle/toggle.module.mjs +1 -1
  388. package/esm2022/tooltip/public-api.mjs +2 -2
  389. package/esm2022/tooltip/tooltip.animations.mjs +1 -1
  390. package/esm2022/tooltip/tooltip.component.mjs +32 -16
  391. package/esm2022/tooltip/tooltip.module.mjs +2 -2
  392. package/esm2022/tree/control/base-tree-control.mjs +1 -1
  393. package/esm2022/tree/control/flat-tree-control.filters.mjs +4 -7
  394. package/esm2022/tree/control/flat-tree-control.mjs +4 -7
  395. package/esm2022/tree/control/nested-tree-control.mjs +1 -1
  396. package/esm2022/tree/control/tree-control.mjs +1 -1
  397. package/esm2022/tree/data-source/flat-data-source.mjs +3 -8
  398. package/esm2022/tree/data-source/nested-data-source.mjs +2 -3
  399. package/esm2022/tree/node.mjs +1 -1
  400. package/esm2022/tree/outlet.mjs +1 -1
  401. package/esm2022/tree/padding.directive.mjs +5 -6
  402. package/esm2022/tree/public-api.mjs +11 -11
  403. package/esm2022/tree/toggle.mjs +8 -5
  404. package/esm2022/tree/tree-base.mjs +4 -4
  405. package/esm2022/tree/tree-errors.mjs +1 -1
  406. package/esm2022/tree/tree-option.component.mjs +9 -13
  407. package/esm2022/tree/tree-selection.component.mjs +19 -33
  408. package/esm2022/tree/tree.mjs +7 -3
  409. package/esm2022/tree/tree.module.mjs +4 -4
  410. package/esm2022/tree-select/public-api.mjs +2 -2
  411. package/esm2022/tree-select/tree-select.component.mjs +73 -98
  412. package/esm2022/tree-select/tree-select.module.mjs +31 -11
  413. package/fesm2022/koobiq-components-alert.mjs +55 -8
  414. package/fesm2022/koobiq-components-alert.mjs.map +1 -1
  415. package/fesm2022/koobiq-components-autocomplete.mjs +58 -61
  416. package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
  417. package/fesm2022/koobiq-components-badge.mjs +10 -8
  418. package/fesm2022/koobiq-components-badge.mjs.map +1 -1
  419. package/fesm2022/koobiq-components-button-toggle.mjs +28 -20
  420. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  421. package/fesm2022/koobiq-components-button.mjs +22 -12
  422. package/fesm2022/koobiq-components-button.mjs.map +1 -1
  423. package/fesm2022/koobiq-components-card.mjs +2 -2
  424. package/fesm2022/koobiq-components-card.mjs.map +1 -1
  425. package/fesm2022/koobiq-components-checkbox.mjs +3 -3
  426. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  427. package/fesm2022/koobiq-components-code-block.mjs +75 -27
  428. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  429. package/fesm2022/koobiq-components-core.mjs +623 -397
  430. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  431. package/fesm2022/koobiq-components-datepicker.mjs +101 -90
  432. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  433. package/fesm2022/koobiq-components-divider.mjs.map +1 -1
  434. package/fesm2022/koobiq-components-dl.mjs +3 -3
  435. package/fesm2022/koobiq-components-dl.mjs.map +1 -1
  436. package/fesm2022/koobiq-components-dropdown.mjs +127 -141
  437. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  438. package/fesm2022/koobiq-components-ellipsis-center.mjs +5 -4
  439. package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
  440. package/fesm2022/koobiq-components-empty-state.mjs +157 -0
  441. package/fesm2022/koobiq-components-empty-state.mjs.map +1 -0
  442. package/fesm2022/koobiq-components-file-upload.mjs +207 -62
  443. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  444. package/fesm2022/koobiq-components-form-field.mjs +88 -81
  445. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  446. package/fesm2022/koobiq-components-icon.mjs +17 -8
  447. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  448. package/fesm2022/koobiq-components-input.mjs +62 -51
  449. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  450. package/fesm2022/koobiq-components-link.mjs +1 -1
  451. package/fesm2022/koobiq-components-link.mjs.map +1 -1
  452. package/fesm2022/koobiq-components-list.mjs +39 -41
  453. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  454. package/fesm2022/koobiq-components-loader-overlay.mjs +7 -7
  455. package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
  456. package/fesm2022/koobiq-components-markdown.mjs +20 -6
  457. package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
  458. package/fesm2022/koobiq-components-modal.mjs +88 -49
  459. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  460. package/fesm2022/koobiq-components-navbar.mjs +84 -85
  461. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  462. package/fesm2022/koobiq-components-popover.mjs +12 -12
  463. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  464. package/fesm2022/koobiq-components-progress-bar.mjs +5 -5
  465. package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
  466. package/fesm2022/koobiq-components-progress-spinner.mjs +5 -5
  467. package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
  468. package/fesm2022/koobiq-components-radio.mjs +11 -12
  469. package/fesm2022/koobiq-components-radio.mjs.map +1 -1
  470. package/fesm2022/koobiq-components-risk-level.mjs +2 -2
  471. package/fesm2022/koobiq-components-risk-level.mjs.map +1 -1
  472. package/fesm2022/koobiq-components-scrollbar.mjs +17 -14
  473. package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
  474. package/fesm2022/koobiq-components-select.mjs +136 -212
  475. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  476. package/fesm2022/koobiq-components-sidebar.mjs +3 -3
  477. package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
  478. package/fesm2022/koobiq-components-sidepanel.mjs +108 -87
  479. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  480. package/fesm2022/koobiq-components-splitter.mjs +46 -36
  481. package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
  482. package/fesm2022/koobiq-components-table.mjs +42 -11
  483. package/fesm2022/koobiq-components-table.mjs.map +1 -1
  484. package/fesm2022/koobiq-components-tabs.mjs +87 -52
  485. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  486. package/fesm2022/koobiq-components-tags.mjs +53 -46
  487. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  488. package/fesm2022/koobiq-components-textarea.mjs +13 -13
  489. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  490. package/fesm2022/koobiq-components-timepicker.mjs +79 -30
  491. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
  492. package/fesm2022/koobiq-components-timezone.mjs +23 -25
  493. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  494. package/fesm2022/koobiq-components-title.mjs +13 -10
  495. package/fesm2022/koobiq-components-title.mjs.map +1 -1
  496. package/fesm2022/koobiq-components-toast.mjs +86 -95
  497. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  498. package/fesm2022/koobiq-components-toggle.mjs +17 -9
  499. package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
  500. package/fesm2022/koobiq-components-tooltip.mjs +33 -18
  501. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  502. package/fesm2022/koobiq-components-tree-select.mjs +110 -114
  503. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  504. package/fesm2022/koobiq-components-tree.mjs +509 -533
  505. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  506. package/file-upload/_file-upload-theme.scss +124 -73
  507. package/file-upload/file-upload.module.d.ts +11 -10
  508. package/file-upload/file-upload.scss +0 -6
  509. package/file-upload/multiple-file-upload.component.d.ts +37 -7
  510. package/file-upload/multiple-file-upload.component.scss +50 -120
  511. package/file-upload/public-api.d.ts +1 -1
  512. package/file-upload/single-file-upload.component.d.ts +37 -7
  513. package/file-upload/single-file-upload.component.scss +12 -33
  514. package/form-field/_form-field-theme.scss +46 -36
  515. package/form-field/_hint-theme.scss +15 -20
  516. package/form-field/cleaner.scss +3 -9
  517. package/form-field/form-field.scss +23 -26
  518. package/form-field/hint.scss +5 -8
  519. package/form-field/password-toggle.d.ts +3 -2
  520. package/form-field/password-toggle.scss +3 -10
  521. package/form-field/public-api.d.ts +3 -3
  522. package/form-field/stepper.scss +4 -11
  523. package/icon/_icon-button-theme.scss +47 -36
  524. package/icon/_icon-item-theme.scss +47 -26
  525. package/icon/_icon-theme.scss +12 -14
  526. package/icon/icon-button.scss +5 -20
  527. package/icon/icon-item.component.d.ts +3 -1
  528. package/icon/icon-item.scss +10 -8
  529. package/icon/icon.scss +0 -6
  530. package/icon/public-api.d.ts +2 -2
  531. package/input/_input-theme.scss +6 -4
  532. package/input/input.scss +11 -10
  533. package/input/public-api.d.ts +2 -2
  534. package/link/_link-theme.scss +32 -49
  535. package/link/link.component.d.ts +1 -1
  536. package/link/public-api.d.ts +1 -1
  537. package/list/_list-theme.scss +21 -19
  538. package/list/list-selection.component.d.ts +2 -2
  539. package/list/list.scss +2 -6
  540. package/list/public-api.d.ts +2 -2
  541. package/loader-overlay/_loader-overlay-theme.scss +17 -18
  542. package/loader-overlay/loader-overlay.scss +9 -33
  543. package/loader-overlay/public-api.d.ts +1 -1
  544. package/markdown/_markdown-theme.scss +47 -47
  545. package/markdown/markdown.scss +41 -91
  546. package/modal/README.md +4 -3
  547. package/modal/_modal-animation.scss +0 -1
  548. package/modal/_modal-confirm.scss +2 -7
  549. package/modal/_modal-theme.scss +11 -13
  550. package/modal/modal.component.d.ts +1 -1
  551. package/modal/modal.directive.d.ts +3 -3
  552. package/modal/modal.scss +15 -31
  553. package/modal/modal.type.d.ts +2 -2
  554. package/modal/public-api.d.ts +2 -2
  555. package/navbar/README.md +21 -20
  556. package/navbar/_navbar-item_horizontal.scss +40 -33
  557. package/navbar/_navbar-item_vertical.scss +31 -33
  558. package/navbar/_navbar-theme.scss +20 -24
  559. package/navbar/navbar-brand.scss +24 -27
  560. package/navbar/navbar-divider.scss +4 -8
  561. package/navbar/navbar-item.component.d.ts +4 -4
  562. package/navbar/navbar-item.scss +20 -15
  563. package/navbar/navbar.scss +2 -6
  564. package/navbar/public-api.d.ts +2 -2
  565. package/navbar/vertical-navbar.scss +4 -6
  566. package/package.json +17 -10
  567. package/popover/README.md +18 -14
  568. package/popover/_popover-theme.scss +9 -17
  569. package/popover/popover.component.d.ts +1 -1
  570. package/popover/popover.scss +15 -29
  571. package/popover/public-api.d.ts +2 -2
  572. package/prebuilt-themes/dark-theme.css +1 -1
  573. package/prebuilt-themes/light-theme.css +1 -1
  574. package/progress-bar/_progress-bar-theme.scss +7 -11
  575. package/progress-bar/progress-bar.scss +6 -19
  576. package/progress-bar/public-api.d.ts +1 -1
  577. package/progress-spinner/_progress-spinner-theme.scss +6 -8
  578. package/progress-spinner/progress-spinner.scss +8 -18
  579. package/progress-spinner/public-api.d.ts +1 -1
  580. package/radio/_radio-theme.scss +37 -37
  581. package/radio/public-api.d.ts +1 -1
  582. package/radio/radio.scss +35 -40
  583. package/risk-level/_risk-level-theme.scss +25 -31
  584. package/risk-level/public-api.d.ts +1 -1
  585. package/risk-level/risk-level.component.scss +4 -10
  586. package/schematics/collection.json +11 -0
  587. package/schematics/ng-add/index.js +70 -0
  588. package/schematics/ng-add/schema.json +15 -0
  589. package/scrollbar/_scrollbar-component-theme.scss +15 -19
  590. package/scrollbar/public-api.d.ts +1 -1
  591. package/scrollbar/scrollbar.component.scss +68 -63
  592. package/scrollbar/scrollbar.directive.d.ts +1 -1
  593. package/scrollbar/scrollbar.types.d.ts +1 -1
  594. package/select/_select-theme.scss +14 -16
  595. package/select/public-api.d.ts +2 -2
  596. package/select/select-option.directive.d.ts +3 -2
  597. package/select/select.component.d.ts +12 -33
  598. package/select/select.module.d.ts +1 -1
  599. package/select/select.scss +3 -11
  600. package/sidebar/public-api.d.ts +1 -1
  601. package/sidepanel/_sidepanel-theme.scss +8 -10
  602. package/sidepanel/public-api.d.ts +3 -3
  603. package/sidepanel/sidepanel.scss +20 -37
  604. package/splitter/_splitter-theme.scss +5 -6
  605. package/splitter/public-api.d.ts +1 -1
  606. package/splitter/splitter.component.d.ts +10 -5
  607. package/splitter/splitter.scss +0 -1
  608. package/table/_table-theme.scss +16 -15
  609. package/table/public-api.d.ts +1 -1
  610. package/table/table.component.d.ts +8 -1
  611. package/table/table.module.d.ts +1 -1
  612. package/table/table.scss +41 -42
  613. package/tabs/_tabs-common.scss +13 -15
  614. package/tabs/_tabs-theme.scss +76 -44
  615. package/tabs/paginated-tab-header.d.ts +1 -1
  616. package/tabs/public-api.d.ts +5 -5
  617. package/tabs/tab-body.component.d.ts +4 -4
  618. package/tabs/tab-group.component.d.ts +10 -4
  619. package/tabs/tab-group.scss +2 -8
  620. package/tabs/tab-header.scss +0 -10
  621. package/tabs/tab-nav-bar/tab-nav-bar.scss +2 -9
  622. package/tags/_tag-theme.scss +22 -27
  623. package/tags/public-api.d.ts +4 -4
  624. package/tags/tag-default-options.d.ts +1 -0
  625. package/tags/tag-input.d.ts +8 -2
  626. package/tags/tag-list.scss +15 -12
  627. package/tags/tag.component.d.ts +1 -1
  628. package/tags/tag.scss +5 -11
  629. package/textarea/_textarea-theme.scss +2 -5
  630. package/textarea/textarea.component.d.ts +1 -1
  631. package/textarea/textarea.scss +5 -10
  632. package/timepicker/public-api.d.ts +1 -1
  633. package/timepicker/timepicker.constants.d.ts +2 -0
  634. package/timepicker/timepicker.directive.d.ts +11 -4
  635. package/timepicker/timepicker.scss +2 -8
  636. package/timezone/_timezone-option-theme.scss +8 -10
  637. package/timezone/timezone-option.component.scss +5 -8
  638. package/timezone/timezone-option.directive.d.ts +4 -3
  639. package/timezone/timezone-select.component.d.ts +2 -1
  640. package/timezone/timezone-select.component.scss +2 -4
  641. package/timezone/timezone.utils.d.ts +1 -1
  642. package/title/public-api.d.ts +1 -1
  643. package/title/title.directive.d.ts +0 -1
  644. package/toast/_toast-theme.scss +20 -16
  645. package/toast/public-api.d.ts +3 -3
  646. package/toast/toast-container.component.scss +5 -6
  647. package/toast/toast.component.scss +28 -29
  648. package/toast/toast.service.d.ts +9 -5
  649. package/toast/toast.type.d.ts +3 -1
  650. package/toggle/_toggle-theme.scss +49 -42
  651. package/toggle/public-api.d.ts +1 -1
  652. package/toggle/toggle.scss +9 -22
  653. package/tooltip/_tooltip-theme.scss +12 -16
  654. package/tooltip/public-api.d.ts +1 -1
  655. package/tooltip/tooltip.component.d.ts +14 -10
  656. package/tooltip/tooltip.scss +7 -13
  657. package/tree/_tree-theme.scss +20 -23
  658. package/tree/public-api.d.ts +10 -10
  659. package/tree/toggle.scss +3 -6
  660. package/tree/tree-base.d.ts +2 -2
  661. package/tree/tree-option.component.d.ts +1 -1
  662. package/tree/tree-option.scss +17 -14
  663. package/tree/tree-selection.component.d.ts +2 -1
  664. package/tree-select/_tree-select-theme.scss +12 -15
  665. package/tree-select/public-api.d.ts +1 -1
  666. package/tree-select/tree-select.component.d.ts +13 -20
  667. package/tree-select/tree-select.module.d.ts +1 -2
  668. package/tree-select/tree-select.scss +1 -6
  669. package/core/styles/_variables.scss +0 -1
@@ -1,30 +1,22 @@
1
1
  import { trigger, state, style, transition, animate, group } from '@angular/animations';
2
2
  import * as i0 from '@angular/core';
3
- import { InjectionToken, isDevMode, NgModule, Optional, Inject, inject, LOCALE_ID, Injectable, Pipe, Directive, ContentChildren, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, EventEmitter, ViewChild, Output, ContentChild, TemplateRef, Version } from '@angular/core';
3
+ import { InjectionToken, isDevMode, NgModule, Optional, Inject, inject, LOCALE_ID, Injectable, Pipe, Directive, ContentChildren, Component, ViewEncapsulation, ChangeDetectionStrategy, ContentChild, Input, EventEmitter, ViewChild, Output, TemplateRef, Version } from '@angular/core';
4
4
  import * as i2$1 from '@angular/cdk/bidi';
5
5
  import { BidiModule } from '@angular/cdk/bidi';
6
6
  import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
7
7
  import * as i1 from '@koobiq/date-adapter';
8
8
  import { DateAdapter as DateAdapter$1 } from '@koobiq/date-adapter';
9
9
  import { DateFormatter as DateFormatter$1 } from '@koobiq/date-formatter';
10
- import { BehaviorSubject, Subject, pairwise } from 'rxjs';
11
10
  import * as i2 from '@angular/common';
12
- import { CommonModule, DOCUMENT } from '@angular/common';
13
- import { ENTER, SPACE, TAB, ESCAPE } from '@koobiq/cdk/keycodes';
11
+ import { DOCUMENT, CommonModule } from '@angular/common';
12
+ import { BehaviorSubject, Subject, Subscription, pairwise } from 'rxjs';
14
13
  import * as i1$1 from '@angular/cdk/a11y';
14
+ import { SPACE, ENTER, TAB, ESCAPE, HOME, END } from '@koobiq/cdk/keycodes';
15
15
  import { takeUntil, distinctUntilChanged, delay } from 'rxjs/operators';
16
16
  import * as i1$2 from '@angular/cdk/overlay';
17
17
  import { Overlay } from '@angular/cdk/overlay';
18
18
  import { ComponentPortal } from '@angular/cdk/portal';
19
19
 
20
- const fadeAnimation = trigger('fadeAnimation', [
21
- state('void', style({ opacity: 0 })),
22
- state('true', style({ opacity: 1 })),
23
- state('false', style({ opacity: 0 })),
24
- transition('* => true', animate('150ms cubic-bezier(0.0, 0.0, 0.2, 1)')),
25
- transition('* => void', animate('150ms cubic-bezier(0.4, 0.0, 1, 1)'))
26
- ]);
27
-
28
20
  var AnimationCurves;
29
21
  (function (AnimationCurves) {
30
22
  AnimationCurves["StandardCurve"] = "cubic-bezier(0.4,0.0,0.2,1)";
@@ -33,6 +25,14 @@ var AnimationCurves;
33
25
  AnimationCurves["SharpCurve"] = "cubic-bezier(0.4,0.0,0.6,1)";
34
26
  })(AnimationCurves || (AnimationCurves = {}));
35
27
 
28
+ const fadeAnimation = trigger('fadeAnimation', [
29
+ state('void', style({ opacity: 0 })),
30
+ state('true', style({ opacity: 1 })),
31
+ state('false', style({ opacity: 0 })),
32
+ transition('* => true', animate('150ms cubic-bezier(0.0, 0.0, 0.2, 1)')),
33
+ transition('* => void', animate('150ms cubic-bezier(0.4, 0.0, 1, 1)'))
34
+ ]);
35
+
36
36
  /**
37
37
  * The following are all the animations for the kbq-select component, with each
38
38
  * const containing the metadata for one animation.
@@ -55,10 +55,10 @@ const kbqSelectAnimations = {
55
55
  opacity: 0
56
56
  })),
57
57
  transition('void => *', group([
58
- animate('150ms cubic-bezier(0.25, 0.8, 0.25, 1)')
58
+ animate('0ms cubic-bezier(0.25, 0.8, 0.25, 1)')
59
59
  ])),
60
60
  transition('* => void', [
61
- animate('250ms 100ms linear', style({ opacity: 0 }))
61
+ animate('0ms 0ms linear', style({ opacity: 0 }))
62
62
  ])
63
63
  ]),
64
64
  /**
@@ -70,13 +70,60 @@ const kbqSelectAnimations = {
70
70
  state('showing', style({ opacity: 1 })),
71
71
  transition('void => showing', [
72
72
  style({ opacity: 0 }),
73
- animate('150ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)')
73
+ animate('0ms 0ms cubic-bezier(0.55, 0, 0.55, 0.2)')
74
74
  ])
75
75
  ])
76
76
  };
77
77
  const transformPanel = kbqSelectAnimations.transformPanel;
78
78
  const fadeInContent = kbqSelectAnimations.fadeInContent;
79
79
 
80
+ var ThemePalette;
81
+ (function (ThemePalette) {
82
+ ThemePalette["Primary"] = "primary";
83
+ ThemePalette["Secondary"] = "secondary";
84
+ ThemePalette["Error"] = "error";
85
+ ThemePalette["Info"] = "info";
86
+ ThemePalette["Warning"] = "warning";
87
+ ThemePalette["Success"] = "success";
88
+ ThemePalette["Default"] = "secondary";
89
+ ThemePalette["Empty"] = "";
90
+ })(ThemePalette || (ThemePalette = {}));
91
+ var KbqComponentColors;
92
+ (function (KbqComponentColors) {
93
+ KbqComponentColors["Theme"] = "theme";
94
+ KbqComponentColors["ThemeFade"] = "theme-fade";
95
+ KbqComponentColors["Contrast"] = "contrast";
96
+ KbqComponentColors["ContrastFade"] = "contrast-fade";
97
+ KbqComponentColors["Error"] = "error";
98
+ KbqComponentColors["Warning"] = "warning";
99
+ KbqComponentColors["Success"] = "success";
100
+ KbqComponentColors["Default"] = "contrast";
101
+ KbqComponentColors["Empty"] = "";
102
+ })(KbqComponentColors || (KbqComponentColors = {}));
103
+ function mixinColor(base, defaultColor = KbqComponentColors.Empty) {
104
+ return class extends base {
105
+ get color() {
106
+ return this._color;
107
+ }
108
+ set color(value) {
109
+ const colorPalette = value || defaultColor;
110
+ if (colorPalette !== this._color) {
111
+ if (this._color) {
112
+ this.elementRef.nativeElement.classList.remove(`kbq-${this._color}`);
113
+ }
114
+ if (colorPalette) {
115
+ this.elementRef.nativeElement.classList.add(`kbq-${colorPalette}`);
116
+ }
117
+ this._color = colorPalette;
118
+ }
119
+ }
120
+ constructor(...args) {
121
+ super(...args);
122
+ this.color = defaultColor;
123
+ }
124
+ };
125
+ }
126
+
80
127
  // Injection token that configures whether the koobiq sanity checks are enabled.
81
128
  const KBQ_SANITY_CHECKS = new InjectionToken('kbq-sanity-checks', {
82
129
  providedIn: 'root',
@@ -173,47 +220,23 @@ function mixinDisabled(base) {
173
220
  };
174
221
  }
175
222
 
176
- var ThemePalette;
177
- (function (ThemePalette) {
178
- ThemePalette["Primary"] = "primary";
179
- ThemePalette["Secondary"] = "secondary";
180
- ThemePalette["Error"] = "error";
181
- ThemePalette["Info"] = "info";
182
- ThemePalette["Warning"] = "warning";
183
- ThemePalette["Success"] = "success";
184
- ThemePalette["Default"] = "secondary";
185
- ThemePalette["Empty"] = "";
186
- })(ThemePalette || (ThemePalette = {}));
187
- var KbqComponentColors;
188
- (function (KbqComponentColors) {
189
- KbqComponentColors["Theme"] = "theme";
190
- KbqComponentColors["ThemeFade"] = "theme-fade";
191
- KbqComponentColors["Contrast"] = "contrast";
192
- KbqComponentColors["ContrastFade"] = "contrast-fade";
193
- KbqComponentColors["Error"] = "error";
194
- KbqComponentColors["Warning"] = "warning";
195
- KbqComponentColors["Success"] = "success";
196
- KbqComponentColors["Default"] = "contrast";
197
- KbqComponentColors["Empty"] = "";
198
- })(KbqComponentColors || (KbqComponentColors = {}));
199
- function mixinColor(base, defaultColor = KbqComponentColors.Empty) {
223
+ function mixinErrorState(base) {
200
224
  return class extends base {
201
- get color() { return this._color; }
202
- set color(value) {
203
- const colorPalette = value || defaultColor;
204
- if (colorPalette !== this._color) {
205
- if (this._color) {
206
- this.elementRef.nativeElement.classList.remove(`kbq-${this._color}`);
207
- }
208
- if (colorPalette) {
209
- this.elementRef.nativeElement.classList.add(`kbq-${colorPalette}`);
210
- }
211
- this._color = colorPalette;
212
- }
213
- }
214
225
  constructor(...args) {
215
226
  super(...args);
216
- this.color = defaultColor;
227
+ /** Whether the component is in an error state. */
228
+ this.errorState = false;
229
+ }
230
+ updateErrorState() {
231
+ const oldState = this.errorState;
232
+ const parent = this.parentFormGroup || this.parentForm;
233
+ const matcher = this.errorStateMatcher || this.defaultErrorStateMatcher;
234
+ const control = this.ngControl ? this.ngControl.control : null;
235
+ const newState = matcher.isErrorState(control, parent);
236
+ if (newState !== oldState) {
237
+ this.errorState = newState;
238
+ this.stateChanges.next();
239
+ }
217
240
  }
218
241
  };
219
242
  }
@@ -235,31 +258,8 @@ function mixinTabIndex(base, defaultTabIndex = 0) {
235
258
  };
236
259
  }
237
260
 
238
- function mixinErrorState(base) {
239
- return class extends base {
240
- constructor(...args) {
241
- super(...args);
242
- /** Whether the component is in an error state. */
243
- this.errorState = false;
244
- }
245
- updateErrorState() {
246
- const oldState = this.errorState;
247
- const parent = this.parentFormGroup || this.parentForm;
248
- const matcher = this.errorStateMatcher || this.defaultErrorStateMatcher;
249
- const control = this.ngControl ? this.ngControl.control : null;
250
- const newState = matcher.isErrorState(control, parent);
251
- if (newState !== oldState) {
252
- this.errorState = newState;
253
- this.stateChanges.next();
254
- }
255
- }
256
- };
257
- }
258
-
259
261
  const KBQ_PARENT_ANIMATION_COMPONENT = new InjectionToken('kbq-parent-animation-component');
260
262
 
261
- const KBQ_DATE_FORMATS = new InjectionToken('kbq-date-formats');
262
-
263
263
  /** InjectionToken for datepicker that can be used to override default locale code. */
264
264
  const KBQ_DATE_LOCALE = new InjectionToken('KBQ_DATE_LOCALE', {
265
265
  providedIn: 'root',
@@ -273,6 +273,8 @@ function KBQ_DATE_LOCALE_FACTORY() {
273
273
  class DateAdapter extends DateAdapter$1 {
274
274
  }
275
275
 
276
+ const KBQ_DATE_FORMATS = new InjectionToken('kbq-date-formats');
277
+
276
278
  /** Error state matcher that matches when a control is invalid and dirty. */
277
279
  class ShowOnDirtyErrorStateMatcher {
278
280
  isErrorState(control, form) {
@@ -297,6 +299,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImpor
297
299
  args: [{ providedIn: 'root' }]
298
300
  }] });
299
301
 
302
+ /**
303
+ * Injection token that can be used to inject an instances of `KbqFormField`. It serves
304
+ * as alternative token to the actual `KbqFormField` class which would cause unnecessary
305
+ * retention of the `KbqFormField` class and its component metadata.
306
+ */
307
+ const KBQ_FORM_FIELD_REF = new InjectionToken('KbqFormFieldRef');
308
+
300
309
  class DateFormatter extends DateFormatter$1 {
301
310
  constructor(adapter, locale) {
302
311
  super(adapter, locale);
@@ -655,8 +664,8 @@ const ruRULocaleData = {
655
664
  },
656
665
  timepicker: {
657
666
  placeholder: {
658
- full: 'hh:mm:ss',
659
- short: 'hh:mm'
667
+ full: 'чч:мм:сс',
668
+ short: 'чч:мм'
660
669
  }
661
670
  },
662
671
  fileUpload: {
@@ -726,6 +735,22 @@ const enUSFormattersData = {
726
735
  groupSeparator: [','],
727
736
  fractionSeparator: '.'
728
737
  }
738
+ },
739
+ sizeUnits: {
740
+ defaultUnitSystem: 'SI',
741
+ defaultPrecision: 2,
742
+ unitSystems: {
743
+ SI: {
744
+ abbreviations: ['B', 'KB', 'MB', 'GB', 'TB'],
745
+ base: 10,
746
+ power: 3
747
+ },
748
+ IEC: {
749
+ abbreviations: ['B', 'KiB', 'MiB', 'GiB', 'TiB'],
750
+ base: 2,
751
+ power: 10
752
+ }
753
+ }
729
754
  }
730
755
  };
731
756
  const esLAFormattersData = {
@@ -748,6 +773,22 @@ const esLAFormattersData = {
748
773
  groupSeparator: [' ', ' '],
749
774
  fractionSeparator: ','
750
775
  }
776
+ },
777
+ sizeUnits: {
778
+ defaultUnitSystem: 'SI',
779
+ defaultPrecision: 2,
780
+ unitSystems: {
781
+ SI: {
782
+ abbreviations: ['Б', 'КБ', 'МБ', 'ГБ', 'ТБ'],
783
+ base: 10,
784
+ power: 3
785
+ },
786
+ IEC: {
787
+ abbreviations: ['Б', 'КиБ', 'МиБ', 'ГиБ', 'ТиБ'],
788
+ base: 2,
789
+ power: 10
790
+ }
791
+ }
751
792
  }
752
793
  };
753
794
  const faIRFormattersData = {
@@ -769,6 +810,22 @@ const faIRFormattersData = {
769
810
  groupSeparator: ['\u066C'],
770
811
  fractionSeparator: '\u066B'
771
812
  }
813
+ },
814
+ sizeUnits: {
815
+ defaultUnitSystem: 'SI',
816
+ defaultPrecision: 2,
817
+ unitSystems: {
818
+ SI: {
819
+ abbreviations: ['Б', 'КБ', 'МБ', 'ГБ', 'ТБ'],
820
+ base: 10,
821
+ power: 3
822
+ },
823
+ IEC: {
824
+ abbreviations: ['Б', 'КиБ', 'МиБ', 'ГиБ', 'ТиБ'],
825
+ base: 2,
826
+ power: 10
827
+ }
828
+ }
772
829
  }
773
830
  };
774
831
  const ptBRFormattersData = {
@@ -789,6 +846,22 @@ const ptBRFormattersData = {
789
846
  groupSeparator: ['.'],
790
847
  fractionSeparator: ','
791
848
  }
849
+ },
850
+ sizeUnits: {
851
+ defaultUnitSystem: 'SI',
852
+ defaultPrecision: 2,
853
+ unitSystems: {
854
+ SI: {
855
+ abbreviations: ['Б', 'КБ', 'МБ', 'ГБ', 'ТБ'],
856
+ base: 10,
857
+ power: 3
858
+ },
859
+ IEC: {
860
+ abbreviations: ['Б', 'КиБ', 'МиБ', 'ГиБ', 'ТиБ'],
861
+ base: 2,
862
+ power: 10
863
+ }
864
+ }
792
865
  }
793
866
  };
794
867
  const ruRUFormattersData = {
@@ -812,6 +885,22 @@ const ruRUFormattersData = {
812
885
  fractionSeparator: ',',
813
886
  startFormattingFrom: 4
814
887
  }
888
+ },
889
+ sizeUnits: {
890
+ defaultUnitSystem: 'SI',
891
+ defaultPrecision: 2,
892
+ unitSystems: {
893
+ SI: {
894
+ abbreviations: ['Б', 'КБ', 'МБ', 'ГБ', 'ТБ'],
895
+ base: 10,
896
+ power: 3
897
+ },
898
+ IEC: {
899
+ abbreviations: ['Б', 'КиБ', 'МиБ', 'ГиБ', 'ТиБ'],
900
+ base: 2,
901
+ power: 10
902
+ }
903
+ }
815
904
  }
816
905
  };
817
906
  const zhCNFormattersData = {
@@ -831,6 +920,22 @@ const zhCNFormattersData = {
831
920
  groupSeparator: [','],
832
921
  fractionSeparator: '.'
833
922
  }
923
+ },
924
+ sizeUnits: {
925
+ defaultUnitSystem: 'SI',
926
+ defaultPrecision: 2,
927
+ unitSystems: {
928
+ SI: {
929
+ abbreviations: ['Б', 'КБ', 'МБ', 'ГБ', 'ТБ'],
930
+ base: 10,
931
+ power: 3
932
+ },
933
+ IEC: {
934
+ abbreviations: ['Б', 'КиБ', 'МиБ', 'ГиБ', 'ТиБ'],
935
+ base: 2,
936
+ power: 10
937
+ }
938
+ }
834
939
  }
835
940
  };
836
941
 
@@ -854,11 +959,15 @@ function KBQ_DEFAULT_LOCALE_DATA_FACTORY() {
854
959
  'fa-IR': { ...faIRLocaleData, ...faIRFormattersData }
855
960
  };
856
961
  }
857
- const KBQ_LOCALE_DATA = new InjectionToken('KBQ_LOCALE_DATA', { providedIn: 'root', factory: KBQ_DEFAULT_LOCALE_DATA_FACTORY });
962
+ const KBQ_LOCALE_DATA = new InjectionToken('KBQ_LOCALE_DATA', {
963
+ providedIn: 'root',
964
+ factory: KBQ_DEFAULT_LOCALE_DATA_FACTORY
965
+ });
858
966
  const KBQ_LOCALE_SERVICE = new InjectionToken('KBQ_LOCALE_SERVICE');
859
967
  class KbqLocaleService {
860
968
  constructor(id, localeData) {
861
969
  this.locales = {};
970
+ this.document = inject(DOCUMENT);
862
971
  this.locales = localeData;
863
972
  this.id = id || KBQ_DEFAULT_LOCALE_ID;
864
973
  this.current = this.locales[this.id];
@@ -867,6 +976,7 @@ class KbqLocaleService {
867
976
  setLocale(id) {
868
977
  this.id = id;
869
978
  this.current = this.locales[this.id];
979
+ this.document.documentElement.lang = this.id;
870
980
  this.changes.next(this.id);
871
981
  }
872
982
  addLocale(id, localeData) {
@@ -992,8 +1102,7 @@ class KbqDecimalPipe {
992
1102
  this.localeService = localeService;
993
1103
  this.options = options;
994
1104
  this.options = this.options || KBQ_NUMBER_FORMATTER_DEFAULT_OPTIONS;
995
- this.localeService?.changes
996
- .subscribe((newId) => this.id = newId);
1105
+ this.localeService?.changes.subscribe((newId) => (this.id = newId));
997
1106
  }
998
1107
  /**
999
1108
  * @param value The number to be formatted.
@@ -1074,8 +1183,7 @@ class KbqTableNumberPipe {
1074
1183
  this.localeService = localeService;
1075
1184
  this.options = options;
1076
1185
  this.options = this.options || KBQ_NUMBER_FORMATTER_DEFAULT_OPTIONS;
1077
- this.localeService?.changes
1078
- .subscribe((newId) => this.id = newId);
1186
+ this.localeService?.changes.subscribe((newId) => (this.id = newId));
1079
1187
  }
1080
1188
  /**
1081
1189
  * @param value The number to be formatted.
@@ -1151,8 +1259,7 @@ class KbqRoundDecimalPipe {
1151
1259
  constructor(id, localeService) {
1152
1260
  this.id = id;
1153
1261
  this.localeService = localeService;
1154
- this.localeService?.changes
1155
- .subscribe((newId) => this.id = newId);
1262
+ this.localeService?.changes.subscribe((newId) => (this.id = newId));
1156
1263
  }
1157
1264
  transform(value, locale) {
1158
1265
  if (isEmpty(value)) {
@@ -1168,17 +1275,17 @@ class KbqRoundDecimalPipe {
1168
1275
  }
1169
1276
  let parts = {};
1170
1277
  if (intervalsConfig.supportedLanguages.includes(currentLocale)) {
1171
- intervalsConfig.intervals
1172
- .find(({ startRange, endRange, precision }) => {
1278
+ intervalsConfig.intervals.find(({ startRange, endRange, precision }) => {
1173
1279
  const within = isWithin(startRange, endRange, num);
1174
1280
  if (within) {
1175
1281
  if (precision) {
1176
- parts = unit === 'thousand' ?
1177
- this.calculatePartsForThousands(num) :
1178
- {
1179
- num: Math.trunc(num / ROUNDING_UNITS[unit]),
1180
- fraction: this.calculateDecimal(num, ROUNDING_UNITS[unit])
1181
- };
1282
+ parts =
1283
+ unit === 'thousand'
1284
+ ? this.calculatePartsForThousands(num)
1285
+ : {
1286
+ num: Math.trunc(num / ROUNDING_UNITS[unit]),
1287
+ fraction: this.calculateDecimal(num, ROUNDING_UNITS[unit])
1288
+ };
1182
1289
  }
1183
1290
  else {
1184
1291
  parts = { num: Math.round(num / ROUNDING_UNITS[unit]) };
@@ -1187,10 +1294,12 @@ class KbqRoundDecimalPipe {
1187
1294
  return within;
1188
1295
  });
1189
1296
  }
1190
- parts = parts.num ? parts : {
1191
- num: Math.trunc(num / ROUNDING_UNITS[unit]),
1192
- fraction: this.calculateDecimal(num, ROUNDING_UNITS[unit])
1193
- };
1297
+ parts = parts.num
1298
+ ? parts
1299
+ : {
1300
+ num: Math.trunc(num / ROUNDING_UNITS[unit]),
1301
+ fraction: this.calculateDecimal(num, ROUNDING_UNITS[unit])
1302
+ };
1194
1303
  Object.keys(parts).forEach((key) => {
1195
1304
  parts[key] = Intl.NumberFormat.call(this, currentLocale, { useGrouping: false }).format(parts[key]);
1196
1305
  });
@@ -1205,7 +1314,7 @@ class KbqRoundDecimalPipe {
1205
1314
  }
1206
1315
  calculateDecimal(num, divider) {
1207
1316
  /* tslint:disable-next-line:no-magic-numbers */
1208
- return Math.round(num / divider % 1 * 10);
1317
+ return Math.round(((num / divider) % 1) * 10);
1209
1318
  }
1210
1319
  /**
1211
1320
  * 2 * 1000 is a number in the interval of [1500...2500)
@@ -1335,13 +1444,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImpor
1335
1444
  }]
1336
1445
  }] });
1337
1446
 
1338
- /**
1339
- * Injection token that can be used to inject an instances of `KbqFormField`. It serves
1340
- * as alternative token to the actual `KbqFormField` class which would cause unnecessary
1341
- * retention of the `KbqFormField` class and its component metadata.
1342
- */
1343
- const KBQ_FORM_FIELD_REF = new InjectionToken('KbqFormFieldRef');
1344
-
1345
1447
  class KbqFormElement {
1346
1448
  constructor(element) {
1347
1449
  this.element = element;
@@ -1533,75 +1635,197 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImpor
1533
1635
  }]
1534
1636
  }] });
1535
1637
 
1536
- const KBQ_TITLE_TEXT_REF = new InjectionToken('KbqTitleTextRef');
1537
-
1638
+ const KBQ_OPTION_ACTION_PARENT = new InjectionToken('KBQ_OPTION_ACTION_PARENT');
1538
1639
  /** @docs-private */
1539
- class KbqOptgroupBase {
1540
- }
1541
- // tslint:disable-next-line: naming-convention
1542
- const KbqOptgroupMixinBase = mixinDisabled(KbqOptgroupBase);
1543
- let uniqueOptgroupIdCounter = 0;
1544
- /**
1545
- * Component that is used to group instances of `kbq-option`.
1546
- */
1547
- class KbqOptgroup extends KbqOptgroupMixinBase {
1548
- constructor() {
1549
- super(...arguments);
1550
- /** Unique id for the underlying label. */
1551
- this.labelId = `kbq-optgroup-label-${uniqueOptgroupIdCounter++}`;
1552
- }
1553
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqOptgroup, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1554
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.0", type: KbqOptgroup, selector: "kbq-optgroup", inputs: { disabled: "disabled", label: "label" }, host: { properties: { "class.kbq-disabled": "disabled" }, classAttribute: "kbq-optgroup" }, exportAs: ["kbqOptgroup"], usesInheritance: true, ngImport: i0, template: "<label class=\"kbq-optgroup-label\" [id]=\"labelId\">{{ label }}</label>\n<ng-content select=\"kbq-option, kbq-list-option, kbq-timezone-option, ng-container\"></ng-content>\n", styles: [".kbq-optgroup-label{padding-left:var(--kbq-optgroup-size-padding-left, 17px);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1640
+ class KbqOptionActionBase {
1555
1641
  }
1556
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqOptgroup, decorators: [{
1557
- type: Component,
1558
- args: [{ selector: 'kbq-optgroup', exportAs: 'kbqOptgroup', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, inputs: ['disabled'], host: {
1559
- class: 'kbq-optgroup',
1560
- '[class.kbq-disabled]': 'disabled'
1561
- }, template: "<label class=\"kbq-optgroup-label\" [id]=\"labelId\">{{ label }}</label>\n<ng-content select=\"kbq-option, kbq-list-option, kbq-timezone-option, ng-container\"></ng-content>\n", styles: [".kbq-optgroup-label{padding-left:var(--kbq-optgroup-size-padding-left, 17px);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}\n"] }]
1562
- }], propDecorators: { label: [{
1563
- type: Input
1564
- }] } });
1565
-
1566
- // Boilerplate for applying mixins to KbqPseudoCheckbox.
1567
1642
  /** @docs-private */
1568
- class KbqPseudoCheckboxBase {
1569
- constructor(elementRef) {
1643
+ const KbqOptionActionMixinBase = mixinTabIndex(mixinDisabled(KbqOptionActionBase));
1644
+ class KbqOptionActionComponent extends KbqOptionActionMixinBase {
1645
+ get active() {
1646
+ return this.hasFocus || !!this.option.dropdownTrigger?.opened;
1647
+ }
1648
+ constructor(elementRef, focusMonitor, option) {
1649
+ super();
1570
1650
  this.elementRef = elementRef;
1651
+ this.focusMonitor = focusMonitor;
1652
+ this.option = option;
1653
+ this.hasFocus = false;
1654
+ this.destroy = new Subject();
1655
+ this.focusMonitor.monitor(this.elementRef.nativeElement);
1571
1656
  }
1572
- }
1573
- /** @docs-private */
1574
- const KbqPseudoCheckboxMixinBase = mixinColor(mixinDisabled(KbqPseudoCheckboxBase), KbqComponentColors.Theme);
1575
- /**
1576
- * Component that shows a simplified checkbox without including any kind of "real" checkbox.
1577
- * Meant to be used when the checkbox is purely decorative and a large number of them will be
1578
- * included, such as for the options in a multi-select. Uses no SVGs or complex animations.
1579
- * Note that theming is meant to be handled by the parent element, e.g.
1580
- * `kbq-primary .kbq-pseudo-checkbox`.
1581
- *
1582
- * Note that this component will be completely invisible to screen-reader users. This is *not*
1583
- * interchangeable with `<kbq-checkbox>` and should *not* be used if the user would directly
1584
- * interact with the checkbox. The pseudo-checkbox should only be used as an implementation detail
1585
- * of more complex components that appropriately handle selected / checked state.
1586
- * @docs-private
1587
- */
1588
- class KbqPseudoCheckbox extends KbqPseudoCheckboxMixinBase {
1589
- constructor(elementRef) {
1590
- super(elementRef);
1591
- this.big = false;
1592
- this.state = 'unchecked';
1593
- this.disabled = false;
1657
+ ngAfterViewInit() {
1658
+ if (!this.option.dropdownTrigger) {
1659
+ return;
1660
+ }
1661
+ this.option.dropdownTrigger.restoreFocus = false;
1662
+ this.option.dropdownTrigger.dropdownClosed.pipe(takeUntil(this.destroy)).subscribe(() => {
1663
+ this.preventShowingTooltip();
1664
+ const destroyReason = this.option.dropdownTrigger.lastDestroyReason === 'keydown' ? 'keyboard' : 'program';
1665
+ this.focus(destroyReason);
1666
+ });
1594
1667
  }
1595
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqPseudoCheckbox, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
1596
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.0", type: KbqPseudoCheckbox, selector: "kbq-pseudo-checkbox", inputs: { color: "color", big: "big", state: "state", disabled: "disabled" }, host: { properties: { "class.kbq-checkbox_big": "big", "class.kbq-indeterminate": "state === \"indeterminate\"", "class.kbq-checked": "state === \"checked\"", "class.kbq-disabled": "disabled" }, classAttribute: "kbq-pseudo-checkbox" }, usesInheritance: true, ngImport: i0, template: "<i class=\"kbq-checkbox-checkmark mc mc-check_16\"></i>\n<i class=\"kbq-checkbox-mixedmark mc mc-minus_16\"></i>\n", styles: [".kbq-pseudo-checkbox{position:relative;display:inline-flex;box-sizing:border-box;align-items:center;justify-content:center;width:var(--kbq-checkbox-size-normal-width, 16px);height:var(--kbq-checkbox-size-normal-width, 16px);border-radius:var(--kbq-checkbox-size-normal-border-radius, 4px);border-width:var(--kbq-checkbox-size-normal-border-width, 1px);border-style:solid;cursor:pointer;vertical-align:middle;flex-shrink:0}.kbq-pseudo-checkbox .kbq-checkbox-checkmark,.kbq-pseudo-checkbox .kbq-checkbox-mixedmark{display:none}.kbq-pseudo-checkbox.kbq-pseudo-checkbox-checked,.kbq-pseudo-checkbox.kbq-pseudo-checkbox-indeterminate{border-color:transparent}.kbq-pseudo-checkbox.kbq-checked .kbq-checkbox-checkmark,.kbq-pseudo-checkbox.kbq-indeterminate .kbq-checkbox-mixedmark{display:inline-block}.kbq-pseudo-checkbox.kbq-disabled{cursor:default}.kbq-pseudo-checkbox.kbq-pseudo-checkbox_big{width:var(--kbq-checkbox-size-big-width, 16px);height:var(--kbq-checkbox-size-big-width, 16px);border-radius:var(--kbq-checkbox-size-big-border-radius, 4px);border-width:var(--kbq-checkbox-size-big-border-width, 1px)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1597
- }
1598
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqPseudoCheckbox, decorators: [{
1599
- type: Component,
1600
- args: [{ selector: 'kbq-pseudo-checkbox', host: {
1601
- class: 'kbq-pseudo-checkbox',
1602
- '[class.kbq-checkbox_big]': 'big',
1603
- '[class.kbq-indeterminate]': 'state === "indeterminate"',
1604
- '[class.kbq-checked]': 'state === "checked"',
1668
+ ngOnDestroy() {
1669
+ this.destroy.next();
1670
+ this.destroy.complete();
1671
+ this.focusMonitor.stopMonitoring(this.elementRef.nativeElement);
1672
+ }
1673
+ focus(origin, options) {
1674
+ if (this.focusMonitor && origin) {
1675
+ this.focusMonitor.focusVia(this.elementRef.nativeElement, origin, options);
1676
+ }
1677
+ else {
1678
+ this.elementRef.nativeElement.focus();
1679
+ }
1680
+ this.hasFocus = true;
1681
+ }
1682
+ onFocus($event) {
1683
+ $event.stopPropagation();
1684
+ this.hasFocus = true;
1685
+ }
1686
+ onBlur() {
1687
+ this.hasFocus = false;
1688
+ }
1689
+ onClick($event) {
1690
+ $event.stopPropagation();
1691
+ }
1692
+ onKeyDown($event) {
1693
+ if ([SPACE, ENTER].includes($event.keyCode) && this.option.dropdownTrigger) {
1694
+ this.option.dropdownTrigger.openedBy = 'keyboard';
1695
+ this.option.dropdownTrigger.toggle();
1696
+ }
1697
+ else if ($event.shiftKey && $event.keyCode === TAB) {
1698
+ this.hasFocus = false;
1699
+ this.option.focus();
1700
+ }
1701
+ else if ($event.keyCode === TAB) {
1702
+ return;
1703
+ }
1704
+ $event.preventDefault();
1705
+ $event.stopPropagation();
1706
+ }
1707
+ preventShowingTooltip() {
1708
+ if (!this.option.tooltipTrigger) {
1709
+ return;
1710
+ }
1711
+ this.option.tooltipTrigger.disabled = true;
1712
+ setTimeout(() => (this.option.tooltipTrigger.disabled = false));
1713
+ }
1714
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqOptionActionComponent, deps: [{ token: i0.ElementRef }, { token: i1$1.FocusMonitor }, { token: KBQ_OPTION_ACTION_PARENT }], target: i0.ɵɵFactoryTarget.Component }); }
1715
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.0", type: KbqOptionActionComponent, selector: "kbq-option-action", inputs: { disabled: "disabled" }, host: { listeners: { "focus": "onFocus($event)", "blur": "onBlur()", "click": "onClick($event)", "keydown": "onKeyDown($event)" }, properties: { "class.kbq-expanded": "false", "class.kbq-disabled": "disabled", "attr.disabled": "disabled || null", "attr.tabIndex": "-1" }, classAttribute: "kbq-option-action" }, queries: [{ propertyName: "customIcon", first: true, predicate: ["customIcon"], descendants: true }], exportAs: ["kbqOptionAction"], usesInheritance: true, ngImport: i0, template: `
1716
+ <ng-container [ngSwitch]="!!customIcon">
1717
+ <i
1718
+ class="mc kbq-icon mc-ellipsis_16"
1719
+ *ngSwitchCase="false"
1720
+ ></i>
1721
+ <ng-content
1722
+ *ngSwitchCase="true"
1723
+ select="[kbq-icon]"
1724
+ ></ng-content>
1725
+ </ng-container>
1726
+ `, isInline: true, styles: [".kbq-option-action{box-sizing:border-box;position:relative;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-right:-2px;width:24px;height:24px;cursor:pointer;outline:none;border:2px solid transparent;background:transparent}.kbq-option-action.kbq-disabled{cursor:default}\n"], dependencies: [{ kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1727
+ }
1728
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqOptionActionComponent, decorators: [{
1729
+ type: Component,
1730
+ args: [{ selector: 'kbq-option-action', exportAs: 'kbqOptionAction', template: `
1731
+ <ng-container [ngSwitch]="!!customIcon">
1732
+ <i
1733
+ class="mc kbq-icon mc-ellipsis_16"
1734
+ *ngSwitchCase="false"
1735
+ ></i>
1736
+ <ng-content
1737
+ *ngSwitchCase="true"
1738
+ select="[kbq-icon]"
1739
+ ></ng-content>
1740
+ </ng-container>
1741
+ `, host: {
1742
+ class: 'kbq-option-action',
1743
+ '[class.kbq-expanded]': 'false',
1744
+ '[class.kbq-disabled]': 'disabled',
1745
+ '[attr.disabled]': 'disabled || null',
1746
+ '[attr.tabIndex]': '-1',
1747
+ '(focus)': 'onFocus($event)',
1748
+ '(blur)': 'onBlur()',
1749
+ '(click)': 'onClick($event)',
1750
+ '(keydown)': 'onKeyDown($event)'
1751
+ }, inputs: ['disabled'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".kbq-option-action{box-sizing:border-box;position:relative;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-right:-2px;width:24px;height:24px;cursor:pointer;outline:none;border:2px solid transparent;background:transparent}.kbq-option-action.kbq-disabled{cursor:default}\n"] }]
1752
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1$1.FocusMonitor }, { type: undefined, decorators: [{
1753
+ type: Inject,
1754
+ args: [KBQ_OPTION_ACTION_PARENT]
1755
+ }] }], propDecorators: { customIcon: [{
1756
+ type: ContentChild,
1757
+ args: ['customIcon']
1758
+ }] } });
1759
+
1760
+ /** @docs-private */
1761
+ class KbqOptgroupBase {
1762
+ }
1763
+ // tslint:disable-next-line: naming-convention
1764
+ const KbqOptgroupMixinBase = mixinDisabled(KbqOptgroupBase);
1765
+ let uniqueOptgroupIdCounter = 0;
1766
+ /**
1767
+ * Component that is used to group instances of `kbq-option`.
1768
+ */
1769
+ class KbqOptgroup extends KbqOptgroupMixinBase {
1770
+ constructor() {
1771
+ super(...arguments);
1772
+ /** Unique id for the underlying label. */
1773
+ this.labelId = `kbq-optgroup-label-${uniqueOptgroupIdCounter++}`;
1774
+ }
1775
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqOptgroup, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1776
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.0", type: KbqOptgroup, selector: "kbq-optgroup", inputs: { disabled: "disabled", label: "label" }, host: { properties: { "class.kbq-disabled": "disabled" }, classAttribute: "kbq-optgroup" }, exportAs: ["kbqOptgroup"], usesInheritance: true, ngImport: i0, template: "<label\n class=\"kbq-optgroup-label\"\n [id]=\"labelId\"\n>\n {{ label }}\n</label>\n<ng-content select=\"kbq-option, kbq-list-option, kbq-timezone-option, ng-container\"></ng-content>\n", styles: [".kbq-optgroup-label{padding-left:var(--kbq-size-m, 12px);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1777
+ }
1778
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqOptgroup, decorators: [{
1779
+ type: Component,
1780
+ args: [{ selector: 'kbq-optgroup', exportAs: 'kbqOptgroup', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, inputs: ['disabled'], host: {
1781
+ class: 'kbq-optgroup',
1782
+ '[class.kbq-disabled]': 'disabled'
1783
+ }, template: "<label\n class=\"kbq-optgroup-label\"\n [id]=\"labelId\"\n>\n {{ label }}\n</label>\n<ng-content select=\"kbq-option, kbq-list-option, kbq-timezone-option, ng-container\"></ng-content>\n", styles: [".kbq-optgroup-label{padding-left:var(--kbq-size-m, 12px);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}\n"] }]
1784
+ }], propDecorators: { label: [{
1785
+ type: Input
1786
+ }] } });
1787
+
1788
+ const KBQ_TITLE_TEXT_REF = new InjectionToken('KbqTitleTextRef');
1789
+
1790
+ // Boilerplate for applying mixins to KbqPseudoCheckbox.
1791
+ /** @docs-private */
1792
+ class KbqPseudoCheckboxBase {
1793
+ constructor(elementRef) {
1794
+ this.elementRef = elementRef;
1795
+ }
1796
+ }
1797
+ /** @docs-private */
1798
+ const KbqPseudoCheckboxMixinBase = mixinColor(mixinDisabled(KbqPseudoCheckboxBase), KbqComponentColors.Theme);
1799
+ /**
1800
+ * Component that shows a simplified checkbox without including any kind of "real" checkbox.
1801
+ * Meant to be used when the checkbox is purely decorative and a large number of them will be
1802
+ * included, such as for the options in a multi-select. Uses no SVGs or complex animations.
1803
+ * Note that theming is meant to be handled by the parent element, e.g.
1804
+ * `kbq-primary .kbq-pseudo-checkbox`.
1805
+ *
1806
+ * Note that this component will be completely invisible to screen-reader users. This is *not*
1807
+ * interchangeable with `<kbq-checkbox>` and should *not* be used if the user would directly
1808
+ * interact with the checkbox. The pseudo-checkbox should only be used as an implementation detail
1809
+ * of more complex components that appropriately handle selected / checked state.
1810
+ * @docs-private
1811
+ */
1812
+ class KbqPseudoCheckbox extends KbqPseudoCheckboxMixinBase {
1813
+ constructor(elementRef) {
1814
+ super(elementRef);
1815
+ this.big = false;
1816
+ this.state = 'unchecked';
1817
+ this.disabled = false;
1818
+ }
1819
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqPseudoCheckbox, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
1820
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.0", type: KbqPseudoCheckbox, selector: "kbq-pseudo-checkbox", inputs: { color: "color", big: "big", state: "state", disabled: "disabled" }, host: { properties: { "class.kbq-checkbox_big": "big", "class.kbq-indeterminate": "state === \"indeterminate\"", "class.kbq-checked": "state === \"checked\"", "class.kbq-disabled": "disabled" }, classAttribute: "kbq-pseudo-checkbox" }, usesInheritance: true, ngImport: i0, template: "<i class=\"kbq-checkbox-checkmark mc mc-check_16\"></i>\n<i class=\"kbq-checkbox-mixedmark mc mc-minus_16\"></i>\n", styles: [".kbq-pseudo-checkbox{position:relative;display:inline-flex;box-sizing:border-box;align-items:center;justify-content:center;width:var(--kbq-checkbox-size-normal-width, 16px);height:var(--kbq-checkbox-size-normal-width, 16px);border-radius:var(--kbq-checkbox-size-normal-border-radius, 4px);border-width:var(--kbq-checkbox-size-normal-border-width, 1px);border-style:solid;cursor:pointer;vertical-align:middle;flex-shrink:0}.kbq-pseudo-checkbox .kbq-checkbox-checkmark,.kbq-pseudo-checkbox .kbq-checkbox-mixedmark{display:none}.kbq-pseudo-checkbox.kbq-pseudo-checkbox-checked,.kbq-pseudo-checkbox.kbq-pseudo-checkbox-indeterminate{border-color:transparent}.kbq-pseudo-checkbox.kbq-checked .kbq-checkbox-checkmark,.kbq-pseudo-checkbox.kbq-indeterminate .kbq-checkbox-mixedmark{display:inline-block}.kbq-pseudo-checkbox.kbq-disabled{cursor:default}.kbq-pseudo-checkbox.kbq-pseudo-checkbox_big{width:var(--kbq-checkbox-size-big-width, 16px);height:var(--kbq-checkbox-size-big-width, 16px);border-radius:var(--kbq-checkbox-size-big-border-radius, 4px);border-width:var(--kbq-checkbox-size-big-border-width, 1px)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1821
+ }
1822
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqPseudoCheckbox, decorators: [{
1823
+ type: Component,
1824
+ args: [{ selector: 'kbq-pseudo-checkbox', host: {
1825
+ class: 'kbq-pseudo-checkbox',
1826
+ '[class.kbq-checkbox_big]': 'big',
1827
+ '[class.kbq-indeterminate]': 'state === "indeterminate"',
1828
+ '[class.kbq-checked]': 'state === "checked"',
1605
1829
  '[class.kbq-disabled]': 'disabled'
1606
1830
  }, preserveWhitespaces: false, inputs: ['color'], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<i class=\"kbq-checkbox-checkmark mc mc-check_16\"></i>\n<i class=\"kbq-checkbox-mixedmark mc mc-minus_16\"></i>\n", styles: [".kbq-pseudo-checkbox{position:relative;display:inline-flex;box-sizing:border-box;align-items:center;justify-content:center;width:var(--kbq-checkbox-size-normal-width, 16px);height:var(--kbq-checkbox-size-normal-width, 16px);border-radius:var(--kbq-checkbox-size-normal-border-radius, 4px);border-width:var(--kbq-checkbox-size-normal-border-width, 1px);border-style:solid;cursor:pointer;vertical-align:middle;flex-shrink:0}.kbq-pseudo-checkbox .kbq-checkbox-checkmark,.kbq-pseudo-checkbox .kbq-checkbox-mixedmark{display:none}.kbq-pseudo-checkbox.kbq-pseudo-checkbox-checked,.kbq-pseudo-checkbox.kbq-pseudo-checkbox-indeterminate{border-color:transparent}.kbq-pseudo-checkbox.kbq-checked .kbq-checkbox-checkmark,.kbq-pseudo-checkbox.kbq-indeterminate .kbq-checkbox-mixedmark{display:inline-block}.kbq-pseudo-checkbox.kbq-disabled{cursor:default}.kbq-pseudo-checkbox.kbq-pseudo-checkbox_big{width:var(--kbq-checkbox-size-big-width, 16px);height:var(--kbq-checkbox-size-big-width, 16px);border-radius:var(--kbq-checkbox-size-big-border-radius, 4px);border-width:var(--kbq-checkbox-size-big-border-width, 1px)}\n"] }]
1607
1831
  }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { big: [{
@@ -1823,9 +2047,12 @@ class KbqOption extends KbqOptionBase {
1823
2047
  return this.element.nativeElement;
1824
2048
  }
1825
2049
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqOption, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: KBQ_OPTION_PARENT_COMPONENT, optional: true }, { token: KbqOptgroup, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
1826
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.0", type: KbqOption, selector: "kbq-option", inputs: { value: "value", showCheckbox: "showCheckbox", disabled: "disabled" }, outputs: { onSelectionChange: "onSelectionChange" }, host: { listeners: { "click": "selectViaInteraction()", "keydown": "handleKeydown($event)" }, properties: { "attr.tabindex": "getTabIndex()", "class.kbq-selected": "selected", "class.kbq-option-multiple": "multiple", "class.kbq-active": "active", "class.kbq-disabled": "disabled", "id": "id" }, classAttribute: "kbq-option" }, providers: [{
1827
- provide: KBQ_TITLE_TEXT_REF, useExisting: KbqOption
1828
- }], viewQueries: [{ propertyName: "textElement", first: true, predicate: ["kbqTitleText"], descendants: true }], exportAs: ["kbqOption"], usesInheritance: true, ngImport: i0, template: "<kbq-pseudo-checkbox\n *ngIf=\"showCheckbox\"\n [state]=\"selected ? 'checked' : 'unchecked'\"\n [disabled]=\"disabled\">\n</kbq-pseudo-checkbox>\n\n<span #kbqTitleText class=\"kbq-option-text\">\n <ng-content></ng-content>\n</span>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:29px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 10px,#ffffff0a 10px 20px,#0000000a 20px 30px,#ffffff0a 31px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-option{position:relative;display:flex;flex-direction:row;align-items:center;box-sizing:border-box;outline:none;-webkit-tap-highlight-color:transparent;min-height:32px;gap:var(--kbq-list-size-container-content-gap-horizontal, 8px);border-width:var(--kbq-list-size-container-focus-outline-width, 2px);border-style:solid;border-color:transparent;padding:calc(var(--kbq-list-size-container-padding-vertical, 4px) - var(--kbq-list-size-container-focus-outline-width, 2px)) calc(var(--kbq-list-size-container-padding-right, 12px) - var(--kbq-list-size-container-focus-outline-width, 2px)) calc(var(--kbq-list-size-container-padding-vertical, 4px) - var(--kbq-list-size-container-focus-outline-width, 2px)) calc(var(--kbq-list-size-container-padding-left, 12px) - var(--kbq-list-size-container-focus-outline-width, 2px))}.kbq-option .kbq-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-top:var(--kbq-list-size-text-padding-vertical, 4px);padding-bottom:var(--kbq-list-size-text-padding-vertical, 4px)}.kbq-option .kbq-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.kbq-option .kbq-list-text:empty{display:none}.kbq-option .kbq-list-option-caption{padding-top:var(--kbq-list-size-container-content-gap-vertical, 2px)}.kbq-option:not(.kbq-disabled){cursor:pointer}.kbq-option-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-top:var(--kbq-list-size-text-padding-vertical, 4px);padding-bottom:var(--kbq-list-size-text-padding-vertical, 4px)}.kbq-option-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.kbq-option-text:empty{display:none}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: KbqPseudoCheckbox, selector: "kbq-pseudo-checkbox", inputs: ["color", "big", "state", "disabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
2050
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.0", type: KbqOption, selector: "kbq-option", inputs: { value: "value", showCheckbox: "showCheckbox", disabled: "disabled" }, outputs: { onSelectionChange: "onSelectionChange" }, host: { listeners: { "click": "selectViaInteraction()", "keydown": "handleKeydown($event)" }, properties: { "attr.tabindex": "getTabIndex()", "class.kbq-selected": "selected", "class.kbq-option-multiple": "multiple", "class.kbq-active": "active", "class.kbq-disabled": "disabled", "id": "id" }, classAttribute: "kbq-option" }, providers: [
2051
+ {
2052
+ provide: KBQ_TITLE_TEXT_REF,
2053
+ useExisting: KbqOption
2054
+ }
2055
+ ], viewQueries: [{ propertyName: "textElement", first: true, predicate: ["kbqTitleText"], descendants: true }], exportAs: ["kbqOption"], usesInheritance: true, ngImport: i0, template: "<kbq-pseudo-checkbox\n *ngIf=\"showCheckbox\"\n [disabled]=\"disabled\"\n [state]=\"selected ? 'checked' : 'unchecked'\"\n></kbq-pseudo-checkbox>\n\n<span\n #kbqTitleText\n class=\"kbq-option-text\"\n>\n <ng-content></ng-content>\n</span>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:29px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 10px,#ffffff0a 10px 20px,#0000000a 20px 30px,#ffffff0a 31px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-option{position:relative;display:flex;flex-direction:row;align-items:center;box-sizing:border-box;outline:none;-webkit-tap-highlight-color:transparent;min-height:32px;gap:var(--kbq-size-s, 8px);border:var(--kbq-size-3xs, 2px) solid transparent;padding-top:var(--kbq-size-xxs, 4px);padding-left:var(--kbq-size-m, 12px);padding-right:var(--kbq-size-m, 12px);padding-bottom:var(--kbq-size-xxs, 4px)}.kbq-option .kbq-list-text{display:flex;flex-direction:column;width:100%;box-sizing:content-box;display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-option .kbq-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.kbq-option .kbq-list-text:empty{display:none}.kbq-option .kbq-list-option-caption{padding-top:var(--kbq-size-3xs, 2px)}.kbq-option:not(.kbq-disabled){cursor:pointer}.kbq-option-text{display:flex;flex-direction:column;width:100%;box-sizing:content-box;display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-option-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.kbq-option-text:empty{display:none}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: KbqPseudoCheckbox, selector: "kbq-pseudo-checkbox", inputs: ["color", "big", "state", "disabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1829
2056
  }
1830
2057
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqOption, decorators: [{
1831
2058
  type: Component,
@@ -1839,9 +2066,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImpor
1839
2066
  '[id]': 'id',
1840
2067
  '(click)': 'selectViaInteraction()',
1841
2068
  '(keydown)': 'handleKeydown($event)'
1842
- }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [{
1843
- provide: KBQ_TITLE_TEXT_REF, useExisting: KbqOption
1844
- }], template: "<kbq-pseudo-checkbox\n *ngIf=\"showCheckbox\"\n [state]=\"selected ? 'checked' : 'unchecked'\"\n [disabled]=\"disabled\">\n</kbq-pseudo-checkbox>\n\n<span #kbqTitleText class=\"kbq-option-text\">\n <ng-content></ng-content>\n</span>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:29px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 10px,#ffffff0a 10px 20px,#0000000a 20px 30px,#ffffff0a 31px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-option{position:relative;display:flex;flex-direction:row;align-items:center;box-sizing:border-box;outline:none;-webkit-tap-highlight-color:transparent;min-height:32px;gap:var(--kbq-list-size-container-content-gap-horizontal, 8px);border-width:var(--kbq-list-size-container-focus-outline-width, 2px);border-style:solid;border-color:transparent;padding:calc(var(--kbq-list-size-container-padding-vertical, 4px) - var(--kbq-list-size-container-focus-outline-width, 2px)) calc(var(--kbq-list-size-container-padding-right, 12px) - var(--kbq-list-size-container-focus-outline-width, 2px)) calc(var(--kbq-list-size-container-padding-vertical, 4px) - var(--kbq-list-size-container-focus-outline-width, 2px)) calc(var(--kbq-list-size-container-padding-left, 12px) - var(--kbq-list-size-container-focus-outline-width, 2px))}.kbq-option .kbq-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-top:var(--kbq-list-size-text-padding-vertical, 4px);padding-bottom:var(--kbq-list-size-text-padding-vertical, 4px)}.kbq-option .kbq-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.kbq-option .kbq-list-text:empty{display:none}.kbq-option .kbq-list-option-caption{padding-top:var(--kbq-list-size-container-content-gap-vertical, 2px)}.kbq-option:not(.kbq-disabled){cursor:pointer}.kbq-option-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-top:var(--kbq-list-size-text-padding-vertical, 4px);padding-bottom:var(--kbq-list-size-text-padding-vertical, 4px)}.kbq-option-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.kbq-option-text:empty{display:none}\n"] }]
2069
+ }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
2070
+ {
2071
+ provide: KBQ_TITLE_TEXT_REF,
2072
+ useExisting: KbqOption
2073
+ }
2074
+ ], template: "<kbq-pseudo-checkbox\n *ngIf=\"showCheckbox\"\n [disabled]=\"disabled\"\n [state]=\"selected ? 'checked' : 'unchecked'\"\n></kbq-pseudo-checkbox>\n\n<span\n #kbqTitleText\n class=\"kbq-option-text\"\n>\n <ng-content></ng-content>\n</span>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:29px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 10px,#ffffff0a 10px 20px,#0000000a 20px 30px,#ffffff0a 31px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-option{position:relative;display:flex;flex-direction:row;align-items:center;box-sizing:border-box;outline:none;-webkit-tap-highlight-color:transparent;min-height:32px;gap:var(--kbq-size-s, 8px);border:var(--kbq-size-3xs, 2px) solid transparent;padding-top:var(--kbq-size-xxs, 4px);padding-left:var(--kbq-size-m, 12px);padding-right:var(--kbq-size-m, 12px);padding-bottom:var(--kbq-size-xxs, 4px)}.kbq-option .kbq-list-text{display:flex;flex-direction:column;width:100%;box-sizing:content-box;display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-option .kbq-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.kbq-option .kbq-list-text:empty{display:none}.kbq-option .kbq-list-option-caption{padding-top:var(--kbq-size-3xs, 2px)}.kbq-option:not(.kbq-disabled){cursor:pointer}.kbq-option-text{display:flex;flex-direction:column;width:100%;box-sizing:content-box;display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-option-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.kbq-option-text:empty{display:none}\n"] }]
1845
2075
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
1846
2076
  type: Optional
1847
2077
  }, {
@@ -1901,120 +2131,6 @@ function getOptionScrollPosition(optionIndex, optionHeight, currentScrollPositio
1901
2131
  return currentScrollPosition;
1902
2132
  }
1903
2133
 
1904
- const KBQ_OPTION_ACTION_PARENT = new InjectionToken('KBQ_OPTION_ACTION_PARENT');
1905
- /** @docs-private */
1906
- class KbqOptionActionBase {
1907
- }
1908
- /** @docs-private */
1909
- const KbqOptionActionMixinBase = mixinTabIndex(mixinDisabled(KbqOptionActionBase));
1910
- class KbqOptionActionComponent extends KbqOptionActionMixinBase {
1911
- get active() {
1912
- return this.hasFocus || !!this.option.dropdownTrigger?.opened;
1913
- }
1914
- constructor(elementRef, focusMonitor, option) {
1915
- super();
1916
- this.elementRef = elementRef;
1917
- this.focusMonitor = focusMonitor;
1918
- this.option = option;
1919
- this.hasFocus = false;
1920
- this.destroy = new Subject();
1921
- this.focusMonitor.monitor(this.elementRef.nativeElement);
1922
- }
1923
- ngAfterViewInit() {
1924
- if (!this.option.dropdownTrigger) {
1925
- return;
1926
- }
1927
- this.option.dropdownTrigger.restoreFocus = false;
1928
- this.option.dropdownTrigger.dropdownClosed
1929
- .pipe(takeUntil(this.destroy))
1930
- .subscribe(() => {
1931
- this.preventShowingTooltip();
1932
- const destroyReason = this.option.dropdownTrigger.lastDestroyReason === 'keydown' ?
1933
- 'keyboard' :
1934
- 'program';
1935
- this.focus(destroyReason);
1936
- });
1937
- }
1938
- ngOnDestroy() {
1939
- this.destroy.next();
1940
- this.destroy.complete();
1941
- this.focusMonitor.stopMonitoring(this.elementRef.nativeElement);
1942
- }
1943
- focus(origin, options) {
1944
- if (this.focusMonitor && origin) {
1945
- this.focusMonitor.focusVia(this.elementRef.nativeElement, origin, options);
1946
- }
1947
- else {
1948
- this.elementRef.nativeElement.focus();
1949
- }
1950
- this.hasFocus = true;
1951
- }
1952
- onFocus($event) {
1953
- $event.stopPropagation();
1954
- this.hasFocus = true;
1955
- }
1956
- onBlur() {
1957
- this.hasFocus = false;
1958
- }
1959
- onClick($event) {
1960
- $event.stopPropagation();
1961
- }
1962
- onKeyDown($event) {
1963
- if ([SPACE, ENTER].includes($event.keyCode) && this.option.dropdownTrigger) {
1964
- this.option.dropdownTrigger.openedBy = 'keyboard';
1965
- this.option.dropdownTrigger.toggle();
1966
- }
1967
- else if ($event.shiftKey && $event.keyCode === TAB) {
1968
- this.hasFocus = false;
1969
- this.option.focus();
1970
- }
1971
- else if ($event.keyCode === TAB) {
1972
- return;
1973
- }
1974
- $event.preventDefault();
1975
- $event.stopPropagation();
1976
- }
1977
- preventShowingTooltip() {
1978
- if (!this.option.tooltipTrigger) {
1979
- return;
1980
- }
1981
- this.option.tooltipTrigger.disabled = true;
1982
- setTimeout(() => this.option.tooltipTrigger.disabled = false);
1983
- }
1984
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqOptionActionComponent, deps: [{ token: i0.ElementRef }, { token: i1$1.FocusMonitor }, { token: KBQ_OPTION_ACTION_PARENT }], target: i0.ɵɵFactoryTarget.Component }); }
1985
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.0", type: KbqOptionActionComponent, selector: "kbq-option-action", inputs: { disabled: "disabled" }, host: { listeners: { "focus": "onFocus($event)", "blur": "onBlur()", "click": "onClick($event)", "keydown": "onKeyDown($event)" }, properties: { "class.kbq-expanded": "false", "class.kbq-disabled": "disabled", "attr.disabled": "disabled || null", "attr.tabIndex": "-1" }, classAttribute: "kbq-option-action" }, queries: [{ propertyName: "customIcon", first: true, predicate: ["customIcon"], descendants: true }], exportAs: ["kbqOptionAction"], usesInheritance: true, ngImport: i0, template: `
1986
- <ng-container [ngSwitch]="!!customIcon">
1987
- <i class="mc kbq-icon mc-ellipsis_16" *ngSwitchCase="false"></i>
1988
- <ng-content select="[kbq-icon]" *ngSwitchCase="true"></ng-content>
1989
- </ng-container>
1990
- `, isInline: true, styles: [".kbq-option-action{box-sizing:border-box;position:relative;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-right:-2px;width:24px;height:24px;cursor:pointer;outline:none;border:2px solid transparent;background:transparent}.kbq-option-action.kbq-disabled{cursor:default}\n"], dependencies: [{ kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1991
- }
1992
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqOptionActionComponent, decorators: [{
1993
- type: Component,
1994
- args: [{ selector: 'kbq-option-action', exportAs: 'kbqOptionAction', template: `
1995
- <ng-container [ngSwitch]="!!customIcon">
1996
- <i class="mc kbq-icon mc-ellipsis_16" *ngSwitchCase="false"></i>
1997
- <ng-content select="[kbq-icon]" *ngSwitchCase="true"></ng-content>
1998
- </ng-container>
1999
- `, host: {
2000
- class: 'kbq-option-action',
2001
- '[class.kbq-expanded]': 'false',
2002
- '[class.kbq-disabled]': 'disabled',
2003
- '[attr.disabled]': 'disabled || null',
2004
- '[attr.tabIndex]': '-1',
2005
- '(focus)': 'onFocus($event)',
2006
- '(blur)': 'onBlur()',
2007
- '(click)': 'onClick($event)',
2008
- '(keydown)': 'onKeyDown($event)'
2009
- }, inputs: ['disabled'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".kbq-option-action{box-sizing:border-box;position:relative;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-right:-2px;width:24px;height:24px;cursor:pointer;outline:none;border:2px solid transparent;background:transparent}.kbq-option-action.kbq-disabled{cursor:default}\n"] }]
2010
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1$1.FocusMonitor }, { type: undefined, decorators: [{
2011
- type: Inject,
2012
- args: [KBQ_OPTION_ACTION_PARENT]
2013
- }] }], propDecorators: { customIcon: [{
2014
- type: ContentChild,
2015
- args: ['customIcon']
2016
- }] } });
2017
-
2018
2134
  var MultipleMode;
2019
2135
  (function (MultipleMode) {
2020
2136
  MultipleMode["CHECKBOX"] = "checkbox";
@@ -2464,8 +2580,10 @@ class KbqPopUpTrigger {
2464
2580
  let newPlacement = this.placement;
2465
2581
  const { originX, originY, overlayX, overlayY } = $event.connectionPair;
2466
2582
  Object.keys(this.availablePositions).some((key) => {
2467
- if (originX === this.availablePositions[key].originX && originY === this.availablePositions[key].originY &&
2468
- overlayX === this.availablePositions[key].overlayX && overlayY === this.availablePositions[key].overlayY) {
2583
+ if (originX === this.availablePositions[key].originX &&
2584
+ originY === this.availablePositions[key].originY &&
2585
+ overlayX === this.availablePositions[key].overlayX &&
2586
+ overlayY === this.availablePositions[key].overlayY) {
2469
2587
  newPlacement = key;
2470
2588
  return true;
2471
2589
  }
@@ -2527,7 +2645,8 @@ class KbqPopUpTrigger {
2527
2645
  }
2528
2646
  }
2529
2647
  handleKeydown(event) {
2530
- if (this.isOpen && event.keyCode === ESCAPE) { // tslint:disable-line
2648
+ if (this.isOpen && event.keyCode === ESCAPE) {
2649
+ // tslint:disable-line
2531
2650
  this.hide();
2532
2651
  }
2533
2652
  }
@@ -2543,14 +2662,10 @@ class KbqPopUpTrigger {
2543
2662
  this.detach();
2544
2663
  this.portal = this.portal || new ComponentPortal(this.getOverlayHandleComponentType(), this.hostView);
2545
2664
  this.instance = this.overlayRef.attach(this.portal).instance;
2546
- this.instance.afterHidden()
2547
- .pipe(takeUntil(this.destroyed))
2548
- .subscribe(this.detach);
2665
+ this.instance.afterHidden().pipe(takeUntil(this.destroyed)).subscribe(this.detach);
2549
2666
  this.updateClassMap();
2550
2667
  this.updateData();
2551
- this.instance.visibleChange
2552
- .pipe(takeUntil(this.destroyed), distinctUntilChanged())
2553
- .subscribe((value) => {
2668
+ this.instance.visibleChange.pipe(takeUntil(this.destroyed), distinctUntilChanged()).subscribe((value) => {
2554
2669
  this.visible = value;
2555
2670
  this.visibleChange.emit(value);
2556
2671
  this.isOpen = value;
@@ -2577,9 +2692,7 @@ class KbqPopUpTrigger {
2577
2692
  .withPositions([...EXTENDED_OVERLAY_POSITIONS])
2578
2693
  .withLockedPosition()
2579
2694
  .withScrollableContainers(this.scrollDispatcher.getAncestorScrollContainers(this.elementRef));
2580
- strategy.positionChanges
2581
- .pipe(takeUntil(this.destroyed))
2582
- .subscribe(this.onPositionChange);
2695
+ strategy.positionChanges.pipe(takeUntil(this.destroyed)).subscribe(this.onPositionChange);
2583
2696
  this.overlayRef = this.overlay.create({
2584
2697
  ...this.overlayConfig,
2585
2698
  direction: this.direction,
@@ -2587,39 +2700,32 @@ class KbqPopUpTrigger {
2587
2700
  scrollStrategy: this.scrollStrategy()
2588
2701
  });
2589
2702
  this.subscribeOnClosingActions();
2590
- this.overlayRef.detachments()
2591
- .pipe(takeUntil(this.destroyed))
2592
- .subscribe(this.detach);
2703
+ this.overlayRef.detachments().pipe(takeUntil(this.destroyed)).subscribe(this.detach);
2593
2704
  return this.overlayRef;
2594
2705
  }
2595
2706
  initListeners() {
2596
2707
  this.clearListeners();
2597
2708
  if (this.trigger.includes(PopUpTriggers.Click)) {
2598
- this.listeners
2599
- .set('click', () => this.show())
2600
- .forEach(this.addEventListener);
2709
+ this.listeners.set(...this.createListener('click', this.show));
2601
2710
  }
2602
2711
  if (this.trigger.includes(PopUpTriggers.Hover)) {
2603
2712
  this.listeners
2604
- .set('mouseenter', () => this.show())
2605
- .set('mouseleave', () => this.hide())
2606
- .forEach(this.addEventListener);
2713
+ .set(...this.createListener('mouseenter', this.show))
2714
+ .set(...this.createListener('mouseleave', this.hide));
2607
2715
  }
2608
2716
  if (this.trigger.includes(PopUpTriggers.Focus)) {
2609
2717
  this.listeners
2610
- .set('focus', () => this.show())
2611
- .set('blur', () => this.hide())
2612
- .forEach(this.addEventListener);
2718
+ .set(...this.createListener('focus', this.show))
2719
+ .set(...this.createListener('blur', this.hide));
2613
2720
  }
2614
2721
  if (this.trigger.includes(PopUpTriggers.Keydown)) {
2615
- this.listeners
2616
- .set('keydown', (event) => {
2722
+ this.listeners.set('keydown', (event) => {
2617
2723
  if (event instanceof KeyboardEvent && [ENTER, SPACE].includes(event.keyCode)) {
2618
2724
  this.show();
2619
2725
  }
2620
- })
2621
- .forEach(this.addEventListener);
2726
+ });
2622
2727
  }
2728
+ this.listeners.forEach(this.addEventListener);
2623
2729
  }
2624
2730
  /** Updates the position of the current popover. */
2625
2731
  updatePosition(reapplyPosition = false) {
@@ -2657,6 +2763,15 @@ class KbqPopUpTrigger {
2657
2763
  this.listeners.forEach(this.removeEventListener);
2658
2764
  this.listeners.clear();
2659
2765
  }
2766
+ createListener(name, listener) {
2767
+ return [
2768
+ name,
2769
+ () => {
2770
+ this.triggerName = name;
2771
+ return listener.call(this);
2772
+ }
2773
+ ];
2774
+ }
2660
2775
  subscribeOnClosingActions() {
2661
2776
  this.closingActionsSubscription?.unsubscribe();
2662
2777
  this.closingActionsSubscription = this.closingActions()
@@ -2676,33 +2791,120 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImpor
2676
2791
  type: Directive
2677
2792
  }], ctorParameters: () => [{ type: i1$2.Overlay }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i1$2.ScrollDispatcher }, { type: i0.ViewContainerRef }, { type: undefined }, { type: i2$1.Directionality }] });
2678
2793
 
2679
- const selectEvents = 'selectEvents';
2680
-
2681
- /**
2682
- * Returns an exception to be thrown when attempting to change a select's `multiple` option
2683
- * after initialization.
2684
- * @docs-private
2685
- */
2686
- function getKbqSelectDynamicMultipleError() {
2687
- return Error('Cannot change `multiple` mode of select after initialization.');
2794
+ /* tslint:disable:no-empty */
2795
+ class KbqSelectTrigger {
2796
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqSelectTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2797
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.0", type: KbqSelectTrigger, isStandalone: true, selector: "kbq-select-trigger, [kbq-select-trigger]", ngImport: i0 }); }
2688
2798
  }
2689
- /**
2690
- * Returns an exception to be thrown when attempting to assign a non-array value to a select
2691
- * in `multiple` mode. Note that `undefined` and `null` are still valid values to allow for
2692
- * resetting the value.
2693
- * @docs-private
2694
- */
2695
- function getKbqSelectNonArrayValueError() {
2696
- return Error('Value must be an array in multiple-selection mode.');
2799
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqSelectTrigger, decorators: [{
2800
+ type: Directive,
2801
+ args: [{
2802
+ selector: 'kbq-select-trigger, [kbq-select-trigger]',
2803
+ standalone: true
2804
+ }]
2805
+ }] });
2806
+ class KbqSelectMatcher {
2807
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqSelectMatcher, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2808
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.0", type: KbqSelectMatcher, isStandalone: true, selector: "kbq-select-matcher, [kbq-select-matcher]", ngImport: i0 }); }
2697
2809
  }
2698
- /**
2699
- * Returns an exception to be thrown when assigning a non-function value to the comparator
2700
- * used to determine if a value corresponds to an option. Note that whether the function
2701
- * actually takes two values and returns a boolean is not checked.
2702
- */
2703
- function getKbqSelectNonFunctionValueError() {
2704
- return Error('`compareWith` must be a function.');
2810
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqSelectMatcher, decorators: [{
2811
+ type: Directive,
2812
+ args: [{
2813
+ selector: 'kbq-select-matcher, [kbq-select-matcher]',
2814
+ standalone: true
2815
+ }]
2816
+ }] });
2817
+ class KbqSelectFooter {
2818
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqSelectFooter, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2819
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.0", type: KbqSelectFooter, isStandalone: true, selector: "kbq-select-footer, [kbq-select-footer]", host: { classAttribute: "kbq-select__footer" }, ngImport: i0 }); }
2820
+ }
2821
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqSelectFooter, decorators: [{
2822
+ type: Directive,
2823
+ args: [{
2824
+ selector: 'kbq-select-footer, [kbq-select-footer]',
2825
+ host: { class: 'kbq-select__footer' },
2826
+ standalone: true
2827
+ }]
2828
+ }] });
2829
+ class KbqSelectSearch {
2830
+ get ngControl() {
2831
+ return this.formField.control.ngControl;
2832
+ }
2833
+ constructor(formField) {
2834
+ this.formField = formField;
2835
+ this.searchChangesSubscription = new Subscription();
2836
+ this.isSearchChanged = false;
2837
+ formField.canCleanerClearByEsc = false;
2838
+ }
2839
+ focus() {
2840
+ this.formField.focusViaKeyboard();
2841
+ }
2842
+ reset() {
2843
+ this.ngControl.reset();
2844
+ }
2845
+ value() {
2846
+ return this.formField.control.value;
2847
+ }
2848
+ ngAfterContentInit() {
2849
+ if (this.formField.control.controlType !== 'input') {
2850
+ throw Error('KbqSelectSearch does not work without kbqInput');
2851
+ }
2852
+ if (!this.ngControl) {
2853
+ throw Error('KbqSelectSearch does not work without ngControl');
2854
+ }
2855
+ Promise.resolve().then(() => {
2856
+ this.searchChangesSubscription = this.ngControl.valueChanges.subscribe(() => {
2857
+ this.isSearchChanged = true;
2858
+ });
2859
+ });
2860
+ }
2861
+ ngOnDestroy() {
2862
+ this.searchChangesSubscription.unsubscribe();
2863
+ }
2864
+ handleKeydown(event) {
2865
+ // tslint:disable-next-line:deprecation
2866
+ if (event.keyCode === ESCAPE) {
2867
+ if (this.value()) {
2868
+ this.reset();
2869
+ event.stopPropagation();
2870
+ }
2871
+ }
2872
+ // tslint:disable-next-line:deprecation
2873
+ if ([SPACE, HOME, END].includes(event.keyCode)) {
2874
+ event.stopPropagation();
2875
+ }
2876
+ }
2877
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqSelectSearch, deps: [{ token: KBQ_FORM_FIELD_REF, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
2878
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.0", type: KbqSelectSearch, isStandalone: true, selector: "[kbqSelectSearch]", host: { listeners: { "keydown": "handleKeydown($event)" } }, exportAs: ["kbqSelectSearch"], ngImport: i0 }); }
2705
2879
  }
2880
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqSelectSearch, decorators: [{
2881
+ type: Directive,
2882
+ args: [{
2883
+ selector: '[kbqSelectSearch]',
2884
+ exportAs: 'kbqSelectSearch',
2885
+ standalone: true,
2886
+ host: {
2887
+ '(keydown)': 'handleKeydown($event)'
2888
+ }
2889
+ }]
2890
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
2891
+ type: Optional
2892
+ }, {
2893
+ type: Inject,
2894
+ args: [KBQ_FORM_FIELD_REF]
2895
+ }] }] });
2896
+ class KbqSelectSearchEmptyResult {
2897
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqSelectSearchEmptyResult, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2898
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.0", type: KbqSelectSearchEmptyResult, isStandalone: true, selector: "[kbq-select-search-empty-result]", exportAs: ["kbqSelectSearchEmptyResult"], ngImport: i0 }); }
2899
+ }
2900
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqSelectSearchEmptyResult, decorators: [{
2901
+ type: Directive,
2902
+ args: [{
2903
+ selector: '[kbq-select-search-empty-result]',
2904
+ exportAs: 'kbqSelectSearchEmptyResult',
2905
+ standalone: true
2906
+ }]
2907
+ }] });
2706
2908
 
2707
2909
  /** The max height of the select's overlay panel */
2708
2910
  const SELECT_PANEL_MAX_HEIGHT = 224;
@@ -2729,6 +2931,34 @@ const KBQ_SELECT_SCROLL_STRATEGY_PROVIDER = {
2729
2931
  useFactory: kbqSelectScrollStrategyProviderFactory
2730
2932
  };
2731
2933
 
2934
+ /**
2935
+ * Returns an exception to be thrown when attempting to change a select's `multiple` option
2936
+ * after initialization.
2937
+ * @docs-private
2938
+ */
2939
+ function getKbqSelectDynamicMultipleError() {
2940
+ return Error('Cannot change `multiple` mode of select after initialization.');
2941
+ }
2942
+ /**
2943
+ * Returns an exception to be thrown when attempting to assign a non-array value to a select
2944
+ * in `multiple` mode. Note that `undefined` and `null` are still valid values to allow for
2945
+ * resetting the value.
2946
+ * @docs-private
2947
+ */
2948
+ function getKbqSelectNonArrayValueError() {
2949
+ return Error('Value must be an array in multiple-selection mode.');
2950
+ }
2951
+ /**
2952
+ * Returns an exception to be thrown when assigning a non-function value to the comparator
2953
+ * used to determine if a value corresponds to an option. Note that whether the function
2954
+ * actually takes two values and returns a boolean is not checked.
2955
+ */
2956
+ function getKbqSelectNonFunctionValueError() {
2957
+ return Error('`compareWith` must be a function.');
2958
+ }
2959
+
2960
+ const selectEvents = 'selectEvents';
2961
+
2732
2962
  class KbqMeasureScrollbarService {
2733
2963
  get scrollBarWidth() {
2734
2964
  if (this._scrollBarWidth) {
@@ -2802,9 +3032,10 @@ class ThemeService {
2802
3032
  }
2803
3033
  };
2804
3034
  this.renderer = this.rendererFactory.createRenderer(null, null);
2805
- this.subscription = this.current
2806
- .pipe(pairwise())
2807
- .subscribe(this.update);
3035
+ this.subscription = this.current.pipe(pairwise()).subscribe(this.update);
3036
+ }
3037
+ ngOnDestroy() {
3038
+ this.subscription.unsubscribe();
2808
3039
  }
2809
3040
  setThemes(items) {
2810
3041
  this.themes = items;
@@ -2831,36 +3062,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImpor
2831
3062
  args: [{ providedIn: 'root' }]
2832
3063
  }], ctorParameters: () => [{ type: i0.RendererFactory2 }] });
2833
3064
 
2834
- function isBoolean(val) { return typeof val === 'boolean'; }
2835
- function toBoolean(value) {
2836
- return value != null && `${value}` !== 'false';
2837
- }
2838
-
2839
3065
  var MeasurementSystem;
2840
3066
  (function (MeasurementSystem) {
2841
3067
  MeasurementSystem["SI"] = "SI";
2842
3068
  MeasurementSystem["IEC"] = "IEC";
2843
3069
  })(MeasurementSystem || (MeasurementSystem = {}));
2844
- const sizeUnitsConfig = {
2845
- defaultUnitSystem: MeasurementSystem.SI,
2846
- defaultPrecision: 2,
2847
- unitSystems: {
2848
- [MeasurementSystem.SI]: {
2849
- abbreviations: ['B', 'KB', 'MB', 'GB', 'TB'],
2850
- base: 10,
2851
- power: 3
2852
- },
2853
- [MeasurementSystem.IEC]: {
2854
- abbreviations: ['B', 'KiB', 'MiB', 'GiB', 'TiB'],
2855
- base: 2,
2856
- power: 10
2857
- }
2858
- }
2859
- };
3070
+ const KBQ_SIZE_UNITS_DEFAULT_CONFIG = enUSFormattersData.sizeUnits;
3071
+ const KBQ_SIZE_UNITS_CONFIG = new InjectionToken('KbqSizeUnitsConfig');
2860
3072
 
2861
- const formatDataSize = (value, systemCode = sizeUnitsConfig.defaultUnitSystem, precision = sizeUnitsConfig.defaultPrecision) => {
2862
- const system = sizeUnitsConfig.unitSystems[systemCode];
2863
- const { result, unit } = getHumanizedBytes(value, systemCode);
3073
+ const formatDataSize = (value, precision, system) => {
3074
+ const { result, unit } = getHumanizedBytes(value, system);
2864
3075
  let volume;
2865
3076
  if (system.abbreviations[0] === unit) {
2866
3077
  volume = result.toString();
@@ -2877,25 +3088,20 @@ const formatDataSize = (value, systemCode = sizeUnitsConfig.defaultUnitSystem, p
2877
3088
  * Переводит байты в Кб, Мб, Гб
2878
3089
  *
2879
3090
  * @param value количество байт
2880
- * @param systemCode система измерения
3091
+ * @param system система измерения
2881
3092
  * @param threshold нижний порог подсчета
2882
3093
  */
2883
- const getHumanizedBytes = (value, systemCode = sizeUnitsConfig.defaultUnitSystem, threshold) => {
2884
- const system = sizeUnitsConfig.unitSystems[systemCode];
2885
- if (!system) {
2886
- throw new Error(`Unit system "${systemCode}" not configured!`);
2887
- }
3094
+ const getHumanizedBytes = (value, system, threshold) => {
2888
3095
  if (!Number.isFinite(value)) {
2889
3096
  throw new Error('Argument "value" must be number!');
2890
3097
  }
2891
- const caculatedThreshold = Number.isFinite(threshold)
2892
- ? threshold : Math.pow(system.base, system.power);
3098
+ const calculatedThreshold = Number.isFinite(threshold) ? threshold : Math.pow(system.base, system.power);
2893
3099
  const orderOfMagnitude = Math.pow(system.base, system.power);
2894
3100
  let result = value;
2895
3101
  let step = 0;
2896
3102
  const len = system.abbreviations.length - 1;
2897
3103
  while (step < len) {
2898
- if (caculatedThreshold !== undefined && result < caculatedThreshold) {
3104
+ if (calculatedThreshold !== undefined && result < calculatedThreshold) {
2899
3105
  break;
2900
3106
  }
2901
3107
  step++;
@@ -2908,42 +3114,62 @@ const getHumanizedBytes = (value, systemCode = sizeUnitsConfig.defaultUnitSystem
2908
3114
  };
2909
3115
 
2910
3116
  class KbqDataSizePipe {
2911
- transform(source, precision = 2, measurementSystem = MeasurementSystem.SI) {
2912
- const { value, unit } = formatDataSize(source, measurementSystem, precision);
3117
+ constructor(externalConfig, localeService) {
3118
+ this.externalConfig = externalConfig;
3119
+ this.localeService = localeService;
3120
+ this.updateLocaleParams = () => {
3121
+ this.config = this.externalConfig || this.localeService?.getParams('sizeUnits');
3122
+ };
3123
+ this.localeService?.changes.subscribe(this.updateLocaleParams);
3124
+ if (!localeService) {
3125
+ this.config = KBQ_SIZE_UNITS_DEFAULT_CONFIG;
3126
+ }
3127
+ }
3128
+ transform(source, precision, unitSystemName) {
3129
+ const unitSystem = this.config.unitSystems[unitSystemName || this.config.defaultUnitSystem];
3130
+ const { value, unit } = formatDataSize(source, precision || this.config.defaultPrecision, unitSystem);
2913
3131
  return `${value} ${unit}`;
2914
3132
  }
2915
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqDataSizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
2916
- /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.0", ngImport: i0, type: KbqDataSizePipe, name: "kbqDataSize" }); }
3133
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqDataSizePipe, deps: [{ token: KBQ_SIZE_UNITS_CONFIG, optional: true }, { token: KBQ_LOCALE_SERVICE, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }
3134
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.0", ngImport: i0, type: KbqDataSizePipe, isStandalone: true, name: "kbqDataSize", pure: false }); }
2917
3135
  }
2918
3136
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqDataSizePipe, decorators: [{
2919
3137
  type: Pipe,
2920
3138
  args: [{
2921
- name: 'kbqDataSize'
3139
+ name: 'kbqDataSize',
3140
+ standalone: true,
3141
+ pure: false
2922
3142
  }]
2923
- }] });
2924
- class KbqDataSizeModule {
2925
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqDataSizeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2926
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.0", ngImport: i0, type: KbqDataSizeModule, declarations: [KbqDataSizePipe], exports: [KbqDataSizePipe] }); }
2927
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqDataSizeModule }); }
3143
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
3144
+ type: Optional
3145
+ }, {
3146
+ type: Inject,
3147
+ args: [KBQ_SIZE_UNITS_CONFIG]
3148
+ }] }, { type: KbqLocaleService, decorators: [{
3149
+ type: Optional
3150
+ }, {
3151
+ type: Inject,
3152
+ args: [KBQ_LOCALE_SERVICE]
3153
+ }] }] });
3154
+
3155
+ function isBoolean(val) {
3156
+ return typeof val === 'boolean';
3157
+ }
3158
+ function toBoolean(value) {
3159
+ return value != null && `${value}` !== 'false';
2928
3160
  }
2929
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqDataSizeModule, decorators: [{
2930
- type: NgModule,
2931
- args: [{
2932
- imports: [],
2933
- exports: [KbqDataSizePipe],
2934
- declarations: [KbqDataSizePipe]
2935
- }]
2936
- }] });
2937
3161
 
2938
3162
  const validationTooltipShowDelay = 10;
2939
3163
  const validationTooltipHideDelay = 3000;
2940
- const KBQ_VALIDATION = new InjectionToken('KbqUseValidation', { factory: () => ({ useValidation: true }) });
3164
+ const KBQ_VALIDATION = new InjectionToken('KbqUseValidation', {
3165
+ factory: () => ({ useValidation: true })
3166
+ });
2941
3167
 
2942
- const VERSION = new Version('17.0.0-rc.1+sha-975286a');
3168
+ const VERSION = new Version('17.0.0-rc.9+sha-ba3b07d');
2943
3169
 
2944
3170
  /**
2945
3171
  * Generated bundle index. Do not edit.
2946
3172
  */
2947
3173
 
2948
- export { AbsoluteDateFormatterPipe, AbsoluteDateShortFormatterPipe, AbsoluteDateTimeFormatterPipe, AbsoluteShortDateTimeFormatterPipe, AnimationCurves, BOTTOM_LEFT_POSITION_PRIORITY, BOTTOM_POSITION_PRIORITY, BOTTOM_RIGHT_POSITION_PRIORITY, DateAdapter, DateFormatter, EXTENDED_OVERLAY_POSITIONS, ErrorStateMatcher, KBQ_CUSTOM_SCROLL_STRATEGY_PROVIDER, KBQ_DATE_FORMATS, KBQ_DATE_LOCALE, KBQ_DATE_LOCALE_FACTORY, KBQ_DEFAULT_LOCALE_DATA_FACTORY, KBQ_DEFAULT_LOCALE_ID, KBQ_FORM_FIELD_REF, KBQ_LABEL_GLOBAL_OPTIONS, KBQ_LOCALE_DATA, KBQ_LOCALE_ID, KBQ_LOCALE_SERVICE, KBQ_NUMBER_FORMATTER_DEFAULT_OPTIONS, KBQ_NUMBER_FORMATTER_OPTIONS, KBQ_OPTION_ACTION_PARENT, KBQ_OPTION_PARENT_COMPONENT, KBQ_PARENT_ANIMATION_COMPONENT, KBQ_SANITY_CHECKS, KBQ_SELECT_SCROLL_STRATEGY, KBQ_SELECT_SCROLL_STRATEGY_PROVIDER, KBQ_TITLE_TEXT_REF, KBQ_VALIDATION, KbqCommonModule, KbqComponentColors, KbqDataSizeModule, KbqDataSizePipe, KbqDecimalPipe, KbqDefaultThemes, KbqForm, KbqFormElement, KbqFormattersModule, KbqFormsModule, KbqHighlightModule, KbqHighlightPipe, KbqLine, KbqLineModule, KbqLineSetter, KbqLocaleService, KbqLocaleServiceModule, KbqMeasureScrollbarService, KbqOptgroup, KbqOptgroupBase, KbqOptgroupMixinBase, KbqOption, KbqOptionActionBase, KbqOptionActionComponent, KbqOptionActionMixinBase, KbqOptionBase, KbqOptionModule, KbqOptionSelectionChange, KbqPopUp, KbqPopUpTrigger, KbqPseudoCheckbox, KbqPseudoCheckboxBase, KbqPseudoCheckboxMixinBase, KbqPseudoCheckboxModule, KbqRoundDecimalPipe, KbqTableNumberPipe, KbqVirtualOption, LEFT_BOTTOM_POSITION_PRIORITY, LEFT_POSITION_PRIORITY, LEFT_TOP_POSITION_PRIORITY, MeasurementSystem, MultipleMode, NUMBER_FORMAT_REGEXP, POSITION_MAP, POSITION_PRIORITY_STRATEGY, POSITION_TO_CSS_MAP, PopUpPlacements, PopUpSizes, PopUpTriggers, PopUpVisibility, RIGHT_BOTTOM_POSITION_PRIORITY, RIGHT_POSITION_PRIORITY, RIGHT_TOP_POSITION_PRIORITY, RangeDateFormatterPipe, RangeDateTimeFormatterPipe, RangeMiddleDateTimeFormatterPipe, RangeShortDateFormatterPipe, RangeShortDateTimeFormatterPipe, RelativeDateFormatterPipe, RelativeDateTimeFormatterPipe, RelativeShortDateFormatterPipe, RelativeShortDateTimeFormatterPipe, SELECT_PANEL_INDENT_PADDING_X, SELECT_PANEL_MAX_HEIGHT, SELECT_PANEL_PADDING_X, SELECT_PANEL_VIEWPORT_PADDING, ShowOnDirtyErrorStateMatcher, TOP_LEFT_POSITION_PRIORITY, TOP_POSITION_PRIORITY, TOP_RIGHT_POSITION_PRIORITY, ThemePalette, ThemeService, VERSION, countGroupLabelsBeforeOption, enUSFormattersData, enUSLocaleData, esLAFormattersData, esLALocaleData, escapeRegExp, faIRFormattersData, faIRLocaleData, fadeAnimation, formatDataSize, getHumanizedBytes, getKbqSelectDynamicMultipleError, getKbqSelectNonArrayValueError, getKbqSelectNonFunctionValueError, getOptionScrollPosition, isBoolean, isWithin, kbqSelectAnimations, kbqSelectScrollStrategyProviderFactory, mixinColor, mixinDisabled, mixinErrorState, mixinTabIndex, ptBRFormattersData, ptBRLocaleData, ruRUFormattersData, ruRULocaleData, selectEvents, sizeUnitsConfig, toBoolean, validationTooltipHideDelay, validationTooltipShowDelay, zhCNFormattersData, zhCNLocaleData };
3174
+ export { AbsoluteDateFormatterPipe, AbsoluteDateShortFormatterPipe, AbsoluteDateTimeFormatterPipe, AbsoluteShortDateTimeFormatterPipe, AnimationCurves, BOTTOM_LEFT_POSITION_PRIORITY, BOTTOM_POSITION_PRIORITY, BOTTOM_RIGHT_POSITION_PRIORITY, DateAdapter, DateFormatter, EXTENDED_OVERLAY_POSITIONS, ErrorStateMatcher, KBQ_CUSTOM_SCROLL_STRATEGY_PROVIDER, KBQ_DATE_FORMATS, KBQ_DATE_LOCALE, KBQ_DATE_LOCALE_FACTORY, KBQ_DEFAULT_LOCALE_DATA_FACTORY, KBQ_DEFAULT_LOCALE_ID, KBQ_FORM_FIELD_REF, KBQ_LABEL_GLOBAL_OPTIONS, KBQ_LOCALE_DATA, KBQ_LOCALE_ID, KBQ_LOCALE_SERVICE, KBQ_NUMBER_FORMATTER_DEFAULT_OPTIONS, KBQ_NUMBER_FORMATTER_OPTIONS, KBQ_OPTION_ACTION_PARENT, KBQ_OPTION_PARENT_COMPONENT, KBQ_PARENT_ANIMATION_COMPONENT, KBQ_SANITY_CHECKS, KBQ_SELECT_SCROLL_STRATEGY, KBQ_SELECT_SCROLL_STRATEGY_PROVIDER, KBQ_SIZE_UNITS_CONFIG, KBQ_SIZE_UNITS_DEFAULT_CONFIG, KBQ_TITLE_TEXT_REF, KBQ_VALIDATION, KbqCommonModule, KbqComponentColors, KbqDataSizePipe, KbqDecimalPipe, KbqDefaultThemes, KbqForm, KbqFormElement, KbqFormattersModule, KbqFormsModule, KbqHighlightModule, KbqHighlightPipe, KbqLine, KbqLineModule, KbqLineSetter, KbqLocaleService, KbqLocaleServiceModule, KbqMeasureScrollbarService, KbqOptgroup, KbqOptgroupBase, KbqOptgroupMixinBase, KbqOption, KbqOptionActionBase, KbqOptionActionComponent, KbqOptionActionMixinBase, KbqOptionBase, KbqOptionModule, KbqOptionSelectionChange, KbqPopUp, KbqPopUpTrigger, KbqPseudoCheckbox, KbqPseudoCheckboxBase, KbqPseudoCheckboxMixinBase, KbqPseudoCheckboxModule, KbqRoundDecimalPipe, KbqSelectFooter, KbqSelectMatcher, KbqSelectSearch, KbqSelectSearchEmptyResult, KbqSelectTrigger, KbqTableNumberPipe, KbqVirtualOption, LEFT_BOTTOM_POSITION_PRIORITY, LEFT_POSITION_PRIORITY, LEFT_TOP_POSITION_PRIORITY, MeasurementSystem, MultipleMode, NUMBER_FORMAT_REGEXP, POSITION_MAP, POSITION_PRIORITY_STRATEGY, POSITION_TO_CSS_MAP, PopUpPlacements, PopUpSizes, PopUpTriggers, PopUpVisibility, RIGHT_BOTTOM_POSITION_PRIORITY, RIGHT_POSITION_PRIORITY, RIGHT_TOP_POSITION_PRIORITY, RangeDateFormatterPipe, RangeDateTimeFormatterPipe, RangeMiddleDateTimeFormatterPipe, RangeShortDateFormatterPipe, RangeShortDateTimeFormatterPipe, RelativeDateFormatterPipe, RelativeDateTimeFormatterPipe, RelativeShortDateFormatterPipe, RelativeShortDateTimeFormatterPipe, SELECT_PANEL_INDENT_PADDING_X, SELECT_PANEL_MAX_HEIGHT, SELECT_PANEL_PADDING_X, SELECT_PANEL_VIEWPORT_PADDING, ShowOnDirtyErrorStateMatcher, TOP_LEFT_POSITION_PRIORITY, TOP_POSITION_PRIORITY, TOP_RIGHT_POSITION_PRIORITY, ThemePalette, ThemeService, VERSION, countGroupLabelsBeforeOption, enUSFormattersData, enUSLocaleData, esLAFormattersData, esLALocaleData, escapeRegExp, faIRFormattersData, faIRLocaleData, fadeAnimation, formatDataSize, getHumanizedBytes, getKbqSelectDynamicMultipleError, getKbqSelectNonArrayValueError, getKbqSelectNonFunctionValueError, getOptionScrollPosition, isBoolean, isWithin, kbqSelectAnimations, kbqSelectScrollStrategyProviderFactory, mixinColor, mixinDisabled, mixinErrorState, mixinTabIndex, ptBRFormattersData, ptBRLocaleData, ruRUFormattersData, ruRULocaleData, selectEvents, toBoolean, validationTooltipHideDelay, validationTooltipShowDelay, zhCNFormattersData, zhCNLocaleData };
2949
3175
  //# sourceMappingURL=koobiq-components-core.mjs.map