@koobiq/components 18.39.0 → 19.0.0

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 (887) hide show
  1. package/accordion/accordion-content.d.ts +2 -2
  2. package/accordion/accordion-content.directive.d.ts +11 -0
  3. package/accordion/accordion-header.d.ts +2 -2
  4. package/accordion/accordion-header.directive.d.ts +7 -0
  5. package/accordion/accordion-item.d.ts +2 -2
  6. package/accordion/accordion-item.directive.d.ts +72 -0
  7. package/accordion/accordion-root.directive.d.ts +64 -0
  8. package/accordion/accordion-trigger.component.d.ts +2 -2
  9. package/accordion/accordion-trigger.directive.d.ts +13 -0
  10. package/accordion/accordion.component.d.ts +2 -4
  11. package/accordion/accordion.module.d.ts +7 -7
  12. package/accordion/public-api.d.ts +5 -0
  13. package/alert/_alert-theme.scss +4 -16
  14. package/alert/alert-tokens.scss +6 -12
  15. package/alert/alert.component.d.ts +5 -12
  16. package/alert/alert.module.d.ts +4 -4
  17. package/app-switcher/app-switcher.d.ts +4 -4
  18. package/autocomplete/autocomplete-origin.directive.d.ts +1 -1
  19. package/autocomplete/autocomplete-trigger.directive.d.ts +1 -1
  20. package/autocomplete/autocomplete.component.d.ts +1 -1
  21. package/autocomplete/autocomplete.module.d.ts +7 -7
  22. package/badge/badge.component.d.ts +3 -3
  23. package/badge/badge.module.d.ts +4 -4
  24. package/breadcrumbs/breadcrumbs.d.ts +3 -2
  25. package/breadcrumbs/public-api.d.ts +2 -0
  26. package/breadcrumbs/roving-focus-group.directive.d.ts +50 -0
  27. package/breadcrumbs/roving-focus-item.directive.d.ts +50 -0
  28. package/breadcrumbs/utils.d.ts +19 -0
  29. package/button/button.component.d.ts +2 -2
  30. package/button/button.module.d.ts +6 -6
  31. package/button-toggle/_button-toggle-theme.scss +30 -27
  32. package/button-toggle/button-toggle.component.d.ts +2 -2
  33. package/button-toggle/button-toggle.module.d.ts +4 -4
  34. package/button-toggle/button-toggle.scss +2 -2
  35. package/checkbox/checkbox-module.d.ts +4 -4
  36. package/checkbox/checkbox-required-validator.d.ts +1 -1
  37. package/checkbox/checkbox.d.ts +1 -1
  38. package/code-block/code-block.scss +2 -2
  39. package/core/common-behaviors/index.d.ts +0 -1
  40. package/core/formatters/date/formatter.pipe.d.ts +13 -0
  41. package/core/formatters/index.d.ts +4 -4
  42. package/core/formatters/number/formatter.d.ts +3 -3
  43. package/core/forms/forms-module.d.ts +1 -1
  44. package/core/forms/forms.directive.d.ts +2 -2
  45. package/core/highlight/highlight.pipe.d.ts +1 -1
  46. package/core/highlight/index.d.ts +3 -3
  47. package/core/line/line.d.ts +1 -6
  48. package/core/option/_option-theme.scss +5 -2
  49. package/core/option/action.d.ts +1 -1
  50. package/core/option/optgroup.d.ts +1 -1
  51. package/core/option/option-module.d.ts +5 -5
  52. package/core/option/option.d.ts +4 -1
  53. package/core/pop-up/constants.d.ts +4 -0
  54. package/core/pop-up/pop-up-trigger.d.ts +5 -5
  55. package/core/pop-up/pop-up.d.ts +1 -1
  56. package/core/select/common.d.ts +1 -1
  57. package/core/selection/pseudo-checkbox/pseudo-checkbox.d.ts +1 -1
  58. package/core/selection/pseudo-checkbox/pseudo-checkbox.module.d.ts +3 -3
  59. package/core/styles/common/_select.scss +1 -1
  60. package/core/styles/theming/_scrollbar-theme.scss +18 -12
  61. package/core/utils/utils.d.ts +3 -0
  62. package/datepicker/calendar-body.component.d.ts +1 -1
  63. package/datepicker/calendar-header.component.d.ts +1 -1
  64. package/datepicker/calendar.component.d.ts +1 -1
  65. package/datepicker/datepicker-input.directive.d.ts +1 -1
  66. package/datepicker/datepicker-module.d.ts +15 -15
  67. package/datepicker/datepicker-toggle.component.d.ts +2 -2
  68. package/datepicker/datepicker.component.d.ts +2 -2
  69. package/datepicker/month-view.component.d.ts +1 -1
  70. package/divider/divider.component.d.ts +5 -1
  71. package/divider/divider.module.d.ts +3 -3
  72. package/dl/dl.component.d.ts +3 -3
  73. package/dl/dl.module.d.ts +4 -4
  74. package/dropdown/dropdown-content.directive.d.ts +1 -1
  75. package/dropdown/dropdown-item.component.d.ts +1 -1
  76. package/dropdown/dropdown-trigger.directive.d.ts +1 -1
  77. package/dropdown/dropdown.component.d.ts +1 -1
  78. package/dropdown/dropdown.module.d.ts +8 -8
  79. package/dropdown/dropdown.scss +1 -0
  80. package/ellipsis-center/ellipsis-center.directive.d.ts +2 -2
  81. package/empty-state/empty-state.component.d.ts +5 -5
  82. package/empty-state/empty-state.module.d.ts +4 -4
  83. package/fesm2022/koobiq-components-accordion.mjs +459 -40
  84. package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
  85. package/fesm2022/koobiq-components-actions-panel.mjs +18 -18
  86. package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
  87. package/fesm2022/koobiq-components-alert.mjs +28 -36
  88. package/fesm2022/koobiq-components-alert.mjs.map +1 -1
  89. package/fesm2022/koobiq-components-app-switcher.mjs +49 -52
  90. package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
  91. package/fesm2022/koobiq-components-autocomplete.mjs +31 -25
  92. package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
  93. package/fesm2022/koobiq-components-badge.mjs +20 -21
  94. package/fesm2022/koobiq-components-badge.mjs.map +1 -1
  95. package/fesm2022/koobiq-components-breadcrumbs.mjs +339 -36
  96. package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
  97. package/fesm2022/koobiq-components-button-toggle.mjs +25 -22
  98. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  99. package/fesm2022/koobiq-components-button.mjs +25 -26
  100. package/fesm2022/koobiq-components-button.mjs.map +1 -1
  101. package/fesm2022/koobiq-components-checkbox.mjs +18 -16
  102. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  103. package/fesm2022/koobiq-components-clamped-text.mjs +9 -9
  104. package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
  105. package/fesm2022/koobiq-components-code-block.mjs +15 -16
  106. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  107. package/fesm2022/koobiq-components-content-panel.mjs +55 -57
  108. package/fesm2022/koobiq-components-content-panel.mjs.map +1 -1
  109. package/fesm2022/koobiq-components-core.mjs +326 -356
  110. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  111. package/fesm2022/koobiq-components-datepicker.mjs +107 -90
  112. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  113. package/fesm2022/koobiq-components-divider.mjs +16 -14
  114. package/fesm2022/koobiq-components-divider.mjs.map +1 -1
  115. package/fesm2022/koobiq-components-dl.mjs +19 -20
  116. package/fesm2022/koobiq-components-dl.mjs.map +1 -1
  117. package/fesm2022/koobiq-components-dropdown.mjs +47 -48
  118. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  119. package/fesm2022/koobiq-components-dynamic-translation.mjs +16 -19
  120. package/fesm2022/koobiq-components-dynamic-translation.mjs.map +1 -1
  121. package/fesm2022/koobiq-components-ellipsis-center.mjs +10 -10
  122. package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
  123. package/fesm2022/koobiq-components-empty-state.mjs +26 -27
  124. package/fesm2022/koobiq-components-empty-state.mjs.map +1 -1
  125. package/fesm2022/koobiq-components-file-upload.mjs +306 -98
  126. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  127. package/fesm2022/koobiq-components-filter-bar.mjs +220 -222
  128. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  129. package/fesm2022/koobiq-components-form-field.mjs +84 -92
  130. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  131. package/fesm2022/koobiq-components-icon.mjs +18 -18
  132. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  133. package/fesm2022/koobiq-components-inline-edit.mjs +33 -37
  134. package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
  135. package/fesm2022/koobiq-components-input.mjs +31 -30
  136. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  137. package/fesm2022/koobiq-components-link.mjs +11 -10
  138. package/fesm2022/koobiq-components-link.mjs.map +1 -1
  139. package/fesm2022/koobiq-components-list.mjs +47 -45
  140. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  141. package/fesm2022/koobiq-components-loader-overlay.mjs +27 -28
  142. package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
  143. package/fesm2022/koobiq-components-markdown.mjs +14 -14
  144. package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
  145. package/fesm2022/koobiq-components-modal.mjs +76 -64
  146. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  147. package/fesm2022/koobiq-components-navbar-ic.mjs +76 -54
  148. package/fesm2022/koobiq-components-navbar-ic.mjs.map +1 -1
  149. package/fesm2022/koobiq-components-navbar.mjs +77 -66
  150. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  151. package/fesm2022/koobiq-components-notification-center.mjs +31 -32
  152. package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
  153. package/fesm2022/koobiq-components-overflow-items.mjs +16 -19
  154. package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
  155. package/fesm2022/koobiq-components-popover.mjs +55 -46
  156. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  157. package/fesm2022/koobiq-components-progress-bar.mjs +18 -19
  158. package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
  159. package/fesm2022/koobiq-components-progress-spinner.mjs +21 -23
  160. package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
  161. package/fesm2022/koobiq-components-radio.mjs +20 -16
  162. package/fesm2022/koobiq-components-radio.mjs.map +1 -1
  163. package/fesm2022/koobiq-components-resizer.mjs +10 -12
  164. package/fesm2022/koobiq-components-resizer.mjs.map +1 -1
  165. package/fesm2022/koobiq-components-risk-level.mjs +13 -12
  166. package/fesm2022/koobiq-components-risk-level.mjs.map +1 -1
  167. package/fesm2022/koobiq-components-scrollbar.mjs +17 -18
  168. package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
  169. package/fesm2022/koobiq-components-search-expandable.mjs +19 -19
  170. package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
  171. package/fesm2022/koobiq-components-select.mjs +110 -73
  172. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  173. package/fesm2022/koobiq-components-sidebar.mjs +16 -23
  174. package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
  175. package/fesm2022/koobiq-components-sidepanel.mjs +61 -55
  176. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  177. package/fesm2022/koobiq-components-split-button.mjs +12 -12
  178. package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
  179. package/fesm2022/koobiq-components-splitter.mjs +24 -25
  180. package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
  181. package/fesm2022/koobiq-components-table.mjs +17 -18
  182. package/fesm2022/koobiq-components-table.mjs.map +1 -1
  183. package/fesm2022/koobiq-components-tabs.mjs +85 -89
  184. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  185. package/fesm2022/koobiq-components-tags.mjs +43 -47
  186. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  187. package/fesm2022/koobiq-components-textarea.mjs +10 -11
  188. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  189. package/fesm2022/koobiq-components-time-range.mjs +38 -40
  190. package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
  191. package/fesm2022/koobiq-components-timepicker.mjs +65 -14
  192. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
  193. package/fesm2022/koobiq-components-timezone.mjs +68 -59
  194. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  195. package/fesm2022/koobiq-components-title.mjs +9 -10
  196. package/fesm2022/koobiq-components-title.mjs.map +1 -1
  197. package/fesm2022/koobiq-components-toast.mjs +23 -24
  198. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  199. package/fesm2022/koobiq-components-toggle.mjs +16 -14
  200. package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
  201. package/fesm2022/koobiq-components-tooltip.mjs +20 -23
  202. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  203. package/fesm2022/koobiq-components-top-bar.mjs +18 -20
  204. package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
  205. package/fesm2022/koobiq-components-tree-select.mjs +81 -70
  206. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  207. package/fesm2022/koobiq-components-tree.mjs +77 -66
  208. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  209. package/fesm2022/koobiq-components-username.mjs +31 -37
  210. package/fesm2022/koobiq-components-username.mjs.map +1 -1
  211. package/file-upload/file-upload.d.ts +11 -0
  212. package/file-upload/file-upload.module.d.ts +15 -15
  213. package/file-upload/multiple-file-upload.component.d.ts +12 -9
  214. package/file-upload/{file-drop.d.ts → primitives/file-drop.d.ts} +3 -3
  215. package/file-upload/primitives/file-picker.d.ts +82 -0
  216. package/file-upload/primitives/index.d.ts +2 -0
  217. package/file-upload/public-api.d.ts +2 -1
  218. package/file-upload/single-file-upload.component.d.ts +11 -8
  219. package/icon/_icon-button-theme.scss +2 -1
  220. package/inline-edit/inline-edit.d.ts +2 -3
  221. package/input/_input-theme.scss +2 -1
  222. package/input/input-number-validators.d.ts +2 -2
  223. package/input/input-number.d.ts +1 -1
  224. package/input/input-password.d.ts +1 -1
  225. package/input/input.d.ts +2 -2
  226. package/input/input.module.d.ts +8 -8
  227. package/link/_link-theme.scss +3 -0
  228. package/link/link.component.d.ts +1 -1
  229. package/link/link.module.d.ts +3 -3
  230. package/list/_list-theme.scss +6 -0
  231. package/list/list-selection.component.d.ts +3 -3
  232. package/list/list.component.d.ts +2 -2
  233. package/list/list.module.d.ts +6 -6
  234. package/list/list.scss +1 -0
  235. package/loader-overlay/loader-overlay.component.d.ts +4 -4
  236. package/loader-overlay/loader-overlay.module.d.ts +5 -5
  237. package/modal/css-unit.pipe.d.ts +1 -1
  238. package/modal/modal.component.d.ts +1 -1
  239. package/modal/modal.directive.d.ts +4 -4
  240. package/modal/modal.module.d.ts +10 -10
  241. package/modal/modal.service.d.ts +1 -1
  242. package/navbar/_navbar-theme.scss +1 -0
  243. package/navbar/navbar-brand.component.d.ts +1 -1
  244. package/navbar/navbar-item.component.d.ts +7 -7
  245. package/navbar/navbar-toggle.component.d.ts +1 -1
  246. package/navbar/navbar-toggle.scss +1 -1
  247. package/navbar/navbar.component.d.ts +4 -4
  248. package/navbar/navbar.module.d.ts +10 -10
  249. package/navbar/vertical-navbar.component.d.ts +1 -1
  250. package/navbar/vertical-navbar.scss +5 -2
  251. package/navbar-ic/navbar-ic-header.d.ts +3 -0
  252. package/navbar-ic/navbar-ic-item.d.ts +18 -0
  253. package/navbar-ic/navbar-ic.d.ts +13 -7
  254. package/notification-center/notification-center.d.ts +5 -5
  255. package/overflow-items/overflow-items.d.ts +1 -1
  256. package/package.json +9 -140
  257. package/popover/popover-confirm.component.d.ts +2 -2
  258. package/popover/popover.component.d.ts +9 -9
  259. package/popover/popover.module.d.ts +9 -9
  260. package/prebuilt-themes/dark-theme.css +1 -1
  261. package/prebuilt-themes/light-theme.css +1 -1
  262. package/prebuilt-themes/theme.css +1 -1
  263. package/progress-bar/progress-bar.component.d.ts +3 -3
  264. package/progress-bar/progress-bar.module.d.ts +3 -3
  265. package/progress-spinner/progress-spinner.component.d.ts +3 -3
  266. package/progress-spinner/progress-spinner.module.d.ts +4 -4
  267. package/progress-spinner/progress-spinner.scss +1 -0
  268. package/radio/_radio-theme.scss +2 -1
  269. package/radio/radio-tokens.scss +1 -0
  270. package/radio/radio.component.d.ts +10 -5
  271. package/radio/radio.module.d.ts +3 -3
  272. package/risk-level/risk-level.component.d.ts +1 -1
  273. package/risk-level/risk-level.module.d.ts +4 -4
  274. package/schematics/migrations/icons-replacement/README.md +5 -1
  275. package/schematics/migrations/icons-replacement/index.js +1 -1
  276. package/schematics/ng-add/index.js +4 -5
  277. package/scrollbar/_scrollbar-component-theme.scss +16 -14
  278. package/select/select-option.directive.d.ts +1 -1
  279. package/select/select.component.d.ts +6 -5
  280. package/select/select.module.d.ts +10 -10
  281. package/sidebar/sidebar.component.d.ts +3 -3
  282. package/sidebar/sidebar.module.d.ts +3 -3
  283. package/sidepanel/sidepanel-container.component.d.ts +1 -1
  284. package/sidepanel/sidepanel-directives.d.ts +5 -5
  285. package/sidepanel/sidepanel.module.d.ts +9 -9
  286. package/splitter/splitter.component.d.ts +4 -4
  287. package/splitter/splitter.module.d.ts +3 -3
  288. package/table/_table-theme.scss +1 -0
  289. package/table/table.component.d.ts +2 -2
  290. package/table/table.module.d.ts +4 -4
  291. package/tabs/paginated-tab-header.d.ts +1 -1
  292. package/tabs/tab-body.component.d.ts +2 -2
  293. package/tabs/tab-content.directive.d.ts +1 -1
  294. package/tabs/tab-group.component.d.ts +5 -5
  295. package/tabs/tab-header.component.d.ts +1 -1
  296. package/tabs/tab-label-wrapper.directive.d.ts +1 -1
  297. package/tabs/tab-label.directive.d.ts +1 -1
  298. package/tabs/tab.component.d.ts +3 -3
  299. package/tabs/tabs.module.d.ts +15 -15
  300. package/tags/tag-input.d.ts +1 -1
  301. package/tags/tag-list.component.d.ts +1 -1
  302. package/tags/tag.component.d.ts +4 -4
  303. package/tags/tag.module.d.ts +4 -4
  304. package/textarea/textarea.component.d.ts +1 -1
  305. package/textarea/textarea.module.d.ts +4 -4
  306. package/timepicker/timepicker.directive.d.ts +15 -5
  307. package/timepicker/timepicker.module.d.ts +5 -5
  308. package/timezone/cities-by-filter.pipe.d.ts +1 -1
  309. package/timezone/timezone-option.component.d.ts +1 -1
  310. package/timezone/timezone-option.directive.d.ts +1 -1
  311. package/timezone/timezone-select.component.d.ts +2 -2
  312. package/timezone/timezone.module.d.ts +15 -15
  313. package/timezone/utc-offset.pipe.d.ts +1 -1
  314. package/title/title.directive.d.ts +1 -1
  315. package/title/title.module.d.ts +3 -3
  316. package/toggle/toggle.component.d.ts +1 -1
  317. package/toggle/toggle.module.d.ts +3 -3
  318. package/tooltip/tooltip.component.d.ts +3 -3
  319. package/top-bar/top-bar.d.ts +1 -1
  320. package/tree/node.d.ts +1 -1
  321. package/tree/outlet.d.ts +1 -1
  322. package/tree/padding.directive.d.ts +1 -1
  323. package/tree/toggle.d.ts +3 -3
  324. package/tree/tree-base.d.ts +2 -2
  325. package/tree/tree-option.component.d.ts +1 -1
  326. package/tree/tree-selection.component.d.ts +1 -1
  327. package/tree/tree.d.ts +1 -1
  328. package/tree/tree.module.d.ts +11 -11
  329. package/tree-select/tree-select.component.d.ts +2 -2
  330. package/tree-select/tree-select.module.d.ts +9 -9
  331. package/core/common-behaviors/focus-monitor.d.ts +0 -19
  332. package/esm2022/accordion/accordion-content.mjs +0 -19
  333. package/esm2022/accordion/accordion-header.mjs +0 -19
  334. package/esm2022/accordion/accordion-item.mjs +0 -25
  335. package/esm2022/accordion/accordion-trigger.component.mjs +0 -48
  336. package/esm2022/accordion/accordion.component.mjs +0 -41
  337. package/esm2022/accordion/accordion.module.mjs +0 -44
  338. package/esm2022/accordion/index.mjs +0 -2
  339. package/esm2022/accordion/koobiq-components-accordion.mjs +0 -5
  340. package/esm2022/accordion/public-api.mjs +0 -7
  341. package/esm2022/actions-panel/actions-panel-config.mjs +0 -55
  342. package/esm2022/actions-panel/actions-panel-container.mjs +0 -217
  343. package/esm2022/actions-panel/actions-panel-ref.mjs +0 -78
  344. package/esm2022/actions-panel/actions-panel.mjs +0 -133
  345. package/esm2022/actions-panel/index.mjs +0 -6
  346. package/esm2022/actions-panel/koobiq-components-actions-panel.mjs +0 -5
  347. package/esm2022/actions-panel/module.mjs +0 -21
  348. package/esm2022/alert/alert.component.mjs +0 -124
  349. package/esm2022/alert/alert.module.mjs +0 -40
  350. package/esm2022/alert/index.mjs +0 -2
  351. package/esm2022/alert/koobiq-components-alert.mjs +0 -5
  352. package/esm2022/alert/public-api.mjs +0 -3
  353. package/esm2022/app-switcher/app-switcher-animations.mjs +0 -18
  354. package/esm2022/app-switcher/app-switcher-dropdown-app.mjs +0 -75
  355. package/esm2022/app-switcher/app-switcher-dropdown-site.mjs +0 -60
  356. package/esm2022/app-switcher/app-switcher.mjs +0 -446
  357. package/esm2022/app-switcher/app-switcher.module.mjs +0 -45
  358. package/esm2022/app-switcher/index.mjs +0 -2
  359. package/esm2022/app-switcher/kbq-app-switcher-list-item.mjs +0 -84
  360. package/esm2022/app-switcher/koobiq-components-app-switcher.mjs +0 -5
  361. package/esm2022/app-switcher/public-api.mjs +0 -7
  362. package/esm2022/autocomplete/autocomplete-origin.directive.mjs +0 -21
  363. package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +0 -540
  364. package/esm2022/autocomplete/autocomplete.component.mjs +0 -178
  365. package/esm2022/autocomplete/autocomplete.module.mjs +0 -38
  366. package/esm2022/autocomplete/index.mjs +0 -2
  367. package/esm2022/autocomplete/koobiq-components-autocomplete.mjs +0 -5
  368. package/esm2022/autocomplete/public-api.mjs +0 -5
  369. package/esm2022/badge/badge.component.mjs +0 -124
  370. package/esm2022/badge/badge.module.mjs +0 -36
  371. package/esm2022/badge/index.mjs +0 -2
  372. package/esm2022/badge/koobiq-components-badge.mjs +0 -5
  373. package/esm2022/badge/public-api.mjs +0 -3
  374. package/esm2022/breadcrumbs/breadcrumbs.mjs +0 -268
  375. package/esm2022/breadcrumbs/breadcrumbs.module.mjs +0 -31
  376. package/esm2022/breadcrumbs/breadcrumbs.types.mjs +0 -2
  377. package/esm2022/breadcrumbs/index.mjs +0 -2
  378. package/esm2022/breadcrumbs/koobiq-components-breadcrumbs.mjs +0 -5
  379. package/esm2022/breadcrumbs/public-api.mjs +0 -4
  380. package/esm2022/button/button.component.mjs +0 -180
  381. package/esm2022/button/button.dropdown-trigger.directive.mjs +0 -28
  382. package/esm2022/button/button.module.mjs +0 -41
  383. package/esm2022/button/index.mjs +0 -2
  384. package/esm2022/button/koobiq-components-button.mjs +0 -5
  385. package/esm2022/button/public-api.mjs +0 -4
  386. package/esm2022/button-toggle/button-toggle.component.mjs +0 -384
  387. package/esm2022/button-toggle/button-toggle.module.mjs +0 -19
  388. package/esm2022/button-toggle/index.mjs +0 -2
  389. package/esm2022/button-toggle/koobiq-components-button-toggle.mjs +0 -5
  390. package/esm2022/button-toggle/public-api.mjs +0 -3
  391. package/esm2022/checkbox/checkbox-config.mjs +0 -6
  392. package/esm2022/checkbox/checkbox-module.mjs +0 -19
  393. package/esm2022/checkbox/checkbox-required-validator.mjs +0 -27
  394. package/esm2022/checkbox/checkbox.mjs +0 -295
  395. package/esm2022/checkbox/index.mjs +0 -2
  396. package/esm2022/checkbox/koobiq-components-checkbox.mjs +0 -5
  397. package/esm2022/checkbox/public-api.mjs +0 -5
  398. package/esm2022/clamped-text/clamped-text.mjs +0 -202
  399. package/esm2022/clamped-text/constants.mjs +0 -20
  400. package/esm2022/clamped-text/index.mjs +0 -4
  401. package/esm2022/clamped-text/koobiq-components-clamped-text.mjs +0 -5
  402. package/esm2022/clamped-text/module.mjs +0 -19
  403. package/esm2022/code-block/code-block-highlight.mjs +0 -418
  404. package/esm2022/code-block/code-block.mjs +0 -440
  405. package/esm2022/code-block/code-block.module.mjs +0 -19
  406. package/esm2022/code-block/index.mjs +0 -2
  407. package/esm2022/code-block/koobiq-components-code-block.mjs +0 -5
  408. package/esm2022/code-block/public-api.mjs +0 -5
  409. package/esm2022/code-block/types.mjs +0 -2
  410. package/esm2022/content-panel/content-panel.mjs +0 -432
  411. package/esm2022/content-panel/index.mjs +0 -3
  412. package/esm2022/content-panel/koobiq-components-content-panel.mjs +0 -5
  413. package/esm2022/content-panel/module.mjs +0 -42
  414. package/esm2022/core/animation/animation.mjs +0 -39
  415. package/esm2022/core/animation/fade-animations.mjs +0 -9
  416. package/esm2022/core/animation/index.mjs +0 -4
  417. package/esm2022/core/animation/select-animations.mjs +0 -45
  418. package/esm2022/core/common-behaviors/checkbox.mjs +0 -2
  419. package/esm2022/core/common-behaviors/clipboard.mjs +0 -31
  420. package/esm2022/core/common-behaviors/color.mjs +0 -89
  421. package/esm2022/core/common-behaviors/common-module.mjs +0 -76
  422. package/esm2022/core/common-behaviors/constructor.mjs +0 -2
  423. package/esm2022/core/common-behaviors/disabled.mjs +0 -19
  424. package/esm2022/core/common-behaviors/error-state.mjs +0 -50
  425. package/esm2022/core/common-behaviors/focus-monitor.mjs +0 -37
  426. package/esm2022/core/common-behaviors/hover.mjs +0 -34
  427. package/esm2022/core/common-behaviors/index.mjs +0 -14
  428. package/esm2022/core/common-behaviors/orientation.mjs +0 -2
  429. package/esm2022/core/common-behaviors/read-state.mjs +0 -33
  430. package/esm2022/core/common-behaviors/size.mjs +0 -2
  431. package/esm2022/core/common-behaviors/tabindex.mjs +0 -20
  432. package/esm2022/core/datetime/date-adapter.mjs +0 -14
  433. package/esm2022/core/datetime/date-formats.mjs +0 -3
  434. package/esm2022/core/datetime/index.mjs +0 -3
  435. package/esm2022/core/error/error-state-matcher.mjs +0 -56
  436. package/esm2022/core/form-field/field-sizing-content.mjs +0 -117
  437. package/esm2022/core/form-field/form-field-ref.mjs +0 -10
  438. package/esm2022/core/form-field/index.mjs +0 -3
  439. package/esm2022/core/formatters/date/formatter.mjs +0 -25
  440. package/esm2022/core/formatters/date/formatter.pipe.mjs +0 -380
  441. package/esm2022/core/formatters/filesize/config.mjs +0 -32
  442. package/esm2022/core/formatters/filesize/formatter.mjs +0 -43
  443. package/esm2022/core/formatters/filesize/index.mjs +0 -4
  444. package/esm2022/core/formatters/filesize/size.mjs +0 -65
  445. package/esm2022/core/formatters/index.mjs +0 -146
  446. package/esm2022/core/formatters/number/formatter.mjs +0 -347
  447. package/esm2022/core/forms/forms-module.mjs +0 -24
  448. package/esm2022/core/forms/forms.directive.mjs +0 -66
  449. package/esm2022/core/forms/index.mjs +0 -4
  450. package/esm2022/core/forms/validators.mjs +0 -184
  451. package/esm2022/core/highlight/highlight.pipe.mjs +0 -23
  452. package/esm2022/core/highlight/index.mjs +0 -19
  453. package/esm2022/core/index.mjs +0 -2
  454. package/esm2022/core/koobiq-components-core.mjs +0 -5
  455. package/esm2022/core/line/line.mjs +0 -70
  456. package/esm2022/core/locales/en-US.mjs +0 -210
  457. package/esm2022/core/locales/es-LA.mjs +0 -209
  458. package/esm2022/core/locales/formatters.mjs +0 -193
  459. package/esm2022/core/locales/index.mjs +0 -10
  460. package/esm2022/core/locales/locale-service.mjs +0 -173
  461. package/esm2022/core/locales/locale-service.module.mjs +0 -19
  462. package/esm2022/core/locales/pt-BR.mjs +0 -209
  463. package/esm2022/core/locales/ru-RU.mjs +0 -224
  464. package/esm2022/core/locales/tk-TM.mjs +0 -210
  465. package/esm2022/core/locales/types.mjs +0 -2
  466. package/esm2022/core/navbar/index.mjs +0 -2
  467. package/esm2022/core/navbar/rectangle-item.mjs +0 -40
  468. package/esm2022/core/option/action-container.mjs +0 -23
  469. package/esm2022/core/option/action.mjs +0 -107
  470. package/esm2022/core/option/index.mjs +0 -6
  471. package/esm2022/core/option/optgroup.mjs +0 -37
  472. package/esm2022/core/option/option-module.mjs +0 -20
  473. package/esm2022/core/option/option.mjs +0 -322
  474. package/esm2022/core/overlay/overlay-position-map.mjs +0 -251
  475. package/esm2022/core/pop-up/constants.mjs +0 -55
  476. package/esm2022/core/pop-up/focus-trap-strategy.mjs +0 -6
  477. package/esm2022/core/pop-up/index.mjs +0 -6
  478. package/esm2022/core/pop-up/pop-up-styles.mjs +0 -24
  479. package/esm2022/core/pop-up/pop-up-trigger.mjs +0 -343
  480. package/esm2022/core/pop-up/pop-up.mjs +0 -152
  481. package/esm2022/core/public-api.mjs +0 -24
  482. package/esm2022/core/select/common.mjs +0 -203
  483. package/esm2022/core/select/constants.mjs +0 -25
  484. package/esm2022/core/select/errors.mjs +0 -26
  485. package/esm2022/core/select/events.mjs +0 -2
  486. package/esm2022/core/select/index.mjs +0 -5
  487. package/esm2022/core/selection/constants.mjs +0 -6
  488. package/esm2022/core/selection/index.mjs +0 -4
  489. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +0 -43
  490. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.module.mjs +0 -18
  491. package/esm2022/core/services/measure-scrollbar.service.mjs +0 -42
  492. package/esm2022/core/services/theme.service.mjs +0 -80
  493. package/esm2022/core/title/index.mjs +0 -2
  494. package/esm2022/core/title/title-text-ref.mjs +0 -3
  495. package/esm2022/core/tokens/index.mjs +0 -2
  496. package/esm2022/core/tokens/window.mjs +0 -19
  497. package/esm2022/core/utils/dom.mjs +0 -8
  498. package/esm2022/core/utils/index.mjs +0 -3
  499. package/esm2022/core/utils/public-api.mjs +0 -2
  500. package/esm2022/core/utils/utils.mjs +0 -31
  501. package/esm2022/core/validation/index.mjs +0 -2
  502. package/esm2022/core/validation/validation.mjs +0 -27
  503. package/esm2022/core/version.mjs +0 -3
  504. package/esm2022/datepicker/calendar-body.component.mjs +0 -87
  505. package/esm2022/datepicker/calendar-header.component.mjs +0 -164
  506. package/esm2022/datepicker/calendar.component.mjs +0 -185
  507. package/esm2022/datepicker/datepicker-animations.mjs +0 -32
  508. package/esm2022/datepicker/datepicker-errors.mjs +0 -6
  509. package/esm2022/datepicker/datepicker-input.directive.mjs +0 -1119
  510. package/esm2022/datepicker/datepicker-intl.mjs +0 -40
  511. package/esm2022/datepicker/datepicker-module.mjs +0 -103
  512. package/esm2022/datepicker/datepicker-toggle.component.mjs +0 -170
  513. package/esm2022/datepicker/datepicker.component.mjs +0 -388
  514. package/esm2022/datepicker/index.mjs +0 -2
  515. package/esm2022/datepicker/koobiq-components-datepicker.mjs +0 -5
  516. package/esm2022/datepicker/month-view.component.mjs +0 -148
  517. package/esm2022/datepicker/public-api.mjs +0 -11
  518. package/esm2022/divider/divider.component.mjs +0 -49
  519. package/esm2022/divider/divider.module.mjs +0 -18
  520. package/esm2022/divider/index.mjs +0 -2
  521. package/esm2022/divider/koobiq-components-divider.mjs +0 -5
  522. package/esm2022/divider/public-api.mjs +0 -3
  523. package/esm2022/dl/dl.component.mjs +0 -81
  524. package/esm2022/dl/dl.module.mjs +0 -36
  525. package/esm2022/dl/index.mjs +0 -2
  526. package/esm2022/dl/koobiq-components-dl.mjs +0 -5
  527. package/esm2022/dl/public-api.mjs +0 -3
  528. package/esm2022/dropdown/dropdown-animations.mjs +0 -41
  529. package/esm2022/dropdown/dropdown-content.directive.mjs +0 -61
  530. package/esm2022/dropdown/dropdown-errors.mjs +0 -29
  531. package/esm2022/dropdown/dropdown-item.component.mjs +0 -150
  532. package/esm2022/dropdown/dropdown-trigger.directive.mjs +0 -513
  533. package/esm2022/dropdown/dropdown.component.mjs +0 -293
  534. package/esm2022/dropdown/dropdown.module.mjs +0 -51
  535. package/esm2022/dropdown/dropdown.types.mjs +0 -23
  536. package/esm2022/dropdown/index.mjs +0 -2
  537. package/esm2022/dropdown/koobiq-components-dropdown.mjs +0 -5
  538. package/esm2022/dropdown/public-api.mjs +0 -9
  539. package/esm2022/dynamic-translation/dynamic-translation.mjs +0 -175
  540. package/esm2022/dynamic-translation/index.mjs +0 -3
  541. package/esm2022/dynamic-translation/koobiq-components-dynamic-translation.mjs +0 -5
  542. package/esm2022/dynamic-translation/module.mjs +0 -25
  543. package/esm2022/ellipsis-center/ellipsis-center.directive.mjs +0 -120
  544. package/esm2022/ellipsis-center/index.mjs +0 -2
  545. package/esm2022/ellipsis-center/koobiq-components-ellipsis-center.mjs +0 -5
  546. package/esm2022/ellipsis-center/public-api.mjs +0 -2
  547. package/esm2022/empty-state/empty-state.component.mjs +0 -109
  548. package/esm2022/empty-state/empty-state.module.mjs +0 -44
  549. package/esm2022/empty-state/index.mjs +0 -2
  550. package/esm2022/empty-state/koobiq-components-empty-state.mjs +0 -5
  551. package/esm2022/empty-state/public-api.mjs +0 -3
  552. package/esm2022/file-upload/file-drop.mjs +0 -87
  553. package/esm2022/file-upload/file-upload.mjs +0 -71
  554. package/esm2022/file-upload/file-upload.module.mjs +0 -79
  555. package/esm2022/file-upload/index.mjs +0 -2
  556. package/esm2022/file-upload/koobiq-components-file-upload.mjs +0 -5
  557. package/esm2022/file-upload/multiple-file-upload.component.mjs +0 -306
  558. package/esm2022/file-upload/public-api.mjs +0 -6
  559. package/esm2022/file-upload/single-file-upload.component.mjs +0 -257
  560. package/esm2022/filter-bar/filter-bar-button.mjs +0 -31
  561. package/esm2022/filter-bar/filter-bar.mjs +0 -213
  562. package/esm2022/filter-bar/filter-bar.module.mjs +0 -67
  563. package/esm2022/filter-bar/filter-bar.types.mjs +0 -72
  564. package/esm2022/filter-bar/filter-refresher.mjs +0 -34
  565. package/esm2022/filter-bar/filter-reset.mjs +0 -49
  566. package/esm2022/filter-bar/filter-search.mjs +0 -173
  567. package/esm2022/filter-bar/filters.mjs +0 -266
  568. package/esm2022/filter-bar/index.mjs +0 -2
  569. package/esm2022/filter-bar/koobiq-components-filter-bar.mjs +0 -5
  570. package/esm2022/filter-bar/pipe-add.mjs +0 -140
  571. package/esm2022/filter-bar/pipe.directive.mjs +0 -37
  572. package/esm2022/filter-bar/pipes/base-pipe.mjs +0 -146
  573. package/esm2022/filter-bar/pipes/pipe-button.mjs +0 -72
  574. package/esm2022/filter-bar/pipes/pipe-date.mjs +0 -206
  575. package/esm2022/filter-bar/pipes/pipe-datetime.mjs +0 -208
  576. package/esm2022/filter-bar/pipes/pipe-multi-select.mjs +0 -188
  577. package/esm2022/filter-bar/pipes/pipe-multi-tree-select.mjs +0 -260
  578. package/esm2022/filter-bar/pipes/pipe-readonly.mjs +0 -68
  579. package/esm2022/filter-bar/pipes/pipe-select.mjs +0 -101
  580. package/esm2022/filter-bar/pipes/pipe-state.mjs +0 -53
  581. package/esm2022/filter-bar/pipes/pipe-text.mjs +0 -104
  582. package/esm2022/filter-bar/pipes/pipe-title.mjs +0 -102
  583. package/esm2022/filter-bar/pipes/pipe-tree-select.mjs +0 -142
  584. package/esm2022/filter-bar/public-api.mjs +0 -22
  585. package/esm2022/form-field/cleaner.mjs +0 -28
  586. package/esm2022/form-field/error.mjs +0 -20
  587. package/esm2022/form-field/fieldset.mjs +0 -84
  588. package/esm2022/form-field/form-field-control.mjs +0 -4
  589. package/esm2022/form-field/form-field.mjs +0 -447
  590. package/esm2022/form-field/form-field.module.mjs +0 -87
  591. package/esm2022/form-field/hint.mjs +0 -36
  592. package/esm2022/form-field/index.mjs +0 -2
  593. package/esm2022/form-field/koobiq-components-form-field.mjs +0 -5
  594. package/esm2022/form-field/label.mjs +0 -19
  595. package/esm2022/form-field/password-hint.mjs +0 -165
  596. package/esm2022/form-field/password-toggle.mjs +0 -129
  597. package/esm2022/form-field/prefix.mjs +0 -19
  598. package/esm2022/form-field/public-api.mjs +0 -16
  599. package/esm2022/form-field/reactive-password-hint.mjs +0 -66
  600. package/esm2022/form-field/stepper.mjs +0 -144
  601. package/esm2022/form-field/suffix.mjs +0 -18
  602. package/esm2022/form-field/validate.directive.mjs +0 -190
  603. package/esm2022/icon/icon-button.component.mjs +0 -64
  604. package/esm2022/icon/icon-item.component.mjs +0 -31
  605. package/esm2022/icon/icon.component.mjs +0 -56
  606. package/esm2022/icon/icon.module.mjs +0 -27
  607. package/esm2022/icon/index.mjs +0 -2
  608. package/esm2022/icon/koobiq-components-icon.mjs +0 -5
  609. package/esm2022/icon/public-api.mjs +0 -5
  610. package/esm2022/index.mjs +0 -2
  611. package/esm2022/inline-edit/index.mjs +0 -3
  612. package/esm2022/inline-edit/inline-edit.mjs +0 -382
  613. package/esm2022/inline-edit/koobiq-components-inline-edit.mjs +0 -5
  614. package/esm2022/inline-edit/module.mjs +0 -25
  615. package/esm2022/input/index.mjs +0 -2
  616. package/esm2022/input/input-errors.mjs +0 -4
  617. package/esm2022/input/input-number-validators.mjs +0 -88
  618. package/esm2022/input/input-number.mjs +0 -386
  619. package/esm2022/input/input-password.mjs +0 -253
  620. package/esm2022/input/input-value-accessor.mjs +0 -3
  621. package/esm2022/input/input.mjs +0 -299
  622. package/esm2022/input/input.module.mjs +0 -58
  623. package/esm2022/input/koobiq-components-input.mjs +0 -5
  624. package/esm2022/input/public-api.mjs +0 -7
  625. package/esm2022/koobiq-components.mjs +0 -5
  626. package/esm2022/link/index.mjs +0 -2
  627. package/esm2022/link/koobiq-components-link.mjs +0 -5
  628. package/esm2022/link/link.component.mjs +0 -143
  629. package/esm2022/link/link.module.mjs +0 -20
  630. package/esm2022/link/public-api.mjs +0 -3
  631. package/esm2022/list/index.mjs +0 -2
  632. package/esm2022/list/koobiq-components-list.mjs +0 -5
  633. package/esm2022/list/list-selection.component.mjs +0 -745
  634. package/esm2022/list/list.component.mjs +0 -43
  635. package/esm2022/list/list.module.mjs +0 -60
  636. package/esm2022/list/public-api.mjs +0 -4
  637. package/esm2022/loader-overlay/index.mjs +0 -2
  638. package/esm2022/loader-overlay/koobiq-components-loader-overlay.mjs +0 -5
  639. package/esm2022/loader-overlay/loader-overlay.component.mjs +0 -110
  640. package/esm2022/loader-overlay/loader-overlay.module.mjs +0 -44
  641. package/esm2022/loader-overlay/public-api.mjs +0 -3
  642. package/esm2022/markdown/index.mjs +0 -2
  643. package/esm2022/markdown/koobiq-components-markdown.mjs +0 -5
  644. package/esm2022/markdown/markdown.component.mjs +0 -67
  645. package/esm2022/markdown/markdown.module.mjs +0 -21
  646. package/esm2022/markdown/markdown.service.mjs +0 -36
  647. package/esm2022/markdown/markdown.values.mjs +0 -35
  648. package/esm2022/markdown/public-api.mjs +0 -5
  649. package/esm2022/modal/css-unit.pipe.mjs +0 -17
  650. package/esm2022/modal/index.mjs +0 -2
  651. package/esm2022/modal/koobiq-components-modal.mjs +0 -5
  652. package/esm2022/modal/modal-control.service.mjs +0 -89
  653. package/esm2022/modal/modal-ref.class.mjs +0 -7
  654. package/esm2022/modal/modal-util.mjs +0 -22
  655. package/esm2022/modal/modal.component.mjs +0 -540
  656. package/esm2022/modal/modal.directive.mjs +0 -94
  657. package/esm2022/modal/modal.module.mjs +0 -78
  658. package/esm2022/modal/modal.service.mjs +0 -135
  659. package/esm2022/modal/modal.type.mjs +0 -7
  660. package/esm2022/modal/public-api.mjs +0 -7
  661. package/esm2022/navbar/index.mjs +0 -2
  662. package/esm2022/navbar/koobiq-components-navbar.mjs +0 -5
  663. package/esm2022/navbar/navbar-brand.component.mjs +0 -105
  664. package/esm2022/navbar/navbar-item.component.mjs +0 -428
  665. package/esm2022/navbar/navbar-toggle.component.mjs +0 -88
  666. package/esm2022/navbar/navbar.component.mjs +0 -251
  667. package/esm2022/navbar/navbar.module.mjs +0 -84
  668. package/esm2022/navbar/public-api.mjs +0 -7
  669. package/esm2022/navbar/vertical-navbar.component.mjs +0 -128
  670. package/esm2022/navbar-ic/index.mjs +0 -2
  671. package/esm2022/navbar-ic/koobiq-components-navbar-ic.mjs +0 -5
  672. package/esm2022/navbar-ic/navbar-ic-header.mjs +0 -74
  673. package/esm2022/navbar-ic/navbar-ic-item.mjs +0 -390
  674. package/esm2022/navbar-ic/navbar-ic.animation.mjs +0 -17
  675. package/esm2022/navbar-ic/navbar-ic.mjs +0 -310
  676. package/esm2022/navbar-ic/navbar-ic.module.mjs +0 -74
  677. package/esm2022/navbar-ic/public-api.mjs +0 -5
  678. package/esm2022/notification-center/index.mjs +0 -2
  679. package/esm2022/notification-center/koobiq-components-notification-center.mjs +0 -5
  680. package/esm2022/notification-center/notification-center-animations.mjs +0 -18
  681. package/esm2022/notification-center/notification-center.mjs +0 -329
  682. package/esm2022/notification-center/notification-center.module.mjs +0 -38
  683. package/esm2022/notification-center/notification-center.service.mjs +0 -127
  684. package/esm2022/notification-center/notification-item.mjs +0 -70
  685. package/esm2022/notification-center/public-api.mjs +0 -5
  686. package/esm2022/overflow-items/index.mjs +0 -3
  687. package/esm2022/overflow-items/koobiq-components-overflow-items.mjs +0 -5
  688. package/esm2022/overflow-items/module.mjs +0 -25
  689. package/esm2022/overflow-items/overflow-items.mjs +0 -290
  690. package/esm2022/popover/index.mjs +0 -2
  691. package/esm2022/popover/koobiq-components-popover.mjs +0 -5
  692. package/esm2022/popover/popover-animations.mjs +0 -16
  693. package/esm2022/popover/popover-confirm.component.mjs +0 -97
  694. package/esm2022/popover/popover.component.mjs +0 -410
  695. package/esm2022/popover/popover.module.mjs +0 -67
  696. package/esm2022/popover/public-api.mjs +0 -5
  697. package/esm2022/progress-bar/index.mjs +0 -2
  698. package/esm2022/progress-bar/koobiq-components-progress-bar.mjs +0 -5
  699. package/esm2022/progress-bar/progress-bar.component.mjs +0 -62
  700. package/esm2022/progress-bar/progress-bar.module.mjs +0 -32
  701. package/esm2022/progress-bar/public-api.mjs +0 -3
  702. package/esm2022/progress-spinner/index.mjs +0 -2
  703. package/esm2022/progress-spinner/koobiq-components-progress-spinner.mjs +0 -5
  704. package/esm2022/progress-spinner/progress-spinner.component.mjs +0 -78
  705. package/esm2022/progress-spinner/progress-spinner.module.mjs +0 -35
  706. package/esm2022/progress-spinner/public-api.mjs +0 -3
  707. package/esm2022/public-api.mjs +0 -2
  708. package/esm2022/radio/index.mjs +0 -2
  709. package/esm2022/radio/koobiq-components-radio.mjs +0 -5
  710. package/esm2022/radio/public-api.mjs +0 -3
  711. package/esm2022/radio/radio.component.mjs +0 -451
  712. package/esm2022/radio/radio.module.mjs +0 -18
  713. package/esm2022/resizer/index.mjs +0 -3
  714. package/esm2022/resizer/koobiq-components-resizer.mjs +0 -5
  715. package/esm2022/resizer/module.mjs +0 -17
  716. package/esm2022/resizer/resizer.mjs +0 -135
  717. package/esm2022/risk-level/index.mjs +0 -2
  718. package/esm2022/risk-level/koobiq-components-risk-level.mjs +0 -5
  719. package/esm2022/risk-level/public-api.mjs +0 -3
  720. package/esm2022/risk-level/risk-level.component.mjs +0 -40
  721. package/esm2022/risk-level/risk-level.module.mjs +0 -24
  722. package/esm2022/scrollbar/index.mjs +0 -2
  723. package/esm2022/scrollbar/koobiq-components-scrollbar.mjs +0 -5
  724. package/esm2022/scrollbar/public-api.mjs +0 -5
  725. package/esm2022/scrollbar/scrollbar.component.mjs +0 -133
  726. package/esm2022/scrollbar/scrollbar.directive.mjs +0 -105
  727. package/esm2022/scrollbar/scrollbar.module.mjs +0 -25
  728. package/esm2022/scrollbar/scrollbar.types.mjs +0 -14
  729. package/esm2022/search-expandable/index.mjs +0 -2
  730. package/esm2022/search-expandable/koobiq-components-search-expandable.mjs +0 -5
  731. package/esm2022/search-expandable/public-api.mjs +0 -3
  732. package/esm2022/search-expandable/search-expandable.mjs +0 -177
  733. package/esm2022/search-expandable/search-expandable.module.mjs +0 -18
  734. package/esm2022/select/index.mjs +0 -2
  735. package/esm2022/select/koobiq-components-select.mjs +0 -5
  736. package/esm2022/select/public-api.mjs +0 -4
  737. package/esm2022/select/select-option.directive.mjs +0 -69
  738. package/esm2022/select/select.component.mjs +0 -1154
  739. package/esm2022/select/select.module.mjs +0 -81
  740. package/esm2022/sidebar/index.mjs +0 -2
  741. package/esm2022/sidebar/koobiq-components-sidebar.mjs +0 -5
  742. package/esm2022/sidebar/public-api.mjs +0 -3
  743. package/esm2022/sidebar/sidebar-animations.mjs +0 -23
  744. package/esm2022/sidebar/sidebar.component.mjs +0 -169
  745. package/esm2022/sidebar/sidebar.module.mjs +0 -30
  746. package/esm2022/sidepanel/index.mjs +0 -2
  747. package/esm2022/sidepanel/koobiq-components-sidepanel.mjs +0 -5
  748. package/esm2022/sidepanel/public-api.mjs +0 -7
  749. package/esm2022/sidepanel/sidepanel-animations.mjs +0 -29
  750. package/esm2022/sidepanel/sidepanel-config.mjs +0 -33
  751. package/esm2022/sidepanel/sidepanel-container.component.mjs +0 -126
  752. package/esm2022/sidepanel/sidepanel-directives.mjs +0 -168
  753. package/esm2022/sidepanel/sidepanel-ref.mjs +0 -60
  754. package/esm2022/sidepanel/sidepanel.module.mjs +0 -73
  755. package/esm2022/sidepanel/sidepanel.service.mjs +0 -167
  756. package/esm2022/split-button/index.mjs +0 -2
  757. package/esm2022/split-button/koobiq-components-split-button.mjs +0 -5
  758. package/esm2022/split-button/public-api.mjs +0 -3
  759. package/esm2022/split-button/split-button.mjs +0 -133
  760. package/esm2022/split-button/split-button.module.mjs +0 -18
  761. package/esm2022/splitter/index.mjs +0 -2
  762. package/esm2022/splitter/koobiq-components-splitter.mjs +0 -5
  763. package/esm2022/splitter/public-api.mjs +0 -3
  764. package/esm2022/splitter/splitter.component.mjs +0 -492
  765. package/esm2022/splitter/splitter.module.mjs +0 -34
  766. package/esm2022/table/index.mjs +0 -2
  767. package/esm2022/table/koobiq-components-table.mjs +0 -5
  768. package/esm2022/table/public-api.mjs +0 -3
  769. package/esm2022/table/table.component.mjs +0 -36
  770. package/esm2022/table/table.module.mjs +0 -32
  771. package/esm2022/tabs/index.mjs +0 -2
  772. package/esm2022/tabs/koobiq-components-tabs.mjs +0 -5
  773. package/esm2022/tabs/paginated-tab-header.mjs +0 -490
  774. package/esm2022/tabs/public-api.mjs +0 -11
  775. package/esm2022/tabs/tab-body.component.mjs +0 -178
  776. package/esm2022/tabs/tab-content.directive.mjs +0 -15
  777. package/esm2022/tabs/tab-group.component.mjs +0 -384
  778. package/esm2022/tabs/tab-header.component.mjs +0 -60
  779. package/esm2022/tabs/tab-label-wrapper.directive.mjs +0 -86
  780. package/esm2022/tabs/tab-label.directive.mjs +0 -17
  781. package/esm2022/tabs/tab-nav-bar.mjs +0 -292
  782. package/esm2022/tabs/tab.component.mjs +0 -145
  783. package/esm2022/tabs/tabs-animations.mjs +0 -24
  784. package/esm2022/tabs/tabs.module.mjs +0 -95
  785. package/esm2022/tags/index.mjs +0 -2
  786. package/esm2022/tags/koobiq-components-tags.mjs +0 -5
  787. package/esm2022/tags/public-api.mjs +0 -6
  788. package/esm2022/tags/tag-default-options.mjs +0 -4
  789. package/esm2022/tags/tag-input.mjs +0 -281
  790. package/esm2022/tags/tag-list.component.mjs +0 -765
  791. package/esm2022/tags/tag-text-control.mjs +0 -2
  792. package/esm2022/tags/tag.component.mjs +0 -647
  793. package/esm2022/tags/tag.module.mjs +0 -67
  794. package/esm2022/textarea/index.mjs +0 -2
  795. package/esm2022/textarea/koobiq-components-textarea.mjs +0 -5
  796. package/esm2022/textarea/public-api.mjs +0 -3
  797. package/esm2022/textarea/textarea.component.mjs +0 -300
  798. package/esm2022/textarea/textarea.module.mjs +0 -20
  799. package/esm2022/time-range/constants.mjs +0 -42
  800. package/esm2022/time-range/index.mjs +0 -8
  801. package/esm2022/time-range/koobiq-components-time-range.mjs +0 -5
  802. package/esm2022/time-range/module.mjs +0 -36
  803. package/esm2022/time-range/time-range-editor.mjs +0 -224
  804. package/esm2022/time-range/time-range-title-as-form-field.mjs +0 -60
  805. package/esm2022/time-range/time-range-title.mjs +0 -112
  806. package/esm2022/time-range/time-range.mjs +0 -234
  807. package/esm2022/time-range/time-range.service.mjs +0 -126
  808. package/esm2022/time-range/types.mjs +0 -2
  809. package/esm2022/timepicker/index.mjs +0 -2
  810. package/esm2022/timepicker/koobiq-components-timepicker.mjs +0 -5
  811. package/esm2022/timepicker/public-api.mjs +0 -4
  812. package/esm2022/timepicker/timepicker.constants.mjs +0 -29
  813. package/esm2022/timepicker/timepicker.directive.mjs +0 -686
  814. package/esm2022/timepicker/timepicker.module.mjs +0 -29
  815. package/esm2022/timezone/cities-by-filter.pipe.mjs +0 -17
  816. package/esm2022/timezone/index.mjs +0 -2
  817. package/esm2022/timezone/koobiq-components-timezone.mjs +0 -5
  818. package/esm2022/timezone/public-api.mjs +0 -7
  819. package/esm2022/timezone/timezone-option.component.mjs +0 -50
  820. package/esm2022/timezone/timezone-option.directive.mjs +0 -54
  821. package/esm2022/timezone/timezone-select.component.mjs +0 -55
  822. package/esm2022/timezone/timezone.models.mjs +0 -2
  823. package/esm2022/timezone/timezone.module.mjs +0 -82
  824. package/esm2022/timezone/timezone.utils.mjs +0 -80
  825. package/esm2022/timezone/utc-offset.pipe.mjs +0 -17
  826. package/esm2022/title/index.mjs +0 -2
  827. package/esm2022/title/koobiq-components-title.mjs +0 -5
  828. package/esm2022/title/public-api.mjs +0 -3
  829. package/esm2022/title/title.directive.mjs +0 -108
  830. package/esm2022/title/title.module.mjs +0 -18
  831. package/esm2022/toast/index.mjs +0 -2
  832. package/esm2022/toast/koobiq-components-toast.mjs +0 -5
  833. package/esm2022/toast/public-api.mjs +0 -6
  834. package/esm2022/toast/toast-animations.mjs +0 -10
  835. package/esm2022/toast/toast-container.component.mjs +0 -57
  836. package/esm2022/toast/toast.component.mjs +0 -125
  837. package/esm2022/toast/toast.module.mjs +0 -26
  838. package/esm2022/toast/toast.service.mjs +0 -197
  839. package/esm2022/toast/toast.type.mjs +0 -39
  840. package/esm2022/toggle/index.mjs +0 -2
  841. package/esm2022/toggle/koobiq-components-toggle.mjs +0 -5
  842. package/esm2022/toggle/public-api.mjs +0 -3
  843. package/esm2022/toggle/toggle.component.mjs +0 -254
  844. package/esm2022/toggle/toggle.module.mjs +0 -18
  845. package/esm2022/tooltip/index.mjs +0 -2
  846. package/esm2022/tooltip/koobiq-components-tooltip.mjs +0 -5
  847. package/esm2022/tooltip/public-api.mjs +0 -3
  848. package/esm2022/tooltip/tooltip.animations.mjs +0 -19
  849. package/esm2022/tooltip/tooltip.component.mjs +0 -400
  850. package/esm2022/tooltip/tooltip.module.mjs +0 -35
  851. package/esm2022/top-bar/index.mjs +0 -2
  852. package/esm2022/top-bar/koobiq-components-top-bar.mjs +0 -5
  853. package/esm2022/top-bar/module.mjs +0 -25
  854. package/esm2022/top-bar/public-api.mjs +0 -3
  855. package/esm2022/top-bar/top-bar.mjs +0 -74
  856. package/esm2022/tree/control/base-tree-control.mjs +0 -59
  857. package/esm2022/tree/control/flat-tree-control.filters.mjs +0 -52
  858. package/esm2022/tree/control/flat-tree-control.mjs +0 -109
  859. package/esm2022/tree/control/nested-tree-control.mjs +0 -40
  860. package/esm2022/tree/control/tree-control.mjs +0 -2
  861. package/esm2022/tree/data-source/flat-data-source.mjs +0 -157
  862. package/esm2022/tree/data-source/nested-data-source.mjs +0 -28
  863. package/esm2022/tree/index.mjs +0 -2
  864. package/esm2022/tree/koobiq-components-tree.mjs +0 -5
  865. package/esm2022/tree/node.mjs +0 -31
  866. package/esm2022/tree/outlet.mjs +0 -15
  867. package/esm2022/tree/padding.directive.mjs +0 -108
  868. package/esm2022/tree/public-api.mjs +0 -17
  869. package/esm2022/tree/toggle.mjs +0 -93
  870. package/esm2022/tree/tree-base.mjs +0 -236
  871. package/esm2022/tree/tree-errors.mjs +0 -36
  872. package/esm2022/tree/tree-option.component.mjs +0 -303
  873. package/esm2022/tree/tree-selection.component.mjs +0 -568
  874. package/esm2022/tree/tree.mjs +0 -19
  875. package/esm2022/tree/tree.module.mjs +0 -64
  876. package/esm2022/tree-select/index.mjs +0 -2
  877. package/esm2022/tree-select/koobiq-components-tree-select.mjs +0 -5
  878. package/esm2022/tree-select/public-api.mjs +0 -3
  879. package/esm2022/tree-select/tree-select.component.mjs +0 -1034
  880. package/esm2022/tree-select/tree-select.module.mjs +0 -71
  881. package/esm2022/username/constants.mjs +0 -25
  882. package/esm2022/username/index.mjs +0 -6
  883. package/esm2022/username/koobiq-components-username.mjs +0 -5
  884. package/esm2022/username/module.mjs +0 -35
  885. package/esm2022/username/types.mjs +0 -32
  886. package/esm2022/username/username.mjs +0 -129
  887. package/esm2022/username/username.pipe.mjs +0 -92
@@ -1 +1 @@
1
- {"version":3,"file":"koobiq-components-file-upload.mjs","sources":["../../../packages/components/file-upload/file-drop.ts","../../../packages/components/file-upload/file-upload.ts","../../../packages/components/file-upload/multiple-file-upload.component.ts","../../../packages/components/file-upload/multiple-file-upload.component.html","../../../packages/components/file-upload/single-file-upload.component.ts","../../../packages/components/file-upload/single-file-upload.component.html","../../../packages/components/file-upload/file-upload.module.ts","../../../packages/components/file-upload/koobiq-components-file-upload.ts"],"sourcesContent":["import { Directive, EventEmitter, Output } from '@angular/core';\nimport { KbqFile } from './file-upload';\n\nconst isFolderCanBeDragged = (): boolean => 'webkitGetAsEntry' in DataTransferItem.prototype;\nconst entryIsDirectory = (entry?: FileSystemEntry): entry is FileSystemDirectoryEntry => !!entry && entry.isDirectory;\nconst entryIsFile = (entry?: FileSystemEntry): entry is FileSystemFileEntry => !!entry && entry.isFile;\n\n@Directive({\n selector: '[kbqFileDrop]',\n exportAs: 'kbqFileDrop',\n host: {\n class: 'kbq-file-drop',\n '[class.kbq-file-drop_dragover]': 'dragover',\n '(dragover)': 'onDragOver($event)',\n '(dragleave)': 'onDragLeave($event)',\n '(drop)': 'onDrop($event)'\n }\n})\nexport class KbqFileDropDirective {\n /** Flag that controls css-class modifications on drag events. */\n dragover: boolean;\n\n /** Emits an event when file items were dropped. */\n @Output() readonly filesDropped: EventEmitter<FileList | KbqFile[]> = new EventEmitter<FileList | KbqFile[]>();\n\n /** @docs-private */\n onDragOver(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.dragover = true;\n }\n\n /** @docs-private */\n onDragLeave(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.dragover = false;\n }\n\n /** @docs-private */\n onDrop(event: DragEvent) {\n if (!isFolderCanBeDragged()) {\n // eslint-disable-next-line no-console\n console.warn('Drag-and-drop functionality for folders is not supported by this browser.');\n }\n\n event.preventDefault();\n event.stopPropagation();\n this.dragover = false;\n\n if (event.dataTransfer && event.dataTransfer.items.length > 0) {\n // event.dataTransfer.items requires dom.iterable lib\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const fileEntries: FileSystemEntry[] = [...event.dataTransfer.items]\n .filter((item: DataTransferItem) => item.kind === 'file')\n .map((item: DataTransferItem) => item.webkitGetAsEntry()!);\n\n Promise.all(fileEntries.map(unwrapDirectory))\n .then((fileList) => fileList.reduce((res, next) => res.concat(next), []))\n .then((entries: KbqFile[]) => this.filesDropped.emit(entries));\n }\n }\n}\n\nconst unwrapDirectory = async (item: FileSystemEntry): Promise<KbqFile[]> => {\n const queue: (FileSystemEntry | Promise<FileSystemEntry[]>)[] = [item];\n const result: Promise<KbqFile>[] = [];\n\n while (queue.length > 0) {\n const next = queue.pop();\n\n if (next instanceof Promise) {\n queue.push(...(await next));\n } else if (entryIsDirectory(next)) {\n const directoryReader = next.createReader();\n\n queue.push(\n new Promise<FileSystemEntry[]>((resolve, reject) => directoryReader.readEntries(resolve, reject))\n );\n } else if (entryIsFile(next)) {\n const fileEntry = next;\n\n result.push(\n new Promise((resolve, reject) => {\n fileEntry.file((file) => {\n (file as KbqFile).fullPath = fileEntry.fullPath;\n resolve(file as KbqFile);\n }, reject);\n })\n );\n }\n }\n\n return Promise.all(result);\n};\n","import {\n ChangeDetectorRef,\n DestroyRef,\n ElementRef,\n inject,\n InjectionToken,\n InputSignal,\n Renderer2\n} from '@angular/core';\nimport { FormGroupDirective, NgControl, NgForm, UntypedFormControl } from '@angular/forms';\nimport { CanUpdateErrorState, ErrorStateMatcher, KBQ_LOCALE_SERVICE } from '@koobiq/components/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\n\nexport interface KbqFile extends File {\n /* used when directory dropped */\n fullPath: string;\n}\n\nexport interface KbqFileItem {\n file: File;\n hasError?: boolean;\n loading?: BehaviorSubject<boolean>;\n progress?: BehaviorSubject<number>;\n}\n\nexport interface KbqInputFile {\n disabled: boolean;\n accept?: string[];\n onFileSelectedViaClick(event: Event): void;\n onFileDropped(files: FileList | KbqFile[]): void;\n}\n\nexport interface KbqInputFileLabel {\n /* Text for description, used with `browseLink` */\n captionText: string;\n /* Text for link with which the file(s) can be selected to download */\n browseLink: string;\n /* Header for multiple file-upload in default size */\n title?: string | undefined;\n}\n\n/**\n * @deprecated use FormControl for validation\n */\nexport type KbqFileValidatorFn = (file: File) => string | null;\n\n/* Object for labels customization inside file upload component */\nexport const KBQ_FILE_UPLOAD_CONFIGURATION = new InjectionToken<KbqInputFileLabel>('KbqFileUploadConfiguration');\n\n/** @deprecated use `FileValidators.isCorrectExtension` instead. Will be removed in next major release. */\nexport const isCorrectExtension = (file: File, accept?: string[]): boolean => {\n if (!accept?.length) return true;\n\n const { name, type } = file;\n const fileExt: string = name.split('.').pop() || '';\n\n for (const acceptedExtensionOrMimeType of accept) {\n const typeAsRegExp = new RegExp(acceptedExtensionOrMimeType);\n\n if (typeAsRegExp.test(fileExt) || typeAsRegExp.test(type)) {\n return true;\n }\n }\n\n return false;\n};\n\n/** @docs-private */\nexport abstract class KbqFileUploadBase<T = KbqInputFileLabel> implements CanUpdateErrorState {\n protected abstract localeConfig: InputSignal<Partial<T> | undefined>;\n /** Tracks whether the component is in an error state based on the control, parent form,\n * and `errorStateMatcher`, triggering visual updates and state changes if needed. */\n errorState: boolean = false;\n\n /** An object used to control the error state of the component. */\n abstract errorStateMatcher: ErrorStateMatcher;\n\n /**\n * Emits whenever the component state changes and should cause the parent\n * form-field to update. Implemented as part of `KbqFormFieldControl`.\n * @docs-private\n */\n readonly stateChanges = new Subject<void>();\n\n /** @docs-private */\n protected readonly cdr = inject(ChangeDetectorRef);\n /** @docs-private */\n protected readonly renderer = inject(Renderer2);\n /** @docs-private */\n protected readonly destroyRef = inject(DestroyRef);\n /** @docs-private */\n protected readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n /** @docs-private */\n protected readonly ngControl = inject(NgControl, { optional: true, self: true });\n /** @docs-private */\n protected readonly parentForm = inject(NgForm, { optional: true });\n /** @docs-private */\n protected readonly parentFormGroup = inject(FormGroupDirective, { optional: true });\n /** @docs-private */\n protected readonly defaultErrorStateMatcher = inject(ErrorStateMatcher);\n /** @docs-private */\n protected readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** implemented as part of base class. Decided not use mixinErrorState, not to overcomplicate\n * @docs-private */\n updateErrorState() {\n const oldState = this.errorState;\n const parent = this.parentFormGroup || this.parentForm;\n const matcher = this.errorStateMatcher || this.defaultErrorStateMatcher;\n const control = this.ngControl ? (this.ngControl.control as UntypedFormControl) : null;\n const newState = matcher.isErrorState(control, parent);\n\n if (newState !== oldState) {\n this.errorState = newState;\n this.stateChanges.next();\n }\n }\n\n /** Merges base configuration with locale-specific overrides. */\n protected buildConfig<T>(config: T): T {\n const localeConfig = this.localeConfig();\n\n return { ...config, ...localeConfig };\n }\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n DoCheck,\n ElementRef,\n EventEmitter,\n inject,\n input,\n Input,\n Output,\n PLATFORM_ID,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { ErrorStateMatcher, ruRULocaleData } from '@koobiq/components/core';\nimport { KbqHint } from '@koobiq/components/form-field';\nimport { ProgressSpinnerMode } from '@koobiq/components/progress-spinner';\nimport { BehaviorSubject, skip } from 'rxjs';\nimport {\n KBQ_FILE_UPLOAD_CONFIGURATION,\n KbqFile,\n KbqFileItem,\n KbqFileUploadBase,\n KbqFileValidatorFn,\n KbqInputFile,\n KbqInputFileLabel\n} from './file-upload';\n\nlet nextMultipleFileUploadUniqueId = 0;\n\nexport interface KbqInputFileMultipleLabel extends KbqInputFileLabel {\n captionTextWhenSelected: string;\n captionTextForCompactSize: string;\n gridHeaders: {\n file: string;\n size: string;\n };\n\n [k: string | number | symbol]: unknown;\n}\n\nexport const KBQ_MULTIPLE_FILE_UPLOAD_DEFAULT_CONFIGURATION: KbqInputFileMultipleLabel =\n ruRULocaleData.fileUpload.multiple;\n\nconst fileSizeCellPadding = 16;\n\n@Component({\n selector: 'kbq-multiple-file-upload,kbq-file-upload[multiple]',\n templateUrl: './multiple-file-upload.component.html',\n styleUrls: ['./file-upload.scss', './file-upload-tokens.scss', './multiple-file-upload.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-multiple-file-upload'\n }\n})\nexport class KbqMultipleFileUploadComponent\n extends KbqFileUploadBase\n implements AfterViewInit, KbqInputFile, ControlValueAccessor, DoCheck\n{\n /**\n * A value responsible for progress spinner type.\n * Loading logic depends on selected mode */\n @Input() progressMode: ProgressSpinnerMode = 'determinate';\n /** Array of file type specifiers */\n @Input() accept?: string[];\n @Input() disabled: boolean;\n /**\n * @deprecated use `FormControl.errors`\n */\n @Input() errors: string[] = [];\n @Input() size: 'compact' | 'default' = 'default';\n /**\n * custom ID for the file input element.\n */\n @Input() inputId: string = `kbq-multiple-file-upload-${nextMultipleFileUploadUniqueId++}`;\n /**\n * @deprecated use FormControl for validation\n */\n @Input() customValidation?: KbqFileValidatorFn[];\n\n /** An object used to control the error state of the component. */\n @Input() errorStateMatcher: ErrorStateMatcher;\n\n private _files: KbqFileItem[] = [];\n\n get files(): KbqFileItem[] {\n return this._files;\n }\n\n @Input()\n set files(currentFileList: KbqFileItem[]) {\n this._files = currentFileList;\n this.cvaOnChange(this._files);\n this.cdr.markForCheck();\n }\n\n /** Optional configuration to override default labels with localized text.*/\n readonly localeConfig = input<Partial<KbqInputFileMultipleLabel>>();\n\n /** Emits an event containing updated file list.\n * public output will be renamed to filesChange in next major release (#DS-3700) */\n @Output('fileQueueChanged') readonly filesChange: EventEmitter<KbqFileItem[]> = new EventEmitter<KbqFileItem[]>();\n /**\n * Emits an event containing a chunk of files added to the file list.\n * Useful when handling added files, skipping filtering file list.\n */\n @Output() readonly filesAdded: EventEmitter<KbqFileItem[]> = new EventEmitter<KbqFileItem[]>();\n /**\n * Emits an event containing a tuple of file and file's index when removed from the file list.\n * Useful when handle removed files, skipping filtering file list.\n */\n @Output() readonly fileRemoved: EventEmitter<[KbqFileItem, number]> = new EventEmitter<[KbqFileItem, number]>();\n\n /** File Icon Template */\n @ContentChild('kbqFileIcon', { static: false, read: TemplateRef })\n protected readonly customFileIcon: TemplateRef<HTMLElement>;\n\n /** @docs-private */\n @ViewChild('input') readonly input: ElementRef<HTMLInputElement>;\n @ViewChild('fileSizeHeaderCell') private readonly fileSizeHeaderCell: ElementRef<HTMLElement>;\n\n /** @docs-private */\n @ContentChildren(KbqHint) protected readonly hint: QueryList<TemplateRef<any>>;\n\n /** @docs-private */\n hasFocus = false;\n /** @docs-private */\n columnDefs: { header: string; cssClass: string }[];\n /** @docs-private */\n config: KbqInputFileMultipleLabel;\n\n /** @docs-private */\n separatedCaptionText: string[];\n /** @docs-private */\n separatedCaptionTextWhenSelected: string[];\n /** @docs-private */\n separatedCaptionTextForCompactSize: string[];\n\n /** cvaOnChange function registered via registerOnChange (ControlValueAccessor).\n * @docs-private\n */\n cvaOnChange = (_: KbqFileItem[]) => {};\n\n /** onTouch function registered via registerOnTouch (ControlValueAccessor).\n * @docs-private */\n onTouched = () => {};\n\n /** @docs-private */\n get acceptedFiles(): string {\n return this.accept?.join(',') || '*/*';\n }\n\n /**\n * @deprecated use `FormControl.errors`\n */\n get hasErrors(): boolean {\n return this.errors && !!this.errors.length;\n }\n\n /** @docs-private */\n get hasHint(): boolean {\n return this.hint.length > 0;\n }\n\n /**\n * Indicates an invalid state based on `errorState`,\n * applying a CSS class in HTML for visual feedback.\n * @docs-private\n */\n get invalid(): boolean {\n return this.errorState;\n }\n\n /**\n * Set maxWidth for filesize cell to enable proper ellipsis center,\n * @docs-private\n */\n protected get fileSizeCellMaxWidth() {\n return this.fileSizeHeaderCell?.nativeElement.offsetWidth - fileSizeCellPadding;\n }\n\n /** @docs-private */\n readonly configuration = inject<KbqInputFileMultipleLabel>(KBQ_FILE_UPLOAD_CONFIGURATION, {\n optional: true\n });\n\n private readonly focusMonitor = inject(FocusMonitor);\n private readonly platformId = inject(PLATFORM_ID);\n\n constructor() {\n super();\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n\n if (!this.localeService) {\n this.initDefaultParams();\n }\n\n if (this.ngControl) {\n // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n\n toObservable(this.localeConfig)\n .pipe(skip(1), takeUntilDestroyed())\n .subscribe(() => (this.localeService ? this.updateLocaleParams() : this.initDefaultParams()));\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n }\n }\n\n ngAfterViewInit() {\n // FormControl specific errors update\n this.ngControl?.statusChanges?.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.errors = Object.values(this.ngControl?.errors || {});\n this.cdr.markForCheck();\n });\n\n this.stateChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.cdr.markForCheck());\n }\n\n /** Implemented as part of ControlValueAccessor.\n * @docs-private */\n writeValue(files: FileList | KbqFileItem[] | null): void {\n // @TODO: remove FileList from arguments since it redundant. It resolves SSR (#DS-4414)\n if (!isPlatformBrowser(this.platformId)) return;\n\n this.files = files instanceof FileList || !files ? this.mapToFileItem(files) : files;\n this.filesChange.emit(this.files);\n }\n\n /** Implemented as part of ControlValueAccessor.\n * @docs-private */\n registerOnChange(fn: any): void {\n this.cvaOnChange = fn;\n }\n\n /** Implemented as part of ControlValueAccessor.\n * @docs-private */\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n /**\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n * @param isDisabled Whether the control should be disabled.\n * @docs-private\n */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n /** @docs-private */\n onFileSelectedViaClick({ target }: Event) {\n if (this.disabled) {\n return;\n }\n\n const filesToAdd = this.mapToFileItem((target as HTMLInputElement).files);\n\n this.files = [\n ...this.files,\n ...filesToAdd\n ];\n this.filesAdded.emit(filesToAdd);\n this.filesChange.emit(this.files);\n this.onTouched();\n // allows the same file selection every time user clicks on the control.\n this.renderer.setProperty(target, 'value', null);\n }\n\n /** @docs-private */\n onFileDropped(files: FileList | KbqFile[]) {\n if (this.disabled) {\n return;\n }\n\n const filesToAdd = this.mapToFileItem(files);\n\n this.files = [\n ...this.files,\n ...filesToAdd\n ];\n this.filesAdded.emit(filesToAdd);\n this.filesChange.emit(this.files);\n this.onTouched();\n }\n\n /** @docs-private */\n deleteFile(index: number, event?: MouseEvent) {\n if (this.disabled) return;\n\n event?.stopPropagation();\n const removedFile = this.files.splice(index, 1)[0];\n\n this.files = [...this.files];\n this.fileRemoved.emit([removedFile, index]);\n this.filesChange.emit(this.files);\n this.onTouched();\n\n if (this.files.length === 0) {\n setTimeout(() => {\n this.focusMonitor.focusVia(this.input, 'keyboard');\n });\n\n return;\n }\n }\n\n private updateLocaleParams = () => {\n this.config = this.buildConfig(this.configuration || this.localeService?.getParams('fileUpload').multiple);\n\n this.columnDefs = [\n { header: this.config.gridHeaders.file, cssClass: 'file' },\n { header: this.config.gridHeaders.size, cssClass: 'size' },\n { header: '', cssClass: 'action' }\n ];\n\n this.getCaptionText();\n\n this.cdr.markForCheck();\n };\n\n private mapToFileItem(files: FileList | KbqFile[] | null): KbqFileItem[] {\n if (!files) {\n return [];\n }\n\n return Array.from(files).map((file: File) => ({\n file,\n hasError: this.validateFile(file),\n loading: new BehaviorSubject<boolean>(false),\n progress: new BehaviorSubject<number>(0)\n }));\n }\n\n private validateFile(file: File): boolean | undefined {\n if (!this.customValidation?.length) {\n return;\n }\n\n const errorsPerFile = this.customValidation\n .reduce((errors: (string | null)[], validatorFn: KbqFileValidatorFn) => {\n errors.push(validatorFn(file));\n\n return errors;\n }, [])\n .filter(Boolean) as string[];\n\n this.errors = [\n ...this.errors,\n ...errorsPerFile\n ];\n\n return !!errorsPerFile.length;\n }\n\n private initDefaultParams() {\n this.config = this.buildConfig(KBQ_MULTIPLE_FILE_UPLOAD_DEFAULT_CONFIGURATION);\n\n this.columnDefs = [\n { header: this.config.gridHeaders.file, cssClass: 'file' },\n { header: this.config.gridHeaders.size, cssClass: 'size' },\n { header: '', cssClass: 'action' }\n ];\n\n this.getCaptionText();\n }\n\n private getCaptionText() {\n this.separatedCaptionText = this.config.captionText.split('{{ browseLink }}');\n this.separatedCaptionTextWhenSelected = this.config.captionTextWhenSelected.split('{{ browseLink }}');\n this.separatedCaptionTextForCompactSize = this.config.captionTextForCompactSize.split('{{ browseLink }}');\n }\n}\n","<div\n kbqFileDrop\n class=\"kbq-file-upload\"\n [class.kbq-disabled]=\"disabled\"\n [class.kbq-error]=\"invalid\"\n [class.kbq-selected]=\"files?.length\"\n [class.kbq-file-upload_default]=\"size === 'default'\"\n [class.kbq-file-upload_compact]=\"size === 'compact'\"\n (filesDropped)=\"onFileDropped($event)\"\n>\n @if (!files.length) {\n <div class=\"kbq-file-dropzone\">\n @if (size === 'default') {\n <i kbq-icon=\"kbq-cloud-arrow-up-o_32\" class=\"kbq-file-dropzone__icon\"></i>\n <div class=\"kbq-file-dropzone__text\">\n <div class=\"kbq-file-multiple__header\">{{ config.title }}</div>\n <div>\n <!-- prettier-ignore -->\n <div class=\"kbq-file-multiple__caption\">{{ separatedCaptionText[0] }}<label kbq-link pseudo [disabled]=\"disabled\" [tabIndex]=\"-1\" [for]=\"inputId\">{{ config.browseLink }}<ng-container *ngTemplateOutlet=\"inputTemplate\" /></label>{{ separatedCaptionText[1] }}</div>\n </div>\n </div>\n } @else {\n <i kbq-icon=\"kbq-cloud-arrow-up-o_24\" class=\"kbq-file-dropzone__icon\"></i>\n <span class=\"kbq-file-dropzone__text kbq-file-multiple__caption\">\n {{ separatedCaptionTextForCompactSize[0] }}\n <label kbq-link pseudo [disabled]=\"disabled\" [for]=\"inputId\" [tabIndex]=\"-1\">\n {{ config.browseLink }}\n <ng-container *ngTemplateOutlet=\"inputTemplate\" />\n </label>\n {{ separatedCaptionTextForCompactSize[1] }}\n </span>\n }\n </div>\n } @else {\n <div class=\"kbq-file-upload__dropzone\">\n <div class=\"kbq-file-upload__grid\">\n <div class=\"kbq-file-multiple-uploaded__header\">\n <div class=\"kbq-file-multiple-uploaded__header-inner\">\n <div #fileSizeHeaderCell class=\"kbq-file-upload__file kbq-file-upload__grid-cell\">\n {{ config.gridHeaders.file }}\n </div>\n <div class=\"kbq-file-upload__size kbq-file-upload__grid-cell\">\n {{ config.gridHeaders.size }}\n </div>\n <div class=\"kbq-file-upload__action kbq-file-upload__grid-cell\"></div>\n </div>\n </div>\n <kbq-list-selection [autoSelect]=\"false\" [disabled]=\"disabled\">\n @for (file of files; track file; let index = $index) {\n <kbq-list-option\n class=\"kbq-file-multiple__uploaded-item\"\n [value]=\"file.file.name\"\n (keydown.backspace)=\"deleteFile(index)\"\n (keydown.delete)=\"deleteFile(index)\"\n >\n <div class=\"kbq-file-upload__row\" [class.kbq-error]=\"file.hasError\">\n <div\n class=\"kbq-file-upload__file kbq-file-upload__grid-cell\"\n [style.max-width.px]=\"fileSizeCellMaxWidth\"\n >\n @if (\n { loading: file.loading | async, progress: file.progress | async };\n as asyncData\n ) {\n @if (!asyncData.loading) {\n <ng-container\n [ngTemplateOutlet]=\"$any(customFileIcon)\"\n [ngTemplateOutletContext]=\"{ $implicit: file }\"\n />\n }\n @if (asyncData.loading) {\n <kbq-progress-spinner\n class=\"kbq-file-upload-name-cell__icon\"\n [mode]=\"progressMode\"\n [value]=\"asyncData.progress || 0\"\n />\n }\n }\n <span\n class=\"kbq-file-item__text\"\n [debounceInterval]=\"0\"\n [kbqEllipsisCenter]=\"file.file.name\"\n ></span>\n </div>\n <div class=\"kbq-file-upload__size kbq-file-upload__grid-cell\">\n {{ file.file.size | kbqDataSize }}\n </div>\n <div\n class=\"kbq-file-upload__action kbq-file-upload__grid-cell\"\n (click)=\"deleteFile(index, $event)\"\n >\n <i kbq-icon-button=\"kbq-xmark-circle_16\" tabindex=\"-1\" [disabled]=\"disabled\"></i>\n </div>\n </div>\n </kbq-list-option>\n }\n </kbq-list-selection>\n </div>\n <div class=\"kbq-file-btn-upload\">\n <div class=\"kbq-file-dropzone\">\n <i kbq-icon=\"kbq-cloud-arrow-up-o_24\" class=\"kbq-file-dropzone__icon\"></i>\n <span class=\"kbq-file-dropzone__text kbq-file-multiple__caption\">\n {{ separatedCaptionTextWhenSelected[0] }}\n <label kbq-link pseudo [disabled]=\"disabled\" [for]=\"inputId\" [tabIndex]=\"-1\">\n {{ config.browseLink }}\n <ng-container *ngTemplateOutlet=\"inputTemplate\" />\n </label>\n {{ separatedCaptionTextWhenSelected[1] }}\n </span>\n </div>\n </div>\n </div>\n }\n</div>\n\n@if (hasHint) {\n <div class=\"kbq-file-upload__hint\">\n <ng-content select=\"kbq-hint\" />\n </div>\n}\n\n<ng-template #inputTemplate>\n <input\n #input\n multiple\n tabindex=\"0\"\n type=\"file\"\n class=\"cdk-visually-hidden\"\n [accept]=\"acceptedFiles\"\n [disabled]=\"disabled\"\n [id]=\"inputId\"\n (change)=\"onFileSelectedViaClick($event)\"\n />\n</ng-template>\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n DoCheck,\n ElementRef,\n EventEmitter,\n inject,\n input,\n Input,\n Output,\n PLATFORM_ID,\n QueryList,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormControlStatus } from '@angular/forms';\nimport { ErrorStateMatcher, ruRULocaleData } from '@koobiq/components/core';\nimport { KbqHint } from '@koobiq/components/form-field';\nimport { ProgressSpinnerMode } from '@koobiq/components/progress-spinner';\nimport { BehaviorSubject, skip } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport {\n KBQ_FILE_UPLOAD_CONFIGURATION,\n KbqFile,\n KbqFileItem,\n KbqFileUploadBase,\n KbqFileValidatorFn,\n KbqInputFile,\n KbqInputFileLabel\n} from './file-upload';\n\nlet nextSingleFileUploadUniqueId = 0;\n\nexport const KBQ_SINGLE_FILE_UPLOAD_DEFAULT_CONFIGURATION: KbqInputFileLabel = ruRULocaleData.fileUpload.single;\n\n@Component({\n selector: 'kbq-single-file-upload,kbq-file-upload:not([multiple])',\n templateUrl: './single-file-upload.component.html',\n styleUrls: ['./file-upload.scss', './file-upload-tokens.scss', './single-file-upload.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-single-file-upload'\n }\n})\nexport class KbqSingleFileUploadComponent\n extends KbqFileUploadBase\n implements AfterViewInit, KbqInputFile, ControlValueAccessor, DoCheck\n{\n /**\n * A value responsible for progress spinner type.\n * Loading logic depends on selected mode */\n @Input() progressMode: ProgressSpinnerMode = 'determinate';\n /** Array of file type specifiers */\n @Input() accept?: string[];\n @Input() disabled: boolean = false;\n /**\n * @deprecated use `FormControl.errors`\n */\n @Input() errors: string[] = [];\n @Input() inputId: string = `kbq-single-file-upload-${nextSingleFileUploadUniqueId++}`;\n /**\n * @deprecated use FormControl for validation\n */\n @Input() customValidation?: KbqFileValidatorFn[];\n\n /** An object used to control the error state of the component. */\n @Input() errorStateMatcher: ErrorStateMatcher;\n\n private _file: KbqFileItem | null = null;\n\n @Input()\n get file(): KbqFileItem | null {\n return this._file;\n }\n\n set file(currentFile: KbqFileItem | null) {\n this._file = currentFile;\n this.cvaOnChange(this._file);\n this.cdr.markForCheck();\n }\n\n /**\n * Controls whether to display the file size information.\n * @default true\n */\n @Input({ transform: booleanAttribute }) showFileSize: boolean = true;\n\n /** Optional configuration to override default labels with localized text.*/\n readonly localeConfig = input<Partial<KbqInputFileLabel>>();\n\n /** Emits an event containing updated file.\n * public output will be renamed to fileChange in next major release (#DS-3700) */\n @Output('fileQueueChange') readonly fileChange: EventEmitter<KbqFileItem | null> =\n new EventEmitter<KbqFileItem | null>();\n\n /** @docs-private */\n @ViewChild('input') input: ElementRef<HTMLInputElement>;\n\n /** @docs-private */\n @ContentChildren(KbqHint) private readonly hint: QueryList<KbqHint>;\n\n /** @docs-private */\n config: KbqInputFileLabel;\n /** @docs-private */\n separatedCaptionText: string[];\n\n /** cvaOnChange function registered via registerOnChange (ControlValueAccessor).\n * @docs-private\n */\n cvaOnChange = (_: KbqFileItem | null) => {};\n\n /** onTouch function registered via registerOnTouch (ControlValueAccessor).\n * @docs-private\n */\n onTouched = () => {};\n\n /** @docs-private */\n get acceptedFiles(): string {\n return this.accept?.join(',') || '*/*';\n }\n\n /** @docs-private */\n get hasHint(): boolean {\n return this.hint.length > 0;\n }\n\n /**\n * Indicates an invalid state based on file errors or `errorState`,\n * applying a CSS class in HTML for visual feedback.\n * @docs-private\n */\n get invalid(): boolean {\n return !!this.file?.hasError || this.errorState;\n }\n\n /** @docs-private */\n readonly configuration: KbqInputFileLabel | null = inject(KBQ_FILE_UPLOAD_CONFIGURATION, {\n optional: true\n });\n\n private readonly focusMonitor = inject(FocusMonitor);\n private readonly platformId = inject(PLATFORM_ID);\n\n constructor() {\n super();\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n\n if (!this.localeService) {\n this.initDefaultParams();\n }\n\n if (this.ngControl) {\n // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n\n toObservable(this.localeConfig)\n .pipe(skip(1), takeUntilDestroyed())\n .subscribe(() => {\n this.localeService ? this.updateLocaleParams() : this.initDefaultParams();\n });\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n }\n }\n\n ngAfterViewInit() {\n // FormControl specific errors update\n this.ngControl?.statusChanges\n ?.pipe(distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))\n .subscribe((status: FormControlStatus) => {\n if (this._file) {\n this._file.hasError = status === 'INVALID';\n }\n\n this.errors = Object.values(this.ngControl?.errors || {});\n this.cdr.markForCheck();\n });\n\n this.stateChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.cdr.markForCheck());\n }\n\n /** Implemented as part of ControlValueAccessor.\n * @docs-private */\n writeValue(file: File | KbqFileItem | null): void {\n // @TODO: remove File from arguments since it redundant. It resolves SSR (#DS-4414)\n if (!isPlatformBrowser(this.platformId)) return;\n\n this.file = file instanceof File ? this.mapToFileItem(file) : file;\n this.fileChange.emit(this.file);\n }\n\n /** Implemented as part of ControlValueAccessor.\n * @docs-private */\n registerOnChange(fn: any): void {\n this.cvaOnChange = fn;\n }\n\n /** Implemented as part of ControlValueAccessor.\n * @docs-private */\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /**\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n * @param isDisabled Whether the control should be disabled.\n * @docs-private\n */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n /** @docs-private */\n onFileSelectedViaClick({ target }: Event): void {\n if (this.disabled) {\n return;\n }\n\n const fileToAdd = (target as HTMLInputElement).files?.item(0);\n\n if (fileToAdd) {\n this.file = this.mapToFileItem(fileToAdd);\n this.fileChange.emit(this.file);\n }\n\n this.onTouched();\n // allows the same file selection every time user clicks on the control.\n this.renderer.setProperty(target, 'value', null);\n }\n\n /** @docs-private */\n deleteItem(event?: MouseEvent): void {\n if (this.disabled) return;\n\n event?.stopPropagation();\n this.file = null;\n this.fileChange.emit(this.file);\n this.errors = [];\n // mark as touched after file drop even if file wasn't correct\n this.onTouched();\n\n if (this.file === null) {\n setTimeout(() => {\n this.focusMonitor.focusVia(this.input, 'keyboard');\n });\n\n return;\n }\n }\n\n /** @docs-private */\n onFileDropped(files: FileList | KbqFile[]): void {\n if (this.disabled) {\n return;\n }\n\n if (files?.length) {\n this.file = this.mapToFileItem(files[0]);\n this.fileChange.emit(this.file);\n }\n\n // mark as touched after file drop even if file wasn't correct\n this.onTouched();\n }\n\n private updateLocaleParams = () => {\n this.config = this.buildConfig<KbqInputFileLabel>(\n this.configuration || this.localeService?.getParams('fileUpload').multiple\n );\n\n this.getCaptionText();\n\n this.cdr.markForCheck();\n };\n\n private mapToFileItem(file: File): KbqFileItem {\n return {\n file,\n hasError: this.validateFile(file),\n progress: new BehaviorSubject<number>(0),\n loading: new BehaviorSubject<boolean>(false)\n };\n }\n\n private validateFile(file: File): boolean | undefined {\n if (!this.customValidation?.length) return;\n\n this.errors = this.customValidation\n .reduce((errors: (string | null)[], validatorFn: KbqFileValidatorFn) => {\n errors.push(validatorFn(file));\n\n return errors;\n }, [])\n .filter(Boolean) as string[];\n\n return !!this.errors.length;\n }\n\n private initDefaultParams() {\n this.config = this.buildConfig(KBQ_SINGLE_FILE_UPLOAD_DEFAULT_CONFIGURATION);\n\n this.getCaptionText();\n }\n\n private getCaptionText() {\n this.separatedCaptionText = this.config.captionText.split('{{ browseLink }}');\n }\n}\n","<div\n kbqFileDrop\n class=\"kbq-file-upload\"\n [class.kbq-disabled]=\"disabled\"\n [class.kbq-error]=\"invalid\"\n (filesDropped)=\"onFileDropped($event)\"\n>\n @if (!file) {\n <div class=\"kbq-file-dropzone\">\n <i kbq-icon=\"kbq-cloud-arrow-up-o_24\" class=\"kbq-file-dropzone__icon\"></i>\n <!-- prettier-ignore -->\n <span class=\"kbq-file-dropzone__text\">{{ separatedCaptionText[0] }}<label kbq-link pseudo [disabled]=\"disabled\" [tabIndex]=\"-1\" [for]=\"inputId\">{{ config.browseLink }}<input #input type=\"file\" class=\"cdk-visually-hidden\" tabindex=\"0\" [id]=\"inputId\" [accept]=\"acceptedFiles\" [disabled]=\"disabled\" (change)=\"onFileSelectedViaClick($event)\"></label>{{ separatedCaptionText[1] }}</span>\n </div>\n } @else {\n @if (file) {\n <div class=\"kbq-file-item\">\n <div class=\"kbq-file-item__text-wrapper\">\n @if ({ loading: file.loading | async, progress: file.progress | async }; as asyncData) {\n @if (!asyncData.loading) {\n <ng-content select=\"[kbq-icon]\" />\n }\n @if (asyncData.loading) {\n <kbq-progress-spinner [mode]=\"progressMode\" [value]=\"asyncData.progress || 0\" />\n }\n }\n <div class=\"kbq-file-item__text\" [kbqEllipsisCenter]=\"file.file.name\" [minVisibleLength]=\"10\"></div>\n </div>\n @if (showFileSize) {\n <div class=\"kbq-file-item__size\">\n {{ file.file.size | kbqDataSize }}\n </div>\n }\n <i\n kbq-icon-button=\"kbq-xmark-circle_16\"\n class=\"kbq-file-upload__action\"\n [disabled]=\"disabled\"\n (click)=\"deleteItem($event)\"\n (keydown.backspace)=\"deleteItem()\"\n (keydown.delete)=\"deleteItem()\"\n ></i>\n </div>\n }\n }\n</div>\n\n@if (hasHint) {\n <div class=\"kbq-file-upload__hint\">\n <ng-content select=\"kbq-hint\" />\n </div>\n}\n","import { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqDataSizePipe } from '@koobiq/components/core';\nimport { KbqEllipsisCenterModule } from '@koobiq/components/ellipsis-center';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqLinkModule } from '@koobiq/components/link';\nimport { KbqListModule } from '@koobiq/components/list';\nimport { KbqProgressSpinnerModule } from '@koobiq/components/progress-spinner';\nimport { KbqToolTipModule } from '@koobiq/components/tooltip';\nimport { KbqFileDropDirective } from './file-drop';\nimport { KbqMultipleFileUploadComponent } from './multiple-file-upload.component';\nimport { KbqSingleFileUploadComponent } from './single-file-upload.component';\n\n@NgModule({\n imports: [\n FormsModule,\n ReactiveFormsModule,\n KbqToolTipModule,\n KbqProgressSpinnerModule,\n KbqIconModule,\n KbqButtonModule,\n KbqListModule,\n KbqFormFieldModule,\n KbqEllipsisCenterModule,\n KbqDataSizePipe,\n KbqLinkModule,\n AsyncPipe,\n NgClass,\n NgTemplateOutlet\n ],\n declarations: [\n KbqFileDropDirective,\n KbqSingleFileUploadComponent,\n KbqMultipleFileUploadComponent\n ],\n exports: [\n KbqSingleFileUploadComponent,\n KbqMultipleFileUploadComponent,\n KbqFileDropDirective\n ]\n})\nexport class KbqFileUploadModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i7.KbqFileDropDirective","i3","i4","i5.KbqFileDropDirective","i6","i7"],"mappings":"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"}
1
+ {"version":3,"file":"koobiq-components-file-upload.mjs","sources":["../../../packages/components/file-upload/primitives/file-drop.ts","../../../packages/components/file-upload/primitives/file-picker.ts","../../../packages/components/file-upload/file-upload.ts","../../../packages/components/file-upload/multiple-file-upload.component.ts","../../../packages/components/file-upload/multiple-file-upload.component.html","../../../packages/components/file-upload/single-file-upload.component.ts","../../../packages/components/file-upload/single-file-upload.component.html","../../../packages/components/file-upload/file-upload.module.ts","../../../packages/components/file-upload/koobiq-components-file-upload.ts"],"sourcesContent":["import { Directive, EventEmitter, Output } from '@angular/core';\nimport { KbqFile } from '../file-upload';\n\nconst isFolderCanBeDragged = (): boolean => 'webkitGetAsEntry' in DataTransferItem.prototype;\nconst entryIsDirectory = (entry?: FileSystemEntry): entry is FileSystemDirectoryEntry => !!entry && entry.isDirectory;\nconst entryIsFile = (entry?: FileSystemEntry): entry is FileSystemFileEntry => !!entry && entry.isFile;\n\n@Directive({\n selector: '[kbqFileDrop]',\n exportAs: 'kbqFileDrop',\n host: {\n class: 'kbq-file-drop',\n '[class.kbq-file-drop_dragover]': 'dragover',\n '(dragover)': 'onDragOver($event)',\n '(dragleave)': 'onDragLeave($event)',\n '(drop)': 'onDrop($event)'\n }\n})\nexport class KbqFileDropDirective {\n /** Flag that controls css-class modifications on drag events. */\n dragover: boolean;\n\n /** Emits an event when file items were dropped. */\n @Output() readonly filesDropped: EventEmitter<KbqFile[]> = new EventEmitter<KbqFile[]>();\n\n /** @docs-private */\n onDragOver(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.dragover = true;\n }\n\n /** @docs-private */\n onDragLeave(event: DragEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.dragover = false;\n }\n\n /** @docs-private */\n onDrop(event: DragEvent) {\n if (!isFolderCanBeDragged()) {\n // eslint-disable-next-line no-console\n console.warn('Drag-and-drop functionality for folders is not supported by this browser.');\n }\n\n event.preventDefault();\n event.stopPropagation();\n this.dragover = false;\n\n if (event.dataTransfer && event.dataTransfer.items.length > 0) {\n // event.dataTransfer.items requires dom.iterable lib\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const fileEntries: FileSystemEntry[] = [...event.dataTransfer.items]\n .filter((item: DataTransferItem) => item.kind === 'file')\n .map((item: DataTransferItem) => item.webkitGetAsEntry()!);\n\n Promise.all(fileEntries.map(unwrapDirectory))\n .then((fileList) => fileList.reduce((res, next) => res.concat(next), []))\n .then((entries: KbqFile[]) => this.filesDropped.emit(entries));\n }\n }\n}\n\nconst unwrapDirectory = async (item: FileSystemEntry): Promise<KbqFile[]> => {\n const queue: (FileSystemEntry | Promise<FileSystemEntry[]>)[] = [item];\n const result: Promise<KbqFile>[] = [];\n\n while (queue.length > 0) {\n const next = queue.pop();\n\n if (next instanceof Promise) {\n queue.push(...(await next));\n } else if (entryIsDirectory(next)) {\n const directoryReader = next.createReader();\n\n queue.push(\n new Promise<FileSystemEntry[]>((resolve, reject) => directoryReader.readEntries(resolve, reject))\n );\n } else if (entryIsFile(next)) {\n const fileEntry = next;\n\n result.push(\n new Promise((resolve, reject) => {\n fileEntry.file((file) => {\n (file as KbqFile).fullPath = fileEntry.fullPath;\n resolve(file as KbqFile);\n }, reject);\n })\n );\n }\n }\n\n return Promise.all(result);\n};\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n output,\n viewChild\n} from '@angular/core';\n\n/**\n * File upload context.\n */\n@Directive({\n selector: '[kbqFileUploadContext]',\n exportAs: 'kbqFileUploadContext'\n})\nexport class KbqFileUploadContext {\n /** id for file input */\n readonly id = input<string | null>(null);\n /** Whether file input selectable or not */\n readonly disabled = model<boolean | null>(null);\n /** Selection mode for file input */\n readonly multiple = input(null, { transform: booleanAttribute });\n /** File type specifiers */\n readonly accept = input<string | null>(null);\n /**\n * Reflects webkitdirectory attribute, which indicates that elements can only select directories instead of files.\n */\n readonly onlyDirectory = input<boolean | null>(null);\n}\n\n/**\n * Loader component to trigger Browser API.\n */\n@Component({\n selector: '[kbqFileLoader]',\n exportAs: 'kbqFileLoader',\n template: `\n <ng-content />\n <input\n #input\n tabindex=\"0\"\n type=\"file\"\n class=\"cdk-visually-hidden\"\n [attr.multiple]=\"innerMultiple()\"\n [attr.webkitdirectory]=\"innerOnlyDirectory()\"\n [accept]=\"innerAccept()\"\n [disabled]=\"innerDisabled()\"\n [id]=\"innerFor()\"\n (change)=\"fileChange.emit($event)\"\n />\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-file-loader'\n }\n})\nexport class KbqFileLoader {\n private fileUploadContext = inject(KbqFileUploadContext, { optional: true });\n\n /** Whether file input selectable or not */\n readonly disabled = input<boolean>(false);\n /** Selection mode for file input */\n readonly multiple = input<boolean | null>(null);\n /** File type specifiers */\n readonly accept = input<string | null>(null);\n /** id for file input */\n readonly for = input<string | null>(null);\n /**\n * Reflects webkitdirectory attribute,\n * which indicates that elements can only select directories instead of files.\n * @link [`HTMLInputElement: webkitdirectory property`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory)\n */\n readonly onlyDirectory = input<boolean | null>(null);\n\n /** Event fires when file selected in file-picker. */\n readonly fileChange = output<Event>();\n\n /** Underlying file input element */\n readonly input = viewChild.required<ElementRef<HTMLInputElement>>('input');\n\n /** @docs-private */\n protected readonly innerDisabled = computed(() => this.fileUploadContext?.disabled() ?? this.disabled());\n /** @docs-private */\n protected readonly innerMultiple = computed(() => this.fileUploadContext?.multiple() ?? this.multiple());\n /** @docs-private */\n protected readonly innerAccept = computed(() => this.fileUploadContext?.accept() ?? this.accept());\n /** @docs-private */\n protected readonly innerFor = computed(() => this.fileUploadContext?.id() ?? this.for());\n /** @docs-private */\n protected readonly innerOnlyDirectory = computed(\n () => this.fileUploadContext?.onlyDirectory() ?? this.onlyDirectory()\n );\n}\n\n/**\n * Responsible for list update (add/remove)\n */\n@Directive({\n selector: '[kbqFileList]',\n exportAs: 'kbqFileList',\n host: {\n class: 'kbq-file-list'\n }\n})\nexport class KbqFileList<T> {\n /** Current list of items. */\n readonly list = model<T[]>([]);\n /**\n * Emits an event containing a tuple of file and file's index when removed from the file list.\n * Useful when handle removed files, skipping filtering file list.\n */\n readonly itemRemoved = output<[T, number]>();\n /** Emits array of items that were added to the list. */\n readonly itemsAdded = output<T[]>();\n\n /** Adds a single item to the list and emits event */\n add(item: T): void {\n this.update((current) => [...current, item]);\n this.itemsAdded.emit([item]);\n }\n\n /** Adds multiple items to the list and emits event */\n addArray(items: T[]): void {\n this.update((current) => [...current, ...items]);\n this.itemsAdded.emit(items);\n }\n\n /** Removes the first occurrence of the specified item. Returns removed items and emits event. */\n remove(item: T): T[] {\n const removed: T[] = [];\n\n this.update((current) =>\n current.filter((currentItem) => {\n const isRemoved = currentItem !== item;\n\n if (isRemoved) {\n removed.push(currentItem);\n }\n\n return isRemoved;\n })\n );\n\n return removed;\n }\n\n /** Removes item at specified index. Returns removed items and emits event. */\n removeAt(index: number): T[] {\n const removed: T[] = [];\n\n this.update((current) => {\n const removedItem = current.splice(index, 1);\n\n removed.push(...removedItem);\n\n return current;\n });\n this.itemRemoved.emit([removed[0], index]);\n\n return removed;\n }\n\n private update(fn: (current: T[]) => T[]): void {\n this.list.update(fn);\n }\n}\n","import {\n ChangeDetectorRef,\n DestroyRef,\n ElementRef,\n inject,\n InjectionToken,\n InputSignal,\n Renderer2\n} from '@angular/core';\nimport { FormGroupDirective, NgControl, NgForm, UntypedFormControl } from '@angular/forms';\nimport { CanUpdateErrorState, ErrorStateMatcher, KBQ_LOCALE_SERVICE } from '@koobiq/components/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { KbqFileList, KbqFileUploadContext } from './primitives';\n\nexport interface KbqFile extends File {\n /* used when directory dropped */\n fullPath: string;\n}\n\nexport interface KbqFileItem {\n file: File;\n hasError?: boolean;\n loading?: BehaviorSubject<boolean>;\n progress?: BehaviorSubject<number>;\n}\n\n/**\n * @docs-private\n * @deprecated Will be removed in next major release\n */\nexport interface KbqInputFile {\n disabled: boolean;\n accept?: string[];\n onFileSelectedViaClick(event: Event): void;\n onFileDropped(files: FileList | KbqFile[]): void;\n}\n\nexport interface KbqInputFileLabel {\n /* Text for description, used with `browseLink` */\n captionText: string;\n /* Text for link with which the file(s) can be selected to download */\n browseLink: string;\n /* Header for multiple file-upload in default size */\n title?: string | undefined;\n}\n\n/**\n * @deprecated use FormControl for validation\n */\nexport type KbqFileValidatorFn = (file: File) => string | null;\n\n/* Object for labels customization inside file upload component */\nexport const KBQ_FILE_UPLOAD_CONFIGURATION = new InjectionToken<KbqInputFileLabel>('KbqFileUploadConfiguration');\n\n/** @deprecated use `FileValidators.isCorrectExtension` instead. Will be removed in next major release. */\nexport const isCorrectExtension = (file: File, accept?: string[]): boolean => {\n if (!accept?.length) return true;\n\n const { name, type } = file;\n const fileExt: string = name.split('.').pop() || '';\n\n for (const acceptedExtensionOrMimeType of accept) {\n const typeAsRegExp = new RegExp(acceptedExtensionOrMimeType);\n\n if (typeAsRegExp.test(fileExt) || typeAsRegExp.test(type)) {\n return true;\n }\n }\n\n return false;\n};\n\n/** @docs-private */\nexport abstract class KbqFileUploadBase<T = KbqInputFileLabel> implements CanUpdateErrorState {\n protected abstract localeConfig: InputSignal<Partial<T> | undefined>;\n /** Tracks whether the component is in an error state based on the control, parent form,\n * and `errorStateMatcher`, triggering visual updates and state changes if needed. */\n errorState: boolean = false;\n\n /** An object used to control the error state of the component. */\n abstract errorStateMatcher: ErrorStateMatcher;\n\n /**\n * Emits whenever the component state changes and should cause the parent\n * form-field to update. Implemented as part of `KbqFormFieldControl`.\n * @docs-private\n */\n readonly stateChanges = new Subject<void>();\n\n /** @docs-private */\n protected readonly fileUploadContext = inject(KbqFileUploadContext, { host: true });\n /** @docs-private */\n protected readonly fileList = inject<KbqFileList<KbqFileItem>>(KbqFileList, { host: true });\n\n /** @docs-private */\n get disabled(): boolean {\n return this.fileUploadContext.disabled() ?? false;\n }\n\n /** @docs-private */\n protected readonly cdr = inject(ChangeDetectorRef);\n /** @docs-private */\n protected readonly renderer = inject(Renderer2);\n /** @docs-private */\n protected readonly destroyRef = inject(DestroyRef);\n /** @docs-private */\n protected readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n /** @docs-private */\n protected readonly ngControl = inject(NgControl, { optional: true, self: true });\n /** @docs-private */\n protected readonly parentForm = inject(NgForm, { optional: true });\n /** @docs-private */\n protected readonly parentFormGroup = inject(FormGroupDirective, { optional: true });\n /** @docs-private */\n protected readonly defaultErrorStateMatcher = inject(ErrorStateMatcher);\n /** @docs-private */\n protected readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** implemented as part of base class. Decided not use mixinErrorState, not to overcomplicate\n * @docs-private */\n updateErrorState() {\n const oldState = this.errorState;\n const parent = this.parentFormGroup || this.parentForm;\n const matcher = this.errorStateMatcher || this.defaultErrorStateMatcher;\n const control = this.ngControl ? (this.ngControl.control as UntypedFormControl) : null;\n const newState = matcher.isErrorState(control, parent);\n\n if (newState !== oldState) {\n this.errorState = newState;\n this.stateChanges.next();\n }\n }\n\n /** Merges base configuration with locale-specific overrides. */\n protected buildConfig<T>(config: T): T {\n const localeConfig = this.localeConfig();\n\n return { ...config, ...localeConfig };\n }\n}\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { AsyncPipe, isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n DoCheck,\n ElementRef,\n EventEmitter,\n inject,\n input,\n Input,\n Output,\n PLATFORM_ID,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { ErrorStateMatcher, KbqDataSizePipe, ruRULocaleData } from '@koobiq/components/core';\nimport { KbqEllipsisCenterDirective } from '@koobiq/components/ellipsis-center';\nimport { KbqHint } from '@koobiq/components/form-field';\nimport { KbqIcon, KbqIconButton } from '@koobiq/components/icon';\nimport { KbqLink } from '@koobiq/components/link';\nimport { KbqListModule } from '@koobiq/components/list';\nimport { KbqProgressSpinnerModule, ProgressSpinnerMode } from '@koobiq/components/progress-spinner';\nimport { BehaviorSubject, skip } from 'rxjs';\nimport {\n KBQ_FILE_UPLOAD_CONFIGURATION,\n KbqFile,\n KbqFileItem,\n KbqFileUploadBase,\n KbqFileValidatorFn,\n KbqInputFileLabel\n} from './file-upload';\nimport { KbqFileDropDirective, KbqFileList, KbqFileLoader, KbqFileUploadContext } from './primitives';\n\nlet nextMultipleFileUploadUniqueId = 0;\n\nexport interface KbqInputFileMultipleLabel extends KbqInputFileLabel {\n captionTextWhenSelected: string;\n captionTextForCompactSize: string;\n gridHeaders: {\n file: string;\n size: string;\n };\n\n [k: string | number | symbol]: unknown;\n}\n\nexport const KBQ_MULTIPLE_FILE_UPLOAD_DEFAULT_CONFIGURATION: KbqInputFileMultipleLabel =\n ruRULocaleData.fileUpload.multiple;\n\nconst fileSizeCellPadding = 16;\n\n@Component({\n selector: 'kbq-multiple-file-upload,kbq-file-upload[multiple]',\n imports: [\n AsyncPipe,\n NgTemplateOutlet,\n KbqFileDropDirective,\n KbqIconButton,\n KbqIcon,\n KbqLink,\n KbqListModule,\n KbqDataSizePipe,\n KbqProgressSpinnerModule,\n KbqEllipsisCenterDirective,\n KbqFileLoader\n ],\n templateUrl: './multiple-file-upload.component.html',\n styleUrls: ['./file-upload.scss', './file-upload-tokens.scss', './multiple-file-upload.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-multiple-file-upload'\n },\n hostDirectives: [\n {\n directive: KbqFileUploadContext,\n inputs: ['id', 'disabled', 'onlyDirectory']\n },\n { directive: KbqFileList, outputs: ['listChange: filesChange', 'itemsAdded', 'itemRemoved'] }\n ]\n})\nexport class KbqMultipleFileUploadComponent\n extends KbqFileUploadBase\n implements AfterViewInit, ControlValueAccessor, DoCheck\n{\n /**\n * A value responsible for progress spinner type.\n * Loading logic depends on selected mode */\n @Input() progressMode: ProgressSpinnerMode = 'determinate';\n /** Array of file type specifiers */\n @Input() accept?: string[];\n /**\n * @deprecated use `FormControl.errors`\n */\n @Input() errors: string[] = [];\n @Input() size: 'compact' | 'default' = 'default';\n /**\n * custom ID for the file input element.\n */\n @Input() inputId: string = `kbq-multiple-file-upload-${nextMultipleFileUploadUniqueId++}`;\n /**\n * @deprecated use FormControl for validation\n */\n @Input() customValidation?: KbqFileValidatorFn[];\n\n /** An object used to control the error state of the component. */\n @Input() errorStateMatcher: ErrorStateMatcher;\n\n get files(): KbqFileItem[] {\n return this.fileList.list();\n }\n\n @Input()\n set files(currentFileList: KbqFileItem[]) {\n this.fileList.list.set(currentFileList);\n this.cvaOnChange(this.files);\n }\n\n /** Optional configuration to override default labels with localized text.*/\n readonly localeConfig = input<Partial<KbqInputFileMultipleLabel>>();\n\n /** Emits an event containing updated file list.\n * public output will be renamed to filesChange in next major release (#DS-3700) */\n @Output('fileQueueChanged') readonly filesChange: EventEmitter<KbqFileItem[]> = new EventEmitter<KbqFileItem[]>();\n /**\n * Emits an event containing a chunk of files added to the file list.\n * Useful when handling added files, skipping filtering file list.\n */\n @Output() readonly filesAdded: EventEmitter<KbqFileItem[]> = new EventEmitter<KbqFileItem[]>();\n /**\n * Emits an event containing a tuple of file and file's index when removed from the file list.\n * Useful when handle removed files, skipping filtering file list.\n */\n @Output() readonly fileRemoved: EventEmitter<[KbqFileItem, number]> = new EventEmitter<[KbqFileItem, number]>();\n\n /** File Icon Template */\n @ContentChild('kbqFileIcon', { static: false, read: TemplateRef })\n protected readonly customFileIcon: TemplateRef<HTMLElement>;\n\n @ViewChild(KbqFileLoader) protected readonly fileLoader: KbqFileLoader | undefined;\n @ViewChild('fileSizeHeaderCell') private readonly fileSizeHeaderCell: ElementRef<HTMLElement>;\n\n /** @docs-private */\n @ContentChildren(KbqHint) protected readonly hint: QueryList<TemplateRef<any>>;\n\n /** @docs-private */\n hasFocus = false;\n /** @docs-private */\n columnDefs: { header: string; cssClass: string }[];\n /** @docs-private */\n config: KbqInputFileMultipleLabel;\n\n /** @docs-private */\n separatedCaptionText: string[];\n /** @docs-private */\n separatedCaptionTextWhenSelected: string[];\n /** @docs-private */\n separatedCaptionTextForCompactSize: string[];\n\n /** cvaOnChange function registered via registerOnChange (ControlValueAccessor).\n * @docs-private\n */\n cvaOnChange = (_: KbqFileItem[]) => {};\n\n /** onTouch function registered via registerOnTouch (ControlValueAccessor).\n * @docs-private */\n onTouched = () => {};\n\n /** @docs-private */\n get input(): ElementRef<HTMLInputElement> | undefined {\n return this.fileLoader?.input();\n }\n\n /** @docs-private */\n get acceptedFiles(): string {\n return this.accept?.join(',') || '*/*';\n }\n\n /**\n * @deprecated use `FormControl.errors`\n */\n get hasErrors(): boolean {\n return this.errors && !!this.errors.length;\n }\n\n /** @docs-private */\n get hasHint(): boolean {\n return this.hint.length > 0;\n }\n\n /**\n * Indicates an invalid state based on `errorState`,\n * applying a CSS class in HTML for visual feedback.\n * @docs-private\n */\n get invalid(): boolean {\n return this.errorState;\n }\n\n /**\n * Set maxWidth for filesize cell to enable proper ellipsis center,\n * @docs-private\n */\n protected get fileSizeCellMaxWidth() {\n return this.fileSizeHeaderCell?.nativeElement.offsetWidth - fileSizeCellPadding;\n }\n\n /** @docs-private */\n readonly configuration = inject<KbqInputFileMultipleLabel>(KBQ_FILE_UPLOAD_CONFIGURATION, {\n optional: true\n });\n\n private readonly focusMonitor = inject(FocusMonitor);\n private readonly platformId = inject(PLATFORM_ID);\n\n constructor() {\n super();\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n\n if (!this.localeService) {\n this.initDefaultParams();\n }\n\n if (this.ngControl) {\n // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n\n toObservable(this.localeConfig)\n .pipe(skip(1), takeUntilDestroyed())\n .subscribe(() => (this.localeService ? this.updateLocaleParams() : this.initDefaultParams()));\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n }\n }\n\n ngAfterViewInit() {\n // FormControl specific errors update\n this.ngControl?.statusChanges?.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.errors = Object.values(this.ngControl?.errors || {});\n this.cdr.markForCheck();\n });\n\n this.stateChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.cdr.markForCheck());\n }\n\n /** Implemented as part of ControlValueAccessor.\n * @docs-private */\n writeValue(files: FileList | KbqFileItem[] | null): void {\n // @TODO: remove FileList from arguments since it redundant. It resolves SSR (#DS-4414)\n if (!isPlatformBrowser(this.platformId)) return;\n\n this.files = files instanceof FileList || !files ? this.mapToFileItem(files) : files;\n this.filesChange.emit(this.files);\n }\n\n /** Implemented as part of ControlValueAccessor.\n * @docs-private */\n registerOnChange(fn: any): void {\n this.cvaOnChange = fn;\n }\n\n /** Implemented as part of ControlValueAccessor.\n * @docs-private */\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n /**\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n * @param isDisabled Whether the control should be disabled.\n * @docs-private\n */\n setDisabledState(isDisabled: boolean): void {\n this.fileUploadContext.disabled.set(isDisabled);\n this.cdr.markForCheck();\n }\n\n /** @docs-private */\n onFileSelectedViaClick({ target }: Event) {\n if (this.disabled) return;\n\n const filesToAdd = this.mapToFileItem((target as HTMLInputElement).files);\n\n this.onFileAdded(filesToAdd);\n // allows the same file selection every time user clicks on the control.\n this.renderer.setProperty(target, 'value', null);\n }\n\n /** @docs-private */\n onFileDropped(files: KbqFile[]) {\n if (this.disabled) return;\n\n const filesToAdd = this.mapToFileItem(files);\n\n this.onFileAdded(filesToAdd);\n }\n\n /** @docs-private */\n deleteFile(index: number, event?: MouseEvent, origin?: FocusOrigin): void {\n if (this.disabled) return;\n\n event?.stopPropagation();\n\n const removedFile = this.fileList.removeAt(index)[0];\n\n this.cvaOnChange(this.files);\n\n this.fileRemoved.emit([removedFile, index]);\n this.filesChange.emit(this.files);\n this.onTouched();\n\n if (this.files.length === 0) {\n setTimeout(() => {\n const input = this.input?.nativeElement;\n\n if (input) {\n this.focusMonitor.focusVia(input, origin ?? 'keyboard');\n }\n });\n\n return;\n }\n }\n\n private updateLocaleParams = () => {\n this.config = this.buildConfig(this.configuration || this.localeService?.getParams('fileUpload').multiple);\n\n this.columnDefs = [\n { header: this.config.gridHeaders.file, cssClass: 'file' },\n { header: this.config.gridHeaders.size, cssClass: 'size' },\n { header: '', cssClass: 'action' }\n ];\n\n this.getCaptionText();\n\n this.cdr.markForCheck();\n };\n\n private mapToFileItem(files: FileList | KbqFile[] | null): KbqFileItem[] {\n if (!files) {\n return [];\n }\n\n return Array.from(files).map((file: File) => ({\n file,\n hasError: this.validateFile(file),\n loading: new BehaviorSubject<boolean>(false),\n progress: new BehaviorSubject<number>(0)\n }));\n }\n\n private validateFile(file: File): boolean | undefined {\n if (!this.customValidation?.length) {\n return;\n }\n\n const errorsPerFile = this.customValidation\n .reduce((errors: (string | null)[], validatorFn: KbqFileValidatorFn) => {\n errors.push(validatorFn(file));\n\n return errors;\n }, [])\n .filter(Boolean) as string[];\n\n this.errors = [\n ...this.errors,\n ...errorsPerFile\n ];\n\n return !!errorsPerFile.length;\n }\n\n private initDefaultParams() {\n this.config = this.buildConfig(KBQ_MULTIPLE_FILE_UPLOAD_DEFAULT_CONFIGURATION);\n\n this.columnDefs = [\n { header: this.config.gridHeaders.file, cssClass: 'file' },\n { header: this.config.gridHeaders.size, cssClass: 'size' },\n { header: '', cssClass: 'action' }\n ];\n\n this.getCaptionText();\n }\n\n private getCaptionText() {\n this.separatedCaptionText = this.config.captionText.split('{{ browseLink }}');\n this.separatedCaptionTextWhenSelected = this.config.captionTextWhenSelected.split('{{ browseLink }}');\n this.separatedCaptionTextForCompactSize = this.config.captionTextForCompactSize.split('{{ browseLink }}');\n }\n\n private onFileAdded(filesToAdd: KbqFileItem[]) {\n this.fileList.addArray(filesToAdd);\n\n this.cvaOnChange(this.files);\n\n this.filesAdded.emit(filesToAdd);\n this.filesChange.emit(this.files);\n this.onTouched();\n }\n}\n","<div\n kbqFileDrop\n class=\"kbq-file-upload\"\n [class.kbq-disabled]=\"disabled\"\n [class.kbq-error]=\"invalid\"\n [class.kbq-selected]=\"files.length\"\n [class.kbq-file-upload_default]=\"size === 'default'\"\n [class.kbq-file-upload_compact]=\"size === 'compact'\"\n (filesDropped)=\"onFileDropped($event)\"\n>\n @if (!files.length) {\n <div class=\"kbq-file-dropzone\">\n @if (size === 'default') {\n <i kbq-icon=\"kbq-cloud-arrow-up-o_32\" class=\"kbq-file-dropzone__icon\"></i>\n <div class=\"kbq-file-dropzone__text\">\n <div class=\"kbq-file-multiple__header\">{{ config.title }}</div>\n <div>\n <!-- prettier-ignore -->\n <div class=\"kbq-file-multiple__caption\">{{ separatedCaptionText[0] }}<label kbq-link pseudo kbqFileLoader [accept]=\"acceptedFiles\" [disabled]=\"disabled\" [for]=\"fileUploadContext.id() || inputId\" [tabIndex]=\"-1\" [multiple]=\"true\" (fileChange)=\"onFileSelectedViaClick($event)\">{{ config.browseLink }}</label>{{ separatedCaptionText[1] }}</div>\n </div>\n </div>\n } @else {\n <i kbq-icon=\"kbq-cloud-arrow-up-o_24\" class=\"kbq-file-dropzone__icon\"></i>\n <span class=\"kbq-file-dropzone__text kbq-file-multiple__caption\">\n {{ separatedCaptionTextForCompactSize[0] }}\n <label\n kbq-link\n pseudo\n kbqFileLoader\n [for]=\"fileUploadContext.id() || inputId\"\n [multiple]=\"true\"\n [accept]=\"acceptedFiles\"\n [disabled]=\"disabled\"\n [tabIndex]=\"-1\"\n (fileChange)=\"onFileSelectedViaClick($event)\"\n >\n {{ config.browseLink }}\n </label>\n {{ separatedCaptionTextForCompactSize[1] }}\n </span>\n }\n </div>\n } @else {\n <div class=\"kbq-file-upload__dropzone\">\n <div class=\"kbq-file-upload__grid\">\n <div class=\"kbq-file-multiple-uploaded__header\">\n <div class=\"kbq-file-multiple-uploaded__header-inner\">\n <div #fileSizeHeaderCell class=\"kbq-file-upload__file kbq-file-upload__grid-cell\">\n {{ config.gridHeaders.file }}\n </div>\n <div class=\"kbq-file-upload__size kbq-file-upload__grid-cell\">\n {{ config.gridHeaders.size }}\n </div>\n <div class=\"kbq-file-upload__action kbq-file-upload__grid-cell\"></div>\n </div>\n </div>\n <kbq-list-selection [autoSelect]=\"false\" [disabled]=\"disabled\">\n @for (file of files; track file) {\n <kbq-list-option\n class=\"kbq-file-multiple__uploaded-item\"\n [value]=\"file.file.name\"\n (keydown.backspace)=\"deleteFile($index)\"\n (keydown.delete)=\"deleteFile($index)\"\n >\n <div class=\"kbq-file-upload__row\" [class.kbq-error]=\"file.hasError\">\n <div\n class=\"kbq-file-upload__file kbq-file-upload__grid-cell\"\n [style.max-width.px]=\"fileSizeCellMaxWidth\"\n >\n @if (\n { loading: file.loading | async, progress: file.progress | async };\n as asyncData\n ) {\n @if (!asyncData.loading) {\n <ng-container\n [ngTemplateOutlet]=\"$any(customFileIcon)\"\n [ngTemplateOutletContext]=\"{ $implicit: file }\"\n />\n }\n @if (asyncData.loading) {\n <kbq-progress-spinner\n class=\"kbq-file-upload-name-cell__icon\"\n [mode]=\"progressMode\"\n [value]=\"asyncData.progress || 0\"\n />\n }\n }\n <span\n class=\"kbq-file-item__text\"\n [debounceInterval]=\"0\"\n [kbqEllipsisCenter]=\"file.file.name\"\n ></span>\n </div>\n <div class=\"kbq-file-upload__size kbq-file-upload__grid-cell\">\n {{ file.file.size | kbqDataSize }}\n </div>\n <div\n class=\"kbq-file-upload__action kbq-file-upload__grid-cell\"\n (click)=\"deleteFile($index, $event, 'program')\"\n >\n <i kbq-icon-button=\"kbq-circle-xmark_16\" tabindex=\"-1\" [disabled]=\"disabled\"></i>\n </div>\n </div>\n </kbq-list-option>\n }\n </kbq-list-selection>\n </div>\n <div class=\"kbq-file-btn-upload\">\n <div class=\"kbq-file-dropzone\">\n <i kbq-icon=\"kbq-cloud-arrow-up-o_24\" class=\"kbq-file-dropzone__icon\"></i>\n <span class=\"kbq-file-dropzone__text kbq-file-multiple__caption\">\n {{ separatedCaptionTextWhenSelected[0] }}\n <label\n kbq-link\n pseudo\n kbqFileLoader\n [multiple]=\"true\"\n [accept]=\"acceptedFiles\"\n [for]=\"fileUploadContext.id() || inputId\"\n [disabled]=\"disabled\"\n [tabIndex]=\"-1\"\n (fileChange)=\"onFileSelectedViaClick($event)\"\n >\n {{ config.browseLink }}\n </label>\n {{ separatedCaptionTextWhenSelected[1] }}\n </span>\n </div>\n </div>\n </div>\n }\n</div>\n\n@if (hasHint) {\n <div class=\"kbq-file-upload__hint\">\n <ng-content select=\"kbq-hint\" />\n </div>\n}\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { AsyncPipe, isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n DoCheck,\n ElementRef,\n EventEmitter,\n inject,\n input,\n Input,\n Output,\n PLATFORM_ID,\n QueryList,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormControlStatus } from '@angular/forms';\nimport { ErrorStateMatcher, KbqDataSizePipe, ruRULocaleData } from '@koobiq/components/core';\nimport { KbqEllipsisCenterDirective } from '@koobiq/components/ellipsis-center';\nimport { KbqHint } from '@koobiq/components/form-field';\nimport { KbqIcon, KbqIconButton } from '@koobiq/components/icon';\nimport { KbqLink } from '@koobiq/components/link';\nimport { KbqProgressSpinner, ProgressSpinnerMode } from '@koobiq/components/progress-spinner';\nimport { BehaviorSubject, skip } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport {\n KBQ_FILE_UPLOAD_CONFIGURATION,\n KbqFile,\n KbqFileItem,\n KbqFileUploadBase,\n KbqFileValidatorFn,\n KbqInputFileLabel\n} from './file-upload';\nimport { KbqFileDropDirective, KbqFileList, KbqFileLoader, KbqFileUploadContext } from './primitives';\n\nlet nextSingleFileUploadUniqueId = 0;\n\nexport const KBQ_SINGLE_FILE_UPLOAD_DEFAULT_CONFIGURATION: KbqInputFileLabel = ruRULocaleData.fileUpload.single;\n\n@Component({\n selector: 'kbq-single-file-upload,kbq-file-upload:not([multiple])',\n imports: [\n AsyncPipe,\n KbqFileDropDirective,\n KbqLink,\n KbqIcon,\n KbqIconButton,\n KbqProgressSpinner,\n KbqEllipsisCenterDirective,\n KbqDataSizePipe,\n KbqFileLoader\n ],\n templateUrl: './single-file-upload.component.html',\n styleUrls: ['./file-upload.scss', './file-upload-tokens.scss', './single-file-upload.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-single-file-upload'\n },\n hostDirectives: [\n {\n directive: KbqFileUploadContext,\n inputs: ['id', 'disabled', 'multiple', 'onlyDirectory']\n },\n { directive: KbqFileList, outputs: ['listChange: fileChange'] }\n ]\n})\nexport class KbqSingleFileUploadComponent\n extends KbqFileUploadBase\n implements AfterViewInit, ControlValueAccessor, DoCheck\n{\n /**\n * A value responsible for progress spinner type.\n * Loading logic depends on selected mode */\n @Input() progressMode: ProgressSpinnerMode = 'determinate';\n /** Array of file type specifiers */\n @Input() accept?: string[];\n /**\n * @deprecated use `FormControl.errors`\n */\n @Input() errors: string[] = [];\n @Input() inputId: string = `kbq-single-file-upload-${nextSingleFileUploadUniqueId++}`;\n /**\n * @deprecated use FormControl for validation\n */\n @Input() customValidation?: KbqFileValidatorFn[];\n\n /** An object used to control the error state of the component. */\n @Input() errorStateMatcher: ErrorStateMatcher;\n\n @Input()\n get file(): KbqFileItem | null {\n const files = this.fileList.list();\n\n return files.length === 0 ? null : files[0];\n }\n\n set file(currentFile: KbqFileItem | null) {\n this.fileList.list.set(currentFile === null ? [] : [currentFile]);\n this.cvaOnChange(currentFile);\n this.cdr.markForCheck();\n }\n\n /**\n * Controls whether to display the file size information.\n * @default true\n */\n @Input({ transform: booleanAttribute }) showFileSize: boolean = true;\n\n /** Optional configuration to override default labels with localized text.*/\n readonly localeConfig = input<Partial<KbqInputFileLabel>>();\n\n /** Emits an event containing updated file.\n * public output will be renamed to fileChange in next major release (#DS-3700) */\n @Output('fileQueueChange') readonly fileChange: EventEmitter<KbqFileItem | null> =\n new EventEmitter<KbqFileItem | null>();\n\n /** @docs-private */\n @ViewChild(KbqFileLoader) protected readonly fileLoader: KbqFileLoader | undefined;\n\n /** @docs-private */\n @ContentChildren(KbqHint) private readonly hint: QueryList<KbqHint>;\n\n /** @docs-private */\n config: KbqInputFileLabel;\n /** @docs-private */\n separatedCaptionText: string[];\n\n /** cvaOnChange function registered via registerOnChange (ControlValueAccessor).\n * @docs-private\n */\n cvaOnChange = (_: KbqFileItem | null) => {};\n\n /** onTouch function registered via registerOnTouch (ControlValueAccessor).\n * @docs-private\n */\n onTouched = () => {};\n\n /** @docs-private */\n get input(): ElementRef<HTMLInputElement> | undefined {\n return this.fileLoader?.input();\n }\n\n /** @docs-private */\n get acceptedFiles(): string {\n return this.accept?.join(',') || '*/*';\n }\n\n /** @docs-private */\n get hasHint(): boolean {\n return this.hint.length > 0;\n }\n\n /**\n * Indicates an invalid state based on file errors or `errorState`,\n * applying a CSS class in HTML for visual feedback.\n * @docs-private\n */\n get invalid(): boolean {\n return !!this.file?.hasError || this.errorState;\n }\n\n /** @docs-private */\n readonly configuration: KbqInputFileLabel | null = inject(KBQ_FILE_UPLOAD_CONFIGURATION, {\n optional: true\n });\n\n private readonly focusMonitor = inject(FocusMonitor);\n private readonly platformId = inject(PLATFORM_ID);\n\n constructor() {\n super();\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n\n if (!this.localeService) {\n this.initDefaultParams();\n }\n\n if (this.ngControl) {\n // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n\n toObservable(this.localeConfig)\n .pipe(skip(1), takeUntilDestroyed())\n .subscribe(() => {\n this.localeService ? this.updateLocaleParams() : this.initDefaultParams();\n });\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n }\n }\n\n ngAfterViewInit() {\n // FormControl specific errors update\n this.ngControl?.statusChanges\n ?.pipe(distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))\n .subscribe((status: FormControlStatus) => {\n const file = this.file;\n\n if (file) {\n file.hasError = status === 'INVALID';\n }\n\n this.errors = Object.values(this.ngControl?.errors || {});\n this.cdr.markForCheck();\n });\n\n this.stateChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.cdr.markForCheck());\n }\n\n /** Implemented as part of ControlValueAccessor.\n * @docs-private */\n writeValue(file: File | KbqFileItem | null): void {\n // @TODO: remove File from arguments since it redundant. It resolves SSR (#DS-4414)\n if (!isPlatformBrowser(this.platformId)) return;\n\n this.file = file instanceof File ? this.mapToFileItem(file) : file;\n this.fileChange.emit(this.file);\n }\n\n /** Implemented as part of ControlValueAccessor.\n * @docs-private */\n registerOnChange(fn: any): void {\n this.cvaOnChange = fn;\n }\n\n /** Implemented as part of ControlValueAccessor.\n * @docs-private */\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /**\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n * @param isDisabled Whether the control should be disabled.\n * @docs-private\n */\n setDisabledState(isDisabled: boolean): void {\n this.fileUploadContext.disabled.set(isDisabled);\n this.cdr.markForCheck();\n }\n\n /** @docs-private */\n onFileSelectedViaClick({ target }: Event): void {\n if (this.disabled) return;\n\n const fileToAdd = (target as HTMLInputElement).files?.item(0);\n\n if (fileToAdd) {\n this.file = this.mapToFileItem(fileToAdd);\n this.fileChange.emit(this.file);\n }\n\n this.onTouched();\n // allows the same file selection every time user clicks on the control.\n this.renderer.setProperty(target, 'value', null);\n }\n\n /** @docs-private */\n onFileDropped(files: KbqFile[]): void {\n if (this.disabled) return;\n\n if (files?.length) {\n this.file = this.mapToFileItem(files[0]);\n this.fileChange.emit(this.file);\n }\n\n // mark as touched after file drop even if file wasn't correct\n this.onTouched();\n }\n\n /** @docs-private */\n deleteItem(event?: MouseEvent, origin?: FocusOrigin): void {\n if (this.disabled) return;\n\n event?.stopPropagation();\n this.file = null;\n this.fileChange.emit(this.file);\n this.errors = [];\n // mark as touched after file drop even if file wasn't correct\n this.onTouched();\n\n if (this.file === null) {\n setTimeout(() => {\n const input = this.input?.nativeElement;\n\n if (input) {\n this.focusMonitor.focusVia(input, origin ?? 'keyboard');\n }\n });\n\n return;\n }\n }\n\n private updateLocaleParams = () => {\n this.config = this.buildConfig<KbqInputFileLabel>(\n this.configuration || this.localeService?.getParams('fileUpload').multiple\n );\n\n this.getCaptionText();\n\n this.cdr.markForCheck();\n };\n\n private mapToFileItem(file: File): KbqFileItem {\n return {\n file,\n hasError: this.validateFile(file),\n progress: new BehaviorSubject<number>(0),\n loading: new BehaviorSubject<boolean>(false)\n };\n }\n\n private validateFile(file: File): boolean | undefined {\n if (!this.customValidation?.length) return;\n\n this.errors = this.customValidation\n .reduce((errors: (string | null)[], validatorFn: KbqFileValidatorFn) => {\n errors.push(validatorFn(file));\n\n return errors;\n }, [])\n .filter(Boolean) as string[];\n\n return !!this.errors.length;\n }\n\n private initDefaultParams() {\n this.config = this.buildConfig(KBQ_SINGLE_FILE_UPLOAD_DEFAULT_CONFIGURATION);\n\n this.getCaptionText();\n }\n\n private getCaptionText() {\n this.separatedCaptionText = this.config.captionText.split('{{ browseLink }}');\n }\n}\n","<div\n kbqFileDrop\n class=\"kbq-file-upload\"\n [class.kbq-disabled]=\"disabled\"\n [class.kbq-error]=\"invalid\"\n (filesDropped)=\"onFileDropped($event)\"\n>\n @if (!file) {\n <div class=\"kbq-file-dropzone\">\n <i kbq-icon=\"kbq-cloud-arrow-up-o_24\" class=\"kbq-file-dropzone__icon\"></i>\n <!-- prettier-ignore -->\n <span class=\"kbq-file-dropzone__text\">{{ separatedCaptionText[0] }}<label kbq-link pseudo kbqFileLoader [for]=\"fileUploadContext.id() || inputId\" [accept]=\"acceptedFiles\" [disabled]=\"disabled\" [tabIndex]=\"-1\" (fileChange)=\"onFileSelectedViaClick($event)\">{{ config.browseLink }}</label>{{ separatedCaptionText[1] }}</span>\n </div>\n } @else {\n @if (file) {\n <div class=\"kbq-file-item\">\n <div class=\"kbq-file-item__text-wrapper\">\n @if ({ loading: file.loading | async, progress: file.progress | async }; as asyncData) {\n @if (!asyncData.loading) {\n <ng-content select=\"[kbq-icon]\" />\n }\n @if (asyncData.loading) {\n <kbq-progress-spinner [mode]=\"progressMode\" [value]=\"asyncData.progress || 0\" />\n }\n }\n <div class=\"kbq-file-item__text\" [kbqEllipsisCenter]=\"file.file.name\" [minVisibleLength]=\"10\"></div>\n </div>\n @if (showFileSize) {\n <div class=\"kbq-file-item__size\">\n {{ file.file.size | kbqDataSize }}\n </div>\n }\n <i\n kbq-icon-button=\"kbq-circle-xmark_16\"\n class=\"kbq-file-upload__action\"\n [disabled]=\"disabled\"\n (click)=\"deleteItem($event, 'program')\"\n (keydown.backspace)=\"deleteItem()\"\n (keydown.delete)=\"deleteItem()\"\n ></i>\n </div>\n }\n }\n</div>\n\n@if (hasHint) {\n <div class=\"kbq-file-upload__hint\">\n <ng-content select=\"kbq-hint\" />\n </div>\n}\n","import { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqDataSizePipe } from '@koobiq/components/core';\nimport { KbqEllipsisCenterModule } from '@koobiq/components/ellipsis-center';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqLinkModule } from '@koobiq/components/link';\nimport { KbqListModule } from '@koobiq/components/list';\nimport { KbqProgressSpinnerModule } from '@koobiq/components/progress-spinner';\nimport { KbqToolTipModule } from '@koobiq/components/tooltip';\nimport { KbqMultipleFileUploadComponent } from './multiple-file-upload.component';\nimport { KbqFileDropDirective } from './primitives';\nimport { KbqSingleFileUploadComponent } from './single-file-upload.component';\n\n@NgModule({\n imports: [\n FormsModule,\n ReactiveFormsModule,\n KbqToolTipModule,\n KbqProgressSpinnerModule,\n KbqIconModule,\n KbqButtonModule,\n KbqListModule,\n KbqFormFieldModule,\n KbqEllipsisCenterModule,\n KbqDataSizePipe,\n KbqLinkModule,\n AsyncPipe,\n NgClass,\n NgTemplateOutlet,\n KbqFileDropDirective,\n KbqSingleFileUploadComponent,\n KbqMultipleFileUploadComponent\n ],\n exports: [\n KbqSingleFileUploadComponent,\n KbqMultipleFileUploadComponent,\n KbqFileDropDirective\n ]\n})\nexport class KbqFileUploadModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.KbqFileUploadContext","i1.KbqFileList"],"mappings":"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"}