@koobiq/components 16.0.0-beta.5 → 16.0.0-beta.7

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 (294) hide show
  1. package/autocomplete/autocomplete-trigger.directive.d.ts +5 -15
  2. package/button/_button-theme.scss +20 -9
  3. package/button-toggle/button-toggle.component.d.ts +2 -2
  4. package/checkbox/_checkbox-theme.scss +10 -2
  5. package/checkbox/checkbox.d.ts +1 -1
  6. package/code-block/README.md +14 -14
  7. package/code-block/_code-block-theme.scss +8 -0
  8. package/code-block/code-block.component.d.ts +1 -1
  9. package/core/animation/index.d.ts +1 -1
  10. package/core/animation/select-animations.d.ts +1 -1
  11. package/core/formatters/index.d.ts +1 -1
  12. package/core/formatters/number/formatter.d.ts +56 -1
  13. package/core/forms/forms.directive.d.ts +2 -2
  14. package/core/locales/en-US.d.ts +19 -1
  15. package/core/locales/es-LA.d.ts +27 -0
  16. package/core/locales/fa-IR.d.ts +28 -0
  17. package/core/locales/locale-service.d.ts +148 -3
  18. package/core/locales/pt-BR.d.ts +27 -0
  19. package/core/locales/ru-RU.d.ts +20 -1
  20. package/core/locales/zh-CN.d.ts +26 -0
  21. package/core/option/action.d.ts +1 -1
  22. package/core/option/optgroup.d.ts +1 -1
  23. package/core/option/option.d.ts +37 -8
  24. package/core/overlay/overlay-position-map.d.ts +7 -1
  25. package/core/pop-up/constants.d.ts +2 -1
  26. package/core/public-api.d.ts +1 -0
  27. package/core/select/constants.d.ts +2 -2
  28. package/core/services/theme.service.d.ts +23 -0
  29. package/core/styles/_variables.scss +1 -0
  30. package/core/styles/common/_select.scss +24 -24
  31. package/core/styles/theming/_components-theming.scss +31 -5
  32. package/datepicker/calendar-body.component.d.ts +1 -1
  33. package/datepicker/calendar-header.component.d.ts +9 -3
  34. package/datepicker/calendar.component.d.ts +4 -5
  35. package/datepicker/datepicker-animations.d.ts +1 -1
  36. package/datepicker/datepicker-input.directive.d.ts +4 -4
  37. package/datepicker/datepicker-toggle.component.d.ts +3 -3
  38. package/datepicker/datepicker.component.d.ts +2 -2
  39. package/datepicker/month-view.component.d.ts +5 -6
  40. package/dl/_dl-theme.scss +2 -56
  41. package/dl/dl.component.d.ts +1 -2
  42. package/dl/dl.scss +10 -47
  43. package/dropdown/dropdown-animations.d.ts +1 -1
  44. package/dropdown/dropdown-content.directive.d.ts +1 -1
  45. package/dropdown/dropdown-item.component.d.ts +1 -1
  46. package/dropdown/dropdown-trigger.directive.d.ts +2 -2
  47. package/dropdown/dropdown.component.d.ts +1 -1
  48. package/dropdown/dropdown.types.d.ts +1 -1
  49. package/esm2022/alert/alert.component.mjs +2 -2
  50. package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +24 -21
  51. package/esm2022/button-toggle/button-toggle.component.mjs +8 -8
  52. package/esm2022/checkbox/checkbox.mjs +3 -3
  53. package/esm2022/code-block/actionbar.component.mjs +1 -1
  54. package/esm2022/code-block/code-block.component.mjs +3 -3
  55. package/esm2022/core/animation/index.mjs +2 -2
  56. package/esm2022/core/animation/select-animations.mjs +4 -4
  57. package/esm2022/core/formatters/index.mjs +10 -2
  58. package/esm2022/core/formatters/number/formatter.mjs +224 -3
  59. package/esm2022/core/forms/forms.directive.mjs +5 -5
  60. package/esm2022/core/locales/en-US.mjs +22 -4
  61. package/esm2022/core/locales/es-LA.mjs +31 -2
  62. package/esm2022/core/locales/fa-IR.mjs +30 -2
  63. package/esm2022/core/locales/locale-service.mjs +4 -4
  64. package/esm2022/core/locales/pt-BR.mjs +29 -2
  65. package/esm2022/core/locales/ru-RU.mjs +23 -2
  66. package/esm2022/core/locales/zh-CN.mjs +28 -2
  67. package/esm2022/core/option/action.mjs +3 -3
  68. package/esm2022/core/option/optgroup.mjs +3 -3
  69. package/esm2022/core/option/option.mjs +47 -10
  70. package/esm2022/core/overlay/overlay-position-map.mjs +7 -1
  71. package/esm2022/core/pop-up/constants.mjs +2 -1
  72. package/esm2022/core/pop-up/pop-up-trigger.mjs +12 -3
  73. package/esm2022/core/public-api.mjs +2 -1
  74. package/esm2022/core/select/constants.mjs +3 -3
  75. package/esm2022/core/services/theme.service.mjs +60 -0
  76. package/esm2022/core/version.mjs +2 -2
  77. package/esm2022/datepicker/calendar-body.component.mjs +3 -3
  78. package/esm2022/datepicker/calendar-header.component.mjs +9 -8
  79. package/esm2022/datepicker/calendar.component.mjs +7 -16
  80. package/esm2022/datepicker/datepicker-animations.mjs +2 -2
  81. package/esm2022/datepicker/datepicker-input.directive.mjs +29 -20
  82. package/esm2022/datepicker/datepicker-toggle.component.mjs +6 -6
  83. package/esm2022/datepicker/datepicker.component.mjs +11 -11
  84. package/esm2022/datepicker/month-view.component.mjs +9 -18
  85. package/esm2022/dl/dl.component.mjs +3 -7
  86. package/esm2022/dropdown/dropdown-animations.mjs +4 -4
  87. package/esm2022/dropdown/dropdown-content.directive.mjs +3 -3
  88. package/esm2022/dropdown/dropdown-errors.mjs +6 -6
  89. package/esm2022/dropdown/dropdown-item.component.mjs +5 -5
  90. package/esm2022/dropdown/dropdown-trigger.directive.mjs +8 -8
  91. package/esm2022/dropdown/dropdown.component.mjs +8 -8
  92. package/esm2022/dropdown/dropdown.types.mjs +1 -1
  93. package/esm2022/file-upload/file-drop.mjs +4 -4
  94. package/esm2022/file-upload/multiple-file-upload.component.mjs +12 -8
  95. package/esm2022/file-upload/single-file-upload.component.mjs +12 -8
  96. package/esm2022/form-field/cleaner.mjs +3 -3
  97. package/esm2022/form-field/form-field.mjs +9 -12
  98. package/esm2022/form-field/hint.mjs +4 -4
  99. package/esm2022/form-field/password-hint.mjs +22 -13
  100. package/esm2022/form-field/password-toggle.mjs +25 -8
  101. package/esm2022/form-field/suffix.mjs +3 -3
  102. package/esm2022/form-field/validate.directive.mjs +4 -4
  103. package/esm2022/input/input-number.mjs +259 -43
  104. package/esm2022/link/link.component.mjs +3 -3
  105. package/esm2022/list/list-selection.component.mjs +6 -6
  106. package/esm2022/loader-overlay/loader-overlay.component.mjs +2 -2
  107. package/esm2022/modal/modal-control.service.mjs +5 -5
  108. package/esm2022/modal/modal-ref.class.mjs +1 -1
  109. package/esm2022/modal/modal.component.mjs +126 -112
  110. package/esm2022/modal/modal.module.mjs +13 -7
  111. package/esm2022/modal/modal.service.mjs +23 -23
  112. package/esm2022/modal/modal.type.mjs +1 -3
  113. package/esm2022/navbar/navbar-item.component.mjs +17 -17
  114. package/esm2022/navbar/navbar.component.mjs +18 -9
  115. package/esm2022/navbar/vertical-navbar.component.mjs +9 -6
  116. package/esm2022/popover/popover-animations.mjs +2 -2
  117. package/esm2022/popover/popover-confirm.component.mjs +9 -9
  118. package/esm2022/popover/popover.component.mjs +23 -23
  119. package/esm2022/radio/radio.component.mjs +11 -8
  120. package/esm2022/select/select.component.mjs +35 -21
  121. package/esm2022/sidebar/sidebar-animations.mjs +2 -2
  122. package/esm2022/sidebar/sidebar.component.mjs +9 -9
  123. package/esm2022/sidepanel/sidepanel-directives.mjs +2 -2
  124. package/esm2022/sidepanel/sidepanel.module.mjs +10 -4
  125. package/esm2022/splitter/splitter.component.mjs +3 -3
  126. package/esm2022/table/table.component.mjs +3 -3
  127. package/esm2022/tabs/paginated-tab-header.mjs +11 -2
  128. package/esm2022/tabs/tab-body.component.mjs +7 -7
  129. package/esm2022/tabs/tab-content.directive.mjs +3 -3
  130. package/esm2022/tabs/tab-group.component.mjs +3 -3
  131. package/esm2022/tabs/tab-nav-bar/tab-nav-bar.mjs +6 -6
  132. package/esm2022/tabs/tab.component.mjs +14 -5
  133. package/esm2022/tabs/tabs-animations.mjs +2 -2
  134. package/esm2022/tags/tag-default-options.mjs +1 -1
  135. package/esm2022/tags/tag-input.mjs +12 -10
  136. package/esm2022/tags/tag-list.component.mjs +12 -8
  137. package/esm2022/tags/tag.component.mjs +13 -13
  138. package/esm2022/timepicker/timepicker.directive.mjs +10 -10
  139. package/esm2022/timezone/timezone-option.component.mjs +3 -3
  140. package/esm2022/timezone/timezone-select.component.mjs +5 -5
  141. package/esm2022/title/title.directive.mjs +6 -6
  142. package/esm2022/toast/toast.module.mjs +10 -4
  143. package/esm2022/toggle/toggle.component.mjs +3 -3
  144. package/esm2022/tooltip/tooltip.component.mjs +16 -16
  145. package/esm2022/tree/node.mjs +5 -5
  146. package/esm2022/tree/outlet.mjs +3 -3
  147. package/esm2022/tree/padding.directive.mjs +6 -6
  148. package/esm2022/tree/toggle.mjs +8 -8
  149. package/esm2022/tree/tree-base.mjs +3 -3
  150. package/esm2022/tree/tree-option.component.mjs +9 -5
  151. package/esm2022/tree/tree-selection.component.mjs +8 -6
  152. package/esm2022/tree/tree.mjs +3 -3
  153. package/esm2022/tree-select/tree-select.component.mjs +13 -13
  154. package/fesm2022/koobiq-components-alert.mjs +2 -2
  155. package/fesm2022/koobiq-components-alert.mjs.map +1 -1
  156. package/fesm2022/koobiq-components-autocomplete.mjs +24 -21
  157. package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
  158. package/fesm2022/koobiq-components-button-toggle.mjs +7 -7
  159. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  160. package/fesm2022/koobiq-components-checkbox.mjs +2 -2
  161. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  162. package/fesm2022/koobiq-components-code-block.mjs +3 -3
  163. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  164. package/fesm2022/koobiq-components-core.mjs +526 -39
  165. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  166. package/fesm2022/koobiq-components-datepicker.mjs +66 -74
  167. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  168. package/fesm2022/koobiq-components-dl.mjs +2 -6
  169. package/fesm2022/koobiq-components-dl.mjs.map +1 -1
  170. package/fesm2022/koobiq-components-dropdown.mjs +28 -28
  171. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  172. package/fesm2022/koobiq-components-file-upload.mjs +23 -15
  173. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  174. package/fesm2022/koobiq-components-form-field.mjs +61 -40
  175. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  176. package/fesm2022/koobiq-components-input.mjs +257 -43
  177. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  178. package/fesm2022/koobiq-components-link.mjs +2 -2
  179. package/fesm2022/koobiq-components-link.mjs.map +1 -1
  180. package/fesm2022/koobiq-components-list.mjs +5 -5
  181. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  182. package/fesm2022/koobiq-components-loader-overlay.mjs +2 -2
  183. package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
  184. package/fesm2022/koobiq-components-modal.mjs +161 -145
  185. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  186. package/fesm2022/koobiq-components-navbar.mjs +39 -31
  187. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  188. package/fesm2022/koobiq-components-popover.mjs +30 -30
  189. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  190. package/fesm2022/koobiq-components-radio.mjs +10 -7
  191. package/fesm2022/koobiq-components-radio.mjs.map +1 -1
  192. package/fesm2022/koobiq-components-select.mjs +34 -20
  193. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  194. package/fesm2022/koobiq-components-sidebar.mjs +8 -8
  195. package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
  196. package/fesm2022/koobiq-components-sidepanel.mjs +10 -4
  197. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  198. package/fesm2022/koobiq-components-splitter.mjs +2 -2
  199. package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
  200. package/fesm2022/koobiq-components-table.mjs +2 -2
  201. package/fesm2022/koobiq-components-table.mjs.map +1 -1
  202. package/fesm2022/koobiq-components-tabs.mjs +39 -21
  203. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  204. package/fesm2022/koobiq-components-tags.mjs +34 -28
  205. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  206. package/fesm2022/koobiq-components-timepicker.mjs +9 -9
  207. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
  208. package/fesm2022/koobiq-components-timezone.mjs +6 -6
  209. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  210. package/fesm2022/koobiq-components-title.mjs +5 -5
  211. package/fesm2022/koobiq-components-title.mjs.map +1 -1
  212. package/fesm2022/koobiq-components-toast.mjs +8 -2
  213. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  214. package/fesm2022/koobiq-components-toggle.mjs +2 -2
  215. package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
  216. package/fesm2022/koobiq-components-tooltip.mjs +15 -15
  217. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  218. package/fesm2022/koobiq-components-tree-select.mjs +12 -12
  219. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  220. package/fesm2022/koobiq-components-tree.mjs +37 -31
  221. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  222. package/file-upload/file-drop.d.ts +1 -1
  223. package/file-upload/multiple-file-upload.component.d.ts +4 -3
  224. package/file-upload/single-file-upload.component.d.ts +4 -3
  225. package/form-field/_hint-theme.scss +1 -1
  226. package/form-field/cleaner.d.ts +1 -1
  227. package/form-field/form-field.d.ts +2 -3
  228. package/form-field/form-field.scss +2 -2
  229. package/form-field/hint.d.ts +1 -1
  230. package/form-field/password-hint.d.ts +7 -3
  231. package/form-field/password-toggle.d.ts +12 -6
  232. package/form-field/suffix.d.ts +1 -1
  233. package/form-field/validate.directive.d.ts +1 -1
  234. package/icon/_icon-theme.scss +2 -1
  235. package/input/_input-theme.scss +2 -1
  236. package/input/input-number.d.ts +61 -10
  237. package/link/_link-theme.scss +4 -0
  238. package/link/link.component.d.ts +1 -1
  239. package/list/list-selection.component.d.ts +1 -1
  240. package/loader-overlay/loader-overlay.scss +3 -0
  241. package/modal/README.md +5 -5
  242. package/modal/modal-ref.class.d.ts +2 -2
  243. package/modal/modal.component.d.ts +51 -47
  244. package/modal/modal.module.d.ts +2 -1
  245. package/modal/modal.scss +7 -0
  246. package/modal/modal.type.d.ts +35 -36
  247. package/navbar/navbar-item.component.d.ts +4 -3
  248. package/navbar/navbar.component.d.ts +5 -2
  249. package/navbar/vertical-navbar.component.d.ts +4 -2
  250. package/package.json +9 -11
  251. package/popover/README.md +14 -14
  252. package/popover/_popover-theme.scss +11 -11
  253. package/popover/popover-animations.d.ts +1 -1
  254. package/popover/popover-confirm.component.d.ts +1 -1
  255. package/popover/popover.component.d.ts +3 -3
  256. package/prebuilt-themes/dark-theme.css +1 -1
  257. package/prebuilt-themes/light-theme.css +1 -1
  258. package/radio/_radio-theme.scss +15 -2
  259. package/radio/radio.component.d.ts +2 -2
  260. package/radio/radio.scss +13 -0
  261. package/select/select.component.d.ts +14 -11
  262. package/select/select.scss +1 -1
  263. package/sidebar/sidebar-animations.d.ts +1 -1
  264. package/sidebar/sidebar.component.d.ts +3 -3
  265. package/splitter/splitter.component.d.ts +1 -1
  266. package/table/table.component.d.ts +1 -1
  267. package/tabs/paginated-tab-header.d.ts +1 -0
  268. package/tabs/tab-body.component.d.ts +1 -1
  269. package/tabs/tab-content.directive.d.ts +1 -1
  270. package/tabs/tab-nav-bar/tab-nav-bar.d.ts +2 -2
  271. package/tabs/tab.component.d.ts +1 -1
  272. package/tabs/tabs-animations.d.ts +1 -1
  273. package/tags/_tag-theme.scss +1 -1
  274. package/tags/tag-default-options.d.ts +4 -0
  275. package/tags/tag-input.d.ts +2 -2
  276. package/tags/tag-list.component.d.ts +3 -2
  277. package/tags/tag-list.scss +2 -0
  278. package/tags/tag.component.d.ts +4 -4
  279. package/timepicker/timepicker.directive.d.ts +2 -2
  280. package/timezone/timezone-option.component.d.ts +1 -1
  281. package/timezone/timezone-select.component.d.ts +1 -1
  282. package/title/title.directive.d.ts +1 -1
  283. package/toggle/toggle.component.d.ts +1 -1
  284. package/tooltip/tooltip.component.d.ts +3 -3
  285. package/tree/node.d.ts +1 -1
  286. package/tree/outlet.d.ts +1 -1
  287. package/tree/padding.directive.d.ts +1 -1
  288. package/tree/toggle.d.ts +3 -3
  289. package/tree/tree-base.d.ts +1 -1
  290. package/tree/tree-option.component.d.ts +1 -1
  291. package/tree/tree-option.scss +2 -0
  292. package/tree/tree-selection.component.d.ts +1 -1
  293. package/tree/tree.d.ts +1 -1
  294. package/tree-select/tree-select.component.d.ts +1 -1
@@ -7,7 +7,7 @@ import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coerci
7
7
  import * as i1 from '@mosaic-design/date-adapter';
8
8
  import { DateAdapter as DateAdapter$1 } from '@mosaic-design/date-adapter';
9
9
  import { DateFormatter as DateFormatter$1 } from '@mosaic-design/date-formatter';
10
- import { BehaviorSubject, Subject } from 'rxjs';
10
+ import { BehaviorSubject, Subject, pairwise } from 'rxjs';
11
11
  import * as i2 from '@angular/common';
12
12
  import { CommonModule, DOCUMENT } from '@angular/common';
13
13
  import { ENTER, SPACE, TAB, ESCAPE } from '@koobiq/cdk/keycodes';
@@ -38,7 +38,7 @@ var AnimationCurves;
38
38
  * const containing the metadata for one animation.
39
39
  *
40
40
  */
41
- const mcSelectAnimations = {
41
+ const kbqSelectAnimations = {
42
42
  /**
43
43
  * This animation transforms the select's overlay panel on and off the page.
44
44
  *
@@ -74,8 +74,8 @@ const mcSelectAnimations = {
74
74
  ])
75
75
  ])
76
76
  };
77
- const transformPanel = mcSelectAnimations.transformPanel;
78
- const fadeInContent = mcSelectAnimations.fadeInContent;
77
+ const transformPanel = kbqSelectAnimations.transformPanel;
78
+ const fadeInContent = kbqSelectAnimations.fadeInContent;
79
79
 
80
80
  // Injection token that configures whether the koobiq sanity checks are enabled.
81
81
  const KBQ_SANITY_CHECKS = new InjectionToken('kbq-sanity-checks', {
@@ -525,59 +525,208 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
525
525
  }], ctorParameters: function () { return [{ type: DateAdapter }, { type: DateFormatter }]; } });
526
526
 
527
527
  const enUSLocaleData = {
528
- en: {
528
+ 'en-US': {
529
529
  select: { hiddenItemsText: 'one more' },
530
530
  datepicker: {
531
- placeholder: 'dd/mm/yyyy',
532
- dateInput: 'dd/MM/yyyy'
531
+ placeholder: 'yyyy-mm-dd',
532
+ dateInput: 'yyyy-MM-dd'
533
+ },
534
+ formatters: {
535
+ number: {
536
+ rounding: {
537
+ separator: '',
538
+ groupSeparator: '.',
539
+ thousand: 'K',
540
+ million: 'M',
541
+ billion: 'B',
542
+ trillion: 'T'
543
+ }
544
+ }
545
+ },
546
+ input: {
547
+ number: {
548
+ groupSeparator: [','],
549
+ fractionSeparator: '.'
550
+ }
533
551
  }
534
552
  }
535
553
  };
536
554
 
537
555
  const esLALocaleData = {
538
556
  'es-LA': {
539
- select: { hiddenItemsText: 'más' }
557
+ select: { hiddenItemsText: 'más' },
558
+ datepicker: {
559
+ placeholder: 'dd/mm/aaaa'
560
+ },
561
+ timepicker: {
562
+ placeholder: {
563
+ full: 'hh:mm:ss',
564
+ short: 'hh:mm'
565
+ }
566
+ },
567
+ formatters: {
568
+ number: {
569
+ rounding: {
570
+ separator: '',
571
+ groupSeparator: ',',
572
+ thousand: 'K',
573
+ million: 'M',
574
+ billion: 'MRD',
575
+ trillion: 'B'
576
+ }
577
+ }
578
+ },
579
+ input: {
580
+ number: {
581
+ // nbsp is generated automatically and used by default in spec
582
+ // tslint:disable-next-line:no-irregular-whitespace
583
+ groupSeparator: [' ', ' '],
584
+ fractionSeparator: ','
585
+ }
586
+ }
540
587
  }
541
588
  };
542
589
 
543
590
  const faIRLocaleData = {
544
591
  'fa-IR': {
545
- select: { hiddenItemsText: 'أكثر' }
592
+ select: { hiddenItemsText: 'أكثر' },
593
+ datepicker: {
594
+ placeholder: 'روز/ ماه/سال'
595
+ },
596
+ timepicker: {
597
+ placeholder: {
598
+ full: 'ثانیه:دقیقه:ساعت',
599
+ short: 'دقیقه:ساعت'
600
+ }
601
+ },
602
+ formatters: {
603
+ number: {
604
+ rounding: {
605
+ separator: ' ',
606
+ groupSeparator: '٫',
607
+ thousand: 'هزار',
608
+ million: 'میلیون',
609
+ billion: 'م',
610
+ trillion: 'تریلیون',
611
+ rtl: true
612
+ }
613
+ }
614
+ },
615
+ input: {
616
+ number: {
617
+ groupSeparator: ['\u066C'],
618
+ fractionSeparator: '\u066B'
619
+ }
620
+ }
546
621
  }
547
622
  };
548
623
 
549
624
  const ptBRLocaleData = {
550
625
  'pt-BR': {
551
- select: { hiddenItemsText: 'mais' }
626
+ select: { hiddenItemsText: 'mais' },
627
+ datepicker: {
628
+ placeholder: 'dd/mm/yyyy'
629
+ },
630
+ timepicker: {
631
+ placeholder: {
632
+ full: 'hh:mm:ss',
633
+ short: 'hh:mm'
634
+ }
635
+ },
636
+ formatters: {
637
+ number: {
638
+ rounding: {
639
+ separator: ' ',
640
+ groupSeparator: ',',
641
+ thousand: 'mil',
642
+ million: 'mi',
643
+ billion: 'bi',
644
+ trillion: 'tri'
645
+ }
646
+ }
647
+ },
648
+ input: {
649
+ number: {
650
+ groupSeparator: ['.'],
651
+ fractionSeparator: ','
652
+ }
653
+ }
552
654
  }
553
655
  };
554
656
 
555
657
  const ruRULocaleData = {
556
- ru: {
658
+ 'ru-RU': {
557
659
  select: { hiddenItemsText: 'еще' },
558
660
  datepicker: {
559
661
  placeholder: 'дд.мм.гггг',
560
662
  dateInput: 'dd.MM.yyyy'
663
+ },
664
+ formatters: {
665
+ number: {
666
+ rounding: {
667
+ separator: ' ',
668
+ groupSeparator: ',',
669
+ thousand: 'К',
670
+ million: 'М',
671
+ billion: 'М',
672
+ trillion: 'Т'
673
+ }
674
+ }
675
+ },
676
+ input: {
677
+ number: {
678
+ // nbsp is generated automatically and used by default in spec
679
+ // tslint:disable-next-line:no-irregular-whitespace
680
+ groupSeparator: [' ', ' '],
681
+ fractionSeparator: ',',
682
+ startFormattingFrom: 4
683
+ }
561
684
  }
562
685
  }
563
686
  };
564
687
 
565
688
  const znCNLocaleData = {
566
689
  'zh-CN': {
567
- select: { hiddenItemsText: '更多的' }
690
+ select: { hiddenItemsText: '更多的' },
691
+ datepicker: {
692
+ placeholder: '年/月/日'
693
+ },
694
+ timepicker: {
695
+ placeholder: {
696
+ full: '时:分:秒',
697
+ short: '时:分'
698
+ }
699
+ },
700
+ formatters: {
701
+ number: {
702
+ rounding: {
703
+ separator: ' ',
704
+ groupSeparator: '.',
705
+ tenThousand: '万',
706
+ oneHundredMillions: '亿',
707
+ trillion: '兆'
708
+ }
709
+ }
710
+ },
711
+ input: {
712
+ number: {
713
+ groupSeparator: [','],
714
+ fractionSeparator: '.'
715
+ }
716
+ }
568
717
  }
569
718
  };
570
719
 
571
720
  const KBQ_LOCALE_ID$1 = new InjectionToken('KbqLocaleId');
572
- const KBQ_DEFAULT_LOCALE_ID = 'ru';
721
+ const KBQ_DEFAULT_LOCALE_ID = 'ru-RU';
573
722
  function KBQ_DEFAULT_LOCALE_DATA_FACTORY() {
574
723
  return {
575
724
  items: [
576
- { id: 'en', name: 'English' },
725
+ { id: 'en-US', name: 'English' },
577
726
  { id: 'zh-CN', name: '简体中文' },
578
727
  { id: 'es-LA', name: 'Español' },
579
728
  { id: 'pt-BR', name: 'Português' },
580
- { id: 'ru', name: 'Русский' },
729
+ { id: 'ru-RU', name: 'Русский' },
581
730
  { id: 'fa-IR', name: 'فارسی' }
582
731
  ],
583
732
  ...ruRULocaleData,
@@ -672,8 +821,29 @@ const minIntGroupPosition = 1;
672
821
  const minFractionGroupPosition = 3;
673
822
  const maxFractionGroupPosition = 5;
674
823
  const useGroupingPosition = 7;
824
+ // tslint:disable:no-magic-numbers
825
+ const ROUNDING_UNITS = {
826
+ thousand: 1e3,
827
+ tenThousand: 10 * 1e3,
828
+ million: 1e6,
829
+ oneHundredMillions: 100 * 1e6,
830
+ billion: 1e9,
831
+ trillion: 1e12
832
+ };
833
+ const intervalsConfig = {
834
+ supportedLanguages: ['ru-RU', 'en-US', 'es-LA', 'pt-BR', 'fa-IR'],
835
+ intervals: [
836
+ { startRange: 1, endRange: ROUNDING_UNITS.thousand },
837
+ { startRange: ROUNDING_UNITS.thousand, endRange: ROUNDING_UNITS.tenThousand, precision: 1 },
838
+ { startRange: ROUNDING_UNITS.tenThousand, endRange: ROUNDING_UNITS.million },
839
+ { startRange: ROUNDING_UNITS.million, endRange: ROUNDING_UNITS.million * 10, precision: 1 },
840
+ { startRange: ROUNDING_UNITS.million * 10, endRange: ROUNDING_UNITS.billion }
841
+ ]
842
+ };
843
+ // tslint:enable:no-magic-numbers
675
844
  class ParsedDigitsInfo {
676
845
  }
846
+ const defaultValueForGroupingInRULocale = 10000;
677
847
  function parseDigitsInfo(digitsInfo) {
678
848
  const parts = digitsInfo.match(NUMBER_FORMAT_REGEXP);
679
849
  if (parts === null) {
@@ -737,16 +907,28 @@ class KbqDecimalPipe {
737
907
  ...this.options,
738
908
  ...parsedDigitsInfo
739
909
  };
910
+ if (this.isSpecialFormatForRULocale(currentLocale, value, parsedDigitsInfo?.useGrouping)) {
911
+ options.useGrouping = false;
912
+ }
740
913
  try {
741
914
  const num = strToNumber(value);
915
+ /* Guideline requires for group separator to be `space`, as in 'ru-RU' locale.
916
+ * But by default in es-LA locale is used `comma`.
917
+ * To reduce data manipulation, 'ru-RU' locale is used. */
918
+ if (currentLocale === 'es-LA') {
919
+ return Intl.NumberFormat.call(this, 'ru-RU', options).format(num);
920
+ }
742
921
  return Intl.NumberFormat.call(this, currentLocale, options).format(num);
743
922
  }
744
923
  catch (error) {
745
924
  throw Error(`InvalidPipeArgument: KbqDecimalPipe for pipe '${JSON.stringify(error.message)}'`);
746
925
  }
747
926
  }
927
+ isSpecialFormatForRULocale(locale, value, grouping) {
928
+ return ['ru', 'ru-RU'].includes(locale) && grouping === undefined && value < defaultValueForGroupingInRULocale;
929
+ }
748
930
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqDecimalPipe, deps: [{ token: KBQ_LOCALE_ID, optional: true }, { token: KBQ_LOCALE_SERVICE, optional: true }, { token: KBQ_NUMBER_FORMATTER_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }
749
- /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.5", ngImport: i0, type: KbqDecimalPipe, name: "mcNumber", pure: false }); }
931
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.5", ngImport: i0, type: KbqDecimalPipe, name: "kbqNumber", pure: false }); }
750
932
  /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqDecimalPipe, providedIn: 'root' }); }
751
933
  }
752
934
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqDecimalPipe, decorators: [{
@@ -754,7 +936,83 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
754
936
  args: [{ providedIn: 'root' }]
755
937
  }, {
756
938
  type: Pipe,
757
- args: [{ name: 'mcNumber', pure: false }]
939
+ args: [{ name: 'kbqNumber', pure: false }]
940
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
941
+ type: Optional
942
+ }, {
943
+ type: Inject,
944
+ args: [KBQ_LOCALE_ID]
945
+ }] }, { type: KbqLocaleService, decorators: [{
946
+ type: Optional
947
+ }, {
948
+ type: Inject,
949
+ args: [KBQ_LOCALE_SERVICE]
950
+ }] }, { type: ParsedDigitsInfo, decorators: [{
951
+ type: Optional
952
+ }, {
953
+ type: Inject,
954
+ args: [KBQ_NUMBER_FORMATTER_OPTIONS]
955
+ }] }]; } });
956
+ class KbqTableNumberPipe {
957
+ constructor(id, localeService, options) {
958
+ this.id = id;
959
+ this.localeService = localeService;
960
+ this.options = options;
961
+ this.options = this.options || KBQ_NUMBER_FORMATTER_DEFAULT_OPTIONS;
962
+ this.localeService?.changes
963
+ .subscribe((newId) => this.id = newId);
964
+ }
965
+ /**
966
+ * @param value The number to be formatted.
967
+ * @param digitsInfo Decimal representation options, specified by a string
968
+ * in the following format:<br>
969
+ * <code>{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}</code>.
970
+ * - `minIntegerDigits`: The minimum number of integer digits before the decimal point.
971
+ * Default is `1`.
972
+ * - `minFractionDigits`: The minimum number of digits after the decimal point.
973
+ * Default is `0`.
974
+ * - `maxFractionDigits`: The maximum number of digits after the decimal point.
975
+ * Default is `3`.
976
+ * @param locale A locale code for the locale format rules to use.
977
+ * When not supplied, uses the value of `KBQ_LOCALE_ID`, which is `ru` by default.
978
+ */
979
+ transform(value, digitsInfo, locale) {
980
+ if (isEmpty(value)) {
981
+ return null;
982
+ }
983
+ const currentLocale = locale || this.id || KBQ_DEFAULT_LOCALE_ID;
984
+ let parsedDigitsInfo;
985
+ if (digitsInfo) {
986
+ parsedDigitsInfo = parseDigitsInfo(digitsInfo);
987
+ }
988
+ const options = {
989
+ ...this.options,
990
+ ...parsedDigitsInfo
991
+ };
992
+ try {
993
+ const num = strToNumber(value);
994
+ /* Guideline requires for group separator to be `space`, as in 'ru-RU' locale.
995
+ * But by default in es-LA locale is used `comma`.
996
+ * To reduce data manipulation, 'ru-RU' locale is used. */
997
+ if (currentLocale === 'es-LA') {
998
+ return Intl.NumberFormat.call(this, 'ru-RU', options).format(num);
999
+ }
1000
+ return Intl.NumberFormat.call(this, currentLocale, options).format(num);
1001
+ }
1002
+ catch (error) {
1003
+ throw Error(`InvalidPipeArgument: KbqTableNumberPipe for pipe '${JSON.stringify(error.message)}'`);
1004
+ }
1005
+ }
1006
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqTableNumberPipe, deps: [{ token: KBQ_LOCALE_ID, optional: true }, { token: KBQ_LOCALE_SERVICE, optional: true }, { token: KBQ_NUMBER_FORMATTER_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }
1007
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.5", ngImport: i0, type: KbqTableNumberPipe, name: "kbqTableNumber", pure: false }); }
1008
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqTableNumberPipe, providedIn: 'root' }); }
1009
+ }
1010
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqTableNumberPipe, decorators: [{
1011
+ type: Injectable,
1012
+ args: [{ providedIn: 'root' }]
1013
+ }, {
1014
+ type: Pipe,
1015
+ args: [{ name: 'kbqTableNumber', pure: false }]
758
1016
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
759
1017
  type: Optional
760
1018
  }, {
@@ -771,10 +1029,124 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
771
1029
  type: Inject,
772
1030
  args: [KBQ_NUMBER_FORMATTER_OPTIONS]
773
1031
  }] }]; } });
1032
+ function isWithin(startRange, endRange, valueToCheck) {
1033
+ return startRange <= valueToCheck && valueToCheck < endRange;
1034
+ }
1035
+ class KbqRoundDecimalPipe {
1036
+ constructor(id, localeService) {
1037
+ this.id = id;
1038
+ this.localeService = localeService;
1039
+ this.localeService?.changes
1040
+ .subscribe((newId) => this.id = newId);
1041
+ }
1042
+ transform(value, locale) {
1043
+ if (isEmpty(value)) {
1044
+ return null;
1045
+ }
1046
+ const currentLocale = locale || this.id || KBQ_DEFAULT_LOCALE_ID;
1047
+ this.roundingOptions = this.localeService.locales[currentLocale].formatters.number.rounding;
1048
+ try {
1049
+ const num = strToNumber(value);
1050
+ const unit = this.calculateUnit(num);
1051
+ if (!unit) {
1052
+ return Intl.NumberFormat.call(this, currentLocale, { useGrouping: false }).format(num);
1053
+ }
1054
+ let parts = {};
1055
+ if (intervalsConfig.supportedLanguages.includes(currentLocale)) {
1056
+ intervalsConfig.intervals
1057
+ .find(({ startRange, endRange, precision }) => {
1058
+ const within = isWithin(startRange, endRange, num);
1059
+ if (within) {
1060
+ if (precision) {
1061
+ parts = unit === 'thousand' ?
1062
+ this.calculatePartsForThousands(num) :
1063
+ {
1064
+ num: Math.trunc(num / ROUNDING_UNITS[unit]),
1065
+ fraction: this.calculateDecimal(num, ROUNDING_UNITS[unit])
1066
+ };
1067
+ }
1068
+ else {
1069
+ parts = { num: Math.round(num / ROUNDING_UNITS[unit]) };
1070
+ }
1071
+ }
1072
+ return within;
1073
+ });
1074
+ }
1075
+ parts = parts.num ? parts : {
1076
+ num: Math.trunc(num / ROUNDING_UNITS[unit]),
1077
+ fraction: this.calculateDecimal(num, ROUNDING_UNITS[unit])
1078
+ };
1079
+ Object.keys(parts).forEach((key) => {
1080
+ parts[key] = Intl.NumberFormat.call(this, currentLocale, { useGrouping: false }).format(parts[key]);
1081
+ });
1082
+ const calculatedValue = parts.fraction
1083
+ ? `${parts.num}${this.roundingOptions.groupSeparator}${parts.fraction}`
1084
+ : `${parts.num}`;
1085
+ return `${calculatedValue}${this.roundingOptions.separator}${this.roundingOptions[unit]}`;
1086
+ }
1087
+ catch (error) {
1088
+ throw Error(`InvalidPipeArgument: KbqRoundDecimalPipe for pipe '${JSON.stringify(error.message)}'`);
1089
+ }
1090
+ }
1091
+ calculateDecimal(num, divider) {
1092
+ /* tslint:disable-next-line:no-magic-numbers */
1093
+ return Math.round(num / divider % 1 * 10);
1094
+ }
1095
+ /**
1096
+ * 2 * 1000 is a number in the interval of [1500...2500)
1097
+ *
1098
+ * 2,0 * 1000 is a number in the interval of [1950...2050)
1099
+ */
1100
+ calculatePartsForThousands(num) {
1101
+ const dividedValue = num / ROUNDING_UNITS.thousand;
1102
+ const div = Math.round(dividedValue) * ROUNDING_UNITS.thousand;
1103
+ const fifty = 50;
1104
+ return isWithin(div - fifty, div + fifty, num)
1105
+ ? { num: Math.round(dividedValue), fraction: 0 }
1106
+ : { num: Math.round(dividedValue) };
1107
+ }
1108
+ calculateUnit(num) {
1109
+ let currentUnit;
1110
+ const localizedOptions = Object.keys(this.roundingOptions);
1111
+ Object.keys(ROUNDING_UNITS).every((key) => {
1112
+ if (!localizedOptions.includes(key)) {
1113
+ return true;
1114
+ }
1115
+ if (num / ROUNDING_UNITS[key] >= 1) {
1116
+ currentUnit = key;
1117
+ return true;
1118
+ }
1119
+ return false;
1120
+ });
1121
+ return currentUnit;
1122
+ }
1123
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqRoundDecimalPipe, deps: [{ token: KBQ_LOCALE_ID, optional: true }, { token: KBQ_LOCALE_SERVICE, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }
1124
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.5", ngImport: i0, type: KbqRoundDecimalPipe, name: "kbqRoundNumber", pure: false }); }
1125
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqRoundDecimalPipe, providedIn: 'root' }); }
1126
+ }
1127
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqRoundDecimalPipe, decorators: [{
1128
+ type: Injectable,
1129
+ args: [{ providedIn: 'root' }]
1130
+ }, {
1131
+ type: Pipe,
1132
+ args: [{ name: 'kbqRoundNumber', pure: false }]
1133
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
1134
+ type: Optional
1135
+ }, {
1136
+ type: Inject,
1137
+ args: [KBQ_LOCALE_ID]
1138
+ }] }, { type: KbqLocaleService, decorators: [{
1139
+ type: Optional
1140
+ }, {
1141
+ type: Inject,
1142
+ args: [KBQ_LOCALE_SERVICE]
1143
+ }] }]; } });
774
1144
 
775
1145
  class KbqFormattersModule {
776
1146
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqFormattersModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
777
1147
  /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.5", ngImport: i0, type: KbqFormattersModule, declarations: [KbqDecimalPipe,
1148
+ KbqRoundDecimalPipe,
1149
+ KbqTableNumberPipe,
778
1150
  AbsoluteDateFormatterPipe,
779
1151
  AbsoluteDateTimeFormatterPipe,
780
1152
  AbsoluteDateShortFormatterPipe,
@@ -788,6 +1160,8 @@ class KbqFormattersModule {
788
1160
  RangeDateTimeFormatterPipe,
789
1161
  RangeShortDateTimeFormatterPipe,
790
1162
  RangeMiddleDateTimeFormatterPipe], exports: [KbqDecimalPipe,
1163
+ KbqRoundDecimalPipe,
1164
+ KbqTableNumberPipe,
791
1165
  AbsoluteDateFormatterPipe,
792
1166
  AbsoluteDateTimeFormatterPipe,
793
1167
  AbsoluteDateShortFormatterPipe,
@@ -808,6 +1182,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
808
1182
  args: [{
809
1183
  declarations: [
810
1184
  KbqDecimalPipe,
1185
+ KbqRoundDecimalPipe,
1186
+ KbqTableNumberPipe,
811
1187
  AbsoluteDateFormatterPipe,
812
1188
  AbsoluteDateTimeFormatterPipe,
813
1189
  AbsoluteDateShortFormatterPipe,
@@ -824,6 +1200,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
824
1200
  ],
825
1201
  exports: [
826
1202
  KbqDecimalPipe,
1203
+ KbqRoundDecimalPipe,
1204
+ KbqTableNumberPipe,
827
1205
  AbsoluteDateFormatterPipe,
828
1206
  AbsoluteDateTimeFormatterPipe,
829
1207
  AbsoluteDateShortFormatterPipe,
@@ -868,13 +1246,13 @@ class KbqFormElement {
868
1246
  }
869
1247
  }
870
1248
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqFormElement, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
871
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: KbqFormElement, selector: ".kbq-form__row, .kbq-form__fieldset, .kbq-form__legend", host: { properties: { "class.kbq-form-row_margin": "margin" } }, queries: [{ propertyName: "elements", predicate: KbqFormElement }], exportAs: ["mcFormElement"], ngImport: i0 }); }
1249
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: KbqFormElement, selector: ".kbq-form__row, .kbq-form__fieldset, .kbq-form__legend", host: { properties: { "class.kbq-form-row_margin": "margin" } }, queries: [{ propertyName: "elements", predicate: KbqFormElement }], exportAs: ["kbqFormElement"], ngImport: i0 }); }
872
1250
  }
873
1251
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqFormElement, decorators: [{
874
1252
  type: Directive,
875
1253
  args: [{
876
1254
  selector: '.kbq-form__row, .kbq-form__fieldset, .kbq-form__legend',
877
- exportAs: 'mcFormElement',
1255
+ exportAs: 'kbqFormElement',
878
1256
  host: {
879
1257
  '[class.kbq-form-row_margin]': 'margin'
880
1258
  }
@@ -897,13 +1275,13 @@ class KbqForm {
897
1275
  });
898
1276
  }
899
1277
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqForm, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
900
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: KbqForm, selector: ".kbq-form-vertical, .kbq-form-horizontal", host: { classAttribute: "kbq-form" }, queries: [{ propertyName: "elements", predicate: KbqFormElement }], exportAs: ["mcForm"], ngImport: i0 }); }
1278
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: KbqForm, selector: ".kbq-form-vertical, .kbq-form-horizontal", host: { classAttribute: "kbq-form" }, queries: [{ propertyName: "elements", predicate: KbqFormElement }], exportAs: ["kbqForm"], ngImport: i0 }); }
901
1279
  }
902
1280
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqForm, decorators: [{
903
1281
  type: Directive,
904
1282
  args: [{
905
1283
  selector: '.kbq-form-vertical, .kbq-form-horizontal',
906
- exportAs: 'mcForm',
1284
+ exportAs: 'kbqForm',
907
1285
  host: {
908
1286
  class: 'kbq-form'
909
1287
  }
@@ -1058,11 +1436,11 @@ class KbqOptgroup extends KbqOptgroupMixinBase {
1058
1436
  this.labelId = `kbq-optgroup-label-${uniqueOptgroupIdCounter++}`;
1059
1437
  }
1060
1438
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqOptgroup, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1061
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqOptgroup, selector: "kbq-optgroup", inputs: { disabled: "disabled", label: "label" }, host: { properties: { "class.kbq-disabled": "disabled" }, classAttribute: "kbq-optgroup" }, exportAs: ["mcOptgroup"], 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;user-select:none;cursor:default}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1439
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", 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;user-select:none;cursor:default}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1062
1440
  }
1063
1441
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqOptgroup, decorators: [{
1064
1442
  type: Component,
1065
- args: [{ selector: 'kbq-optgroup', exportAs: 'mcOptgroup', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, inputs: ['disabled'], host: {
1443
+ args: [{ selector: 'kbq-optgroup', exportAs: 'kbqOptgroup', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, inputs: ['disabled'], host: {
1066
1444
  class: 'kbq-optgroup',
1067
1445
  '[class.kbq-disabled]': 'disabled'
1068
1446
  }, 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;user-select:none;cursor:default}\n"] }]
@@ -1135,10 +1513,49 @@ class KbqOptionSelectionChange {
1135
1513
  * Injection token used to provide the parent component to options.
1136
1514
  */
1137
1515
  const KBQ_OPTION_PARENT_COMPONENT = new InjectionToken('KBQ_OPTION_PARENT_COMPONENT');
1516
+ class KbqOptionBase {
1517
+ /** Emits the selection change event. */
1518
+ emitSelectionChangeEvent(isUserInput = false) {
1519
+ this.onSelectionChange.emit(new KbqOptionSelectionChange(this, isUserInput));
1520
+ }
1521
+ }
1522
+ class KbqVirtualOption extends KbqOptionBase {
1523
+ get disabled() {
1524
+ return this._disabled;
1525
+ }
1526
+ set disabled(value) {
1527
+ this._disabled = coerceBooleanProperty(value);
1528
+ }
1529
+ get selected() {
1530
+ return this._selected;
1531
+ }
1532
+ get viewValue() {
1533
+ return this.value;
1534
+ }
1535
+ constructor(value, _disabled = false) {
1536
+ super();
1537
+ this.value = value;
1538
+ this._disabled = _disabled;
1539
+ this._selected = false;
1540
+ this.onSelectionChange = new EventEmitter();
1541
+ }
1542
+ select() {
1543
+ if (!this._selected) {
1544
+ this._selected = true;
1545
+ this.emitSelectionChangeEvent();
1546
+ }
1547
+ }
1548
+ deselect() {
1549
+ if (this._selected) {
1550
+ this._selected = false;
1551
+ this.emitSelectionChangeEvent();
1552
+ }
1553
+ }
1554
+ }
1138
1555
  /**
1139
1556
  * Single option inside of a `<kbq-select>` element.
1140
1557
  */
1141
- class KbqOption {
1558
+ class KbqOption extends KbqOptionBase {
1142
1559
  get showCheckbox() {
1143
1560
  return this._showCheckbox === undefined ? this.multiple : this._showCheckbox;
1144
1561
  }
@@ -1179,6 +1596,7 @@ class KbqOption {
1179
1596
  return this._active;
1180
1597
  }
1181
1598
  constructor(element, changeDetectorRef, parent, group) {
1599
+ super();
1182
1600
  this.element = element;
1183
1601
  this.changeDetectorRef = changeDetectorRef;
1184
1602
  this.parent = parent;
@@ -1269,6 +1687,7 @@ class KbqOption {
1269
1687
  this.selectViaInteraction();
1270
1688
  // Prevent the page from scrolling down and form submits.
1271
1689
  event.preventDefault();
1690
+ event.stopPropagation();
1272
1691
  }
1273
1692
  }
1274
1693
  /**
@@ -1288,18 +1707,14 @@ class KbqOption {
1288
1707
  getHostElement() {
1289
1708
  return this.element.nativeElement;
1290
1709
  }
1291
- /** Emits the selection change event. */
1292
- emitSelectionChangeEvent(isUserInput = false) {
1293
- this.onSelectionChange.emit(new KbqOptionSelectionChange(this, isUserInput));
1294
- }
1295
1710
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", 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 }); }
1296
1711
  /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", 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: [{
1297
1712
  provide: KBQ_TITLE_TEXT_REF, useExisting: KbqOption
1298
- }], viewQueries: [{ propertyName: "textElement", first: true, predicate: ["mcTitleText"], descendants: true }], exportAs: ["mcOption"], ngImport: i0, template: "<kbq-pseudo-checkbox\n *ngIf=\"showCheckbox\"\n [state]=\"selected ? 'checked' : 'unchecked'\"\n [disabled]=\"disabled\">\n</kbq-pseudo-checkbox>\n\n<span #mcTitleText 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,rgba(0,0,0,.05) 10px,transparent 10px,transparent 20px,rgba(0,0,0,.05) 20px,rgba(0,0,0,.05) 30px,transparent 30px) repeat;background-size:29px 29px;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;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-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}.kbq-option-text:not(.kbq-disabled):not([disabled]){cursor:pointer}\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 }); }
1713
+ }], 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,rgba(0,0,0,.05) 10px,transparent 10px,transparent 20px,rgba(0,0,0,.05) 20px,rgba(0,0,0,.05) 30px,transparent 30px) repeat;background-size:29px 29px;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;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-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}.kbq-option-text:not(.kbq-disabled):not([disabled]){cursor:pointer}\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 }); }
1299
1714
  }
1300
1715
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqOption, decorators: [{
1301
1716
  type: Component,
1302
- args: [{ selector: 'kbq-option', exportAs: 'mcOption', host: {
1717
+ args: [{ selector: 'kbq-option', exportAs: 'kbqOption', host: {
1303
1718
  '[attr.tabindex]': 'getTabIndex()',
1304
1719
  class: 'kbq-option',
1305
1720
  '[class.kbq-selected]': 'selected',
@@ -1311,7 +1726,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
1311
1726
  '(keydown)': 'handleKeydown($event)'
1312
1727
  }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [{
1313
1728
  provide: KBQ_TITLE_TEXT_REF, useExisting: KbqOption
1314
- }], template: "<kbq-pseudo-checkbox\n *ngIf=\"showCheckbox\"\n [state]=\"selected ? 'checked' : 'unchecked'\"\n [disabled]=\"disabled\">\n</kbq-pseudo-checkbox>\n\n<span #mcTitleText 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,rgba(0,0,0,.05) 10px,transparent 10px,transparent 20px,rgba(0,0,0,.05) 20px,rgba(0,0,0,.05) 30px,transparent 30px) repeat;background-size:29px 29px;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;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-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}.kbq-option-text:not(.kbq-disabled):not([disabled]){cursor:pointer}\n"] }]
1729
+ }], 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,rgba(0,0,0,.05) 10px,transparent 10px,transparent 20px,rgba(0,0,0,.05) 20px,rgba(0,0,0,.05) 30px,transparent 30px) repeat;background-size:29px 29px;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;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-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}.kbq-option-text:not(.kbq-disabled):not([disabled]){cursor:pointer}\n"] }]
1315
1730
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
1316
1731
  type: Optional
1317
1732
  }, {
@@ -1321,7 +1736,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
1321
1736
  type: Optional
1322
1737
  }] }]; }, propDecorators: { textElement: [{
1323
1738
  type: ViewChild,
1324
- args: ['mcTitleText', { static: false }]
1739
+ args: ['kbqTitleText', { static: false }]
1325
1740
  }], value: [{
1326
1741
  type: Input
1327
1742
  }], showCheckbox: [{
@@ -1452,7 +1867,7 @@ class KbqOptionActionComponent extends KbqOptionActionMixinBase {
1452
1867
  setTimeout(() => this.option.tooltipTrigger.disabled = false);
1453
1868
  }
1454
1869
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqOptionActionComponent, deps: [{ token: i0.ElementRef }, { token: i1$1.FocusMonitor }, { token: KBQ_OPTION_ACTION_PARENT }], target: i0.ɵɵFactoryTarget.Component }); }
1455
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", 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", "attr.disabled": "disabled || null", "attr.tabIndex": "-1" }, classAttribute: "kbq-option-action" }, queries: [{ propertyName: "customIcon", first: true, predicate: ["customIcon"], descendants: true }], exportAs: ["mcOptionAction"], usesInheritance: true, ngImport: i0, template: `
1870
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", 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", "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: `
1456
1871
  <ng-container [ngSwitch]="!!customIcon">
1457
1872
  <i class="mc kbq-icon mc-ellipsis_16" *ngSwitchCase="false"></i>
1458
1873
  <ng-content select="[kbq-icon]" *ngSwitchCase="true"></ng-content>
@@ -1461,7 +1876,7 @@ class KbqOptionActionComponent extends KbqOptionActionMixinBase {
1461
1876
  }
1462
1877
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqOptionActionComponent, decorators: [{
1463
1878
  type: Component,
1464
- args: [{ selector: 'kbq-option-action', exportAs: 'mcOptionAction', template: `
1879
+ args: [{ selector: 'kbq-option-action', exportAs: 'kbqOptionAction', template: `
1465
1880
  <ng-container [ngSwitch]="!!customIcon">
1466
1881
  <i class="mc kbq-icon mc-ellipsis_16" *ngSwitchCase="false"></i>
1467
1882
  <ng-content select="[kbq-icon]" *ngSwitchCase="true"></ng-content>
@@ -1747,6 +2162,11 @@ const POSITION_TO_CSS_MAP = {
1747
2162
  bottomLeft: 'bottom-left',
1748
2163
  bottomRight: 'bottom-right'
1749
2164
  };
2165
+ const KBQ_CUSTOM_SCROLL_STRATEGY_PROVIDER = (token, factory) => ({
2166
+ provide: token,
2167
+ deps: [Overlay],
2168
+ useFactory: factory
2169
+ });
1750
2170
  function arrayMap(array, iteratee) {
1751
2171
  let index = -1;
1752
2172
  const length = array === null ? 0 : array.length;
@@ -1789,6 +2209,7 @@ var PopUpTriggers;
1789
2209
  PopUpTriggers["Click"] = "click";
1790
2210
  PopUpTriggers["Focus"] = "focus";
1791
2211
  PopUpTriggers["Hover"] = "hover";
2212
+ PopUpTriggers["Keydown"] = "keydown";
1792
2213
  })(PopUpTriggers || (PopUpTriggers = {}));
1793
2214
  var PopUpSizes;
1794
2215
  (function (PopUpSizes) {
@@ -2067,6 +2488,15 @@ class KbqPopUpTrigger {
2067
2488
  .set('blur', () => this.hide())
2068
2489
  .forEach(this.addEventListener);
2069
2490
  }
2491
+ if (this.trigger.includes(PopUpTriggers.Keydown)) {
2492
+ this.listeners
2493
+ .set('keydown', (event) => {
2494
+ if (event instanceof KeyboardEvent && [ENTER, SPACE].includes(event.keyCode)) {
2495
+ this.show();
2496
+ }
2497
+ })
2498
+ .forEach(this.addEventListener);
2499
+ }
2070
2500
  }
2071
2501
  /** Updates the position of the current popover. */
2072
2502
  updatePosition(reapplyPosition = false) {
@@ -2110,7 +2540,7 @@ class KbqPopUpTrigger {
2110
2540
  .pipe(takeUntil(this.destroyed))
2111
2541
  .pipe(delay(0))
2112
2542
  .subscribe((event) => {
2113
- if (event?.type === 'click' && event.mcPopoverPreventHide) {
2543
+ if (event?.type === 'click' && event.kbqPopoverPreventHide) {
2114
2544
  return;
2115
2545
  }
2116
2546
  this.hide();
@@ -2166,14 +2596,14 @@ const SELECT_PANEL_VIEWPORT_PADDING = 8;
2166
2596
  /** Injection token that determines the scroll handling while a select is open. */
2167
2597
  const KBQ_SELECT_SCROLL_STRATEGY = new InjectionToken('kbq-select-scroll-strategy');
2168
2598
  /** @docs-private */
2169
- function mcSelectScrollStrategyProviderFactory(overlay) {
2599
+ function kbqSelectScrollStrategyProviderFactory(overlay) {
2170
2600
  return () => overlay.scrollStrategies.reposition();
2171
2601
  }
2172
2602
  /** @docs-private */
2173
2603
  const KBQ_SELECT_SCROLL_STRATEGY_PROVIDER = {
2174
2604
  provide: KBQ_SELECT_SCROLL_STRATEGY,
2175
2605
  deps: [Overlay],
2176
- useFactory: mcSelectScrollStrategyProviderFactory
2606
+ useFactory: kbqSelectScrollStrategyProviderFactory
2177
2607
  };
2178
2608
 
2179
2609
  class KbqMeasureScrollbarService {
@@ -2221,6 +2651,63 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
2221
2651
  args: [DOCUMENT]
2222
2652
  }] }]; } });
2223
2653
 
2654
+ const KbqDefaultThemes = [
2655
+ {
2656
+ name: 'light',
2657
+ className: 'kbq-theme-light',
2658
+ selected: true
2659
+ },
2660
+ {
2661
+ name: 'dark',
2662
+ className: 'kbq-theme-dark',
2663
+ selected: false
2664
+ }
2665
+ ];
2666
+ class ThemeService {
2667
+ constructor(rendererFactory) {
2668
+ this.rendererFactory = rendererFactory;
2669
+ this.current = new BehaviorSubject(null);
2670
+ this.themes = KbqDefaultThemes;
2671
+ this.update = ([prev, current]) => {
2672
+ if (prev) {
2673
+ prev.selected = false;
2674
+ this.renderer.removeClass(document.body, prev.className);
2675
+ }
2676
+ if (current) {
2677
+ this.renderer.addClass(document.body, current.className);
2678
+ current.selected = true;
2679
+ }
2680
+ };
2681
+ this.renderer = this.rendererFactory.createRenderer(null, null);
2682
+ this.subscription = this.current
2683
+ .pipe(pairwise())
2684
+ .subscribe(this.update);
2685
+ }
2686
+ setThemes(items) {
2687
+ this.themes = items;
2688
+ }
2689
+ setTheme(value) {
2690
+ if (typeof value === 'number') {
2691
+ this.current.next(this.themes[value]);
2692
+ }
2693
+ else if (typeof value === 'object' && this.themes.includes(value)) {
2694
+ this.current.next(value);
2695
+ }
2696
+ else {
2697
+ throw Error(`value has unsupported type: ${typeof value}`);
2698
+ }
2699
+ }
2700
+ getTheme() {
2701
+ return this.current.value;
2702
+ }
2703
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ThemeService, deps: [{ token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable }); }
2704
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ThemeService, providedIn: 'root' }); }
2705
+ }
2706
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ThemeService, decorators: [{
2707
+ type: Injectable,
2708
+ args: [{ providedIn: 'root' }]
2709
+ }], ctorParameters: function () { return [{ type: i0.RendererFactory2 }]; } });
2710
+
2224
2711
  function isBoolean(val) { return typeof val === 'boolean'; }
2225
2712
  function toBoolean(value) {
2226
2713
  return value != null && `${value}` !== 'false';
@@ -2329,11 +2816,11 @@ const validationTooltipShowDelay = 10;
2329
2816
  const validationTooltipHideDelay = 3000;
2330
2817
  const KBQ_VALIDATION = new InjectionToken('KbqUseValidation', { factory: () => ({ useValidation: true }) });
2331
2818
 
2332
- const VERSION = new Version('16.0.0-beta.5+sha-4808246');
2819
+ const VERSION = new Version('16.0.0-beta.7+sha-3777111');
2333
2820
 
2334
2821
  /**
2335
2822
  * Generated bundle index. Do not edit.
2336
2823
  */
2337
2824
 
2338
- export { AbsoluteDateFormatterPipe, AbsoluteDateShortFormatterPipe, AbsoluteDateTimeFormatterPipe, AbsoluteShortDateTimeFormatterPipe, AnimationCurves, BOTTOM_LEFT_POSITION_PRIORITY, BOTTOM_POSITION_PRIORITY, BOTTOM_RIGHT_POSITION_PRIORITY, DateAdapter, DateFormatter, EXTENDED_OVERLAY_POSITIONS, ErrorStateMatcher, 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_SANITY_CHECKS, KBQ_SELECT_SCROLL_STRATEGY, KBQ_SELECT_SCROLL_STRATEGY_PROVIDER, KBQ_TITLE_TEXT_REF, KBQ_VALIDATION, KbqCommonModule, KbqComponentColors, KbqDataSizeModule, KbqDataSizePipe, KbqDecimalPipe, KbqForm, KbqFormElement, KbqFormattersModule, KbqFormsModule, KbqHighlightModule, KbqHighlightPipe, KbqLine, KbqLineModule, KbqLineSetter, KbqLocaleService, KbqLocaleServiceModule, KbqMeasureScrollbarService, KbqOptgroup, KbqOptgroupBase, KbqOptgroupMixinBase, KbqOption, KbqOptionActionBase, KbqOptionActionComponent, KbqOptionActionMixinBase, KbqOptionModule, KbqOptionSelectionChange, KbqPopUp, KbqPopUpTrigger, KbqPseudoCheckbox, KbqPseudoCheckboxBase, KbqPseudoCheckboxMixinBase, KbqPseudoCheckboxModule, 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, VERSION, countGroupLabelsBeforeOption, escapeRegExp, fadeAnimation, formatDataSize, getHumanizedBytes, getKbqSelectDynamicMultipleError, getKbqSelectNonArrayValueError, getKbqSelectNonFunctionValueError, getOptionScrollPosition, isBoolean, mcSelectAnimations, mcSelectScrollStrategyProviderFactory, mixinColor, mixinDisabled, mixinErrorState, mixinTabIndex, selectEvents, sizeUnitsConfig, toBoolean, validationTooltipHideDelay, validationTooltipShowDelay };
2825
+ 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_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, escapeRegExp, fadeAnimation, formatDataSize, getHumanizedBytes, getKbqSelectDynamicMultipleError, getKbqSelectNonArrayValueError, getKbqSelectNonFunctionValueError, getOptionScrollPosition, isBoolean, isWithin, kbqSelectAnimations, kbqSelectScrollStrategyProviderFactory, mixinColor, mixinDisabled, mixinErrorState, mixinTabIndex, selectEvents, sizeUnitsConfig, toBoolean, validationTooltipHideDelay, validationTooltipShowDelay };
2339
2826
  //# sourceMappingURL=koobiq-components-core.mjs.map