@koobiq/components 16.0.0-beta.1 → 16.0.0-beta.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 (479) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +2 -2
  3. package/autocomplete/_autocomplete-theme.scss +3 -10
  4. package/autocomplete/autocomplete-origin.directive.d.ts +1 -1
  5. package/autocomplete/autocomplete-trigger.directive.d.ts +6 -16
  6. package/autocomplete/autocomplete.component.d.ts +1 -1
  7. package/autocomplete/autocomplete.scss +0 -8
  8. package/badge/README.md +0 -0
  9. package/{core/styles/theming/_badges-theme.scss → badge/_badge-theme.scss} +14 -13
  10. package/badge/badge.component.d.ts +44 -0
  11. package/badge/badge.component.scss +83 -0
  12. package/badge/badge.module.d.ts +10 -0
  13. package/badge/index.d.ts +1 -0
  14. package/badge/public-api.d.ts +2 -0
  15. package/button/_button-base.scss +1 -1
  16. package/button/_button-theme.scss +35 -27
  17. package/button/button.scss +5 -2
  18. package/button-toggle/_button-toggle-theme.scss +26 -45
  19. package/button-toggle/button-toggle.component.d.ts +2 -2
  20. package/button-toggle/button-toggle.scss +40 -87
  21. package/card/_card-theme.scss +1 -1
  22. package/checkbox/README.md +1 -1
  23. package/checkbox/_checkbox-theme.scss +10 -2
  24. package/checkbox/checkbox.d.ts +2 -2
  25. package/code-block/README.md +14 -14
  26. package/code-block/_code-block-theme.scss +49 -10
  27. package/code-block/actionbar.component.scss +34 -6
  28. package/code-block/code-block.component.d.ts +2 -2
  29. package/code-block/code-block.scss +101 -27
  30. package/core/animation/index.d.ts +1 -1
  31. package/core/animation/select-animations.d.ts +1 -1
  32. package/core/common-behaviors/color.d.ts +1 -1
  33. package/core/common-behaviors/common-module.d.ts +1 -1
  34. package/core/formatters/index.d.ts +1 -1
  35. package/core/formatters/number/formatter.d.ts +56 -1
  36. package/core/forms/_forms-theme.scss +4 -4
  37. package/core/forms/_forms.scss +1 -3
  38. package/core/forms/forms.directive.d.ts +2 -2
  39. package/core/locales/en-US.d.ts +19 -1
  40. package/core/locales/es-LA.d.ts +27 -0
  41. package/core/locales/fa-IR.d.ts +28 -0
  42. package/core/locales/locale-service.d.ts +148 -3
  43. package/core/locales/pt-BR.d.ts +27 -0
  44. package/core/locales/ru-RU.d.ts +20 -1
  45. package/core/locales/zh-CN.d.ts +26 -0
  46. package/core/option/_optgroup-theme.scss +1 -1
  47. package/core/option/_option-action-theme.scss +1 -1
  48. package/core/option/_option-theme.scss +37 -14
  49. package/core/option/action.d.ts +1 -1
  50. package/core/option/action.scss +4 -5
  51. package/core/option/optgroup.d.ts +1 -1
  52. package/core/option/option.d.ts +37 -8
  53. package/core/option/option.scss +5 -50
  54. package/core/overlay/overlay-position-map.d.ts +7 -1
  55. package/core/pop-up/constants.d.ts +2 -1
  56. package/core/public-api.d.ts +1 -0
  57. package/core/select/constants.d.ts +2 -2
  58. package/core/services/theme.service.d.ts +23 -0
  59. package/core/styles/_koobiq-theme.scss +12 -1
  60. package/core/styles/_tokens.kbq.import.scss +4 -4
  61. package/core/styles/_tokens.scss +4 -4
  62. package/core/styles/_variables.scss +1 -0
  63. package/core/styles/common/_animation.scss +10 -6
  64. package/core/styles/common/_list.scss +123 -0
  65. package/core/styles/common/_overlay.scss +1 -1
  66. package/core/styles/common/_select.scss +232 -0
  67. package/core/styles/theming/_components-theming.scss +716 -102
  68. package/core/styles/theming/_theming.scss +201 -30
  69. package/core/styles/typography/_typography.scss +176 -5
  70. package/datepicker/_datepicker-theme.scss +43 -57
  71. package/datepicker/calendar-body.component.d.ts +1 -1
  72. package/datepicker/calendar-body.scss +11 -26
  73. package/datepicker/calendar-header.component.d.ts +9 -3
  74. package/datepicker/calendar-header.scss +7 -31
  75. package/datepicker/calendar.component.d.ts +4 -5
  76. package/datepicker/calendar.scss +20 -25
  77. package/datepicker/datepicker-animations.d.ts +2 -2
  78. package/datepicker/datepicker-content.scss +17 -10
  79. package/datepicker/datepicker-input.directive.d.ts +4 -4
  80. package/datepicker/datepicker-input.scss +1 -1
  81. package/datepicker/datepicker-toggle.component.d.ts +3 -3
  82. package/datepicker/datepicker.component.d.ts +2 -2
  83. package/datepicker/month-view.component.d.ts +5 -6
  84. package/dl/_dl-theme.scss +2 -56
  85. package/dl/dl.component.d.ts +1 -2
  86. package/dl/dl.scss +10 -47
  87. package/dropdown/_dropdown-theme.scss +29 -37
  88. package/dropdown/dropdown-animations.d.ts +1 -1
  89. package/dropdown/dropdown-content.directive.d.ts +1 -1
  90. package/dropdown/dropdown-item.component.d.ts +1 -1
  91. package/dropdown/dropdown-item.scss +18 -40
  92. package/dropdown/dropdown-trigger.directive.d.ts +2 -2
  93. package/dropdown/dropdown.component.d.ts +1 -1
  94. package/dropdown/dropdown.scss +16 -39
  95. package/dropdown/dropdown.types.d.ts +1 -1
  96. package/esm2022/alert/alert.component.mjs +3 -3
  97. package/esm2022/autocomplete/autocomplete-origin.directive.mjs +4 -4
  98. package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +34 -31
  99. package/esm2022/autocomplete/autocomplete.component.mjs +4 -4
  100. package/esm2022/badge/badge.component.mjs +122 -0
  101. package/esm2022/badge/badge.module.mjs +40 -0
  102. package/esm2022/badge/index.mjs +2 -0
  103. package/esm2022/badge/koobiq-components-badge.mjs +5 -0
  104. package/esm2022/badge/public-api.mjs +3 -0
  105. package/esm2022/button/button.component.mjs +4 -3
  106. package/esm2022/button-toggle/button-toggle.component.mjs +15 -15
  107. package/esm2022/checkbox/checkbox.mjs +4 -4
  108. package/esm2022/code-block/actionbar.component.mjs +3 -3
  109. package/esm2022/code-block/code-block.component.mjs +11 -9
  110. package/esm2022/core/animation/index.mjs +2 -2
  111. package/esm2022/core/animation/select-animations.mjs +4 -4
  112. package/esm2022/core/common-behaviors/color.mjs +1 -1
  113. package/esm2022/core/common-behaviors/common-module.mjs +2 -2
  114. package/esm2022/core/formatters/index.mjs +10 -2
  115. package/esm2022/core/formatters/number/formatter.mjs +224 -3
  116. package/esm2022/core/forms/forms.directive.mjs +5 -5
  117. package/esm2022/core/locales/en-US.mjs +22 -4
  118. package/esm2022/core/locales/es-LA.mjs +31 -2
  119. package/esm2022/core/locales/fa-IR.mjs +30 -2
  120. package/esm2022/core/locales/locale-service.mjs +4 -4
  121. package/esm2022/core/locales/pt-BR.mjs +29 -2
  122. package/esm2022/core/locales/ru-RU.mjs +23 -2
  123. package/esm2022/core/locales/zh-CN.mjs +28 -2
  124. package/esm2022/core/option/action.mjs +8 -7
  125. package/esm2022/core/option/optgroup.mjs +3 -3
  126. package/esm2022/core/option/option.mjs +47 -10
  127. package/esm2022/core/overlay/overlay-position-map.mjs +8 -1
  128. package/esm2022/core/pop-up/constants.mjs +2 -1
  129. package/esm2022/core/pop-up/pop-up-trigger.mjs +12 -3
  130. package/esm2022/core/public-api.mjs +2 -1
  131. package/esm2022/core/select/constants.mjs +3 -3
  132. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +3 -3
  133. package/esm2022/core/services/theme.service.mjs +60 -0
  134. package/esm2022/core/version.mjs +2 -2
  135. package/esm2022/datepicker/calendar-body.component.mjs +7 -5
  136. package/esm2022/datepicker/calendar-header.component.mjs +9 -8
  137. package/esm2022/datepicker/calendar.component.mjs +8 -17
  138. package/esm2022/datepicker/datepicker-animations.mjs +3 -3
  139. package/esm2022/datepicker/datepicker-input.directive.mjs +29 -20
  140. package/esm2022/datepicker/datepicker-toggle.component.mjs +6 -6
  141. package/esm2022/datepicker/datepicker.component.mjs +12 -12
  142. package/esm2022/datepicker/month-view.component.mjs +9 -18
  143. package/esm2022/dl/dl.component.mjs +3 -7
  144. package/esm2022/dropdown/dropdown-animations.mjs +4 -4
  145. package/esm2022/dropdown/dropdown-content.directive.mjs +3 -3
  146. package/esm2022/dropdown/dropdown-errors.mjs +6 -6
  147. package/esm2022/dropdown/dropdown-item.component.mjs +7 -6
  148. package/esm2022/dropdown/dropdown-trigger.directive.mjs +10 -9
  149. package/esm2022/dropdown/dropdown.component.mjs +9 -9
  150. package/esm2022/dropdown/dropdown.types.mjs +1 -1
  151. package/esm2022/file-upload/file-drop.mjs +43 -6
  152. package/esm2022/file-upload/file-upload.mjs +1 -1
  153. package/esm2022/file-upload/multiple-file-upload.component.mjs +13 -9
  154. package/esm2022/file-upload/single-file-upload.component.mjs +16 -13
  155. package/esm2022/form-field/cleaner.mjs +3 -3
  156. package/esm2022/form-field/form-field.mjs +12 -15
  157. package/esm2022/form-field/hint.mjs +16 -6
  158. package/esm2022/form-field/password-hint.mjs +25 -16
  159. package/esm2022/form-field/password-toggle.mjs +29 -12
  160. package/esm2022/form-field/prefix.mjs +3 -3
  161. package/esm2022/form-field/suffix.mjs +3 -3
  162. package/esm2022/form-field/validate.directive.mjs +15 -9
  163. package/esm2022/icon/icon-button.component.mjs +68 -0
  164. package/esm2022/icon/icon-item.component.mjs +27 -0
  165. package/esm2022/icon/icon.component.mjs +5 -90
  166. package/esm2022/icon/icon.module.mjs +4 -2
  167. package/esm2022/icon/public-api.mjs +3 -1
  168. package/esm2022/input/input-errors.mjs +2 -2
  169. package/esm2022/input/input-number.mjs +260 -44
  170. package/esm2022/input/input-password.mjs +5 -5
  171. package/esm2022/input/input.mjs +7 -7
  172. package/esm2022/link/link.component.mjs +14 -13
  173. package/esm2022/list/list-selection.component.mjs +23 -10
  174. package/esm2022/list/list.component.mjs +2 -2
  175. package/esm2022/list/list.module.mjs +8 -4
  176. package/esm2022/loader-overlay/loader-overlay.component.mjs +20 -19
  177. package/esm2022/modal/modal-control.service.mjs +5 -5
  178. package/esm2022/modal/modal-ref.class.mjs +1 -1
  179. package/esm2022/modal/modal.component.mjs +129 -134
  180. package/esm2022/modal/modal.module.mjs +13 -7
  181. package/esm2022/modal/modal.service.mjs +23 -23
  182. package/esm2022/modal/modal.type.mjs +1 -3
  183. package/esm2022/navbar/navbar-item.component.mjs +19 -18
  184. package/esm2022/navbar/navbar.component.mjs +20 -11
  185. package/esm2022/navbar/vertical-navbar.animation.mjs +2 -2
  186. package/esm2022/navbar/vertical-navbar.component.mjs +11 -8
  187. package/esm2022/popover/popover-animations.mjs +2 -2
  188. package/esm2022/popover/popover-confirm.component.mjs +9 -11
  189. package/esm2022/popover/popover.component.mjs +24 -24
  190. package/esm2022/progress-spinner/progress-spinner.component.mjs +3 -3
  191. package/esm2022/radio/radio.component.mjs +11 -8
  192. package/esm2022/risk-level/index.mjs +2 -0
  193. package/esm2022/risk-level/koobiq-components-risk-level.mjs +5 -0
  194. package/esm2022/risk-level/public-api.mjs +3 -0
  195. package/esm2022/risk-level/risk-level.component.mjs +40 -0
  196. package/esm2022/risk-level/risk-level.module.mjs +28 -0
  197. package/esm2022/select/select-option.directive.mjs +15 -3
  198. package/esm2022/select/select.component.mjs +47 -29
  199. package/esm2022/sidebar/sidebar-animations.mjs +2 -2
  200. package/esm2022/sidebar/sidebar.component.mjs +9 -9
  201. package/esm2022/sidepanel/sidepanel-container.component.mjs +3 -3
  202. package/esm2022/sidepanel/sidepanel-directives.mjs +8 -10
  203. package/esm2022/sidepanel/sidepanel.module.mjs +10 -4
  204. package/esm2022/splitter/splitter.component.mjs +3 -3
  205. package/esm2022/table/table.component.mjs +3 -3
  206. package/esm2022/tabs/paginated-tab-header.mjs +11 -2
  207. package/esm2022/tabs/tab-body.component.mjs +7 -7
  208. package/esm2022/tabs/tab-content.directive.mjs +3 -3
  209. package/esm2022/tabs/tab-group.component.mjs +16 -21
  210. package/esm2022/tabs/tab-header.component.mjs +2 -2
  211. package/esm2022/tabs/tab-label-wrapper.directive.mjs +4 -3
  212. package/esm2022/tabs/tab-label.directive.mjs +3 -3
  213. package/esm2022/tabs/tab-nav-bar/tab-nav-bar.mjs +21 -10
  214. package/esm2022/tabs/tab.component.mjs +14 -5
  215. package/esm2022/tabs/tabs-animations.mjs +2 -2
  216. package/esm2022/tabs/tabs.module.mjs +2 -6
  217. package/esm2022/tags/tag-default-options.mjs +1 -1
  218. package/esm2022/tags/tag-input.mjs +17 -15
  219. package/esm2022/tags/tag-list.component.mjs +15 -10
  220. package/esm2022/tags/tag.component.mjs +16 -16
  221. package/esm2022/textarea/textarea.component.mjs +4 -4
  222. package/esm2022/timepicker/timepicker.directive.mjs +10 -10
  223. package/esm2022/timezone/timezone-option.component.mjs +4 -4
  224. package/esm2022/timezone/timezone-select.component.mjs +5 -5
  225. package/esm2022/title/title.directive.mjs +6 -6
  226. package/esm2022/toast/toast-animations.mjs +2 -1
  227. package/esm2022/toast/toast-container.component.mjs +22 -8
  228. package/esm2022/toast/toast.component.mjs +30 -13
  229. package/esm2022/toast/toast.module.mjs +23 -8
  230. package/esm2022/toast/toast.service.mjs +2 -1
  231. package/esm2022/toast/toast.type.mjs +6 -1
  232. package/esm2022/toggle/toggle.component.mjs +4 -4
  233. package/esm2022/tooltip/tooltip.animations.mjs +2 -2
  234. package/esm2022/tooltip/tooltip.component.mjs +31 -30
  235. package/esm2022/tree/control/base-tree-control.mjs +1 -1
  236. package/esm2022/tree/control/flat-tree-control.mjs +4 -4
  237. package/esm2022/tree/control/tree-control.mjs +1 -1
  238. package/esm2022/tree/node.mjs +5 -5
  239. package/esm2022/tree/outlet.mjs +3 -3
  240. package/esm2022/tree/padding.directive.mjs +9 -9
  241. package/esm2022/tree/toggle.mjs +11 -12
  242. package/esm2022/tree/tree-base.mjs +3 -3
  243. package/esm2022/tree/tree-option.component.mjs +12 -10
  244. package/esm2022/tree/tree-selection.component.mjs +8 -6
  245. package/esm2022/tree/tree.mjs +3 -3
  246. package/esm2022/tree/tree.module.mjs +13 -4
  247. package/esm2022/tree-select/tree-select.component.mjs +28 -23
  248. package/fesm2022/koobiq-components-alert.mjs +2 -2
  249. package/fesm2022/koobiq-components-alert.mjs.map +1 -1
  250. package/fesm2022/koobiq-components-autocomplete.mjs +40 -37
  251. package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
  252. package/fesm2022/koobiq-components-badge.mjs +166 -0
  253. package/fesm2022/koobiq-components-badge.mjs.map +1 -0
  254. package/fesm2022/koobiq-components-button-toggle.mjs +14 -14
  255. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  256. package/fesm2022/koobiq-components-button.mjs +3 -2
  257. package/fesm2022/koobiq-components-button.mjs.map +1 -1
  258. package/fesm2022/koobiq-components-checkbox.mjs +3 -3
  259. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  260. package/fesm2022/koobiq-components-code-block.mjs +10 -9
  261. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  262. package/fesm2022/koobiq-components-core.mjs +535 -46
  263. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  264. package/fesm2022/koobiq-components-datepicker.mjs +73 -79
  265. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  266. package/fesm2022/koobiq-components-dl.mjs +2 -6
  267. package/fesm2022/koobiq-components-dl.mjs.map +1 -1
  268. package/fesm2022/koobiq-components-dropdown.mjs +33 -31
  269. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  270. package/fesm2022/koobiq-components-file-upload.mjs +65 -21
  271. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  272. package/fesm2022/koobiq-components-form-field.mjs +96 -59
  273. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  274. package/fesm2022/koobiq-components-icon.mjs +10 -8
  275. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  276. package/fesm2022/koobiq-components-input.mjs +269 -55
  277. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  278. package/fesm2022/koobiq-components-link.mjs +13 -12
  279. package/fesm2022/koobiq-components-link.mjs.map +1 -1
  280. package/fesm2022/koobiq-components-list.mjs +31 -14
  281. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  282. package/fesm2022/koobiq-components-loader-overlay.mjs +19 -18
  283. package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
  284. package/fesm2022/koobiq-components-modal.mjs +164 -167
  285. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  286. package/fesm2022/koobiq-components-navbar.mjs +46 -37
  287. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  288. package/fesm2022/koobiq-components-popover.mjs +32 -33
  289. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  290. package/fesm2022/koobiq-components-progress-spinner.mjs +2 -2
  291. package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
  292. package/fesm2022/koobiq-components-radio.mjs +10 -7
  293. package/fesm2022/koobiq-components-radio.mjs.map +1 -1
  294. package/fesm2022/koobiq-components-risk-level.mjs +72 -0
  295. package/fesm2022/koobiq-components-risk-level.mjs.map +1 -0
  296. package/fesm2022/koobiq-components-select.mjs +60 -30
  297. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  298. package/fesm2022/koobiq-components-sidebar.mjs +8 -8
  299. package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
  300. package/fesm2022/koobiq-components-sidepanel.mjs +19 -14
  301. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  302. package/fesm2022/koobiq-components-splitter.mjs +2 -2
  303. package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
  304. package/fesm2022/koobiq-components-table.mjs +2 -2
  305. package/fesm2022/koobiq-components-table.mjs.map +1 -1
  306. package/fesm2022/koobiq-components-tabs.mjs +74 -53
  307. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  308. package/fesm2022/koobiq-components-tags.mjs +45 -38
  309. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  310. package/fesm2022/koobiq-components-textarea.mjs +3 -3
  311. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  312. package/fesm2022/koobiq-components-timepicker.mjs +9 -9
  313. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
  314. package/fesm2022/koobiq-components-timezone.mjs +7 -7
  315. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  316. package/fesm2022/koobiq-components-title.mjs +5 -5
  317. package/fesm2022/koobiq-components-title.mjs.map +1 -1
  318. package/fesm2022/koobiq-components-toast.mjs +71 -22
  319. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  320. package/fesm2022/koobiq-components-toggle.mjs +3 -3
  321. package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
  322. package/fesm2022/koobiq-components-tooltip.mjs +31 -30
  323. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  324. package/fesm2022/koobiq-components-tree-select.mjs +27 -22
  325. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  326. package/fesm2022/koobiq-components-tree.mjs +67 -54
  327. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  328. package/file-upload/_file-upload-theme.scss +54 -40
  329. package/file-upload/file-drop.d.ts +3 -2
  330. package/file-upload/file-upload.d.ts +4 -1
  331. package/file-upload/file-upload.scss +2 -9
  332. package/file-upload/multiple-file-upload.component.d.ts +6 -5
  333. package/file-upload/multiple-file-upload.component.scss +170 -59
  334. package/file-upload/single-file-upload.component.d.ts +6 -5
  335. package/file-upload/single-file-upload.component.scss +42 -22
  336. package/form-field/_form-field-theme.scss +3 -6
  337. package/form-field/_hint-theme.scss +6 -2
  338. package/form-field/cleaner.d.ts +1 -1
  339. package/form-field/form-field.d.ts +3 -4
  340. package/form-field/form-field.scss +2 -2
  341. package/form-field/hint.d.ts +4 -1
  342. package/form-field/hint.scss +9 -1
  343. package/form-field/password-hint.d.ts +7 -3
  344. package/form-field/password-hint.scss +6 -0
  345. package/form-field/password-toggle.d.ts +13 -7
  346. package/form-field/prefix.d.ts +1 -1
  347. package/form-field/suffix.d.ts +1 -1
  348. package/form-field/validate.directive.d.ts +1 -1
  349. package/icon/_icon-button-theme.scss +129 -0
  350. package/icon/_icon-item-theme.scss +41 -0
  351. package/icon/_icon-theme.scss +1 -232
  352. package/icon/icon-button.component.d.ts +22 -0
  353. package/icon/icon-button.scss +33 -0
  354. package/icon/icon-item.component.d.ts +10 -0
  355. package/icon/icon-item.scss +18 -0
  356. package/icon/icon.component.d.ts +1 -25
  357. package/icon/icon.module.d.ts +6 -4
  358. package/icon/icon.scss +0 -41
  359. package/icon/public-api.d.ts +2 -0
  360. package/input/_input-theme.scss +2 -1
  361. package/input/input-number.d.ts +61 -10
  362. package/input/input-password.d.ts +1 -1
  363. package/input/input.d.ts +2 -2
  364. package/input/input.scss +3 -1
  365. package/link/_link-theme.scss +101 -92
  366. package/link/link.component.d.ts +4 -4
  367. package/list/_list-theme.scss +36 -17
  368. package/list/list-selection.component.d.ts +6 -2
  369. package/list/list.module.d.ts +1 -1
  370. package/list/list.scss +6 -19
  371. package/loader-overlay/_loader-overlay-theme.scss +43 -11
  372. package/loader-overlay/loader-overlay.component.d.ts +6 -5
  373. package/loader-overlay/loader-overlay.scss +56 -22
  374. package/markdown/_markdown-theme.scss +2 -2
  375. package/modal/README.md +5 -5
  376. package/modal/_modal-confirm.scss +5 -37
  377. package/modal/_modal-theme.scss +14 -52
  378. package/modal/modal-ref.class.d.ts +2 -2
  379. package/modal/modal.component.d.ts +53 -52
  380. package/modal/modal.module.d.ts +2 -1
  381. package/modal/modal.scss +50 -31
  382. package/modal/modal.type.d.ts +35 -36
  383. package/navbar/_navbar-theme.scss +2 -2
  384. package/navbar/navbar-item.component.d.ts +4 -3
  385. package/navbar/navbar.component.d.ts +5 -2
  386. package/navbar/vertical-navbar.component.d.ts +4 -2
  387. package/package.json +48 -38
  388. package/popover/README.md +14 -14
  389. package/popover/_popover-theme.scss +15 -78
  390. package/popover/popover-animations.d.ts +1 -1
  391. package/popover/popover-confirm.component.d.ts +1 -3
  392. package/popover/popover.component.d.ts +3 -3
  393. package/popover/popover.scss +60 -50
  394. package/prebuilt-themes/dark-theme.css +1 -1
  395. package/prebuilt-themes/light-theme.css +1 -1
  396. package/progress-spinner/progress-spinner.component.d.ts +2 -2
  397. package/progress-spinner/progress-spinner.scss +10 -5
  398. package/radio/_radio-theme.scss +17 -4
  399. package/radio/radio.component.d.ts +2 -2
  400. package/radio/radio.scss +13 -0
  401. package/risk-level/README.md +0 -0
  402. package/risk-level/_risk-level-theme.scss +88 -0
  403. package/risk-level/index.d.ts +1 -0
  404. package/risk-level/public-api.d.ts +2 -0
  405. package/risk-level/risk-level.component.d.ts +18 -0
  406. package/risk-level/risk-level.component.scss +26 -0
  407. package/risk-level/risk-level.module.d.ts +10 -0
  408. package/select/_select-theme.scss +12 -4
  409. package/select/select-option.directive.d.ts +2 -0
  410. package/select/select.component.d.ts +15 -12
  411. package/select/select.scss +6 -190
  412. package/sidebar/sidebar-animations.d.ts +1 -1
  413. package/sidebar/sidebar.component.d.ts +3 -3
  414. package/sidepanel/_sidepanel-theme.scss +11 -41
  415. package/sidepanel/sidepanel-directives.d.ts +0 -2
  416. package/sidepanel/sidepanel.scss +33 -35
  417. package/splitter/_splitter-theme.scss +1 -0
  418. package/splitter/splitter.component.d.ts +1 -1
  419. package/table/_table-theme.scss +1 -1
  420. package/table/table.component.d.ts +1 -1
  421. package/tabs/_tabs-common.scss +28 -147
  422. package/tabs/_tabs-theme.scss +81 -175
  423. package/tabs/paginated-tab-header.d.ts +1 -0
  424. package/tabs/tab-body.component.d.ts +1 -1
  425. package/tabs/tab-content.directive.d.ts +1 -1
  426. package/tabs/tab-group.component.d.ts +5 -8
  427. package/tabs/tab-group.scss +10 -10
  428. package/tabs/tab-header.scss +2 -24
  429. package/tabs/tab-label-wrapper.directive.d.ts +1 -1
  430. package/tabs/tab-label.directive.d.ts +1 -1
  431. package/tabs/tab-nav-bar/tab-nav-bar.d.ts +4 -2
  432. package/tabs/tab-nav-bar/tab-nav-bar.scss +9 -16
  433. package/tabs/tab.component.d.ts +1 -1
  434. package/tabs/tabs-animations.d.ts +1 -1
  435. package/tabs/tabs.module.d.ts +1 -1
  436. package/tags/_tag-theme.scss +1 -25
  437. package/tags/tag-default-options.d.ts +4 -0
  438. package/tags/tag-input.d.ts +2 -2
  439. package/tags/tag-list.component.d.ts +3 -2
  440. package/tags/tag-list.scss +26 -16
  441. package/tags/tag.component.d.ts +6 -6
  442. package/textarea/textarea.component.d.ts +1 -1
  443. package/timepicker/timepicker.directive.d.ts +2 -2
  444. package/timezone/timezone-option.component.d.ts +1 -1
  445. package/timezone/timezone-select.component.d.ts +1 -1
  446. package/title/title.directive.d.ts +1 -1
  447. package/toast/_toast-theme.scss +21 -33
  448. package/toast/toast-animations.d.ts +1 -0
  449. package/toast/toast-container.component.d.ts +7 -3
  450. package/toast/toast-container.component.scss +2 -1
  451. package/toast/toast.component.d.ts +6 -1
  452. package/toast/toast.component.scss +41 -34
  453. package/toast/toast.module.d.ts +1 -1
  454. package/toast/toast.service.d.ts +2 -0
  455. package/toast/toast.type.d.ts +8 -5
  456. package/toggle/_toggle-theme.scss +9 -1
  457. package/toggle/toggle.component.d.ts +1 -1
  458. package/toggle/toggle.scss +5 -2
  459. package/tooltip/tooltip.animations.d.ts +1 -1
  460. package/tooltip/tooltip.component.d.ts +5 -5
  461. package/tree/_tree-theme.scss +46 -34
  462. package/tree/control/base-tree-control.d.ts +1 -1
  463. package/tree/control/tree-control.d.ts +1 -1
  464. package/tree/node.d.ts +1 -1
  465. package/tree/outlet.d.ts +1 -1
  466. package/tree/padding.directive.d.ts +1 -1
  467. package/tree/toggle.d.ts +3 -3
  468. package/tree/tree-base.d.ts +1 -1
  469. package/tree/tree-option.component.d.ts +1 -2
  470. package/tree/tree-option.scss +40 -27
  471. package/tree/tree-selection.component.d.ts +1 -1
  472. package/tree/tree.d.ts +1 -1
  473. package/tree/tree.module.d.ts +2 -1
  474. package/tree-select/_tree-select-theme.scss +13 -3
  475. package/tree-select/tree-select.component.d.ts +6 -4
  476. package/tree-select/tree-select.scss +5 -194
  477. package/core/styles/theming/_badges.scss +0 -57
  478. package/core/styles/theming/prebuilt/light-theme.scss +0 -20
  479. package/list/_list-base.scss +0 -54
@@ -1,15 +1,15 @@
1
1
  import * as i1$1 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { Component, ViewEncapsulation, Input, forwardRef, ChangeDetectionStrategy, Inject, Optional, Directive, EventEmitter, Output, ContentChild, ContentChildren, ViewChild, Attribute, Self, NgModule } from '@angular/core';
4
+ import { Component, ViewEncapsulation, Input, forwardRef, ChangeDetectionStrategy, Optional, Inject, ViewChild, Directive, EventEmitter, Output, ContentChild, ContentChildren, Attribute, Self, NgModule } from '@angular/core';
5
5
  import * as i1 from '@koobiq/components/icon';
6
- import { KbqIconModule } from '@koobiq/components/icon';
6
+ import { KbqIconButton, KbqIconModule } from '@koobiq/components/icon';
7
7
  import * as i1$3 from '@angular/cdk/a11y';
8
8
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
9
9
  import * as i1$4 from '@angular/forms';
10
10
  import { NgModel, FormControlName, FormControlDirective, RequiredValidator, NG_VALIDATORS } from '@angular/forms';
11
11
  import { F8, ESCAPE } from '@koobiq/cdk/keycodes';
12
- import { mixinColor, KbqComponentColors, KBQ_FORM_FIELD_REF, PopUpTriggers, KBQ_VALIDATION } from '@koobiq/components/core';
12
+ import { mixinColor, KbqComponentColors, toBoolean, KBQ_FORM_FIELD_REF, PopUpTriggers, KBQ_VALIDATION } from '@koobiq/components/core';
13
13
  import { Subject, EMPTY, merge } from 'rxjs';
14
14
  import { startWith, takeUntil } from 'rxjs/operators';
15
15
  import * as i2 from '@angular/cdk/bidi';
@@ -18,11 +18,11 @@ import { KbqTooltipTrigger, KBQ_TOOLTIP_SCROLL_STRATEGY } from '@koobiq/componen
18
18
 
19
19
  class KbqCleaner {
20
20
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqCleaner, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
21
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqCleaner, selector: "kbq-cleaner", host: { classAttribute: "kbq-cleaner" }, exportAs: ["mcCleaner"], ngImport: i0, template: `<i kbq-icon-button="mc-close-circle_16" [autoColor]="true"></i>`, isInline: true, styles: [".kbq-cleaner{display:flex;align-items:center;justify-content:center;width:var(--kbq-form-field-size-icon-button-size, 24px);margin-right:var(--kbq-form-field-size-icon-button-margin-right, 4px);height:100%;cursor:pointer}\n"], dependencies: [{ kind: "component", type: i1.KbqIconButton, selector: "[kbq-icon-button]", inputs: ["color", "small", "tabindex", "disabled"] }], encapsulation: i0.ViewEncapsulation.None }); }
21
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqCleaner, selector: "kbq-cleaner", host: { classAttribute: "kbq-cleaner" }, exportAs: ["kbqCleaner"], ngImport: i0, template: `<i kbq-icon-button="mc-close-circle_16" [autoColor]="true"></i>`, isInline: true, styles: [".kbq-cleaner{display:flex;align-items:center;justify-content:center;width:var(--kbq-form-field-size-icon-button-size, 24px);margin-right:var(--kbq-form-field-size-icon-button-margin-right, 4px);height:100%;cursor:pointer}\n"], dependencies: [{ kind: "component", type: i1.KbqIconButton, selector: "[kbq-icon-button]", inputs: ["color", "small", "tabindex", "disabled"] }], encapsulation: i0.ViewEncapsulation.None }); }
22
22
  }
23
23
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqCleaner, decorators: [{
24
24
  type: Component,
25
- args: [{ selector: 'kbq-cleaner', exportAs: 'mcCleaner', template: `<i kbq-icon-button="mc-close-circle_16" [autoColor]="true"></i>`, host: {
25
+ args: [{ selector: 'kbq-cleaner', exportAs: 'kbqCleaner', template: `<i kbq-icon-button="mc-close-circle_16" [autoColor]="true"></i>`, host: {
26
26
  class: 'kbq-cleaner'
27
27
  }, encapsulation: ViewEncapsulation.None, styles: [".kbq-cleaner{display:flex;align-items:center;justify-content:center;width:var(--kbq-form-field-size-icon-button-size, 24px);margin-right:var(--kbq-form-field-size-icon-button-margin-right, 4px);height:100%;cursor:pointer}\n"] }]
28
28
  }] });
@@ -49,25 +49,35 @@ class KbqHintBase {
49
49
  /** @docs-private */
50
50
  const KbqHintMixinBase = mixinColor(KbqHintBase, KbqComponentColors.Empty);
51
51
  class KbqHint extends KbqHintMixinBase {
52
+ get compact() {
53
+ return this._compact;
54
+ }
55
+ set compact(value) {
56
+ this._compact = toBoolean(value);
57
+ }
52
58
  constructor(elementRef) {
53
59
  super(elementRef);
54
60
  this.id = `kbq-hint-${nextHintUniqueId++}`;
55
61
  this.fillTextOff = false;
62
+ this._compact = false;
56
63
  }
57
64
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqHint, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
58
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqHint, selector: "kbq-hint", inputs: { color: "color", id: "id", fillTextOff: "fillTextOff" }, host: { properties: { "attr.id": "id", "class.kbq-hint_fill-text-off": "fillTextOff" }, classAttribute: "kbq-hint" }, exportAs: ["mcHint"], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"[kbq-icon]\"></ng-content>\n\n<span class=\"kbq-hint__text\">\n <ng-content></ng-content>\n</span>\n", styles: [".kbq-hint{display:block}.kbq-hint .kbq-icon{margin-right:var(--kbq-hint-size-content-padding, 4px)}\n"], encapsulation: i0.ViewEncapsulation.None }); }
65
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqHint, selector: "kbq-hint", inputs: { color: "color", id: "id", fillTextOff: "fillTextOff", compact: "compact" }, host: { properties: { "attr.id": "id", "class.kbq-hint_fill-text-off": "fillTextOff", "class.kbq-hint_compact": "compact" }, classAttribute: "kbq-hint" }, exportAs: ["kbqHint"], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"[kbq-icon]\"></ng-content>\n\n<span class=\"kbq-hint__text\">\n <ng-content></ng-content>\n</span>\n", styles: [".kbq-hint{display:block}.kbq-hint .kbq-icon{margin-right:var(--kbq-hint-size-normal-content-padding, 4px)}.kbq-hint.kbq-hint_compact .kbq-icon{margin-right:var(--kbq-hint-size-compact-content-padding, 2px)}\n"], encapsulation: i0.ViewEncapsulation.None }); }
59
66
  }
60
67
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqHint, decorators: [{
61
68
  type: Component,
62
- args: [{ selector: 'kbq-hint', exportAs: 'mcHint', inputs: ['color'], host: {
69
+ args: [{ selector: 'kbq-hint', exportAs: 'kbqHint', inputs: ['color'], host: {
63
70
  class: 'kbq-hint',
64
71
  '[attr.id]': 'id',
65
- '[class.kbq-hint_fill-text-off]': 'fillTextOff'
66
- }, encapsulation: ViewEncapsulation.None, template: "<ng-content select=\"[kbq-icon]\"></ng-content>\n\n<span class=\"kbq-hint__text\">\n <ng-content></ng-content>\n</span>\n", styles: [".kbq-hint{display:block}.kbq-hint .kbq-icon{margin-right:var(--kbq-hint-size-content-padding, 4px)}\n"] }]
72
+ '[class.kbq-hint_fill-text-off]': 'fillTextOff',
73
+ '[class.kbq-hint_compact]': 'compact'
74
+ }, encapsulation: ViewEncapsulation.None, template: "<ng-content select=\"[kbq-icon]\"></ng-content>\n\n<span class=\"kbq-hint__text\">\n <ng-content></ng-content>\n</span>\n", styles: [".kbq-hint{display:block}.kbq-hint .kbq-icon{margin-right:var(--kbq-hint-size-normal-content-padding, 4px)}.kbq-hint.kbq-hint_compact .kbq-icon{margin-right:var(--kbq-hint-size-compact-content-padding, 2px)}\n"] }]
67
75
  }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { id: [{
68
76
  type: Input
69
77
  }], fillTextOff: [{
70
78
  type: Input
79
+ }], compact: [{
80
+ type: Input
71
81
  }] } });
72
82
 
73
83
  let nextPasswordHintUniqueId = 0;
@@ -86,9 +96,12 @@ const regExpPasswordValidator = {
86
96
  [PasswordRules.Digit]: RegExp(/^(?=.*?[0-9])/),
87
97
  [PasswordRules.LatinAndSpecialSymbols]: RegExp(/[^ !`"'#№$%&()*+,-./\\:;<=>?@[\]^_{|}~A-Za-z0-9]/)
88
98
  };
99
+ const hasPasswordStrengthError = (passwordHints) => {
100
+ return passwordHints.some((hint) => hint.hasError);
101
+ };
89
102
  class KbqPasswordHint {
90
103
  get icon() {
91
- return this.checked ? 'kbq-check_16' : 'kbq-close-M_16';
104
+ return this.checked ? 'mc-check_16' : 'mc-close-M_16';
92
105
  }
93
106
  get control() {
94
107
  return this.formField.control;
@@ -113,13 +126,14 @@ class KbqPasswordHint {
113
126
  this.lastControlValue = this.control.value;
114
127
  this.changeDetectorRef.markForCheck();
115
128
  };
129
+ this.checkRegexRule = (value) => {
130
+ return !!this.regex?.test(value);
131
+ };
116
132
  }
117
133
  ngAfterContentInit() {
118
- if (this.rule === null) {
119
- throw Error('You should set [rule] name');
120
- }
121
- if (this.rule === PasswordRules.Custom && this.regex === undefined) {
122
- throw Error('You should set [regex] for PasswordRules.Custom');
134
+ this.formField = this.formField || this.viewFormField;
135
+ if (this.rule === PasswordRules.Custom && this.regex === undefined && this.customCheckRule === undefined) {
136
+ throw Error('You should set [regex] or [checkRule] for PasswordRules.Custom');
123
137
  }
124
138
  if (this.rule === PasswordRules.Length && (this.min || this.max) === null) {
125
139
  throw Error('For [rule] "Length" need set [min] and [max]');
@@ -136,7 +150,7 @@ class KbqPasswordHint {
136
150
  this.checkRule = this.checkSpecialSymbolsRegexRule;
137
151
  }
138
152
  else if (this.rule === PasswordRules.Custom) {
139
- this.checkRule = this.checkRegexRule;
153
+ this.checkRule = this.regex === undefined ? this.customCheckRule : this.checkRegexRule;
140
154
  }
141
155
  else {
142
156
  throw Error(`Unknown [rule]=${this.rule}`);
@@ -152,17 +166,14 @@ class KbqPasswordHint {
152
166
  checkLengthRule(value) {
153
167
  return value.length >= this.min && value.length <= this.max;
154
168
  }
155
- checkRegexRule(value) {
156
- return !!this.regex?.test(value);
157
- }
158
169
  checkSpecialSymbolsRegexRule(value) {
159
170
  return !!value && !this.regex?.test(value);
160
171
  }
161
172
  isValueChanged() {
162
173
  return this.lastControlValue !== this.formField.control.value;
163
174
  }
164
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqPasswordHint, deps: [{ token: i0.ChangeDetectorRef }, { token: forwardRef(() => KBQ_FORM_FIELD_REF) }], target: i0.ɵɵFactoryTarget.Component }); }
165
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqPasswordHint, selector: "kbq-password-hint", inputs: { id: "id", rule: "rule", min: "min", max: "max", regex: "regex" }, host: { properties: { "class.kbq-password-hint_valid": "checked", "class.kbq-password-hint_invalid": "hasError", "attr.id": "id" }, classAttribute: "kbq-password-hint" }, ngImport: i0, template: `
175
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqPasswordHint, deps: [{ token: i0.ChangeDetectorRef }, { token: forwardRef(() => KBQ_FORM_FIELD_REF), optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
176
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqPasswordHint, selector: "kbq-password-hint", inputs: { id: "id", rule: "rule", min: "min", max: "max", regex: "regex", customCheckRule: ["checkRule", "customCheckRule"], viewFormField: "viewFormField" }, host: { properties: { "class.kbq-password-hint_valid": "checked", "class.kbq-password-hint_invalid": "hasError", "attr.id": "id" }, classAttribute: "kbq-password-hint" }, ngImport: i0, template: `
166
177
  <i class="kbq-password-hint__icon"
167
178
  kbq-icon=""
168
179
  [class.kbq-success]="checked"
@@ -173,7 +184,7 @@ class KbqPasswordHint {
173
184
  <span class="kbq-password-hint__text">
174
185
  <ng-content></ng-content>
175
186
  </span>
176
- `, isInline: true, styles: [".kbq-password-hint{display:block}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i1.KbqIcon, selector: "[kbq-icon]", inputs: ["color", "small", "autoColor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
187
+ `, isInline: true, styles: [".kbq-password-hint{display:block}.kbq-password-hint .kbq-icon{margin-right:var(--kbq-hint-size-compact-content-padding, 2px)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i1.KbqIcon, selector: "[kbq-icon]", inputs: ["color", "small", "autoColor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
177
188
  }
178
189
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqPasswordHint, decorators: [{
179
190
  type: Component,
@@ -193,8 +204,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
193
204
  '[class.kbq-password-hint_valid]': 'checked',
194
205
  '[class.kbq-password-hint_invalid]': 'hasError',
195
206
  '[attr.id]': 'id'
196
- }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".kbq-password-hint{display:block}\n"] }]
207
+ }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".kbq-password-hint{display:block}.kbq-password-hint .kbq-icon{margin-right:var(--kbq-hint-size-compact-content-padding, 2px)}\n"] }]
197
208
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
209
+ type: Optional
210
+ }, {
198
211
  type: Inject,
199
212
  args: [forwardRef(() => KBQ_FORM_FIELD_REF)]
200
213
  }] }]; }, propDecorators: { id: [{
@@ -207,12 +220,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
207
220
  type: Input
208
221
  }], regex: [{
209
222
  type: Input
223
+ }], customCheckRule: [{
224
+ type: Input,
225
+ args: ['checkRule']
226
+ }], viewFormField: [{
227
+ type: Input
210
228
  }] } });
211
229
 
212
230
  class KbqPasswordToggle extends KbqTooltipTrigger {
213
231
  get content() {
214
232
  return this.formField.control.elementType === 'password' ?
215
- this.mcTooltipHidden :
233
+ this.kbqTooltipHidden :
216
234
  this._content;
217
235
  }
218
236
  set content(content) {
@@ -222,14 +240,26 @@ class KbqPasswordToggle extends KbqTooltipTrigger {
222
240
  get hidden() {
223
241
  return this.formField.control.elementType === 'password';
224
242
  }
225
- get icon() {
226
- return this.hidden ? 'kbq-eye_16' : 'kbq-eye-crossed_16';
243
+ get iconClass() {
244
+ return this.hidden ? 'mc-eye_16' : 'mc-eye-crossed_16';
245
+ }
246
+ get visibility() {
247
+ return this.disabled && this.formField.control.empty ? 'hidden' : 'visible';
227
248
  }
228
- constructor(overlay, elementRef, ngZone, scrollDispatcher, hostView, scrollStrategy, direction, formField) {
249
+ constructor(overlay, elementRef, ngZone, scrollDispatcher, hostView, scrollStrategy, direction, formField, changeDetector) {
229
250
  super(overlay, elementRef, ngZone, scrollDispatcher, hostView, scrollStrategy, direction);
230
251
  this.formField = formField;
252
+ this.changeDetector = changeDetector;
253
+ this.updateState = () => {
254
+ this.icon.hasError = this.formField.control.errorState;
255
+ this.changeDetector.markForCheck();
256
+ };
231
257
  this.trigger = `${PopUpTriggers.Hover}`;
232
258
  }
259
+ ngAfterViewInit() {
260
+ this.formField.control?.stateChanges
261
+ .subscribe(this.updateState);
262
+ }
233
263
  toggle(event) {
234
264
  this.hide();
235
265
  const input = this.formField.control;
@@ -237,13 +267,14 @@ class KbqPasswordToggle extends KbqTooltipTrigger {
237
267
  this.updateData();
238
268
  event.preventDefault();
239
269
  }
240
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqPasswordToggle, deps: [{ token: i1$2.Overlay }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i1$2.ScrollDispatcher }, { token: i0.ViewContainerRef }, { token: KBQ_TOOLTIP_SCROLL_STRATEGY }, { token: i2.Directionality, optional: true }, { token: forwardRef(() => KBQ_FORM_FIELD_REF) }], target: i0.ɵɵFactoryTarget.Component }); }
241
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqPasswordToggle, selector: "kbq-password-toggle", inputs: { content: ["mcTooltipNotHidden", "content"], mcTooltipHidden: "mcTooltipHidden" }, host: { listeners: { "click": "toggle($event)", "keydown.ENTER": "toggle($event)", "keydown.SPACE": "toggle($event)" }, classAttribute: "kbq-password-toggle" }, exportAs: ["mcPasswordToggle"], usesInheritance: true, ngImport: i0, template: '<i kbq-icon-button="" [ngClass]="icon" [autoColor]="true"></i>', isInline: true, styles: [".kbq-password-toggle{display:flex;align-items:center;justify-content:center;width:var(--kbq-form-field-size-icon-button-size, 24px);margin-right:var(--kbq-form-field-size-icon-button-margin-right, 4px);height:100%}.kbq-password-toggle::-moz-focus-inner{border:0}.kbq-password-toggle:focus{outline:none}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i1.KbqIconButton, selector: "[kbq-icon-button]", inputs: ["color", "small", "tabindex", "disabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
270
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqPasswordToggle, deps: [{ token: i1$2.Overlay }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i1$2.ScrollDispatcher }, { token: i0.ViewContainerRef }, { token: KBQ_TOOLTIP_SCROLL_STRATEGY }, { token: i2.Directionality, optional: true }, { token: forwardRef(() => KBQ_FORM_FIELD_REF) }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
271
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqPasswordToggle, selector: "kbq-password-toggle", inputs: { content: ["kbqTooltipNotHidden", "content"], kbqTooltipHidden: "kbqTooltipHidden" }, host: { listeners: { "click": "toggle($event)", "keydown.ENTER": "toggle($event)", "keydown.SPACE": "toggle($event)" }, properties: { "style.visibility": "visibility" }, classAttribute: "kbq-password-toggle" }, viewQueries: [{ propertyName: "icon", first: true, predicate: KbqIconButton, descendants: true }], exportAs: ["kbqPasswordToggle"], usesInheritance: true, ngImport: i0, template: '<i kbq-icon-button="" [ngClass]="iconClass"></i>', isInline: true, styles: [".kbq-password-toggle{display:flex;align-items:center;justify-content:center;width:var(--kbq-form-field-size-icon-button-size, 24px);margin-right:var(--kbq-form-field-size-icon-button-margin-right, 4px);height:100%}.kbq-password-toggle::-moz-focus-inner{border:0}.kbq-password-toggle:focus{outline:none}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i1.KbqIconButton, selector: "[kbq-icon-button]", inputs: ["color", "small", "tabindex", "disabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
242
272
  }
243
273
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqPasswordToggle, decorators: [{
244
274
  type: Component,
245
- args: [{ selector: `kbq-password-toggle`, exportAs: 'mcPasswordToggle', template: '<i kbq-icon-button="" [ngClass]="icon" [autoColor]="true"></i>', host: {
275
+ args: [{ selector: `kbq-password-toggle`, exportAs: 'kbqPasswordToggle', template: '<i kbq-icon-button="" [ngClass]="iconClass"></i>', host: {
246
276
  class: 'kbq-password-toggle',
277
+ '[style.visibility]': 'visibility',
247
278
  '(click)': 'toggle($event)',
248
279
  '(keydown.ENTER)': 'toggle($event)',
249
280
  '(keydown.SPACE)': 'toggle($event)'
@@ -256,21 +287,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
256
287
  }] }, { type: undefined, decorators: [{
257
288
  type: Inject,
258
289
  args: [forwardRef(() => KBQ_FORM_FIELD_REF)]
259
- }] }]; }, propDecorators: { content: [{
290
+ }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { icon: [{
291
+ type: ViewChild,
292
+ args: [KbqIconButton]
293
+ }], content: [{
260
294
  type: Input,
261
- args: ['mcTooltipNotHidden']
262
- }], mcTooltipHidden: [{
295
+ args: ['kbqTooltipNotHidden']
296
+ }], kbqTooltipHidden: [{
263
297
  type: Input
264
298
  }] } });
265
299
 
266
300
  class KbqPrefix {
267
301
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqPrefix, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
268
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: KbqPrefix, selector: "[mcPrefix]", ngImport: i0 }); }
302
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: KbqPrefix, selector: "[kbqPrefix]", ngImport: i0 }); }
269
303
  }
270
304
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqPrefix, decorators: [{
271
305
  type: Directive,
272
306
  args: [{
273
- selector: '[mcPrefix]'
307
+ selector: '[kbqPrefix]'
274
308
  }]
275
309
  }] });
276
310
 
@@ -344,12 +378,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
344
378
 
345
379
  class KbqSuffix {
346
380
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqSuffix, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
347
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: KbqSuffix, selector: "[mcSuffix]", ngImport: i0 }); }
381
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: KbqSuffix, selector: "[kbqSuffix]", ngImport: i0 }); }
348
382
  }
349
383
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqSuffix, decorators: [{
350
384
  type: Directive,
351
385
  args: [{
352
- selector: '[mcSuffix]'
386
+ selector: '[kbqSuffix]'
353
387
  }]
354
388
  }] });
355
389
 
@@ -366,9 +400,6 @@ class KbqFormField extends KbqFormFieldMixinBase {
366
400
  get hasHint() {
367
401
  return this.hint?.length > 0;
368
402
  }
369
- get hasPasswordStrengthError() {
370
- return this.passwordHints?.some((hint) => hint.hasError);
371
- }
372
403
  get hasSuffix() {
373
404
  return this.suffix?.length > 0;
374
405
  }
@@ -423,7 +454,7 @@ class KbqFormField extends KbqFormFieldMixinBase {
423
454
  this.control.stateChanges
424
455
  .pipe(startWith())
425
456
  .subscribe((state) => {
426
- if (!state?.focused && this.hasPasswordStrengthError) {
457
+ if (this.passwordHints.length && !state?.focused && hasPasswordStrengthError(this.passwordHints)) {
427
458
  this.control.ngControl?.control?.setErrors({ passwordStrength: true });
428
459
  }
429
460
  this.changeDetectorRef.markForCheck();
@@ -433,7 +464,7 @@ class KbqFormField extends KbqFormFieldMixinBase {
433
464
  }
434
465
  // Run change detection if the value changes.
435
466
  const valueChanges = this.control.ngControl?.valueChanges || EMPTY;
436
- merge(valueChanges)
467
+ merge(valueChanges, this.hint.changes, this.passwordHints.changes)
437
468
  .pipe(takeUntil(this.$unsubscribe))
438
469
  .subscribe(() => this.changeDetectorRef.markForCheck());
439
470
  }
@@ -503,11 +534,11 @@ class KbqFormField extends KbqFormFieldMixinBase {
503
534
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqFormField, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1$3.FocusMonitor }], target: i0.ɵɵFactoryTarget.Component }); }
504
535
  /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqFormField, selector: "kbq-form-field", inputs: { color: "color" }, host: { listeners: { "keydown": "onKeyDown($event)", "mouseenter": "onHoverChanged(true)", "mouseleave": "onHoverChanged(false)" }, properties: { "class.kbq-form-field_invalid": "control.errorState", "class.kbq-form-field_has-prefix": "hasPrefix", "class.kbq-form-field_has-suffix": "hasSuffix", "class.kbq-form-field_has-password-toggle": "hasPasswordToggle", "class.kbq-form-field_has-cleaner": "canShowCleaner", "class.kbq-form-field_has-stepper": "canShowStepper", "class.kbq-disabled": "control.disabled", "class.ng-untouched": "shouldForward(\"untouched\")", "class.ng-touched": "shouldForward(\"touched\")", "class.ng-pristine": "shouldForward(\"pristine\")", "class.ng-dirty": "shouldForward(\"dirty\")", "class.ng-valid": "shouldForward(\"valid\")", "class.ng-invalid": "shouldForward(\"invalid\")", "class.ng-pending": "shouldForward(\"pending\")" }, classAttribute: "kbq-form-field" }, providers: [
505
536
  { provide: KBQ_FORM_FIELD_REF, useExisting: KbqFormField }
506
- ], queries: [{ propertyName: "control", first: true, predicate: KbqFormFieldControl, descendants: true }, { propertyName: "stepper", first: true, predicate: KbqStepper, descendants: true }, { propertyName: "cleaner", first: true, predicate: KbqCleaner, descendants: true }, { propertyName: "passwordToggle", first: true, predicate: KbqPasswordToggle, descendants: true }, { propertyName: "hint", predicate: KbqHint }, { propertyName: "passwordHints", predicate: KbqPasswordHint }, { propertyName: "suffix", predicate: KbqSuffix }, { propertyName: "prefix", predicate: KbqPrefix }], viewQueries: [{ propertyName: "connectionContainerRef", first: true, predicate: ["connectionContainer"], descendants: true, static: true }], exportAs: ["mcFormField"], usesInheritance: true, ngImport: i0, template: "<div class=\"kbq-form-field__container\" (click)=\"onContainerClick($event)\">\n\n <div class=\"kbq-form-field__prefix\" *ngIf=\"hasPrefix\">\n <ng-content select=\"[mcPrefix]\"></ng-content>\n </div>\n\n <div class=\"kbq-form-field__infix\">\n <ng-content></ng-content>\n </div>\n\n <div class=\"kbq-form-field__suffix\" *ngIf=\"hasSuffix\">\n <ng-content select=\"[mcSuffix]\"></ng-content>\n </div>\n\n <div class=\"kbq-form-field__cleaner\"\n *ngIf=\"canShowCleaner && !hasSuffix\"\n (click)=\"clearValue($event)\">\n <ng-content select=\"kbq-cleaner\"></ng-content>\n </div>\n\n <ng-content select=\"kbq-password-toggle\"></ng-content>\n\n <ng-content *ngIf=\"canShowStepper\" select=\"kbq-stepper\"></ng-content>\n</div>\n\n<div class=\"kbq-form-field__hint\" *ngIf=\"hint.length || passwordHints.length\">\n <ng-content select=\"kbq-hint, kbq-password-hint\"></ng-content>\n</div>\n", styles: [".kbq-form-field{position:relative;display:inline-block;width:100%}.kbq-form-field .kbq-form-field__container{box-sizing:border-box}.kbq-form-field .kbq-form-field:not(.kbq-form-field-type-textarea){height:var(--kbq-form-field-size-height, 32px)}.kbq-form-field,.kbq-form-field .kbq-input,.kbq-form-field .kbq-textarea{border-radius:var(--kbq-form-field-size-border-radius, 8px)}.kbq-form-field:hover{z-index:1}.kbq-form-field.kbq-focused{z-index:2}.kbq-form-field.kbq-form-field_without-borders .kbq-form-field__container{border-color:transparent;box-shadow:none}.kbq-form-field.kbq-form-field_has-prefix .kbq-input{padding-left:calc(var(--kbq-form-field-size-icon-size, 16px) + var(--kbq-form-field-size-icon-margin-left, 8px) + var(--kbq-form-field-size-icon-margin-right, 8px))}.kbq-form-field.kbq-form-field_has-password-toggle .kbq-input,.kbq-form-field.kbq-form-field_has-cleaner .kbq-input,.kbq-form-field.kbq-form-field_has-stepper .kbq-input,.kbq-form-field.kbq-form-field_has-suffix .kbq-input{padding-right:calc(var(--kbq-form-field-size-icon-button-size, 24px) + var(--kbq-form-field-size-icon-button-margin-left, 4px) + var(--kbq-form-field-size-icon-button-margin-right, 4px))}.kbq-form-field__container{position:relative;border-width:var(--kbq-form-field-size-border-width, 1px);border-style:solid;border-color:transparent;border-radius:var(--kbq-form-field-size-border-radius, 8px)}.kbq-form-field__prefix,.kbq-form-field__suffix{position:absolute;top:0;bottom:0;width:32px;display:flex;flex-direction:row;justify-content:center;align-items:center}.kbq-form-field__prefix{left:0}.kbq-form-field__suffix{right:0}.kbq-form-field__cleaner,.kbq-password-toggle,.kbq-stepper{position:absolute;top:0;bottom:0;right:0}.kbq-stepper{display:flex;flex-direction:column;justify-content:center;align-items:center;width:var(--kbq-form-field-size-button-width, )}.kbq-stepper .kbq-stepper-step-up,.kbq-stepper .kbq-stepper-step-down{cursor:pointer;width:var(--kbq-form-field-size-button-width, );text-align:center}.kbq-stepper .kbq-stepper-step-up{transform:scaleY(-1)}.kbq-form-field__hint{display:flex;flex-direction:column;margin-top:var(--kbq-form-field-hint-size-margin-top, 12px);gap:var(--kbq-form-field-hint-size-gap, 8px)}\n", ".kbq-input{background:transparent;padding:0;margin:0;border:none;outline:none;display:inline-block;box-sizing:border-box;width:100%;min-height:calc(var(--kbq-form-field-size-height, 32px) - var(--kbq-form-field-size-border-width, 1px) * 2);padding:calc(var(--kbq-input-size-padding-vertical, 8px) - var(--kbq-form-field-size-border-width, 1px)) var(--kbq-input-size-padding-horizontal, 12px)}.kbq-input::-ms-clear{display:none;width:0;height:0}.kbq-input::-ms-reveal{display:none;width:0;height:0}.kbq-input::-webkit-search-decoration,.kbq-input::-webkit-search-cancel-button,.kbq-input::-webkit-search-results-button,.kbq-input::-webkit-search-results-decoration{display:none}input.kbq-input[type=number]{-moz-appearance:textfield}input.kbq-input[type=number]::-webkit-inner-spin-button,input.kbq-input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none}input.kbq-input:invalid{box-shadow:unset}input.kbq-input::placeholder{opacity:1}\n", ".kbq-timepicker{padding-right:calc(var(--kbq-timepicker-size-padding-right, 16px) - var(--kbq-form-field-size-border-width, 1px))}.kbq-form-field-type-timepicker{width:auto}\n", ".kbq-form-field-type-datepicker{width:auto}.kbq-datepicker{width:var(--kbq-datepicker-input-size-width, 130px)}\n", ".kbq-textarea{display:inline-block;background:transparent;margin:0;border:none;outline:none;resize:none;overflow:auto;width:100%;box-sizing:border-box;padding:var(--kbq-textarea-size-padding-vertical, 8px) var(--kbq-textarea-size-padding-horizontal, 12px);-webkit-appearance:none;vertical-align:bottom}.kbq-textarea:not(.kbq-textarea-resizable){box-sizing:border-box;overflow-y:hidden}.kbq-textarea.kbq-textarea-resizable{resize:vertical;min-height:var(--kbq-textarea-size-min-height, 64px)}.kbq-textarea:invalid{box-shadow:unset}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
537
+ ], queries: [{ propertyName: "control", first: true, predicate: KbqFormFieldControl, descendants: true }, { propertyName: "stepper", first: true, predicate: KbqStepper, descendants: true }, { propertyName: "cleaner", first: true, predicate: KbqCleaner, descendants: true }, { propertyName: "passwordToggle", first: true, predicate: KbqPasswordToggle, descendants: true }, { propertyName: "hint", predicate: KbqHint }, { propertyName: "passwordHints", predicate: KbqPasswordHint }, { propertyName: "suffix", predicate: KbqSuffix }, { propertyName: "prefix", predicate: KbqPrefix }], viewQueries: [{ propertyName: "connectionContainerRef", first: true, predicate: ["connectionContainer"], descendants: true, static: true }], exportAs: ["kbqFormField"], usesInheritance: true, ngImport: i0, template: "<div class=\"kbq-form-field__container\" (click)=\"onContainerClick($event)\" #connectionContainer>\n\n <div class=\"kbq-form-field__prefix\" *ngIf=\"hasPrefix\">\n <ng-content select=\"[kbqPrefix]\"></ng-content>\n </div>\n\n <div class=\"kbq-form-field__infix\">\n <ng-content></ng-content>\n </div>\n\n <div class=\"kbq-form-field__suffix\" *ngIf=\"hasSuffix\">\n <ng-content select=\"[kbqSuffix]\"></ng-content>\n </div>\n\n <div class=\"kbq-form-field__cleaner\"\n *ngIf=\"canShowCleaner && !hasSuffix\"\n (click)=\"clearValue($event)\">\n <ng-content select=\"kbq-cleaner\"></ng-content>\n </div>\n\n <ng-content select=\"kbq-password-toggle\"></ng-content>\n\n <ng-content *ngIf=\"canShowStepper\" select=\"kbq-stepper\"></ng-content>\n</div>\n\n<div class=\"kbq-form-field__hint\" *ngIf=\"hasHint || passwordHints.length\">\n <ng-content select=\"kbq-hint, kbq-password-hint\"></ng-content>\n</div>\n", styles: [".kbq-form-field{position:relative;display:inline-block;width:100%}.kbq-form-field .kbq-form-field__container{box-sizing:border-box}.kbq-form-field .kbq-form-field:not(.kbq-form-field-type-textarea){height:var(--kbq-form-field-size-height, 32px)}.kbq-form-field,.kbq-form-field .kbq-input,.kbq-form-field .kbq-textarea{border-radius:var(--kbq-form-field-size-border-radius, 8px)}.kbq-form-field:hover{z-index:1}.kbq-form-field.kbq-focused{z-index:2}.kbq-form-field.kbq-form-field_without-borders .kbq-form-field__container{border-color:transparent!important;box-shadow:none!important}.kbq-form-field.kbq-form-field_has-prefix .kbq-input{padding-left:calc(var(--kbq-form-field-size-icon-size, 16px) + var(--kbq-form-field-size-icon-margin-left, 8px) + var(--kbq-form-field-size-icon-margin-right, 8px))}.kbq-form-field.kbq-form-field_has-password-toggle .kbq-input,.kbq-form-field.kbq-form-field_has-cleaner .kbq-input,.kbq-form-field.kbq-form-field_has-stepper .kbq-input,.kbq-form-field.kbq-form-field_has-suffix .kbq-input{padding-right:calc(var(--kbq-form-field-size-icon-button-size, 24px) + var(--kbq-form-field-size-icon-button-margin-left, 4px) + var(--kbq-form-field-size-icon-button-margin-right, 4px))}.kbq-form-field__container{position:relative;border-width:var(--kbq-form-field-size-border-width, 1px);border-style:solid;border-color:transparent;border-radius:var(--kbq-form-field-size-border-radius, 8px)}.kbq-form-field__prefix,.kbq-form-field__suffix{position:absolute;top:0;bottom:0;width:32px;display:flex;flex-direction:row;justify-content:center;align-items:center}.kbq-form-field__prefix{left:0}.kbq-form-field__suffix{right:0}.kbq-form-field__cleaner,.kbq-password-toggle,.kbq-stepper{position:absolute;top:0;bottom:0;right:0}.kbq-stepper{display:flex;flex-direction:column;justify-content:center;align-items:center;width:var(--kbq-form-field-size-button-width, )}.kbq-stepper .kbq-stepper-step-up,.kbq-stepper .kbq-stepper-step-down{cursor:pointer;width:var(--kbq-form-field-size-button-width, );text-align:center}.kbq-stepper .kbq-stepper-step-up{transform:scaleY(-1)}.kbq-form-field__hint{display:flex;flex-direction:column;margin-top:var(--kbq-form-field-hint-size-margin-top, 4px);gap:var(--kbq-form-field-hint-size-gap, 8px)}\n", ".kbq-input{background:transparent;padding:0;margin:0;border:none;outline:none;display:inline-block;box-sizing:border-box;text-overflow:ellipsis;width:100%;min-height:calc(var(--kbq-form-field-size-height, 32px) - var(--kbq-form-field-size-border-width, 1px) * 2);padding:calc(var(--kbq-input-size-padding-vertical, 4px) - var(--kbq-form-field-size-border-width, 1px)) var(--kbq-input-size-padding-horizontal, 12px)}.kbq-input::-ms-clear{display:none;width:0;height:0}.kbq-input::-ms-reveal{display:none;width:0;height:0}.kbq-input::-webkit-search-decoration,.kbq-input::-webkit-search-cancel-button,.kbq-input::-webkit-search-results-button,.kbq-input::-webkit-search-results-decoration{display:none}input.kbq-input[type=number]{-moz-appearance:textfield}input.kbq-input[type=number]::-webkit-inner-spin-button,input.kbq-input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none}input.kbq-input:invalid{box-shadow:unset}input.kbq-input::placeholder{opacity:1}\n", ".kbq-timepicker{padding-right:calc(var(--kbq-timepicker-size-padding-right, ) - var(--kbq-form-field-size-border-width, 1px))}.kbq-form-field-type-timepicker{width:auto}\n", ".kbq-form-field-type-datepicker{width:auto}.kbq-datepicker{width:130px}\n", ".kbq-textarea{display:inline-block;background:transparent;margin:0;border:none;outline:none;resize:none;overflow:auto;width:100%;box-sizing:border-box;padding:var(--kbq-textarea-size-padding-vertical, 8px) var(--kbq-textarea-size-padding-horizontal, 12px);-webkit-appearance:none;vertical-align:bottom}.kbq-textarea:not(.kbq-textarea-resizable){box-sizing:border-box;overflow-y:hidden}.kbq-textarea.kbq-textarea-resizable{resize:vertical;min-height:var(--kbq-textarea-size-min-height, 64px)}.kbq-textarea:invalid{box-shadow:unset}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
507
538
  }
508
539
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqFormField, decorators: [{
509
540
  type: Component,
510
- args: [{ selector: 'kbq-form-field', exportAs: 'mcFormField', host: {
541
+ args: [{ selector: 'kbq-form-field', exportAs: 'kbqFormField', host: {
511
542
  class: 'kbq-form-field',
512
543
  '[class.kbq-form-field_invalid]': 'control.errorState',
513
544
  '[class.kbq-form-field_has-prefix]': 'hasPrefix',
@@ -528,7 +559,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
528
559
  '(mouseleave)': 'onHoverChanged(false)'
529
560
  }, inputs: ['color'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
530
561
  { provide: KBQ_FORM_FIELD_REF, useExisting: KbqFormField }
531
- ], template: "<div class=\"kbq-form-field__container\" (click)=\"onContainerClick($event)\">\n\n <div class=\"kbq-form-field__prefix\" *ngIf=\"hasPrefix\">\n <ng-content select=\"[mcPrefix]\"></ng-content>\n </div>\n\n <div class=\"kbq-form-field__infix\">\n <ng-content></ng-content>\n </div>\n\n <div class=\"kbq-form-field__suffix\" *ngIf=\"hasSuffix\">\n <ng-content select=\"[mcSuffix]\"></ng-content>\n </div>\n\n <div class=\"kbq-form-field__cleaner\"\n *ngIf=\"canShowCleaner && !hasSuffix\"\n (click)=\"clearValue($event)\">\n <ng-content select=\"kbq-cleaner\"></ng-content>\n </div>\n\n <ng-content select=\"kbq-password-toggle\"></ng-content>\n\n <ng-content *ngIf=\"canShowStepper\" select=\"kbq-stepper\"></ng-content>\n</div>\n\n<div class=\"kbq-form-field__hint\" *ngIf=\"hint.length || passwordHints.length\">\n <ng-content select=\"kbq-hint, kbq-password-hint\"></ng-content>\n</div>\n", styles: [".kbq-form-field{position:relative;display:inline-block;width:100%}.kbq-form-field .kbq-form-field__container{box-sizing:border-box}.kbq-form-field .kbq-form-field:not(.kbq-form-field-type-textarea){height:var(--kbq-form-field-size-height, 32px)}.kbq-form-field,.kbq-form-field .kbq-input,.kbq-form-field .kbq-textarea{border-radius:var(--kbq-form-field-size-border-radius, 8px)}.kbq-form-field:hover{z-index:1}.kbq-form-field.kbq-focused{z-index:2}.kbq-form-field.kbq-form-field_without-borders .kbq-form-field__container{border-color:transparent;box-shadow:none}.kbq-form-field.kbq-form-field_has-prefix .kbq-input{padding-left:calc(var(--kbq-form-field-size-icon-size, 16px) + var(--kbq-form-field-size-icon-margin-left, 8px) + var(--kbq-form-field-size-icon-margin-right, 8px))}.kbq-form-field.kbq-form-field_has-password-toggle .kbq-input,.kbq-form-field.kbq-form-field_has-cleaner .kbq-input,.kbq-form-field.kbq-form-field_has-stepper .kbq-input,.kbq-form-field.kbq-form-field_has-suffix .kbq-input{padding-right:calc(var(--kbq-form-field-size-icon-button-size, 24px) + var(--kbq-form-field-size-icon-button-margin-left, 4px) + var(--kbq-form-field-size-icon-button-margin-right, 4px))}.kbq-form-field__container{position:relative;border-width:var(--kbq-form-field-size-border-width, 1px);border-style:solid;border-color:transparent;border-radius:var(--kbq-form-field-size-border-radius, 8px)}.kbq-form-field__prefix,.kbq-form-field__suffix{position:absolute;top:0;bottom:0;width:32px;display:flex;flex-direction:row;justify-content:center;align-items:center}.kbq-form-field__prefix{left:0}.kbq-form-field__suffix{right:0}.kbq-form-field__cleaner,.kbq-password-toggle,.kbq-stepper{position:absolute;top:0;bottom:0;right:0}.kbq-stepper{display:flex;flex-direction:column;justify-content:center;align-items:center;width:var(--kbq-form-field-size-button-width, )}.kbq-stepper .kbq-stepper-step-up,.kbq-stepper .kbq-stepper-step-down{cursor:pointer;width:var(--kbq-form-field-size-button-width, );text-align:center}.kbq-stepper .kbq-stepper-step-up{transform:scaleY(-1)}.kbq-form-field__hint{display:flex;flex-direction:column;margin-top:var(--kbq-form-field-hint-size-margin-top, 12px);gap:var(--kbq-form-field-hint-size-gap, 8px)}\n", ".kbq-input{background:transparent;padding:0;margin:0;border:none;outline:none;display:inline-block;box-sizing:border-box;width:100%;min-height:calc(var(--kbq-form-field-size-height, 32px) - var(--kbq-form-field-size-border-width, 1px) * 2);padding:calc(var(--kbq-input-size-padding-vertical, 8px) - var(--kbq-form-field-size-border-width, 1px)) var(--kbq-input-size-padding-horizontal, 12px)}.kbq-input::-ms-clear{display:none;width:0;height:0}.kbq-input::-ms-reveal{display:none;width:0;height:0}.kbq-input::-webkit-search-decoration,.kbq-input::-webkit-search-cancel-button,.kbq-input::-webkit-search-results-button,.kbq-input::-webkit-search-results-decoration{display:none}input.kbq-input[type=number]{-moz-appearance:textfield}input.kbq-input[type=number]::-webkit-inner-spin-button,input.kbq-input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none}input.kbq-input:invalid{box-shadow:unset}input.kbq-input::placeholder{opacity:1}\n", ".kbq-timepicker{padding-right:calc(var(--kbq-timepicker-size-padding-right, 16px) - var(--kbq-form-field-size-border-width, 1px))}.kbq-form-field-type-timepicker{width:auto}\n", ".kbq-form-field-type-datepicker{width:auto}.kbq-datepicker{width:var(--kbq-datepicker-input-size-width, 130px)}\n", ".kbq-textarea{display:inline-block;background:transparent;margin:0;border:none;outline:none;resize:none;overflow:auto;width:100%;box-sizing:border-box;padding:var(--kbq-textarea-size-padding-vertical, 8px) var(--kbq-textarea-size-padding-horizontal, 12px);-webkit-appearance:none;vertical-align:bottom}.kbq-textarea:not(.kbq-textarea-resizable){box-sizing:border-box;overflow-y:hidden}.kbq-textarea.kbq-textarea-resizable{resize:vertical;min-height:var(--kbq-textarea-size-min-height, 64px)}.kbq-textarea:invalid{box-shadow:unset}\n"] }]
562
+ ], template: "<div class=\"kbq-form-field__container\" (click)=\"onContainerClick($event)\" #connectionContainer>\n\n <div class=\"kbq-form-field__prefix\" *ngIf=\"hasPrefix\">\n <ng-content select=\"[kbqPrefix]\"></ng-content>\n </div>\n\n <div class=\"kbq-form-field__infix\">\n <ng-content></ng-content>\n </div>\n\n <div class=\"kbq-form-field__suffix\" *ngIf=\"hasSuffix\">\n <ng-content select=\"[kbqSuffix]\"></ng-content>\n </div>\n\n <div class=\"kbq-form-field__cleaner\"\n *ngIf=\"canShowCleaner && !hasSuffix\"\n (click)=\"clearValue($event)\">\n <ng-content select=\"kbq-cleaner\"></ng-content>\n </div>\n\n <ng-content select=\"kbq-password-toggle\"></ng-content>\n\n <ng-content *ngIf=\"canShowStepper\" select=\"kbq-stepper\"></ng-content>\n</div>\n\n<div class=\"kbq-form-field__hint\" *ngIf=\"hasHint || passwordHints.length\">\n <ng-content select=\"kbq-hint, kbq-password-hint\"></ng-content>\n</div>\n", styles: [".kbq-form-field{position:relative;display:inline-block;width:100%}.kbq-form-field .kbq-form-field__container{box-sizing:border-box}.kbq-form-field .kbq-form-field:not(.kbq-form-field-type-textarea){height:var(--kbq-form-field-size-height, 32px)}.kbq-form-field,.kbq-form-field .kbq-input,.kbq-form-field .kbq-textarea{border-radius:var(--kbq-form-field-size-border-radius, 8px)}.kbq-form-field:hover{z-index:1}.kbq-form-field.kbq-focused{z-index:2}.kbq-form-field.kbq-form-field_without-borders .kbq-form-field__container{border-color:transparent!important;box-shadow:none!important}.kbq-form-field.kbq-form-field_has-prefix .kbq-input{padding-left:calc(var(--kbq-form-field-size-icon-size, 16px) + var(--kbq-form-field-size-icon-margin-left, 8px) + var(--kbq-form-field-size-icon-margin-right, 8px))}.kbq-form-field.kbq-form-field_has-password-toggle .kbq-input,.kbq-form-field.kbq-form-field_has-cleaner .kbq-input,.kbq-form-field.kbq-form-field_has-stepper .kbq-input,.kbq-form-field.kbq-form-field_has-suffix .kbq-input{padding-right:calc(var(--kbq-form-field-size-icon-button-size, 24px) + var(--kbq-form-field-size-icon-button-margin-left, 4px) + var(--kbq-form-field-size-icon-button-margin-right, 4px))}.kbq-form-field__container{position:relative;border-width:var(--kbq-form-field-size-border-width, 1px);border-style:solid;border-color:transparent;border-radius:var(--kbq-form-field-size-border-radius, 8px)}.kbq-form-field__prefix,.kbq-form-field__suffix{position:absolute;top:0;bottom:0;width:32px;display:flex;flex-direction:row;justify-content:center;align-items:center}.kbq-form-field__prefix{left:0}.kbq-form-field__suffix{right:0}.kbq-form-field__cleaner,.kbq-password-toggle,.kbq-stepper{position:absolute;top:0;bottom:0;right:0}.kbq-stepper{display:flex;flex-direction:column;justify-content:center;align-items:center;width:var(--kbq-form-field-size-button-width, )}.kbq-stepper .kbq-stepper-step-up,.kbq-stepper .kbq-stepper-step-down{cursor:pointer;width:var(--kbq-form-field-size-button-width, );text-align:center}.kbq-stepper .kbq-stepper-step-up{transform:scaleY(-1)}.kbq-form-field__hint{display:flex;flex-direction:column;margin-top:var(--kbq-form-field-hint-size-margin-top, 4px);gap:var(--kbq-form-field-hint-size-gap, 8px)}\n", ".kbq-input{background:transparent;padding:0;margin:0;border:none;outline:none;display:inline-block;box-sizing:border-box;text-overflow:ellipsis;width:100%;min-height:calc(var(--kbq-form-field-size-height, 32px) - var(--kbq-form-field-size-border-width, 1px) * 2);padding:calc(var(--kbq-input-size-padding-vertical, 4px) - var(--kbq-form-field-size-border-width, 1px)) var(--kbq-input-size-padding-horizontal, 12px)}.kbq-input::-ms-clear{display:none;width:0;height:0}.kbq-input::-ms-reveal{display:none;width:0;height:0}.kbq-input::-webkit-search-decoration,.kbq-input::-webkit-search-cancel-button,.kbq-input::-webkit-search-results-button,.kbq-input::-webkit-search-results-decoration{display:none}input.kbq-input[type=number]{-moz-appearance:textfield}input.kbq-input[type=number]::-webkit-inner-spin-button,input.kbq-input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none}input.kbq-input:invalid{box-shadow:unset}input.kbq-input::placeholder{opacity:1}\n", ".kbq-timepicker{padding-right:calc(var(--kbq-timepicker-size-padding-right, ) - var(--kbq-form-field-size-border-width, 1px))}.kbq-form-field-type-timepicker{width:auto}\n", ".kbq-form-field-type-datepicker{width:auto}.kbq-datepicker{width:130px}\n", ".kbq-textarea{display:inline-block;background:transparent;margin:0;border:none;outline:none;resize:none;overflow:auto;width:100%;box-sizing:border-box;padding:var(--kbq-textarea-size-padding-vertical, 8px) var(--kbq-textarea-size-padding-horizontal, 12px);-webkit-appearance:none;vertical-align:bottom}.kbq-textarea:not(.kbq-textarea-resizable){box-sizing:border-box;overflow-y:hidden}.kbq-textarea.kbq-textarea-resizable{resize:vertical;min-height:var(--kbq-textarea-size-min-height, 64px)}.kbq-textarea:invalid{box-shadow:unset}\n"] }]
532
563
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1$3.FocusMonitor }]; }, propDecorators: { control: [{
533
564
  type: ContentChild,
534
565
  args: [KbqFormFieldControl, { static: false }]
@@ -559,13 +590,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
559
590
  }] } });
560
591
  class KbqFormFieldWithoutBorders {
561
592
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqFormFieldWithoutBorders, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
562
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: KbqFormFieldWithoutBorders, selector: "kbq-form-field[mcFormFieldWithoutBorders]", host: { classAttribute: "kbq-form-field_without-borders" }, exportAs: ["mcFormFieldWithoutBorders"], ngImport: i0 }); }
593
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: KbqFormFieldWithoutBorders, selector: "kbq-form-field[kbqFormFieldWithoutBorders]", host: { classAttribute: "kbq-form-field_without-borders" }, exportAs: ["kbqFormFieldWithoutBorders"], ngImport: i0 }); }
563
594
  }
564
595
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqFormFieldWithoutBorders, decorators: [{
565
596
  type: Directive,
566
597
  args: [{
567
- selector: 'kbq-form-field[mcFormFieldWithoutBorders]',
568
- exportAs: 'mcFormFieldWithoutBorders',
598
+ selector: 'kbq-form-field[kbqFormFieldWithoutBorders]',
599
+ exportAs: 'kbqFormFieldWithoutBorders',
569
600
  host: { class: 'kbq-form-field_without-borders' }
570
601
  }]
571
602
  }] });
@@ -590,12 +621,12 @@ class KbqTrim {
590
621
  return typeof value === 'string' ? value.trim() : value;
591
622
  }
592
623
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqTrim, deps: [{ token: 'no-trim', attribute: true }, { token: i1$4.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }
593
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: KbqTrim, selector: "[mcInput], [mcTextarea]", host: { classAttribute: "kbq-trim" }, exportAs: ["KbqTrim"], ngImport: i0 }); }
624
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: KbqTrim, selector: "[kbqInput], [kbqTextarea]", host: { classAttribute: "kbq-trim" }, exportAs: ["KbqTrim"], ngImport: i0 }); }
594
625
  }
595
626
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqTrim, decorators: [{
596
627
  type: Directive,
597
628
  args: [{
598
- selector: '[mcInput], [mcTextarea]',
629
+ selector: '[kbqInput], [kbqTextarea]',
599
630
  exportAs: 'KbqTrim',
600
631
  host: { class: 'kbq-trim' }
601
632
  }]
@@ -658,8 +689,14 @@ class KbqValidateDirective {
658
689
  if (!this.validationControl) {
659
690
  return;
660
691
  }
661
- this.parent?.ngSubmit
662
- .subscribe(() => this.validationControl.updateValueAndValidity({ emitEvent: false }));
692
+ if (this.parent?.onSubmit) {
693
+ // tslint:disable-next-line: no-unbound-method
694
+ const originalSubmit = this.parent.onSubmit;
695
+ this.parent.onSubmit = ($event) => {
696
+ this.validationControl.updateValueAndValidity({ emitEvent: false });
697
+ return originalSubmit.call(this.parent, $event);
698
+ };
699
+ }
663
700
  if (this.isNgModel) {
664
701
  this.setMosaicValidationForModelControl();
665
702
  }
@@ -717,17 +754,17 @@ class KbqValidateDirective {
717
754
  });
718
755
  }
719
756
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqValidateDirective, deps: [{ token: forwardRef(() => KbqFormFieldControl) }, { token: NG_VALIDATORS, optional: true, self: true }, { token: i1$4.NgControl, optional: true, self: true }, { token: i1$4.NgForm, optional: true }, { token: i1$4.FormGroupDirective, optional: true }, { token: KBQ_VALIDATION, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
720
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: KbqValidateDirective, selector: "\n input[mcInput],\n input[mcInputPassword],\n input[mcTimepicker],\n input[mcDatepicker],\n textarea[mcTextarea],\n kbq-select,\n kbq-tree-select,\n kbq-tag-list\n ", exportAs: ["KbqValidate"], ngImport: i0 }); }
757
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: KbqValidateDirective, selector: "\n input[kbqInput],\n input[kbqInputPassword],\n input[kbqTimepicker],\n input[kbqDatepicker],\n textarea[kbqTextarea],\n kbq-select,\n kbq-tree-select,\n kbq-tag-list\n ", exportAs: ["KbqValidate"], ngImport: i0 }); }
721
758
  }
722
759
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqValidateDirective, decorators: [{
723
760
  type: Directive,
724
761
  args: [{
725
762
  selector: `
726
- input[mcInput],
727
- input[mcInputPassword],
728
- input[mcTimepicker],
729
- input[mcDatepicker],
730
- textarea[mcTextarea],
763
+ input[kbqInput],
764
+ input[kbqInputPassword],
765
+ input[kbqTimepicker],
766
+ input[kbqDatepicker],
767
+ textarea[kbqTextarea],
731
768
  kbq-select,
732
769
  kbq-tree-select,
733
770
  kbq-tag-list
@@ -821,5 +858,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
821
858
  * Generated bundle index. Do not edit.
822
859
  */
823
860
 
824
- export { KbqCleaner, KbqFormField, KbqFormFieldBase, KbqFormFieldControl, KbqFormFieldMixinBase, KbqFormFieldModule, KbqFormFieldWithoutBorders, KbqHint, KbqHintBase, KbqHintMixinBase, KbqPasswordHint, KbqPasswordToggle, KbqPrefix, KbqStepper, KbqSuffix, KbqTrim, KbqValidateDirective, PasswordRules, getKbqFormFieldMissingControlError, getKbqFormFieldYouCanNotUseCleanerInNumberInputError, regExpPasswordValidator };
861
+ export { KbqCleaner, KbqFormField, KbqFormFieldBase, KbqFormFieldControl, KbqFormFieldMixinBase, KbqFormFieldModule, KbqFormFieldWithoutBorders, KbqHint, KbqHintBase, KbqHintMixinBase, KbqPasswordHint, KbqPasswordToggle, KbqPrefix, KbqStepper, KbqSuffix, KbqTrim, KbqValidateDirective, PasswordRules, getKbqFormFieldMissingControlError, getKbqFormFieldYouCanNotUseCleanerInNumberInputError, hasPasswordStrengthError, regExpPasswordValidator };
825
862
  //# sourceMappingURL=koobiq-components-form-field.mjs.map