@koobiq/components 17.0.0-beta.2 → 17.0.0-rc.10

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 (369) hide show
  1. package/README.md +1 -2
  2. package/alert/_alert-theme.scss +48 -24
  3. package/alert/alert.component.d.ts +23 -3
  4. package/alert/alert.component.scss +91 -59
  5. package/autocomplete/_autocomplete-theme.scss +3 -3
  6. package/autocomplete/autocomplete.scss +8 -18
  7. package/badge/_badge-theme.scss +30 -45
  8. package/badge/badge.component.scss +18 -39
  9. package/button/_button-base.scss +7 -14
  10. package/button/_button-theme.scss +30 -86
  11. package/button/button.component.d.ts +3 -2
  12. package/button/button.scss +7 -17
  13. package/button-toggle/_button-toggle-theme.scss +19 -20
  14. package/button-toggle/button-toggle.scss +17 -44
  15. package/card/_card-theme.scss +18 -17
  16. package/card/card.component.scss +3 -6
  17. package/checkbox/_checkbox-theme.scss +50 -50
  18. package/checkbox/checkbox.scss +31 -35
  19. package/code-block/README.md +18 -14
  20. package/code-block/_code-block-theme.scss +53 -23
  21. package/code-block/actionbar.component.scss +11 -25
  22. package/code-block/code-block.component.d.ts +12 -4
  23. package/code-block/code-block.scss +62 -77
  24. package/core/form-field/form-field-ref.d.ts +2 -0
  25. package/core/forms/_forms-theme.scss +4 -8
  26. package/core/forms/_forms.scss +13 -43
  27. package/core/locales/formatters.d.ts +96 -0
  28. package/core/locales/locale-service.d.ts +97 -0
  29. package/core/option/_optgroup-theme.scss +4 -6
  30. package/core/option/_option-action-theme.scss +8 -11
  31. package/core/option/_option-theme.scss +15 -20
  32. package/core/option/optgroup.scss +0 -1
  33. package/core/option/option.scss +0 -1
  34. package/core/pop-up/_pop-up.scss +0 -1
  35. package/core/pop-up/pop-up-trigger.d.ts +3 -1
  36. package/core/select/common.d.ts +35 -0
  37. package/core/select/index.d.ts +1 -0
  38. package/core/selection/pseudo-checkbox/_pseudo-checkbox-theme.scss +15 -19
  39. package/core/selection/pseudo-checkbox/pseudo-checkbox.scss +9 -9
  40. package/core/services/theme.service.d.ts +3 -2
  41. package/core/styles/_core.scss +0 -1
  42. package/core/styles/_koobiq-theme.scss +5 -3
  43. package/core/styles/common/_animation.scss +9 -8
  44. package/core/styles/common/_button.scss +0 -2
  45. package/core/styles/common/_clearfix.scss +1 -1
  46. package/core/styles/common/_groups.scss +3 -9
  47. package/core/styles/common/_list.scss +28 -31
  48. package/core/styles/common/_overlay.scss +4 -3
  49. package/core/styles/common/_popup.scss +5 -5
  50. package/core/styles/common/_rtl.scss +4 -4
  51. package/core/styles/common/_select.scss +48 -42
  52. package/core/styles/common/_tokens.scss +47 -0
  53. package/core/styles/functions/_number.scss +14 -19
  54. package/core/styles/functions/_string.scss +18 -19
  55. package/core/styles/functions/_timing.scss +24 -24
  56. package/core/styles/theming/_components-theming.scss +1380 -1384
  57. package/core/styles/theming/_scrollbar-theme.scss +8 -5
  58. package/core/styles/theming/_theming.scss +26 -29
  59. package/core/styles/typography/_typography-utils.scss +1 -2
  60. package/core/styles/typography/_typography.scss +138 -85
  61. package/core/styles/visual/_body.scss +0 -2
  62. package/core/styles/visual/_layout.scss +44 -38
  63. package/core/utils/data-size/config.d.ts +20 -2
  64. package/core/utils/data-size/data-size.pipe.d.ts +10 -9
  65. package/core/utils/data-size/size.d.ts +3 -4
  66. package/datepicker/_datepicker-theme.scss +38 -40
  67. package/datepicker/calendar-body.scss +3 -11
  68. package/datepicker/calendar-header.scss +4 -10
  69. package/datepicker/calendar.scss +5 -17
  70. package/datepicker/datepicker-content.scss +5 -15
  71. package/datepicker/datepicker-input.scss +0 -5
  72. package/datepicker/datepicker-toggle.scss +3 -3
  73. package/divider/_divider-theme.scss +2 -1
  74. package/divider/divider.scss +9 -26
  75. package/dl/_dl-theme.scss +5 -8
  76. package/dl/dl.scss +5 -20
  77. package/dropdown/_dropdown-theme.scss +27 -22
  78. package/dropdown/dropdown-item.scss +5 -12
  79. package/dropdown/dropdown-trigger.directive.d.ts +2 -2
  80. package/dropdown/dropdown.scss +6 -15
  81. package/ellipsis-center/ellipsis-center.directive.d.ts +3 -2
  82. package/empty-state/README.md +0 -0
  83. package/empty-state/_empty-state-theme.scss +56 -0
  84. package/empty-state/empty-state.component.d.ts +31 -0
  85. package/empty-state/empty-state.module.d.ts +10 -0
  86. package/empty-state/empty-state.scss +81 -0
  87. package/empty-state/index.d.ts +1 -0
  88. package/empty-state/public-api.d.ts +2 -0
  89. package/esm2022/alert/alert.component.mjs +52 -5
  90. package/esm2022/badge/badge.component.mjs +2 -2
  91. package/esm2022/button/button.component.mjs +13 -6
  92. package/esm2022/button-toggle/button-toggle.component.mjs +2 -2
  93. package/esm2022/checkbox/checkbox.mjs +2 -2
  94. package/esm2022/code-block/actionbar.component.mjs +2 -2
  95. package/esm2022/code-block/code-block.component.mjs +58 -14
  96. package/esm2022/core/animation/select-animations.mjs +4 -4
  97. package/esm2022/core/form-field/form-field-ref.mjs +1 -1
  98. package/esm2022/core/locales/formatters.mjs +97 -1
  99. package/esm2022/core/locales/locale-service.mjs +5 -2
  100. package/esm2022/core/option/option.mjs +2 -2
  101. package/esm2022/core/pop-up/pop-up-trigger.mjs +18 -11
  102. package/esm2022/core/select/common.mjs +120 -0
  103. package/esm2022/core/select/index.mjs +2 -1
  104. package/esm2022/core/services/theme.service.mjs +4 -1
  105. package/esm2022/core/utils/data-size/config.mjs +5 -17
  106. package/esm2022/core/utils/data-size/data-size.pipe.mjs +36 -22
  107. package/esm2022/core/utils/data-size/size.mjs +10 -14
  108. package/esm2022/core/version.mjs +2 -2
  109. package/esm2022/datepicker/calendar-header.component.mjs +1 -1
  110. package/esm2022/datepicker/datepicker-animations.mjs +2 -2
  111. package/esm2022/dropdown/dropdown-animations.mjs +4 -4
  112. package/esm2022/dropdown/dropdown-item.component.mjs +2 -2
  113. package/esm2022/dropdown/dropdown-trigger.directive.mjs +4 -4
  114. package/esm2022/ellipsis-center/ellipsis-center.directive.mjs +7 -5
  115. package/esm2022/empty-state/empty-state.component.mjs +104 -0
  116. package/esm2022/empty-state/empty-state.module.mjs +50 -0
  117. package/esm2022/empty-state/index.mjs +2 -0
  118. package/esm2022/empty-state/koobiq-components-empty-state.mjs +5 -0
  119. package/esm2022/empty-state/public-api.mjs +3 -0
  120. package/esm2022/file-upload/file-upload.mjs +15 -1
  121. package/esm2022/file-upload/file-upload.module.mjs +15 -5
  122. package/esm2022/file-upload/multiple-file-upload.component.mjs +98 -49
  123. package/esm2022/file-upload/single-file-upload.component.mjs +110 -54
  124. package/esm2022/form-field/form-field.mjs +2 -2
  125. package/esm2022/form-field/hint.mjs +2 -2
  126. package/esm2022/form-field/password-hint.mjs +2 -2
  127. package/esm2022/form-field/password-toggle.mjs +11 -9
  128. package/esm2022/icon/icon-item.component.mjs +16 -6
  129. package/esm2022/input/input-number.mjs +2 -2
  130. package/esm2022/list/list-selection.component.mjs +2 -2
  131. package/esm2022/list/list.component.mjs +2 -2
  132. package/esm2022/loader-overlay/loader-overlay.component.mjs +2 -2
  133. package/esm2022/markdown/markdown.component.mjs +2 -2
  134. package/esm2022/modal/modal.component.mjs +8 -9
  135. package/esm2022/navbar/navbar-item.component.mjs +11 -11
  136. package/esm2022/navbar/navbar.component.mjs +2 -2
  137. package/esm2022/navbar/vertical-navbar.component.mjs +2 -2
  138. package/esm2022/popover/popover-confirm.component.mjs +3 -3
  139. package/esm2022/popover/popover.component.mjs +3 -3
  140. package/esm2022/radio/radio.component.mjs +2 -2
  141. package/esm2022/scrollbar/scrollbar.component.mjs +2 -2
  142. package/esm2022/select/select-option.directive.mjs +7 -5
  143. package/esm2022/select/select.component.mjs +71 -125
  144. package/esm2022/select/select.module.mjs +28 -28
  145. package/esm2022/splitter/splitter.component.mjs +37 -17
  146. package/esm2022/table/table.component.mjs +29 -6
  147. package/esm2022/table/table.module.mjs +14 -6
  148. package/esm2022/tabs/tab-body.component.mjs +1 -1
  149. package/esm2022/tabs/tab-group.component.mjs +55 -13
  150. package/esm2022/tabs/tab-header.component.mjs +2 -2
  151. package/esm2022/tabs/tab-nav-bar/tab-nav-bar.mjs +2 -2
  152. package/esm2022/tags/tag-default-options.mjs +1 -1
  153. package/esm2022/tags/tag-input.mjs +17 -3
  154. package/esm2022/tags/tag-list.component.mjs +2 -2
  155. package/esm2022/tags/tag.component.mjs +4 -4
  156. package/esm2022/textarea/textarea.component.mjs +12 -10
  157. package/esm2022/timepicker/timepicker.directive.mjs +11 -3
  158. package/esm2022/timezone/timezone-option.component.mjs +2 -2
  159. package/esm2022/timezone/timezone-option.directive.mjs +7 -5
  160. package/esm2022/timezone/timezone-select.component.mjs +5 -5
  161. package/esm2022/title/title.directive.mjs +3 -4
  162. package/esm2022/toast/toast-container.component.mjs +2 -2
  163. package/esm2022/toast/toast.component.mjs +4 -4
  164. package/esm2022/toast/toast.service.mjs +18 -13
  165. package/esm2022/toast/toast.type.mjs +3 -1
  166. package/esm2022/tooltip/tooltip.component.mjs +28 -14
  167. package/esm2022/tree/padding.directive.mjs +2 -2
  168. package/esm2022/tree/tree-base.mjs +2 -2
  169. package/esm2022/tree/tree-option.component.mjs +2 -2
  170. package/esm2022/tree/tree-selection.component.mjs +6 -1
  171. package/esm2022/tree-select/tree-select.component.mjs +29 -44
  172. package/esm2022/tree-select/tree-select.module.mjs +31 -11
  173. package/fesm2022/koobiq-components-alert.mjs +52 -5
  174. package/fesm2022/koobiq-components-alert.mjs.map +1 -1
  175. package/fesm2022/koobiq-components-badge.mjs +2 -2
  176. package/fesm2022/koobiq-components-badge.mjs.map +1 -1
  177. package/fesm2022/koobiq-components-button-toggle.mjs +2 -2
  178. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  179. package/fesm2022/koobiq-components-button.mjs +12 -5
  180. package/fesm2022/koobiq-components-button.mjs.map +1 -1
  181. package/fesm2022/koobiq-components-checkbox.mjs +2 -2
  182. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  183. package/fesm2022/koobiq-components-code-block.mjs +57 -14
  184. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  185. package/fesm2022/koobiq-components-core.mjs +285 -67
  186. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  187. package/fesm2022/koobiq-components-datepicker.mjs +2 -2
  188. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  189. package/fesm2022/koobiq-components-dropdown.mjs +8 -8
  190. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  191. package/fesm2022/koobiq-components-ellipsis-center.mjs +5 -4
  192. package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
  193. package/fesm2022/koobiq-components-empty-state.mjs +157 -0
  194. package/fesm2022/koobiq-components-empty-state.mjs.map +1 -0
  195. package/fesm2022/koobiq-components-file-upload.mjs +225 -97
  196. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  197. package/fesm2022/koobiq-components-form-field.mjs +21 -21
  198. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  199. package/fesm2022/koobiq-components-icon.mjs +14 -4
  200. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  201. package/fesm2022/koobiq-components-input.mjs +1 -1
  202. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  203. package/fesm2022/koobiq-components-list.mjs +4 -4
  204. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  205. package/fesm2022/koobiq-components-loader-overlay.mjs +1 -1
  206. package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
  207. package/fesm2022/koobiq-components-markdown.mjs +2 -2
  208. package/fesm2022/koobiq-components-modal.mjs +7 -8
  209. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  210. package/fesm2022/koobiq-components-navbar.mjs +14 -14
  211. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  212. package/fesm2022/koobiq-components-popover.mjs +4 -4
  213. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  214. package/fesm2022/koobiq-components-radio.mjs +2 -2
  215. package/fesm2022/koobiq-components-radio.mjs.map +1 -1
  216. package/fesm2022/koobiq-components-scrollbar.mjs +2 -2
  217. package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
  218. package/fesm2022/koobiq-components-select.mjs +102 -155
  219. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  220. package/fesm2022/koobiq-components-splitter.mjs +36 -16
  221. package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
  222. package/fesm2022/koobiq-components-table.mjs +41 -10
  223. package/fesm2022/koobiq-components-table.mjs.map +1 -1
  224. package/fesm2022/koobiq-components-tabs.mjs +57 -15
  225. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  226. package/fesm2022/koobiq-components-tags.mjs +21 -8
  227. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  228. package/fesm2022/koobiq-components-textarea.mjs +11 -9
  229. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  230. package/fesm2022/koobiq-components-timepicker.mjs +10 -2
  231. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
  232. package/fesm2022/koobiq-components-timezone.mjs +11 -10
  233. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  234. package/fesm2022/koobiq-components-title.mjs +2 -3
  235. package/fesm2022/koobiq-components-title.mjs.map +1 -1
  236. package/fesm2022/koobiq-components-toast.mjs +25 -17
  237. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  238. package/fesm2022/koobiq-components-tooltip.mjs +26 -13
  239. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  240. package/fesm2022/koobiq-components-tree-select.mjs +57 -51
  241. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  242. package/fesm2022/koobiq-components-tree.mjs +9 -4
  243. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  244. package/file-upload/_file-upload-theme.scss +124 -73
  245. package/file-upload/file-upload.d.ts +1 -1
  246. package/file-upload/file-upload.module.d.ts +11 -9
  247. package/file-upload/file-upload.scss +0 -6
  248. package/file-upload/multiple-file-upload.component.d.ts +38 -10
  249. package/file-upload/multiple-file-upload.component.scss +50 -120
  250. package/file-upload/single-file-upload.component.d.ts +40 -13
  251. package/file-upload/single-file-upload.component.scss +12 -33
  252. package/form-field/_form-field-theme.scss +46 -36
  253. package/form-field/_hint-theme.scss +15 -20
  254. package/form-field/cleaner.scss +3 -9
  255. package/form-field/form-field.scss +23 -26
  256. package/form-field/hint.scss +5 -8
  257. package/form-field/password-toggle.d.ts +3 -2
  258. package/form-field/password-toggle.scss +3 -10
  259. package/form-field/stepper.scss +4 -11
  260. package/icon/_icon-button-theme.scss +47 -36
  261. package/icon/_icon-item-theme.scss +47 -26
  262. package/icon/_icon-theme.scss +12 -14
  263. package/icon/icon-button.scss +5 -20
  264. package/icon/icon-item.component.d.ts +3 -1
  265. package/icon/icon-item.scss +10 -8
  266. package/icon/icon.scss +0 -6
  267. package/input/_input-theme.scss +6 -4
  268. package/input/input.scss +11 -10
  269. package/link/_link-theme.scss +30 -49
  270. package/list/_list-theme.scss +21 -19
  271. package/list/list.scss +2 -6
  272. package/loader-overlay/_loader-overlay-theme.scss +17 -18
  273. package/loader-overlay/loader-overlay.scss +9 -33
  274. package/markdown/_markdown-theme.scss +47 -47
  275. package/markdown/markdown.scss +41 -91
  276. package/modal/README.md +5 -4
  277. package/modal/_modal-animation.scss +0 -1
  278. package/modal/_modal-confirm.scss +2 -7
  279. package/modal/_modal-theme.scss +11 -13
  280. package/modal/modal.component.d.ts +1 -1
  281. package/modal/modal.scss +15 -31
  282. package/navbar/README.md +21 -20
  283. package/navbar/_navbar-item_horizontal.scss +28 -29
  284. package/navbar/_navbar-item_vertical.scss +31 -31
  285. package/navbar/_navbar-theme.scss +20 -24
  286. package/navbar/navbar-brand.scss +24 -27
  287. package/navbar/navbar-divider.scss +4 -8
  288. package/navbar/navbar-item.component.d.ts +4 -4
  289. package/navbar/navbar-item.scss +13 -15
  290. package/navbar/navbar.scss +2 -6
  291. package/navbar/vertical-navbar.scss +4 -6
  292. package/package.json +23 -16
  293. package/popover/README.md +18 -14
  294. package/popover/_popover-theme.scss +9 -17
  295. package/popover/popover.scss +15 -29
  296. package/prebuilt-themes/dark-theme.css +1 -1
  297. package/prebuilt-themes/light-theme.css +1 -1
  298. package/progress-bar/_progress-bar-theme.scss +7 -11
  299. package/progress-bar/progress-bar.scss +6 -19
  300. package/progress-spinner/_progress-spinner-theme.scss +6 -8
  301. package/progress-spinner/progress-spinner.scss +8 -18
  302. package/radio/_radio-theme.scss +36 -37
  303. package/radio/radio.scss +25 -40
  304. package/risk-level/_risk-level-theme.scss +25 -31
  305. package/risk-level/risk-level.component.scss +4 -10
  306. package/schematics/collection.json +11 -0
  307. package/schematics/ng-add/index.js +70 -0
  308. package/schematics/ng-add/schema.json +15 -0
  309. package/scrollbar/_scrollbar-component-theme.scss +15 -19
  310. package/scrollbar/scrollbar.component.scss +68 -63
  311. package/scrollbar/scrollbar.directive.d.ts +1 -0
  312. package/scrollbar/scrollbar.types.d.ts +1 -0
  313. package/select/_select-theme.scss +14 -16
  314. package/select/select-option.directive.d.ts +3 -2
  315. package/select/select.component.d.ts +12 -33
  316. package/select/select.module.d.ts +1 -1
  317. package/select/select.scss +3 -11
  318. package/sidepanel/_sidepanel-theme.scss +8 -10
  319. package/sidepanel/sidepanel.scss +20 -37
  320. package/splitter/_splitter-theme.scss +5 -6
  321. package/splitter/splitter.component.d.ts +10 -5
  322. package/splitter/splitter.scss +0 -1
  323. package/table/_table-theme.scss +16 -15
  324. package/table/table.component.d.ts +8 -1
  325. package/table/table.module.d.ts +1 -1
  326. package/table/table.scss +41 -42
  327. package/tabs/_tabs-common.scss +13 -15
  328. package/tabs/_tabs-theme.scss +76 -44
  329. package/tabs/tab-body.component.d.ts +1 -1
  330. package/tabs/tab-group.component.d.ts +9 -3
  331. package/tabs/tab-group.scss +2 -8
  332. package/tabs/tab-header.scss +0 -10
  333. package/tabs/tab-nav-bar/tab-nav-bar.scss +2 -9
  334. package/tags/_tag-theme.scss +22 -27
  335. package/tags/tag-default-options.d.ts +1 -0
  336. package/tags/tag-input.d.ts +7 -1
  337. package/tags/tag-list.scss +15 -12
  338. package/tags/tag.component.d.ts +1 -1
  339. package/tags/tag.scss +5 -11
  340. package/textarea/_textarea-theme.scss +2 -5
  341. package/textarea/textarea.scss +5 -10
  342. package/timepicker/timepicker.directive.d.ts +1 -1
  343. package/timepicker/timepicker.scss +2 -8
  344. package/timezone/_timezone-option-theme.scss +8 -10
  345. package/timezone/timezone-option.component.scss +5 -8
  346. package/timezone/timezone-option.directive.d.ts +3 -2
  347. package/timezone/timezone-select.component.d.ts +2 -1
  348. package/timezone/timezone-select.component.scss +2 -4
  349. package/title/title.directive.d.ts +0 -1
  350. package/toast/_toast-theme.scss +20 -16
  351. package/toast/toast-container.component.scss +5 -6
  352. package/toast/toast.component.scss +28 -29
  353. package/toast/toast.service.d.ts +8 -4
  354. package/toast/toast.type.d.ts +2 -0
  355. package/toggle/_toggle-theme.scss +49 -42
  356. package/toggle/toggle.scss +9 -22
  357. package/tooltip/_tooltip-theme.scss +12 -16
  358. package/tooltip/tooltip.component.d.ts +12 -8
  359. package/tooltip/tooltip.scss +7 -13
  360. package/tree/_tree-theme.scss +20 -23
  361. package/tree/toggle.scss +3 -6
  362. package/tree/tree-base.d.ts +1 -1
  363. package/tree/tree-option.scss +17 -14
  364. package/tree/tree-selection.component.d.ts +1 -0
  365. package/tree-select/_tree-select-theme.scss +12 -15
  366. package/tree-select/tree-select.component.d.ts +8 -17
  367. package/tree-select/tree-select.module.d.ts +1 -2
  368. package/tree-select/tree-select.scss +1 -6
  369. package/core/styles/_variables.scss +0 -1
@@ -1,36 +1,56 @@
1
- import { FocusMonitor } from '@angular/cdk/a11y';
2
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Inject, Input, Optional, Output, Renderer2, ViewChild, ViewEncapsulation } from '@angular/core';
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Inject, Input, Optional, Output, Renderer2, Self, ViewChild, ViewEncapsulation } from '@angular/core';
3
2
  import { KBQ_LOCALE_SERVICE, KbqLocaleService, ruRULocaleData } from '@koobiq/components/core';
4
3
  import { BehaviorSubject, Subscription } from 'rxjs';
5
- import { KBQ_FILE_UPLOAD_CONFIGURATION } from './file-upload';
4
+ import { NgControl } from '@angular/forms';
5
+ import { isCorrectExtension, KBQ_FILE_UPLOAD_CONFIGURATION } from './file-upload';
6
+ import { distinctUntilChanged } from 'rxjs/operators';
6
7
  import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/cdk/a11y";
8
+ import * as i1 from "@angular/forms";
8
9
  import * as i2 from "@angular/common";
9
10
  import * as i3 from "@koobiq/components/progress-spinner";
10
11
  import * as i4 from "@koobiq/components/icon";
11
12
  import * as i5 from "@koobiq/components/form-field";
12
13
  import * as i6 from "@koobiq/components/ellipsis-center";
13
- import * as i7 from "./file-drop";
14
- import * as i8 from "@koobiq/components/core";
14
+ import * as i7 from "@koobiq/components/link";
15
+ import * as i8 from "./file-drop";
16
+ import * as i9 from "@koobiq/components/core";
15
17
  let nextSingleFileUploadUniqueId = 0;
16
18
  export const KBQ_SINGLE_FILE_UPLOAD_DEFAULT_CONFIGURATION = ruRULocaleData.fileUpload.single;
17
19
  export class KbqSingleFileUploadComponent {
20
+ get file() {
21
+ return this._file;
22
+ }
23
+ set file(currentFile) {
24
+ this._file = currentFile;
25
+ this.cvaOnChange(this._file);
26
+ this.fileQueueChange.emit(this._file);
27
+ this.cdr.markForCheck();
28
+ }
18
29
  get acceptedFiles() {
19
- return this.accept && this.accept.length > 0 ? this.accept.map((ext) => `.${ext}`).join(',') : '*/*';
30
+ return this.accept?.join(',') || '*/*';
20
31
  }
21
- constructor(focusMonitor, cdr, renderer, configuration, localeService) {
22
- this.focusMonitor = focusMonitor;
32
+ constructor(cdr, renderer, configuration, localeService, ngControl) {
23
33
  this.cdr = cdr;
24
34
  this.renderer = renderer;
25
35
  this.configuration = configuration;
26
36
  this.localeService = localeService;
37
+ this.ngControl = ngControl;
38
+ /**
39
+ * A value responsible for progress spinner type.
40
+ * Loading logic depends on selected mode */
41
+ this.progressMode = 'determinate';
27
42
  this.disabled = false;
28
43
  this.errors = [];
29
- this.files = [];
30
44
  this.inputId = `kbq-single-file-upload-${nextSingleFileUploadUniqueId++}`;
31
- this.fileQueueChanged = new EventEmitter();
32
- this.hasFocus = false;
33
- this.focusMonitorSubscription = Subscription.EMPTY;
45
+ this._file = null;
46
+ this.fileQueueChange = new EventEmitter();
47
+ this.statusChangeSubscription = Subscription.EMPTY;
48
+ /** cvaOnChange function registered via registerOnChange (ControlValueAccessor). */
49
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
50
+ this.cvaOnChange = (_) => { };
51
+ /** onTouch function registered via registerOnTouch (ControlValueAccessor). */
52
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
53
+ this.onTouched = () => { };
34
54
  this.updateLocaleParams = () => {
35
55
  this.config = this.configuration || this.localeService?.getParams('fileUpload').multiple;
36
56
  this.getCaptionText();
@@ -41,13 +61,50 @@ export class KbqSingleFileUploadComponent {
41
61
  if (!localeService) {
42
62
  this.initDefaultParams();
43
63
  }
64
+ if (this.ngControl) {
65
+ // Note: we provide the value accessor through here, instead of
66
+ // the `providers` to avoid running into a circular import.
67
+ this.ngControl.valueAccessor = this;
68
+ }
44
69
  }
45
70
  ngAfterViewInit() {
46
- this.focusMonitorSubscription = this.focusMonitor.monitor(this.input)
47
- .subscribe((origin) => this.onFocus(origin === 'keyboard'));
71
+ // FormControl specific errors update
72
+ this.statusChangeSubscription = this.ngControl?.statusChanges?.pipe(distinctUntilChanged())
73
+ .subscribe((status) => {
74
+ if (this._file) {
75
+ this._file.hasError = status === 'INVALID';
76
+ }
77
+ this.errors = Object.values(this.ngControl?.errors || {});
78
+ this.cdr.markForCheck();
79
+ });
48
80
  }
49
81
  ngOnDestroy() {
50
- this.focusMonitorSubscription.unsubscribe();
82
+ this.statusChangeSubscription?.unsubscribe();
83
+ }
84
+ /** Implemented as part of ControlValueAccessor.
85
+ * @docs-private */
86
+ writeValue(file) {
87
+ if (file instanceof File) {
88
+ this.file = this.mapToFileItem(file);
89
+ }
90
+ else {
91
+ this.file = file;
92
+ }
93
+ }
94
+ /** Implemented as part of ControlValueAccessor.
95
+ * @docs-private */
96
+ registerOnChange(fn) { this.cvaOnChange = fn; }
97
+ /** Implemented as part of ControlValueAccessor.
98
+ * @docs-private */
99
+ registerOnTouched(fn) { this.onTouched = fn; }
100
+ /**
101
+ * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.
102
+ * @param isDisabled Whether the control should be disabled.
103
+ * @docs-private
104
+ */
105
+ setDisabledState(isDisabled) {
106
+ this.disabled = isDisabled;
107
+ this.cdr.markForCheck();
51
108
  }
52
109
  onFileSelectedViaClick({ target }) {
53
110
  if (this.disabled) {
@@ -55,9 +112,9 @@ export class KbqSingleFileUploadComponent {
55
112
  }
56
113
  const files = target.files;
57
114
  if (files?.length) {
58
- this.files = [this.mapToFileItem(files[0])];
59
- this.fileQueueChanged.emit(this.files[0]);
115
+ this.file = this.mapToFileItem(files[0]);
60
116
  }
117
+ this.onTouched();
61
118
  /* even if the user selects the same file,
62
119
  the onchange event will be triggered every time user clicks on the control.*/
63
120
  this.renderer.setProperty(this.input.nativeElement, 'value', null);
@@ -67,48 +124,41 @@ export class KbqSingleFileUploadComponent {
67
124
  return;
68
125
  }
69
126
  event?.stopPropagation();
70
- this.files = [];
127
+ this.file = null;
71
128
  this.errors = [];
72
- this.fileQueueChanged.emit(null);
129
+ // mark as touched after file drop even if file wasn't correct
130
+ this.onTouched();
73
131
  }
74
132
  onFileDropped(files) {
75
133
  if (this.disabled) {
76
134
  return;
77
135
  }
78
- if (this.isCorrectExtension(files[0])) {
79
- this.files = Array.from(files)
80
- .map((file) => this.mapToFileItem(file));
81
- this.fileQueueChanged.emit(this.files[0]);
82
- }
83
- }
84
- onFocus(focusState) {
85
- if (this.disabled) {
86
- return;
136
+ if (files?.length && isCorrectExtension(files[0], this.accept)) {
137
+ this.file = this.mapToFileItem(files[0]);
138
+ this.fileQueueChange.emit(this.file);
87
139
  }
88
- this.hasFocus = focusState;
89
- this.cdr.markForCheck();
140
+ // mark as touched after file drop even if file wasn't correct
141
+ this.onTouched();
90
142
  }
91
143
  mapToFileItem(file) {
92
- this.validateFile(file);
93
144
  return {
94
145
  file,
146
+ hasError: this.validateFile(file),
95
147
  progress: new BehaviorSubject(0),
96
148
  loading: new BehaviorSubject(false)
97
149
  };
98
150
  }
99
151
  validateFile(file) {
100
- if (this.customValidation && this.customValidation.length) {
101
- this.errors = this.customValidation
102
- .reduce((errors, validatorFn) => {
103
- errors.push(validatorFn(file));
104
- return errors;
105
- }, [])
106
- .filter(Boolean);
152
+ if (!this.customValidation?.length) {
153
+ return;
107
154
  }
108
- }
109
- isCorrectExtension(file) {
110
- const fileExt = file.name.split('.').pop() || '';
111
- return this.acceptedFiles !== '*/*' && this.acceptedFiles.length > 0 ? this.acceptedFiles.includes(fileExt) : true;
155
+ this.errors = this.customValidation
156
+ .reduce((errors, validatorFn) => {
157
+ errors.push(validatorFn(file));
158
+ return errors;
159
+ }, [])
160
+ .filter(Boolean);
161
+ return !!this.errors.length;
112
162
  }
113
163
  initDefaultParams() {
114
164
  this.config = KBQ_SINGLE_FILE_UPLOAD_DEFAULT_CONFIGURATION;
@@ -117,40 +167,46 @@ export class KbqSingleFileUploadComponent {
117
167
  getCaptionText() {
118
168
  this.separatedCaptionText = this.config.captionText.split('{{ browseLink }}');
119
169
  }
120
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqSingleFileUploadComponent, deps: [{ token: i1.FocusMonitor }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: KBQ_FILE_UPLOAD_CONFIGURATION, optional: true }, { token: KBQ_LOCALE_SERVICE, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
121
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.0", type: KbqSingleFileUploadComponent, selector: "kbq-single-file-upload", inputs: { accept: "accept", disabled: "disabled", errors: "errors", files: "files", inputId: "inputId", customValidation: "customValidation" }, outputs: { fileQueueChanged: "fileQueueChanged" }, host: { classAttribute: "kbq-single-file-upload" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<div class=\"kbq-file-upload\"\n kbqFileDrop\n [class.kbq-disabled]=\"disabled\"\n [class.kbq-error]=\"errors?.length\"\n (filesDropped)=\"onFileDropped($event)\">\n\n <div class=\"dropzone\" *ngIf=\"!files.length; else fileOutput\">\n <i kbq-icon=\"mc-upload-to-cloud_24\"></i>\n <span class=\"dropzone__text\">\n {{ separatedCaptionText[0] }}<label class=\"kbq-link\" [class.kbq-focused]=\"hasFocus\" [for]=\"inputId\">{{ config.browseLink }}</label>{{ separatedCaptionText[1] }}\n </span>\n </div>\n\n <input #input\n type=\"file\"\n class=\"cdk-visually-hidden\"\n [id]=\"inputId\"\n [accept]=\"acceptedFiles\"\n [disabled]=\"disabled\"\n (change)=\"onFileSelectedViaClick($event)\">\n</div>\n<kbq-hint class=\"kbq-file-upload__hint\">\n <ng-content select=\"[hint]\"></ng-content>\n</kbq-hint>\n<ng-container *ngIf=\"errors?.length\">\n <kbq-hint class=\"kbq-file-upload__hint kbq-error\" *ngFor=\"let error of errors\">{{ error }}</kbq-hint>\n</ng-container>\n\n\n<ng-template #fileOutput>\n <div class=\"file-item\" *ngIf=\"files && files.length\">\n <div class=\"file-item__text-wrapper\">\n <ng-container *ngIf=\"{ loading: files[0].loading | async, progress: files[0].progress | async} as asyncData\">\n <ng-container *ngIf=\"!asyncData.loading\">\n <ng-content select=\"[kbq-icon]\"></ng-content>\n </ng-container>\n\n <kbq-progress-spinner\n [value]=\"asyncData.progress || 0\"\n *ngIf=\"asyncData.loading\"\n ></kbq-progress-spinner>\n </ng-container>\n\n <div class=\"file-item__text\" [kbqEllipsisCenter]=\"files[0].file.name\" [minVisibleLength]=\"10\"></div>\n </div>\n <i kbq-icon-button=\"mc-close-circle_16\"\n [color]=\"'contrast'\"\n [disabled]=\"disabled\"\n (keydown.delete)=\"deleteItem()\"\n (keydown.backspace)=\"deleteItem()\"\n (click)=\"deleteItem($event)\">\n </i>\n </div>\n</ng-template>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:29px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 10px,#ffffff0a 10px 20px,#0000000a 20px 30px,#ffffff0a 31px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-file-upload{box-sizing:border-box;display:flex;align-items:center;position:relative}.kbq-file-upload .dropzone,.kbq-file-upload .file-item{display:flex;align-items:center}.kbq-file-upload .kbq-ellipsis-center{position:relative;display:flex}.kbq-file-upload .kbq-ellipsis-center .data-text-start{flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:pre}.kbq-file-upload .kbq-ellipsis-center .data-text-end{flex:1 0 auto;overflow:hidden;white-space:pre}\n", "@keyframes kbq-progress{0%{background-position:0 0}to{background-position:29px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 10px,#ffffff0a 10px 20px,#0000000a 20px 30px,#ffffff0a 31px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-single-file-upload .kbq-file-upload{padding:calc(var(--kbq-file-upload-size-single-container-padding-vertical, 12px) - 1px) calc(var(--kbq-file-upload-size-single-container-padding-horizontal, 12px) - 1px);border-radius:var(--kbq-file-upload-size-single-container-border-radius, 8px);border-width:var(--kbq-file-upload-size-single-container-border-width, 1px);border-style:dashed}.kbq-single-file-upload .kbq-file-upload .dropzone__text{padding-top:var(--kbq-file-upload-size-single-text-block-padding-vertical, 4px);padding-bottom:var(--kbq-file-upload-size-single-text-block-padding-vertical, 4px);gap:var(--kbq-file-upload-size-single-text-block-content-gap-horizontal, 4px)}.kbq-single-file-upload .kbq-file-upload .dropzone{gap:var(--kbq-file-upload-size-single-container-content-gap-horizontal, 8px)}.kbq-single-file-upload .kbq-file-upload .file-item{width:100%}.kbq-single-file-upload .kbq-file-upload .file-item .file-item__text-wrapper{display:flex;align-items:center;width:100%;gap:var(--kbq-file-upload-size-single-container-content-gap-horizontal, 8px)}.kbq-single-file-upload .kbq-file-upload .file-item .file-item__text-wrapper .file-item__text{width:120px;flex-grow:1}.kbq-hint{display:block}.kbq-file-upload__hint{margin-top:var(--kbq-form-field-hint-size-margin-top, 4px)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.KbqProgressSpinner, selector: "kbq-progress-spinner", inputs: ["color", "id", "value", "mode", "size"] }, { kind: "component", type: i4.KbqIcon, selector: "[kbq-icon]", inputs: ["color", "small", "autoColor"] }, { kind: "component", type: i4.KbqIconButton, selector: "[kbq-icon-button]", inputs: ["color", "small", "tabindex", "disabled"] }, { kind: "component", type: i5.KbqHint, selector: "kbq-hint", inputs: ["color", "id", "fillTextOff", "compact"], exportAs: ["kbqHint"] }, { kind: "directive", type: i6.KbqEllipsisCenterDirective, selector: "[kbqEllipsisCenter]", inputs: ["kbqEllipsisCenter", "minVisibleLength"] }, { kind: "directive", type: i7.KbqFileDropDirective, selector: "[kbqFileDrop]", outputs: ["filesDropped"], exportAs: ["kbqFileDrop"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
170
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqSingleFileUploadComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: KBQ_FILE_UPLOAD_CONFIGURATION, optional: true }, { token: KBQ_LOCALE_SERVICE, optional: true }, { token: i1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
171
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.0", type: KbqSingleFileUploadComponent, selector: "kbq-single-file-upload,kbq-file-upload:not([multiple])", inputs: { progressMode: "progressMode", accept: "accept", disabled: "disabled", errors: "errors", inputId: "inputId", customValidation: "customValidation", file: "file" }, outputs: { fileQueueChange: "fileQueueChange" }, host: { classAttribute: "kbq-single-file-upload" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<div class=\"kbq-file-upload\"\n kbqFileDrop\n [class.kbq-disabled]=\"disabled\"\n [class.kbq-error]=\"errors?.length\"\n (filesDropped)=\"onFileDropped($event)\">\n\n <div class=\"dropzone\" *ngIf=\"!file; else fileOutput\">\n <i kbq-icon=\"mc-upload-to-cloud_24\"></i>\n <span class=\"dropzone__text\">\n {{ separatedCaptionText[0] }}<label kbq-link pseudo [disabled]=\"disabled\" [tabIndex]=\"-1\" [for]=\"inputId\">{{ config.browseLink }}<input #input type=\"file\" class=\"cdk-visually-hidden\" [id]=\"inputId\" [accept]=\"acceptedFiles\" [disabled]=\"disabled\" (change)=\"onFileSelectedViaClick($event)\"></label>{{ separatedCaptionText[1] }}\n </span>\n </div>\n</div>\n\n<kbq-hint class=\"kbq-file-upload__hint\">\n <ng-content select=\"[hint]\"></ng-content>\n</kbq-hint>\n<ng-container *ngIf=\"errors?.length\">\n <kbq-hint class=\"kbq-file-upload__hint kbq-error\" *ngFor=\"let error of errors\">{{ error }}</kbq-hint>\n</ng-container>\n\n<ng-template #fileOutput>\n <div class=\"file-item\" *ngIf=\"file\">\n <div class=\"file-item__text-wrapper\">\n <ng-container *ngIf=\"{ loading: file.loading | async, progress: file.progress | async} as asyncData\">\n <ng-container *ngIf=\"!asyncData.loading\">\n <ng-content select=\"[kbq-icon]\"></ng-content>\n </ng-container>\n\n <kbq-progress-spinner\n [mode]=\"progressMode\"\n [value]=\"asyncData.progress || 0\"\n *ngIf=\"asyncData.loading\"\n ></kbq-progress-spinner>\n </ng-container>\n\n <div class=\"file-item__text\" [kbqEllipsisCenter]=\"file.file.name\" [minVisibleLength]=\"10\"></div>\n </div>\n <i kbq-icon-button=\"mc-close-circle_16\"\n [color]=\"'contrast'\"\n [disabled]=\"disabled\"\n (keydown.delete)=\"deleteItem()\"\n (keydown.backspace)=\"deleteItem()\"\n (click)=\"deleteItem($event)\">\n </i>\n </div>\n</ng-template>\n", styles: [".kbq-file-upload{box-sizing:border-box;display:flex;align-items:center;position:relative}.kbq-file-upload .dropzone,.kbq-file-upload .file-item{display:flex;align-items:center}.kbq-file-upload .kbq-ellipsis-center{position:relative;display:flex}.kbq-file-upload .kbq-ellipsis-center .data-text-start{flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:pre}.kbq-file-upload .kbq-ellipsis-center .data-text-end{flex:1 0 auto;overflow:hidden;white-space:pre}\n", "@keyframes kbq-progress{0%{background-position:0 0}to{background-position:29px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 10px,#ffffff0a 10px 20px,#0000000a 20px 30px,#ffffff0a 31px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-single-file-upload .kbq-file-upload{padding:calc(var(--kbq-file-upload-size-single-container-padding-vertical, 12px) - 1px) calc(var(--kbq-file-upload-size-single-container-padding-horizontal, 12px) - 1px);border-radius:var(--kbq-file-upload-size-single-container-border-radius, 8px);border-width:var(--kbq-file-upload-size-single-container-border-width, 1px);border-style:dashed}.kbq-single-file-upload .kbq-file-upload .dropzone__text{padding-top:var(--kbq-file-upload-size-single-text-block-padding-vertical, 2px);padding-bottom:var(--kbq-file-upload-size-single-text-block-padding-vertical, 2px);gap:var(--kbq-file-upload-size-single-text-block-content-gap-horizontal, 4px)}.kbq-single-file-upload .kbq-file-upload .dropzone{gap:var(--kbq-file-upload-size-single-container-content-gap-horizontal, 8px)}.kbq-single-file-upload .kbq-file-upload .file-item{width:100%}.kbq-single-file-upload .kbq-file-upload .file-item .file-item__text-wrapper{display:flex;align-items:center;width:100%;gap:var(--kbq-file-upload-size-single-container-content-gap-horizontal, 8px)}.kbq-single-file-upload .kbq-file-upload .file-item .file-item__text-wrapper .file-item__text{width:120px;flex-grow:1}.kbq-hint{display:block}.kbq-file-upload__hint{margin-top:var(--kbq-form-field-hint-size-margin-top, 4px)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.KbqProgressSpinner, selector: "kbq-progress-spinner", inputs: ["color", "id", "value", "mode", "size"] }, { kind: "component", type: i4.KbqIcon, selector: "[kbq-icon]", inputs: ["color", "small", "autoColor"] }, { kind: "component", type: i4.KbqIconButton, selector: "[kbq-icon-button]", inputs: ["color", "small", "tabindex", "disabled"] }, { kind: "component", type: i5.KbqHint, selector: "kbq-hint", inputs: ["color", "id", "fillTextOff", "compact"], exportAs: ["kbqHint"] }, { kind: "directive", type: i6.KbqEllipsisCenterDirective, selector: "[kbqEllipsisCenter]", inputs: ["kbqEllipsisCenter", "minVisibleLength"] }, { kind: "directive", type: i7.KbqLink, selector: "[kbq-link]", inputs: ["tabIndex", "disabled", "pseudo", "noUnderline", "big", "compact", "useVisited", "print"], exportAs: ["kbqLink"] }, { kind: "directive", type: i8.KbqFileDropDirective, selector: "[kbqFileDrop]", outputs: ["filesDropped"], exportAs: ["kbqFileDrop"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
122
172
  }
123
173
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqSingleFileUploadComponent, decorators: [{
124
174
  type: Component,
125
- args: [{ selector: 'kbq-single-file-upload', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
175
+ args: [{ selector: 'kbq-single-file-upload,kbq-file-upload:not([multiple])', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
126
176
  class: 'kbq-single-file-upload'
127
- }, template: "<div class=\"kbq-file-upload\"\n kbqFileDrop\n [class.kbq-disabled]=\"disabled\"\n [class.kbq-error]=\"errors?.length\"\n (filesDropped)=\"onFileDropped($event)\">\n\n <div class=\"dropzone\" *ngIf=\"!files.length; else fileOutput\">\n <i kbq-icon=\"mc-upload-to-cloud_24\"></i>\n <span class=\"dropzone__text\">\n {{ separatedCaptionText[0] }}<label class=\"kbq-link\" [class.kbq-focused]=\"hasFocus\" [for]=\"inputId\">{{ config.browseLink }}</label>{{ separatedCaptionText[1] }}\n </span>\n </div>\n\n <input #input\n type=\"file\"\n class=\"cdk-visually-hidden\"\n [id]=\"inputId\"\n [accept]=\"acceptedFiles\"\n [disabled]=\"disabled\"\n (change)=\"onFileSelectedViaClick($event)\">\n</div>\n<kbq-hint class=\"kbq-file-upload__hint\">\n <ng-content select=\"[hint]\"></ng-content>\n</kbq-hint>\n<ng-container *ngIf=\"errors?.length\">\n <kbq-hint class=\"kbq-file-upload__hint kbq-error\" *ngFor=\"let error of errors\">{{ error }}</kbq-hint>\n</ng-container>\n\n\n<ng-template #fileOutput>\n <div class=\"file-item\" *ngIf=\"files && files.length\">\n <div class=\"file-item__text-wrapper\">\n <ng-container *ngIf=\"{ loading: files[0].loading | async, progress: files[0].progress | async} as asyncData\">\n <ng-container *ngIf=\"!asyncData.loading\">\n <ng-content select=\"[kbq-icon]\"></ng-content>\n </ng-container>\n\n <kbq-progress-spinner\n [value]=\"asyncData.progress || 0\"\n *ngIf=\"asyncData.loading\"\n ></kbq-progress-spinner>\n </ng-container>\n\n <div class=\"file-item__text\" [kbqEllipsisCenter]=\"files[0].file.name\" [minVisibleLength]=\"10\"></div>\n </div>\n <i kbq-icon-button=\"mc-close-circle_16\"\n [color]=\"'contrast'\"\n [disabled]=\"disabled\"\n (keydown.delete)=\"deleteItem()\"\n (keydown.backspace)=\"deleteItem()\"\n (click)=\"deleteItem($event)\">\n </i>\n </div>\n</ng-template>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:29px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 10px,#ffffff0a 10px 20px,#0000000a 20px 30px,#ffffff0a 31px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-file-upload{box-sizing:border-box;display:flex;align-items:center;position:relative}.kbq-file-upload .dropzone,.kbq-file-upload .file-item{display:flex;align-items:center}.kbq-file-upload .kbq-ellipsis-center{position:relative;display:flex}.kbq-file-upload .kbq-ellipsis-center .data-text-start{flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:pre}.kbq-file-upload .kbq-ellipsis-center .data-text-end{flex:1 0 auto;overflow:hidden;white-space:pre}\n", "@keyframes kbq-progress{0%{background-position:0 0}to{background-position:29px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 10px,#ffffff0a 10px 20px,#0000000a 20px 30px,#ffffff0a 31px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-single-file-upload .kbq-file-upload{padding:calc(var(--kbq-file-upload-size-single-container-padding-vertical, 12px) - 1px) calc(var(--kbq-file-upload-size-single-container-padding-horizontal, 12px) - 1px);border-radius:var(--kbq-file-upload-size-single-container-border-radius, 8px);border-width:var(--kbq-file-upload-size-single-container-border-width, 1px);border-style:dashed}.kbq-single-file-upload .kbq-file-upload .dropzone__text{padding-top:var(--kbq-file-upload-size-single-text-block-padding-vertical, 4px);padding-bottom:var(--kbq-file-upload-size-single-text-block-padding-vertical, 4px);gap:var(--kbq-file-upload-size-single-text-block-content-gap-horizontal, 4px)}.kbq-single-file-upload .kbq-file-upload .dropzone{gap:var(--kbq-file-upload-size-single-container-content-gap-horizontal, 8px)}.kbq-single-file-upload .kbq-file-upload .file-item{width:100%}.kbq-single-file-upload .kbq-file-upload .file-item .file-item__text-wrapper{display:flex;align-items:center;width:100%;gap:var(--kbq-file-upload-size-single-container-content-gap-horizontal, 8px)}.kbq-single-file-upload .kbq-file-upload .file-item .file-item__text-wrapper .file-item__text{width:120px;flex-grow:1}.kbq-hint{display:block}.kbq-file-upload__hint{margin-top:var(--kbq-form-field-hint-size-margin-top, 4px)}\n"] }]
128
- }], ctorParameters: () => [{ type: i1.FocusMonitor }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
177
+ }, template: "<div class=\"kbq-file-upload\"\n kbqFileDrop\n [class.kbq-disabled]=\"disabled\"\n [class.kbq-error]=\"errors?.length\"\n (filesDropped)=\"onFileDropped($event)\">\n\n <div class=\"dropzone\" *ngIf=\"!file; else fileOutput\">\n <i kbq-icon=\"mc-upload-to-cloud_24\"></i>\n <span class=\"dropzone__text\">\n {{ separatedCaptionText[0] }}<label kbq-link pseudo [disabled]=\"disabled\" [tabIndex]=\"-1\" [for]=\"inputId\">{{ config.browseLink }}<input #input type=\"file\" class=\"cdk-visually-hidden\" [id]=\"inputId\" [accept]=\"acceptedFiles\" [disabled]=\"disabled\" (change)=\"onFileSelectedViaClick($event)\"></label>{{ separatedCaptionText[1] }}\n </span>\n </div>\n</div>\n\n<kbq-hint class=\"kbq-file-upload__hint\">\n <ng-content select=\"[hint]\"></ng-content>\n</kbq-hint>\n<ng-container *ngIf=\"errors?.length\">\n <kbq-hint class=\"kbq-file-upload__hint kbq-error\" *ngFor=\"let error of errors\">{{ error }}</kbq-hint>\n</ng-container>\n\n<ng-template #fileOutput>\n <div class=\"file-item\" *ngIf=\"file\">\n <div class=\"file-item__text-wrapper\">\n <ng-container *ngIf=\"{ loading: file.loading | async, progress: file.progress | async} as asyncData\">\n <ng-container *ngIf=\"!asyncData.loading\">\n <ng-content select=\"[kbq-icon]\"></ng-content>\n </ng-container>\n\n <kbq-progress-spinner\n [mode]=\"progressMode\"\n [value]=\"asyncData.progress || 0\"\n *ngIf=\"asyncData.loading\"\n ></kbq-progress-spinner>\n </ng-container>\n\n <div class=\"file-item__text\" [kbqEllipsisCenter]=\"file.file.name\" [minVisibleLength]=\"10\"></div>\n </div>\n <i kbq-icon-button=\"mc-close-circle_16\"\n [color]=\"'contrast'\"\n [disabled]=\"disabled\"\n (keydown.delete)=\"deleteItem()\"\n (keydown.backspace)=\"deleteItem()\"\n (click)=\"deleteItem($event)\">\n </i>\n </div>\n</ng-template>\n", styles: [".kbq-file-upload{box-sizing:border-box;display:flex;align-items:center;position:relative}.kbq-file-upload .dropzone,.kbq-file-upload .file-item{display:flex;align-items:center}.kbq-file-upload .kbq-ellipsis-center{position:relative;display:flex}.kbq-file-upload .kbq-ellipsis-center .data-text-start{flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:pre}.kbq-file-upload .kbq-ellipsis-center .data-text-end{flex:1 0 auto;overflow:hidden;white-space:pre}\n", "@keyframes kbq-progress{0%{background-position:0 0}to{background-position:29px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 10px,#ffffff0a 10px 20px,#0000000a 20px 30px,#ffffff0a 31px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-single-file-upload .kbq-file-upload{padding:calc(var(--kbq-file-upload-size-single-container-padding-vertical, 12px) - 1px) calc(var(--kbq-file-upload-size-single-container-padding-horizontal, 12px) - 1px);border-radius:var(--kbq-file-upload-size-single-container-border-radius, 8px);border-width:var(--kbq-file-upload-size-single-container-border-width, 1px);border-style:dashed}.kbq-single-file-upload .kbq-file-upload .dropzone__text{padding-top:var(--kbq-file-upload-size-single-text-block-padding-vertical, 2px);padding-bottom:var(--kbq-file-upload-size-single-text-block-padding-vertical, 2px);gap:var(--kbq-file-upload-size-single-text-block-content-gap-horizontal, 4px)}.kbq-single-file-upload .kbq-file-upload .dropzone{gap:var(--kbq-file-upload-size-single-container-content-gap-horizontal, 8px)}.kbq-single-file-upload .kbq-file-upload .file-item{width:100%}.kbq-single-file-upload .kbq-file-upload .file-item .file-item__text-wrapper{display:flex;align-items:center;width:100%;gap:var(--kbq-file-upload-size-single-container-content-gap-horizontal, 8px)}.kbq-single-file-upload .kbq-file-upload .file-item .file-item__text-wrapper .file-item__text{width:120px;flex-grow:1}.kbq-hint{display:block}.kbq-file-upload__hint{margin-top:var(--kbq-form-field-hint-size-margin-top, 4px)}\n"] }]
178
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
129
179
  type: Optional
130
180
  }, {
131
181
  type: Inject,
132
182
  args: [KBQ_FILE_UPLOAD_CONFIGURATION]
133
- }] }, { type: i8.KbqLocaleService, decorators: [{
183
+ }] }, { type: i9.KbqLocaleService, decorators: [{
134
184
  type: Optional
135
185
  }, {
136
186
  type: Inject,
137
187
  args: [KBQ_LOCALE_SERVICE]
138
- }] }], propDecorators: { accept: [{
188
+ }] }, { type: i1.NgControl, decorators: [{
189
+ type: Optional
190
+ }, {
191
+ type: Self
192
+ }] }], propDecorators: { progressMode: [{
193
+ type: Input
194
+ }], accept: [{
139
195
  type: Input
140
196
  }], disabled: [{
141
197
  type: Input
142
198
  }], errors: [{
143
199
  type: Input
144
- }], files: [{
145
- type: Input
146
200
  }], inputId: [{
147
201
  type: Input
148
202
  }], customValidation: [{
149
203
  type: Input
150
- }], fileQueueChanged: [{
204
+ }], file: [{
205
+ type: Input
206
+ }], fileQueueChange: [{
151
207
  type: Output
152
208
  }], input: [{
153
209
  type: ViewChild,
154
210
  args: ['input']
155
211
  }] } });
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLWZpbGUtdXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZmlsZS11cGxvYWQvc2luZ2xlLWZpbGUtdXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZmlsZS11cGxvYWQvc2luZ2xlLWZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNTLGtCQUFrQixFQUFFLGdCQUFnQixFQUNoRCxjQUFjLEVBQ2pCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckQsT0FBTyxFQUNILDZCQUE2QixFQU1oQyxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7OztBQUd2QixJQUFJLDRCQUE0QixHQUFHLENBQUMsQ0FBQztBQUVyQyxNQUFNLENBQUMsTUFBTSw0Q0FBNEMsR0FDckQsY0FBYyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7QUFhckMsTUFBTSxPQUFPLDRCQUE0QjtJQW1CckMsSUFBSSxhQUFhO1FBQ2IsT0FBTyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFXLEVBQUUs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UUFBUTs7MEJBQUksTUFBTTsyQkFBQyw2QkFBNkI7OzBCQUNoRCxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQjt5Q0EzQmpDLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDSSxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBRWEsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDYW5EaXNhYmxlLCBLQlFfTE9DQUxFX1NFUlZJQ0UsIEticUxvY2FsZVNlcnZpY2UsXG4gICAgcnVSVUxvY2FsZURhdGFcbn0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgICBLQlFfRklMRV9VUExPQURfQ09ORklHVVJBVElPTixcbiAgICBLYnFGaWxlLFxuICAgIEticUZpbGVJdGVtLFxuICAgIEticUZpbGVWYWxpZGF0b3JGbixcbiAgICBLYnFJbnB1dEZpbGUsXG4gICAgS2JxSW5wdXRGaWxlTGFiZWxcbn0gZnJvbSAnLi9maWxlLXVwbG9hZCc7XG5cblxubGV0IG5leHRTaW5nbGVGaWxlVXBsb2FkVW5pcXVlSWQgPSAwO1xuXG5leHBvcnQgY29uc3QgS0JRX1NJTkdMRV9GSUxFX1VQTE9BRF9ERUZBVUxUX0NPTkZJR1VSQVRJT046IEticUlucHV0RmlsZUxhYmVsID1cbiAgICBydVJVTG9jYWxlRGF0YS5maWxlVXBsb2FkLnNpbmdsZTtcblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ticS1zaW5nbGUtZmlsZS11cGxvYWQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zaW5nbGUtZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZpbGUtdXBsb2FkLnNjc3MnLCAnLi9zaW5nbGUtZmlsZS11cGxvYWQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdrYnEtc2luZ2xlLWZpbGUtdXBsb2FkJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxU2luZ2xlRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgS2JxSW5wdXRGaWxlLCBDYW5EaXNhYmxlIHtcbiAgICBASW5wdXQoKSBhY2NlcHQ6IHN0cmluZ1tdO1xuICAgIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuICAgIEBJbnB1dCgpIGZpbGVzOiBLYnFGaWxlSXRlbVtdID0gW107XG4gICAgQElucHV0KCkgaW5wdXRJZDogc3RyaW5nID0gYGticS1zaW5nbGUtZmlsZS11cGxvYWQtJHtuZXh0U2luZ2xlRmlsZVVwbG9hZFVuaXF1ZUlkKyt9YDtcbiAgICBASW5wdXQoKSBjdXN0b21WYWxpZGF0aW9uPzogS2JxRmlsZVZhbGlkYXRvckZuW107XG4gICAgQE91dHB1dCgpIGZpbGVRdWV1ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxLYnFGaWxlSXRlbSB8IG51bGw+ID0gbmV3IEV2ZW50RW1pdHRlcjxLYnFGaWxlSXRlbSB8IG51bGw+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gICAgaGFzRm9jdXMgPSBmYWxzZTtcblxuICAgIGNvbmZpZzogS2JxSW5wdXRGaWxlTGFiZWxcblxuICAgIHNlcGFyYXRlZENhcHRpb25UZXh0OiBzdHJpbmdbXTtcblxuICAgIHByaXZhdGUgZm9jdXNNb25pdG9yU3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuXG4gICAgZ2V0IGFjY2VwdGVkRmlsZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWNjZXB0ICYmIHRoaXMuYWNjZXB0Lmxlbmd0aCA+IDAgPyB0aGlzLmFjY2VwdC5tYXAoKGV4dDogc3RyaW5nKSA9PiBgLiR7ZXh0fWApLmpvaW4oJywnKSA6ICcqLyonO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChLQlFfRklMRV9VUExPQURfQ09ORklHVVJBVElPTikgcHVibGljIHJlYWRvbmx5IGNvbmZpZ3VyYXRpb246IEticUlucHV0RmlsZUxhYmVsLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEtCUV9MT0NBTEVfU0VSVklDRSkgcHJpdmF0ZSBsb2NhbGVTZXJ2aWNlPzogS2JxTG9jYWxlU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLmxvY2FsZVNlcnZpY2U/LmNoYW5nZXNcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodGhpcy51cGRhdGVMb2NhbGVQYXJhbXMpO1xuXG4gICAgICAgIGlmICghbG9jYWxlU2VydmljZSkge1xuICAgICAgICAgICAgdGhpcy5pbml0RGVmYXVsdFBhcmFtcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvY3VzTW9uaXRvclN1YnNjcmlwdGlvbiA9IHRoaXMuZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5pbnB1dClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKG9yaWdpbikgPT4gdGhpcy5vbkZvY3VzKG9yaWdpbiA9PT0gJ2tleWJvYXJkJykpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvY3VzTW9uaXRvclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIG9uRmlsZVNlbGVjdGVkVmlhQ2xpY2soeyB0YXJnZXQgfTogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgY29uc3QgZmlsZXM6IEZpbGVMaXN0IHwgbnVsbCA9ICh0YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuZmlsZXM7XG4gICAgICAgIGlmIChmaWxlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVzID0gW3RoaXMubWFwVG9GaWxlSXRlbShmaWxlc1swXSldO1xuICAgICAgICAgICAgdGhpcy5maWxlUXVldWVDaGFuZ2VkLmVtaXQodGhpcy5maWxlc1swXSk7XG4gICAgICAgIH1cbiAgICAgICAgLyogZXZlbiBpZiB0aGUgdXNlciBzZWxlY3RzIHRoZSBzYW1lIGZpbGUsXG4gICAgICAgICB0aGUgb25jaGFuZ2UgZXZlbnQgd2lsbCBiZSB0cmlnZ2VyZWQgZXZlcnkgdGltZSB1c2VyIGNsaWNrcyBvbiB0aGUgY29udHJvbC4qL1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgbnVsbCk7XG4gICAgfVxuXG4gICAgZGVsZXRlSXRlbShldmVudD86IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLmZpbGVzID0gW107XG4gICAgICAgIHRoaXMuZXJyb3JzID0gW107XG4gICAgICAgIHRoaXMuZmlsZVF1ZXVlQ2hhbmdlZC5lbWl0KG51bGwpO1xuICAgIH1cblxuICAgIG9uRmlsZURyb3BwZWQoZmlsZXM6IEZpbGVMaXN0IHwgS2JxRmlsZVtdKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7IHJldHVybjsgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzQ29ycmVjdEV4dGVuc2lvbihmaWxlc1swXSkpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZXMgPSBBcnJheS5mcm9tKGZpbGVzKVxuICAgICAgICAgICAgICAgIC5tYXAoKGZpbGUpID0+IHRoaXMubWFwVG9GaWxlSXRlbShmaWxlKSk7XG5cbiAgICAgICAgICAgIHRoaXMuZmlsZVF1ZXVlQ2hhbmdlZC5lbWl0KHRoaXMuZmlsZXNbMF0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Gb2N1cyhmb2N1c1N0YXRlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7IHJldHVybjsgfVxuICAgICAgICB0aGlzLmhhc0ZvY3VzID0gZm9jdXNTdGF0ZTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVMb2NhbGVQYXJhbXMgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuY29uZmlnID0gdGhpcy5jb25maWd1cmF0aW9uIHx8IHRoaXMubG9jYWxlU2VydmljZT8uZ2V0UGFyYW1zKCdmaWxlVXBsb2FkJykubXVsdGlwbGU7XG5cbiAgICAgICAgdGhpcy5nZXRDYXB0aW9uVGV4dCgpO1xuXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWFwVG9GaWxlSXRlbShmaWxlOiBGaWxlKTogS2JxRmlsZUl0ZW0ge1xuICAgICAgICB0aGlzLnZhbGlkYXRlRmlsZShmaWxlKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZmlsZSxcbiAgICAgICAgICAgIHByb2dyZXNzOiBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCksXG4gICAgICAgICAgICBsb2FkaW5nOiBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVGaWxlKGZpbGU6IEZpbGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tVmFsaWRhdGlvbiAmJiB0aGlzLmN1c3RvbVZhbGlkYXRpb24ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmVycm9ycyA9IHRoaXMuY3VzdG9tVmFsaWRhdGlvblxuICAgICAgICAgICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAgIChlcnJvcnM6IChzdHJpbmcgfCBudWxsKVtdLCB2YWxpZGF0b3JGbjogS2JxRmlsZVZhbGlkYXRvckZuKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMucHVzaCh2YWxpZGF0b3JGbihmaWxlKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcnM7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbikgYXMgc3RyaW5nW107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQ29ycmVjdEV4dGVuc2lvbihmaWxlOiBGaWxlKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGZpbGVFeHQ6IHN0cmluZyA9IGZpbGUubmFtZS5zcGxpdCgnLicpLnBvcCgpIHx8ICcnO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFjY2VwdGVkRmlsZXMgIT09ICcqLyonICYmIHRoaXMuYWNjZXB0ZWRGaWxlcy5sZW5ndGggPiAwID8gdGhpcy5hY2NlcHRlZEZpbGVzLmluY2x1ZGVzKGZpbGVFeHQpIDogdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXREZWZhdWx0UGFyYW1zKCkge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IEtCUV9TSU5HTEVfRklMRV9VUExPQURfREVGQVVMVF9DT05GSUdVUkFUSU9OO1xuXG4gICAgICAgIHRoaXMuZ2V0Q2FwdGlvblRleHQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENhcHRpb25UZXh0KCkge1xuICAgICAgICB0aGlzLnNlcGFyYXRlZENhcHRpb25UZXh0ID0gdGhpcy5jb25maWcuY2FwdGlvblRleHQuc3BsaXQoJ3t7IGJyb3dzZUxpbmsgfX0nKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwia2JxLWZpbGUtdXBsb2FkXCJcbiAgICAga2JxRmlsZURyb3BcbiAgICAgW2NsYXNzLmticS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgIFtjbGFzcy5rYnEtZXJyb3JdPVwiZXJyb3JzPy5sZW5ndGhcIlxuICAgICAoZmlsZXNEcm9wcGVkKT1cIm9uRmlsZURyb3BwZWQoJGV2ZW50KVwiPlxuXG4gICAgPGRpdiBjbGFzcz1cImRyb3B6b25lXCIgKm5nSWY9XCIhZmlsZXMubGVuZ3RoOyBlbHNlIGZpbGVPdXRwdXRcIj5cbiAgICAgICAgPGkga2JxLWljb249XCJtYy11cGxvYWQtdG8tY2xvdWRfMjRcIj48L2k+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcHpvbmVfX3RleHRcIj5cbiAgICAgICAgICAgIHt7IHNlcGFyYXRlZENhcHRpb25UZXh0WzBdIH19PGxhYmVsIGNsYXNzPVwia2JxLWxpbmtcIiBbY2xhc3Mua2JxLWZvY3VzZWRdPVwiaGFzRm9jdXNcIiBbZm9yXT1cImlucHV0SWRcIj57eyBjb25maWcuYnJvd3NlTGluayB9fTwvbGFiZWw+e3sgc2VwYXJhdGVkQ2FwdGlvblRleHRbMV0gfX1cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gICAgPGlucHV0ICNpbnB1dFxuICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgIGNsYXNzPVwiY2RrLXZpc3VhbGx5LWhpZGRlblwiXG4gICAgICAgICAgIFtpZF09XCJpbnB1dElkXCJcbiAgICAgICAgICAgW2FjY2VwdF09XCJhY2NlcHRlZEZpbGVzXCJcbiAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3RlZFZpYUNsaWNrKCRldmVudClcIj5cbjwvZGl2PlxuPGticS1oaW50IGNsYXNzPVwia2JxLWZpbGUtdXBsb2FkX19oaW50XCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2hpbnRdXCI+PC9uZy1jb250ZW50PlxuPC9rYnEtaGludD5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJlcnJvcnM/Lmxlbmd0aFwiPlxuICAgIDxrYnEtaGludCBjbGFzcz1cImticS1maWxlLXVwbG9hZF9faGludCBrYnEtZXJyb3JcIiAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgZXJyb3JzXCI+e3sgZXJyb3IgfX08L2ticS1oaW50PlxuPC9uZy1jb250YWluZXI+XG5cblxuPG5nLXRlbXBsYXRlICNmaWxlT3V0cHV0PlxuICAgIDxkaXYgY2xhc3M9XCJmaWxlLWl0ZW1cIiAqbmdJZj1cImZpbGVzICYmIGZpbGVzLmxlbmd0aFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1pdGVtX190ZXh0LXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ7IGxvYWRpbmc6IGZpbGVzWzBdLmxvYWRpbmcgfCBhc3luYywgcHJvZ3Jlc3M6IGZpbGVzWzBdLnByb2dyZXNzIHwgYXN5bmN9IGFzIGFzeW5jRGF0YVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYXN5bmNEYXRhLmxvYWRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2ticS1pY29uXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxrYnEtcHJvZ3Jlc3Mtc3Bpbm5lclxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiYXN5bmNEYXRhLnByb2dyZXNzIHx8IDBcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFzeW5jRGF0YS5sb2FkaW5nXCJcbiAgICAgICAgICAgICAgICA+PC9rYnEtcHJvZ3Jlc3Mtc3Bpbm5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1pdGVtX190ZXh0XCIgW2ticUVsbGlwc2lzQ2VudGVyXT1cImZpbGVzWzBdLmZpbGUubmFtZVwiIFttaW5WaXNpYmxlTGVuZ3RoXT1cIjEwXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aSBrYnEtaWNvbi1idXR0b249XCJtYy1jbG9zZS1jaXJjbGVfMTZcIlxuICAgICAgICAgICBbY29sb3JdPVwiJ2NvbnRyYXN0J1wiXG4gICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgIChrZXlkb3duLmRlbGV0ZSk9XCJkZWxldGVJdGVtKClcIlxuICAgICAgICAgICAoa2V5ZG93bi5iYWNrc3BhY2UpPVwiZGVsZXRlSXRlbSgpXCJcbiAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUl0ZW0oJGV2ZW50KVwiPlxuICAgICAgICA8L2k+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
212
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLWZpbGUtdXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZmlsZS11cGxvYWQvc2luZ2xlLWZpbGUtdXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZmlsZS11cGxvYWQvc2luZ2xlLWZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQUUsSUFBSSxFQUNmLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNTLGtCQUFrQixFQUFFLGdCQUFnQixFQUNoRCxjQUFjLEVBQ2pCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckQsT0FBTyxFQUEyQyxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRixPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLDZCQUE2QixFQU1oQyxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFHdEQsSUFBSSw0QkFBNEIsR0FBRyxDQUFDLENBQUM7QUFFckMsTUFBTSxDQUFDLE1BQU0sNENBQTRDLEdBQ3JELGNBQWMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO0FBYXJDLE1BQU0sT0FBTyw0QkFBNEI7SUFpQnJDLElBQUksSUFBSTtRQUNKLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFDSSxJQUFJ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Q0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFJRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBU0YsSUFBSTtzQkFEUCxLQUFLO2dCQVFJLGVBQWU7c0JBQXhCLE1BQU07Z0JBRWEsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgUmVuZGVyZXIyLCBTZWxmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQ2FuRGlzYWJsZSwgS0JRX0xPQ0FMRV9TRVJWSUNFLCBLYnFMb2NhbGVTZXJ2aWNlLFxuICAgIHJ1UlVMb2NhbGVEYXRhXG59IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQcm9ncmVzc1NwaW5uZXJNb2RlIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL3Byb2dyZXNzLXNwaW5uZXInO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sU3RhdHVzLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7XG4gICAgaXNDb3JyZWN0RXh0ZW5zaW9uLFxuICAgIEtCUV9GSUxFX1VQTE9BRF9DT05GSUdVUkFUSU9OLFxuICAgIEticUZpbGUsXG4gICAgS2JxRmlsZUl0ZW0sXG4gICAgS2JxRmlsZVZhbGlkYXRvckZuLFxuICAgIEticUlucHV0RmlsZSxcbiAgICBLYnFJbnB1dEZpbGVMYWJlbFxufSBmcm9tICcuL2ZpbGUtdXBsb2FkJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5cbmxldCBuZXh0U2luZ2xlRmlsZVVwbG9hZFVuaXF1ZUlkID0gMDtcblxuZXhwb3J0IGNvbnN0IEtCUV9TSU5HTEVfRklMRV9VUExPQURfREVGQVVMVF9DT05GSUdVUkFUSU9OOiBLYnFJbnB1dEZpbGVMYWJlbCA9XG4gICAgcnVSVUxvY2FsZURhdGEuZmlsZVVwbG9hZC5zaW5nbGU7XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdrYnEtc2luZ2xlLWZpbGUtdXBsb2FkLGticS1maWxlLXVwbG9hZDpub3QoW211bHRpcGxlXSknLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zaW5nbGUtZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZpbGUtdXBsb2FkLnNjc3MnLCAnLi9zaW5nbGUtZmlsZS11cGxvYWQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdrYnEtc2luZ2xlLWZpbGUtdXBsb2FkJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxU2luZ2xlRmlsZVVwbG9hZENvbXBvbmVudFxuICAgIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBLYnFJbnB1dEZpbGUsIENhbkRpc2FibGUsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgICAvKipcbiAgICAgKiBBIHZhbHVlIHJlc3BvbnNpYmxlIGZvciBwcm9ncmVzcyBzcGlubmVyIHR5cGUuXG4gICAgICogTG9hZGluZyBsb2dpYyBkZXBlbmRzIG9uIHNlbGVjdGVkIG1vZGUgKi9cbiAgICBASW5wdXQoKSBwcm9ncmVzc01vZGU6IFByb2dyZXNzU3Bpbm5lck1vZGUgPSAnZGV0ZXJtaW5hdGUnO1xuICAgIEBJbnB1dCgpIGFjY2VwdD86IHN0cmluZ1tdO1xuICAgIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuICAgIEBJbnB1dCgpIGlucHV0SWQ6IHN0cmluZyA9IGBrYnEtc2luZ2xlLWZpbGUtdXBsb2FkLSR7bmV4dFNpbmdsZUZpbGVVcGxvYWRVbmlxdWVJZCsrfWA7XG4gICAgLyoqXG4gICAgICogQWx0ZXJuYXRpdmUgZm9yIEZvcm1Db250cm9sJ3MgdmFsaWRhdGlvblxuICAgICAqL1xuICAgIEBJbnB1dCgpIGN1c3RvbVZhbGlkYXRpb24/OiBLYnFGaWxlVmFsaWRhdG9yRm5bXTtcblxuICAgIHByaXZhdGUgX2ZpbGU6IEticUZpbGVJdGVtIHwgbnVsbCA9IG51bGw7XG5cbiAgICBnZXQgZmlsZSgpOiBLYnFGaWxlSXRlbSB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBmaWxlKGN1cnJlbnRGaWxlOiBLYnFGaWxlSXRlbSB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fZmlsZSA9IGN1cnJlbnRGaWxlO1xuICAgICAgICB0aGlzLmN2YU9uQ2hhbmdlKHRoaXMuX2ZpbGUpO1xuICAgICAgICB0aGlzLmZpbGVRdWV1ZUNoYW5nZS5lbWl0KHRoaXMuX2ZpbGUpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KCkgZmlsZVF1ZXVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8S2JxRmlsZUl0ZW0gfCBudWxsPiA9IG5ldyBFdmVudEVtaXR0ZXI8S2JxRmlsZUl0ZW0gfCBudWxsPigpO1xuXG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAgIGNvbmZpZzogS2JxSW5wdXRGaWxlTGFiZWw7XG5cbiAgICBzZXBhcmF0ZWRDYXB0aW9uVGV4dDogc3RyaW5nW107XG5cbiAgICBzdGF0dXNDaGFuZ2VTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG5cbiAgICAvKiogY3ZhT25DaGFuZ2UgZnVuY3Rpb24gcmVnaXN0ZXJlZCB2aWEgcmVnaXN0ZXJPbkNoYW5nZSAoQ29udHJvbFZhbHVlQWNjZXNzb3IpLiAqL1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgY3ZhT25DaGFuZ2UgPSAoXzogS2JxRmlsZUl0ZW0gfCBudWxsKSA9PiB7fTtcblxuICAgIC8qKiBvblRvdWNoIGZ1bmN0aW9uIHJlZ2lzdGVyZWQgdmlhIHJlZ2lzdGVyT25Ub3VjaCAoQ29udHJvbFZhbHVlQWNjZXNzb3IpLiAqL1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgb25Ub3VjaGVkID0gICgpID0+IHt9O1xuXG4gICAgZ2V0IGFjY2VwdGVkRmlsZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWNjZXB0Py5qb2luKCcsJykgfHwgJyovKic7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEtCUV9GSUxFX1VQTE9BRF9DT05GSUdVUkFUSU9OKSBwdWJsaWMgcmVhZG9ubHkgY29uZmlndXJhdGlvbjogS2JxSW5wdXRGaWxlTGFiZWwsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX0xPQ0FMRV9TRVJWSUNFKSBwcml2YXRlIGxvY2FsZVNlcnZpY2U/OiBLYnFMb2NhbGVTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w/OiBOZ0NvbnRyb2xcbiAgICApIHtcbiAgICAgICAgdGhpcy5sb2NhbGVTZXJ2aWNlPy5jaGFuZ2VzXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHRoaXMudXBkYXRlTG9jYWxlUGFyYW1zKTtcblxuICAgICAgICBpZiAoIWxvY2FsZVNlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdERlZmF1bHRQYXJhbXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgLy8gTm90ZTogd2UgcHJvdmlkZSB0aGUgdmFsdWUgYWNjZXNzb3IgdGhyb3VnaCBoZXJlLCBpbnN0ZWFkIG9mXG4gICAgICAgICAgICAvLyB0aGUgYHByb3ZpZGVyc2AgdG8gYXZvaWQgcnVubmluZyBpbnRvIGEgY2lyY3VsYXIgaW1wb3J0LlxuICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIC8vIEZvcm1Db250cm9sIHNwZWNpZmljIGVycm9ycyB1cGRhdGVcbiAgICAgICAgdGhpcy5zdGF0dXNDaGFuZ2VTdWJzY3JpcHRpb24gPSB0aGlzLm5nQ29udHJvbD8uc3RhdHVzQ2hhbmdlcz8ucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoc3RhdHVzOiBGb3JtQ29udHJvbFN0YXR1cykgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9maWxlKSB7IHRoaXMuX2ZpbGUuaGFzRXJyb3IgPSBzdGF0dXMgPT09ICdJTlZBTElEJzsgfVxuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JzID0gT2JqZWN0LnZhbHVlcyh0aGlzLm5nQ29udHJvbD8uZXJyb3JzIHx8IHt9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnN0YXR1c0NoYW5nZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICAgKiBAZG9jcy1wcml2YXRlICovXG4gICAgd3JpdGVWYWx1ZShmaWxlOiBGaWxlIHwgS2JxRmlsZUl0ZW0gfCBudWxsKTogdm9pZCB7XG4gICAgICAgIGlmIChmaWxlIGluc3RhbmNlb2YgRmlsZSkge1xuICAgICAgICAgICAgdGhpcy5maWxlID0gdGhpcy5tYXBUb0ZpbGVJdGVtKGZpbGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5maWxlID0gZmlsZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgICAqIEBkb2NzLXByaXZhdGUgKi9cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHsgdGhpcy5jdmFPbkNoYW5nZSA9IGZuOyB9XG5cbiAgICAvKiogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICAgKiBAZG9jcy1wcml2YXRlICovXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQgeyB0aGlzLm9uVG91Y2hlZCA9IGZuOyB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBkaXNhYmxlZCBzdGF0ZSBvZiB0aGUgY29udHJvbC4gSW1wbGVtZW50ZWQgYXMgYSBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgICAqIEBwYXJhbSBpc0Rpc2FibGVkIFdoZXRoZXIgdGhlIGNvbnRyb2wgc2hvdWxkIGJlIGRpc2FibGVkLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG9uRmlsZVNlbGVjdGVkVmlhQ2xpY2soeyB0YXJnZXQgfTogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgY29uc3QgZmlsZXM6IEZpbGVMaXN0IHwgbnVsbCA9ICh0YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuZmlsZXM7XG4gICAgICAgIGlmIChmaWxlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGUgPSB0aGlzLm1hcFRvRmlsZUl0ZW0oZmlsZXNbMF0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIC8qIGV2ZW4gaWYgdGhlIHVzZXIgc2VsZWN0cyB0aGUgc2FtZSBmaWxlLFxuICAgICAgICAgdGhlIG9uY2hhbmdlIGV2ZW50IHdpbGwgYmUgdHJpZ2dlcmVkIGV2ZXJ5IHRpbWUgdXNlciBjbGlja3Mgb24gdGhlIGNvbnRyb2wuKi9cbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQsICd2YWx1ZScsIG51bGwpO1xuICAgIH1cblxuICAgIGRlbGV0ZUl0ZW0oZXZlbnQ/OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7IHJldHVybjsgfVxuXG4gICAgICAgIGV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5maWxlID0gbnVsbDtcbiAgICAgICAgdGhpcy5lcnJvcnMgPSBbXTtcbiAgICAgICAgLy8gbWFyayBhcyB0b3VjaGVkIGFmdGVyIGZpbGUgZHJvcCBldmVuIGlmIGZpbGUgd2Fzbid0IGNvcnJlY3RcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB9XG5cbiAgICBvbkZpbGVEcm9wcGVkKGZpbGVzOiBGaWxlTGlzdCB8IEticUZpbGVbXSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkgeyByZXR1cm47IH1cblxuICAgICAgICBpZiAoZmlsZXM/Lmxlbmd0aCAmJiBpc0NvcnJlY3RFeHRlbnNpb24oZmlsZXNbMF0sIHRoaXMuYWNjZXB0KSkge1xuICAgICAgICAgICAgdGhpcy5maWxlID0gdGhpcy5tYXBUb0ZpbGVJdGVtKGZpbGVzWzBdKTtcbiAgICAgICAgICAgIHRoaXMuZmlsZVF1ZXVlQ2hhbmdlLmVtaXQodGhpcy5maWxlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBtYXJrIGFzIHRvdWNoZWQgYWZ0ZXIgZmlsZSBkcm9wIGV2ZW4gaWYgZmlsZSB3YXNuJ3QgY29ycmVjdFxuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTG9jYWxlUGFyYW1zID0gKCkgPT4ge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IHRoaXMuY29uZmlndXJhdGlvbiB8fCB0aGlzLmxvY2FsZVNlcnZpY2U/LmdldFBhcmFtcygnZmlsZVVwbG9hZCcpLm11bHRpcGxlO1xuXG4gICAgICAgIHRoaXMuZ2V0Q2FwdGlvblRleHQoKTtcblxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hcFRvRmlsZUl0ZW0oZmlsZTogRmlsZSk6IEticUZpbGVJdGVtIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICBoYXNFcnJvcjogdGhpcy52YWxpZGF0ZUZpbGUoZmlsZSksXG4gICAgICAgICAgICBwcm9ncmVzczogbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApLFxuICAgICAgICAgICAgbG9hZGluZzogbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSlcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlRmlsZShmaWxlOiBGaWxlKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICghdGhpcy5jdXN0b21WYWxpZGF0aW9uPy5sZW5ndGgpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgdGhpcy5lcnJvcnMgPSB0aGlzLmN1c3RvbVZhbGlkYXRpb25cbiAgICAgICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgKGVycm9yczogKHN0cmluZyB8IG51bGwpW10sIHZhbGlkYXRvckZuOiBLYnFGaWxlVmFsaWRhdG9yRm4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzLnB1c2godmFsaWRhdG9yRm4oZmlsZSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcnM7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbXVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKSBhcyBzdHJpbmdbXTtcblxuICAgICAgICByZXR1cm4gISF0aGlzLmVycm9ycy5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0RGVmYXVsdFBhcmFtcygpIHtcbiAgICAgICAgdGhpcy5jb25maWcgPSBLQlFfU0lOR0xFX0ZJTEVfVVBMT0FEX0RFRkFVTFRfQ09ORklHVVJBVElPTjtcblxuICAgICAgICB0aGlzLmdldENhcHRpb25UZXh0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDYXB0aW9uVGV4dCgpIHtcbiAgICAgICAgdGhpcy5zZXBhcmF0ZWRDYXB0aW9uVGV4dCA9IHRoaXMuY29uZmlnLmNhcHRpb25UZXh0LnNwbGl0KCd7eyBicm93c2VMaW5rIH19Jyk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImticS1maWxlLXVwbG9hZFwiXG4gICAgIGticUZpbGVEcm9wXG4gICAgIFtjbGFzcy5rYnEtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICBbY2xhc3Mua2JxLWVycm9yXT1cImVycm9ycz8ubGVuZ3RoXCJcbiAgICAgKGZpbGVzRHJvcHBlZCk9XCJvbkZpbGVEcm9wcGVkKCRldmVudClcIj5cblxuICAgIDxkaXYgY2xhc3M9XCJkcm9wem9uZVwiICpuZ0lmPVwiIWZpbGU7IGVsc2UgZmlsZU91dHB1dFwiPlxuICAgICAgICA8aSBrYnEtaWNvbj1cIm1jLXVwbG9hZC10by1jbG91ZF8yNFwiPjwvaT5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wem9uZV9fdGV4dFwiPlxuICAgICAgICAgICAge3sgc2VwYXJhdGVkQ2FwdGlvblRleHRbMF0gfX08bGFiZWwga2JxLWxpbmsgcHNldWRvIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFt0YWJJbmRleF09XCItMVwiIFtmb3JdPVwiaW5wdXRJZFwiPnt7IGNvbmZpZy5icm93c2VMaW5rIH19PGlucHV0ICNpbnB1dCB0eXBlPVwiZmlsZVwiIGNsYXNzPVwiY2RrLXZpc3VhbGx5LWhpZGRlblwiIFtpZF09XCJpbnB1dElkXCIgW2FjY2VwdF09XCJhY2NlcHRlZEZpbGVzXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3RlZFZpYUNsaWNrKCRldmVudClcIj48L2xhYmVsPnt7IHNlcGFyYXRlZENhcHRpb25UZXh0WzFdIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48a2JxLWhpbnQgY2xhc3M9XCJrYnEtZmlsZS11cGxvYWRfX2hpbnRcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbaGludF1cIj48L25nLWNvbnRlbnQ+XG48L2ticS1oaW50PlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImVycm9ycz8ubGVuZ3RoXCI+XG4gICAgPGticS1oaW50IGNsYXNzPVwia2JxLWZpbGUtdXBsb2FkX19oaW50IGticS1lcnJvclwiICpuZ0Zvcj1cImxldCBlcnJvciBvZiBlcnJvcnNcIj57eyBlcnJvciB9fTwva2JxLWhpbnQ+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNmaWxlT3V0cHV0PlxuICAgIDxkaXYgY2xhc3M9XCJmaWxlLWl0ZW1cIiAqbmdJZj1cImZpbGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtaXRlbV9fdGV4dC13cmFwcGVyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwieyBsb2FkaW5nOiBmaWxlLmxvYWRpbmcgfCBhc3luYywgcHJvZ3Jlc3M6IGZpbGUucHJvZ3Jlc3MgfCBhc3luY30gYXMgYXN5bmNEYXRhXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhc3luY0RhdGEubG9hZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJba2JxLWljb25dXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPGticS1wcm9ncmVzcy1zcGlubmVyXG4gICAgICAgICAgICAgICAgICAgIFttb2RlXT1cInByb2dyZXNzTW9kZVwiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJhc3luY0RhdGEucHJvZ3Jlc3MgfHwgMFwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYXN5bmNEYXRhLmxvYWRpbmdcIlxuICAgICAgICAgICAgICAgID48L2ticS1wcm9ncmVzcy1zcGlubmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWl0ZW1fX3RleHRcIiBba2JxRWxsaXBzaXNDZW50ZXJdPVwiZmlsZS5maWxlLm5hbWVcIiBbbWluVmlzaWJsZUxlbmd0aF09XCIxMFwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGkga2JxLWljb24tYnV0dG9uPVwibWMtY2xvc2UtY2lyY2xlXzE2XCJcbiAgICAgICAgICAgW2NvbG9yXT1cIidjb250cmFzdCdcIlxuICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAoa2V5ZG93bi5kZWxldGUpPVwiZGVsZXRlSXRlbSgpXCJcbiAgICAgICAgICAgKGtleWRvd24uYmFja3NwYWNlKT1cImRlbGV0ZUl0ZW0oKVwiXG4gICAgICAgICAgIChjbGljayk9XCJkZWxldGVJdGVtKCRldmVudClcIj5cbiAgICAgICAgPC9pPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -172,7 +172,7 @@ export class KbqFormField extends KbqFormFieldMixinBase {
172
172
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqFormField, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FocusMonitor }], target: i0.ɵɵFactoryTarget.Component }); }
173
173
  /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.0", 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: [
174
174
  { provide: KBQ_FORM_FIELD_REF, useExisting: KbqFormField }
175
- ], 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+.kbq-password-hint{margin-top:var(--kbq-size-m, 12px)}.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)}.kbq-form-field__hint .kbq-password-hint:first-child{margin-top:var(--kbq-size-s, 8px)}.kbq-password-hint{margin-top: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: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
175
+ ], 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+.kbq-password-hint{margin-top:var(--kbq-size-m, 12px)}.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)}.kbq-form-field__hint .kbq-password-hint:first-child{margin-top:var(--kbq-size-s, 8px)}.kbq-password-hint{margin-top: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, 6px) - 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:var(--kbq-timepicker-size-padding-right, )}.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, 6px) 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: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
176
176
  }
177
177
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqFormField, decorators: [{
178
178
  type: Component,
@@ -197,7 +197,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImpor
197
197
  '(mouseleave)': 'onHoverChanged(false)'
198
198
  }, inputs: ['color'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
199
199
  { provide: KBQ_FORM_FIELD_REF, useExisting: KbqFormField }
200
- ], 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+.kbq-password-hint{margin-top:var(--kbq-size-m, 12px)}.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)}.kbq-form-field__hint .kbq-password-hint:first-child{margin-top:var(--kbq-size-s, 8px)}.kbq-password-hint{margin-top: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"] }]
200
+ ], 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+.kbq-password-hint{margin-top:var(--kbq-size-m, 12px)}.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)}.kbq-form-field__hint .kbq-password-hint:first-child{margin-top:var(--kbq-size-s, 8px)}.kbq-password-hint{margin-top: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, 6px) - 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:var(--kbq-timepicker-size-padding-right, )}.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, 6px) 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"] }]
201
201
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FocusMonitor }], propDecorators: { control: [{
202
202
  type: ContentChild,
203
203
  args: [KbqFormFieldControl, { static: false }]
@@ -30,7 +30,7 @@ export class KbqHint extends KbqHintMixinBase {
30
30
  <span class="kbq-hint__text">
31
31
  <ng-content></ng-content>
32
32
  </span>
33
- `, isInline: true, styles: [".kbq-hint{display:flex}.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"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
33
+ `, isInline: true, styles: [".kbq-hint{display:flex}.kbq-hint .kbq-icon{margin-top:var(--kbq-hint-size-normal-margin-top, 2px);margin-right:var(--kbq-hint-size-normal-content-padding, 4px)}.kbq-hint.kbq-hint_compact .kbq-icon{margin-top:var(--kbq-hint-size-compact-margin-top, 0);margin-right:var(--kbq-hint-size-compact-content-padding, 4px)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
34
34
  }
35
35
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqHint, decorators: [{
36
36
  type: Component,
@@ -45,7 +45,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImpor
45
45
  '[attr.id]': 'id',
46
46
  '[class.kbq-hint_fill-text-off]': 'fillTextOff',
47
47
  '[class.kbq-hint_compact]': 'compact'
48
- }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".kbq-hint{display:flex}.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"] }]
48
+ }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".kbq-hint{display:flex}.kbq-hint .kbq-icon{margin-top:var(--kbq-hint-size-normal-margin-top, 2px);margin-right:var(--kbq-hint-size-normal-content-padding, 4px)}.kbq-hint.kbq-hint_compact .kbq-icon{margin-top:var(--kbq-hint-size-compact-margin-top, 0);margin-right:var(--kbq-hint-size-compact-content-padding, 4px)}\n"] }]
49
49
  }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { id: [{
50
50
  type: Input
51
51
  }], fillTextOff: [{
@@ -109,7 +109,7 @@ export class KbqPasswordHint extends KbqHint {
109
109
  <span class="kbq-hint__text">
110
110
  <ng-content></ng-content>
111
111
  </span>
112
- `, isInline: true, styles: [".kbq-hint{display:flex}.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"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.KbqIcon, selector: "[kbq-icon]", inputs: ["color", "small", "autoColor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
112
+ `, isInline: true, styles: [".kbq-hint{display:flex}.kbq-hint .kbq-icon{margin-top:var(--kbq-hint-size-normal-margin-top, 2px);margin-right:var(--kbq-hint-size-normal-content-padding, 4px)}.kbq-hint.kbq-hint_compact .kbq-icon{margin-top:var(--kbq-hint-size-compact-margin-top, 0);margin-right:var(--kbq-hint-size-compact-content-padding, 4px)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.KbqIcon, selector: "[kbq-icon]", inputs: ["color", "small", "autoColor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
113
113
  }
114
114
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqPasswordHint, decorators: [{
115
115
  type: Component,
@@ -129,7 +129,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImpor
129
129
  '[class.kbq-error]': 'hasError',
130
130
  '[class.kbq-hint_fill-text-off]': 'fillTextOff',
131
131
  '[class.kbq-hint_compact]': 'compact'
132
- }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".kbq-hint{display:flex}.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"] }]
132
+ }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".kbq-hint{display:flex}.kbq-hint .kbq-icon{margin-top:var(--kbq-hint-size-normal-margin-top, 2px);margin-right:var(--kbq-hint-size-normal-content-padding, 4px)}.kbq-hint.kbq-hint_compact .kbq-icon{margin-top:var(--kbq-hint-size-compact-margin-top, 0);margin-right:var(--kbq-hint-size-compact-content-padding, 4px)}\n"] }]
133
133
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
134
134
  type: Optional
135
135
  }, {