@koobiq/components 18.32.0 → 18.34.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 (331) hide show
  1. package/accordion/accordion-trigger.component.scss +2 -0
  2. package/actions-panel/actions-panel-config.d.ts +4 -3
  3. package/actions-panel/actions-panel-container.scss +0 -6
  4. package/actions-panel/actions-panel-ref.d.ts +13 -0
  5. package/actions-panel/actions-panel.d.ts +1 -7
  6. package/clamped-text/clamped-text.d.ts +61 -0
  7. package/clamped-text/clamped-text.scss +17 -0
  8. package/clamped-text/constants.d.ts +14 -0
  9. package/clamped-text/index.d.ts +3 -0
  10. package/clamped-text/module.d.ts +7 -0
  11. package/content-panel/content-panel-aside.scss +9 -0
  12. package/content-panel/content-panel-body.scss +9 -0
  13. package/content-panel/content-panel-container.scss +32 -0
  14. package/content-panel/content-panel-footer.scss +5 -0
  15. package/content-panel/content-panel-header.scss +30 -0
  16. package/content-panel/content-panel-tokens.scss +9 -0
  17. package/content-panel/content-panel.d.ts +149 -0
  18. package/content-panel/content-panel.scss +25 -0
  19. package/content-panel/index.d.ts +3 -0
  20. package/content-panel/module.d.ts +7 -0
  21. package/content-panel/resizable.d.ts +70 -0
  22. package/core/locales/en-US.d.ts +4 -0
  23. package/core/locales/es-LA.d.ts +4 -0
  24. package/core/locales/fa-IR.d.ts +4 -0
  25. package/core/locales/locale-service.d.ts +28 -0
  26. package/core/locales/pt-BR.d.ts +4 -0
  27. package/core/locales/ru-RU.d.ts +4 -0
  28. package/core/locales/tk-TM.d.ts +4 -0
  29. package/core/locales/types.d.ts +5 -0
  30. package/core/locales/zh-CN.d.ts +4 -0
  31. package/core/option/action-container.d.ts +5 -0
  32. package/core/option/action-container.scss +45 -0
  33. package/core/option/action.d.ts +1 -4
  34. package/core/option/action.scss +13 -12
  35. package/core/option/index.d.ts +1 -0
  36. package/core/option/option.d.ts +4 -3
  37. package/core/styles/common/_select.scss +55 -15
  38. package/core/styles/common/_tokens.scss +2 -0
  39. package/datepicker/calendar.component.d.ts +1 -1
  40. package/datepicker/datepicker-input.directive.d.ts +1 -1
  41. package/datepicker/datepicker-toggle.component.d.ts +1 -1
  42. package/datepicker/datepicker.component.d.ts +2 -2
  43. package/dynamic-translation/dynamic-translation.d.ts +72 -0
  44. package/dynamic-translation/index.d.ts +2 -0
  45. package/dynamic-translation/module.d.ts +7 -0
  46. package/esm2022/accordion/accordion-trigger.component.mjs +2 -2
  47. package/esm2022/accordion/accordion.component.mjs +2 -2
  48. package/esm2022/actions-panel/actions-panel-config.mjs +1 -1
  49. package/esm2022/actions-panel/actions-panel-container.mjs +7 -7
  50. package/esm2022/actions-panel/actions-panel-ref.mjs +17 -1
  51. package/esm2022/actions-panel/actions-panel.mjs +34 -24
  52. package/esm2022/alert/alert.component.mjs +2 -2
  53. package/esm2022/badge/badge.component.mjs +2 -2
  54. package/esm2022/breadcrumbs/breadcrumbs.mjs +3 -6
  55. package/esm2022/button/button.component.mjs +4 -3
  56. package/esm2022/button-toggle/button-toggle.component.mjs +11 -11
  57. package/esm2022/checkbox/checkbox.mjs +2 -2
  58. package/esm2022/clamped-text/clamped-text.mjs +202 -0
  59. package/esm2022/clamped-text/constants.mjs +20 -0
  60. package/esm2022/clamped-text/index.mjs +4 -0
  61. package/esm2022/clamped-text/koobiq-components-clamped-text.mjs +5 -0
  62. package/esm2022/clamped-text/module.mjs +19 -0
  63. package/esm2022/code-block/code-block.mjs +3 -3
  64. package/esm2022/content-panel/content-panel.mjs +432 -0
  65. package/esm2022/content-panel/index.mjs +4 -0
  66. package/esm2022/content-panel/koobiq-components-content-panel.mjs +5 -0
  67. package/esm2022/content-panel/module.mjs +42 -0
  68. package/esm2022/content-panel/resizable.mjs +138 -0
  69. package/esm2022/core/locales/en-US.mjs +5 -1
  70. package/esm2022/core/locales/es-LA.mjs +5 -1
  71. package/esm2022/core/locales/fa-IR.mjs +5 -1
  72. package/esm2022/core/locales/pt-BR.mjs +5 -1
  73. package/esm2022/core/locales/ru-RU.mjs +5 -1
  74. package/esm2022/core/locales/tk-TM.mjs +5 -1
  75. package/esm2022/core/locales/types.mjs +1 -1
  76. package/esm2022/core/locales/zh-CN.mjs +5 -1
  77. package/esm2022/core/option/action-container.mjs +23 -0
  78. package/esm2022/core/option/action.mjs +16 -30
  79. package/esm2022/core/option/index.mjs +2 -1
  80. package/esm2022/core/option/optgroup.mjs +2 -2
  81. package/esm2022/core/option/option.mjs +4 -4
  82. package/esm2022/core/version.mjs +2 -2
  83. package/esm2022/datepicker/calendar-header.component.mjs +6 -3
  84. package/esm2022/datepicker/calendar.component.mjs +9 -9
  85. package/esm2022/datepicker/datepicker-input.directive.mjs +5 -1
  86. package/esm2022/datepicker/datepicker-toggle.component.mjs +8 -8
  87. package/esm2022/datepicker/datepicker.component.mjs +3 -3
  88. package/esm2022/dl/dl.component.mjs +2 -2
  89. package/esm2022/dropdown/dropdown.component.mjs +3 -3
  90. package/esm2022/dynamic-translation/dynamic-translation.mjs +175 -0
  91. package/esm2022/dynamic-translation/index.mjs +3 -0
  92. package/esm2022/dynamic-translation/koobiq-components-dynamic-translation.mjs +5 -0
  93. package/esm2022/dynamic-translation/module.mjs +25 -0
  94. package/esm2022/empty-state/empty-state.component.mjs +2 -2
  95. package/esm2022/file-upload/file-drop.mjs +1 -1
  96. package/esm2022/file-upload/multiple-file-upload.component.mjs +11 -11
  97. package/esm2022/file-upload/single-file-upload.component.mjs +11 -11
  98. package/esm2022/filter-bar/filter-bar.mjs +5 -3
  99. package/esm2022/filter-bar/filter-bar.types.mjs +1 -1
  100. package/esm2022/filter-bar/filter-refresher.mjs +5 -5
  101. package/esm2022/filter-bar/filter-reset.mjs +4 -3
  102. package/esm2022/filter-bar/filter-search.mjs +11 -11
  103. package/esm2022/filter-bar/filters.mjs +4 -3
  104. package/esm2022/filter-bar/pipe-add.mjs +6 -6
  105. package/esm2022/filter-bar/pipes/base-pipe.mjs +8 -3
  106. package/esm2022/filter-bar/pipes/pipe-button.mjs +7 -7
  107. package/esm2022/filter-bar/pipes/pipe-date.mjs +11 -3
  108. package/esm2022/filter-bar/pipes/pipe-datetime.mjs +11 -3
  109. package/esm2022/filter-bar/pipes/pipe-multi-select.mjs +4 -10
  110. package/esm2022/filter-bar/pipes/pipe-multi-tree-select.mjs +10 -9
  111. package/esm2022/filter-bar/pipes/pipe-readonly.mjs +7 -7
  112. package/esm2022/filter-bar/pipes/pipe-select.mjs +3 -4
  113. package/esm2022/filter-bar/pipes/pipe-text.mjs +8 -2
  114. package/esm2022/filter-bar/pipes/pipe-tree-select.mjs +9 -3
  115. package/esm2022/form-field/cleaner.mjs +16 -11
  116. package/esm2022/form-field/error.mjs +2 -2
  117. package/esm2022/form-field/fieldset.mjs +2 -2
  118. package/esm2022/form-field/form-field.mjs +5 -5
  119. package/esm2022/form-field/hint.mjs +2 -2
  120. package/esm2022/form-field/password-hint.mjs +16 -5
  121. package/esm2022/form-field/password-toggle.mjs +45 -10
  122. package/esm2022/form-field/reactive-password-hint.mjs +20 -19
  123. package/esm2022/form-field/stepper.mjs +9 -9
  124. package/esm2022/icon/icon-button.component.mjs +2 -2
  125. package/esm2022/input/input-number.mjs +15 -10
  126. package/esm2022/input/input-password.mjs +2 -2
  127. package/esm2022/list/list-selection.component.mjs +5 -5
  128. package/esm2022/list/list.component.mjs +2 -2
  129. package/esm2022/list/list.module.mjs +12 -5
  130. package/esm2022/loader-overlay/loader-overlay.component.mjs +2 -2
  131. package/esm2022/markdown/markdown.component.mjs +3 -3
  132. package/esm2022/modal/modal.component.mjs +14 -14
  133. package/esm2022/modal/modal.directive.mjs +7 -5
  134. package/esm2022/navbar/navbar-item.component.mjs +5 -5
  135. package/esm2022/navbar/navbar.component.mjs +2 -2
  136. package/esm2022/navbar/vertical-navbar.component.mjs +2 -2
  137. package/esm2022/popover/popover-confirm.component.mjs +3 -3
  138. package/esm2022/popover/popover.component.mjs +3 -3
  139. package/esm2022/progress-bar/progress-bar.component.mjs +2 -2
  140. package/esm2022/progress-spinner/progress-spinner.component.mjs +2 -2
  141. package/esm2022/radio/radio.component.mjs +2 -2
  142. package/esm2022/risk-level/risk-level.component.mjs +2 -2
  143. package/esm2022/scrollbar/scrollbar.component.mjs +5 -5
  144. package/esm2022/select/select.component.mjs +56 -26
  145. package/esm2022/sidebar/sidebar.component.mjs +46 -27
  146. package/esm2022/sidepanel/sidepanel-container.component.mjs +15 -4
  147. package/esm2022/sidepanel/sidepanel-directives.mjs +5 -5
  148. package/esm2022/sidepanel/sidepanel-ref.mjs +8 -6
  149. package/esm2022/splitter/splitter.component.mjs +1 -1
  150. package/esm2022/table/table.component.mjs +2 -2
  151. package/esm2022/tabs/tab-body.component.mjs +3 -3
  152. package/esm2022/tabs/tab-group.component.mjs +27 -27
  153. package/esm2022/tabs/tab.component.mjs +4 -4
  154. package/esm2022/tags/tag-input.mjs +2 -2
  155. package/esm2022/tags/tag-list.component.mjs +13 -13
  156. package/esm2022/textarea/textarea.component.mjs +6 -4
  157. package/esm2022/timepicker/timepicker.directive.mjs +1 -1
  158. package/esm2022/timezone/timezone-option.component.mjs +2 -2
  159. package/esm2022/timezone/timezone-select.component.mjs +3 -3
  160. package/esm2022/toast/toast.component.mjs +3 -3
  161. package/esm2022/toggle/toggle.component.mjs +3 -3
  162. package/esm2022/tooltip/tooltip.component.mjs +3 -3
  163. package/esm2022/top-bar/top-bar.mjs +2 -2
  164. package/esm2022/tree/toggle.mjs +2 -2
  165. package/esm2022/tree/tree-option.component.mjs +3 -3
  166. package/esm2022/tree/tree-selection.component.mjs +6 -6
  167. package/esm2022/tree/tree.mjs +2 -2
  168. package/esm2022/tree/tree.module.mjs +8 -5
  169. package/esm2022/tree-select/tree-select.component.mjs +44 -28
  170. package/esm2022/username/constants.mjs +25 -0
  171. package/esm2022/username/index.mjs +6 -0
  172. package/esm2022/username/koobiq-components-username.mjs +5 -0
  173. package/esm2022/username/module.mjs +35 -0
  174. package/esm2022/username/types.mjs +32 -0
  175. package/esm2022/username/username.mjs +129 -0
  176. package/esm2022/username/username.pipe.mjs +92 -0
  177. package/fesm2022/koobiq-components-accordion.mjs +4 -4
  178. package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
  179. package/fesm2022/koobiq-components-actions-panel.mjs +56 -31
  180. package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
  181. package/fesm2022/koobiq-components-alert.mjs +2 -2
  182. package/fesm2022/koobiq-components-alert.mjs.map +1 -1
  183. package/fesm2022/koobiq-components-badge.mjs +2 -2
  184. package/fesm2022/koobiq-components-badge.mjs.map +1 -1
  185. package/fesm2022/koobiq-components-breadcrumbs.mjs +2 -5
  186. package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
  187. package/fesm2022/koobiq-components-button-toggle.mjs +10 -10
  188. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  189. package/fesm2022/koobiq-components-button.mjs +3 -2
  190. package/fesm2022/koobiq-components-button.mjs.map +1 -1
  191. package/fesm2022/koobiq-components-checkbox.mjs +2 -2
  192. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  193. package/fesm2022/koobiq-components-clamped-text.mjs +242 -0
  194. package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -0
  195. package/fesm2022/koobiq-components-code-block.mjs +2 -2
  196. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  197. package/fesm2022/koobiq-components-content-panel.mjs +612 -0
  198. package/fesm2022/koobiq-components-content-panel.mjs.map +1 -0
  199. package/fesm2022/koobiq-components-core.mjs +71 -36
  200. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  201. package/fesm2022/koobiq-components-datepicker.mjs +26 -19
  202. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  203. package/fesm2022/koobiq-components-dl.mjs +2 -2
  204. package/fesm2022/koobiq-components-dl.mjs.map +1 -1
  205. package/fesm2022/koobiq-components-dropdown.mjs +2 -2
  206. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  207. package/fesm2022/koobiq-components-dynamic-translation.mjs +204 -0
  208. package/fesm2022/koobiq-components-dynamic-translation.mjs.map +1 -0
  209. package/fesm2022/koobiq-components-empty-state.mjs +2 -2
  210. package/fesm2022/koobiq-components-empty-state.mjs.map +1 -1
  211. package/fesm2022/koobiq-components-file-upload.mjs +20 -20
  212. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  213. package/fesm2022/koobiq-components-filter-bar.mjs +92 -66
  214. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  215. package/fesm2022/koobiq-components-form-field.mjs +108 -57
  216. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  217. package/fesm2022/koobiq-components-icon.mjs +2 -2
  218. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  219. package/fesm2022/koobiq-components-input.mjs +15 -10
  220. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  221. package/fesm2022/koobiq-components-list.mjs +17 -10
  222. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  223. package/fesm2022/koobiq-components-loader-overlay.mjs +2 -2
  224. package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
  225. package/fesm2022/koobiq-components-markdown.mjs +2 -2
  226. package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
  227. package/fesm2022/koobiq-components-modal.mjs +19 -17
  228. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  229. package/fesm2022/koobiq-components-navbar.mjs +8 -8
  230. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  231. package/fesm2022/koobiq-components-popover.mjs +4 -4
  232. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  233. package/fesm2022/koobiq-components-progress-bar.mjs +2 -2
  234. package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
  235. package/fesm2022/koobiq-components-progress-spinner.mjs +2 -2
  236. package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
  237. package/fesm2022/koobiq-components-radio.mjs +2 -2
  238. package/fesm2022/koobiq-components-radio.mjs.map +1 -1
  239. package/fesm2022/koobiq-components-risk-level.mjs +2 -2
  240. package/fesm2022/koobiq-components-risk-level.mjs.map +1 -1
  241. package/fesm2022/koobiq-components-scrollbar.mjs +4 -4
  242. package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
  243. package/fesm2022/koobiq-components-select.mjs +55 -25
  244. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  245. package/fesm2022/koobiq-components-sidebar.mjs +45 -26
  246. package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
  247. package/fesm2022/koobiq-components-sidepanel.mjs +24 -12
  248. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  249. package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
  250. package/fesm2022/koobiq-components-table.mjs +2 -2
  251. package/fesm2022/koobiq-components-table.mjs.map +1 -1
  252. package/fesm2022/koobiq-components-tabs.mjs +31 -31
  253. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  254. package/fesm2022/koobiq-components-tags.mjs +13 -13
  255. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  256. package/fesm2022/koobiq-components-textarea.mjs +5 -3
  257. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  258. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
  259. package/fesm2022/koobiq-components-timezone.mjs +4 -4
  260. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  261. package/fesm2022/koobiq-components-toast.mjs +2 -2
  262. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  263. package/fesm2022/koobiq-components-toggle.mjs +2 -2
  264. package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
  265. package/fesm2022/koobiq-components-tooltip.mjs +2 -2
  266. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  267. package/fesm2022/koobiq-components-top-bar.mjs +2 -2
  268. package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
  269. package/fesm2022/koobiq-components-tree-select.mjs +43 -27
  270. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  271. package/fesm2022/koobiq-components-tree.mjs +18 -15
  272. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  273. package/fesm2022/koobiq-components-username.mjs +308 -0
  274. package/fesm2022/koobiq-components-username.mjs.map +1 -0
  275. package/file-upload/_file-upload-theme.scss +10 -1
  276. package/file-upload/file-drop.d.ts +1 -1
  277. package/file-upload/multiple-file-upload.component.d.ts +1 -1
  278. package/file-upload/single-file-upload.component.d.ts +2 -2
  279. package/filter-bar/filter-bar.d.ts +2 -0
  280. package/filter-bar/filter-bar.types.d.ts +2 -2
  281. package/filter-bar/pipes/pipe-date.d.ts +3 -1
  282. package/filter-bar/pipes/pipe-datetime.d.ts +3 -1
  283. package/filter-bar/pipes/pipe-multi-select.d.ts +0 -1
  284. package/filter-bar/pipes/pipe-multi-tree-select.d.ts +3 -2
  285. package/filter-bar/pipes/pipe-select.d.ts +0 -1
  286. package/filter-bar/pipes/pipe-tree-select.d.ts +3 -2
  287. package/form-field/_form-field-theme.scss +27 -18
  288. package/form-field/cleaner.d.ts +4 -2
  289. package/form-field/cleaner.scss +6 -2
  290. package/form-field/form-field.scss +6 -2
  291. package/form-field/password-hint.d.ts +7 -0
  292. package/form-field/password-toggle.d.ts +23 -3
  293. package/form-field/password-toggle.scss +4 -8
  294. package/form-field/reactive-password-hint.d.ts +1 -0
  295. package/icon/_icon-button-theme.scss +8 -2
  296. package/list/_list-theme.scss +4 -1
  297. package/list/list.module.d.ts +2 -1
  298. package/list/list.scss +6 -12
  299. package/modal/modal.component.d.ts +6 -6
  300. package/package.json +28 -4
  301. package/popover/popover-confirm.component.d.ts +1 -1
  302. package/popover/popover.component.d.ts +2 -2
  303. package/prebuilt-themes/dark-theme.css +1 -1
  304. package/prebuilt-themes/light-theme.css +1 -1
  305. package/prebuilt-themes/theme.css +1 -1
  306. package/schematics/ng-add/index.js +3 -3
  307. package/scrollbar/scrollbar.component.d.ts +4 -4
  308. package/select/select.component.d.ts +22 -3
  309. package/sidebar/sidebar.component.d.ts +31 -5
  310. package/sidepanel/sidepanel-container.component.d.ts +9 -0
  311. package/sidepanel/sidepanel-ref.d.ts +3 -3
  312. package/splitter/splitter.component.d.ts +2 -2
  313. package/tabs/tab-group.component.d.ts +1 -1
  314. package/tabs/tab.component.d.ts +1 -1
  315. package/tags/tag-input.d.ts +1 -1
  316. package/tags/tag-list.component.d.ts +1 -1
  317. package/timepicker/timepicker.directive.d.ts +1 -1
  318. package/tooltip/tooltip.component.d.ts +2 -2
  319. package/tree/_tree-theme.scss +13 -2
  320. package/tree/tree-option.scss +12 -17
  321. package/tree/tree-selection.component.d.ts +1 -1
  322. package/tree/tree.module.d.ts +1 -1
  323. package/tree-select/tree-select.component.d.ts +9 -2
  324. package/username/constants.d.ts +15 -0
  325. package/username/index.d.ts +5 -0
  326. package/username/module.d.ts +8 -0
  327. package/username/types.d.ts +62 -0
  328. package/username/username-tokens.scss +6 -0
  329. package/username/username.d.ts +68 -0
  330. package/username/username.pipe.d.ts +23 -0
  331. package/username/username.scss +107 -0
@@ -0,0 +1,308 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, inject, Injectable, Pipe, Directive, input, booleanAttribute, contentChild, computed, Component, ViewEncapsulation, ChangeDetectionStrategy, NgModule } from '@angular/core';
3
+ import * as i1 from '@koobiq/components/title';
4
+ import { KbqTitleModule } from '@koobiq/components/title';
5
+
6
+ /**
7
+ * Keys for formatting username parts in short (initial) or full form.
8
+ */
9
+ var KbqUsernameFormatKey;
10
+ (function (KbqUsernameFormatKey) {
11
+ /**
12
+ * Short form of the first name (e.g., "John" → "J")
13
+ */
14
+ KbqUsernameFormatKey["FirstNameShort"] = "f";
15
+ /**
16
+ * Full form of the first name (e.g., "John")
17
+ */
18
+ KbqUsernameFormatKey["FirstNameFull"] = "F";
19
+ /**
20
+ * Short form of the middle name (e.g., "Henry" → "H")
21
+ */
22
+ KbqUsernameFormatKey["MiddleNameShort"] = "m";
23
+ /**
24
+ * Full form of the middle name (e.g., "Henry")
25
+ */
26
+ KbqUsernameFormatKey["MiddleNameFull"] = "M";
27
+ /**
28
+ * Short form of the last name (e.g., "Doe" → "D")
29
+ */
30
+ KbqUsernameFormatKey["LastNameShort"] = "l";
31
+ /**
32
+ * Full form of the last name (e.g., "Doe")
33
+ */
34
+ KbqUsernameFormatKey["LastNameFull"] = "L";
35
+ KbqUsernameFormatKey["Dot"] = ".";
36
+ })(KbqUsernameFormatKey || (KbqUsernameFormatKey = {}));
37
+
38
+ /** Default name format: Last name full, first and middle as initials. */
39
+ const kbqDefaultFullNameFormatCustom = 'L f. m.';
40
+ /** Default name format: Last name full, first and middle as initials. */
41
+ const kbqDefaultFullNameFormat = 'lf.m.';
42
+ /**
43
+ * Throws an error when no profile field mapping is provided to the username pipe.
44
+ * @docs-private
45
+ */
46
+ function KbqMappingMissingError() {
47
+ return new Error('KbqUsernamePipe: profile field mapping is required but was not provided.');
48
+ }
49
+ /**
50
+ * Injection token for providing a global username format-to-profile mapping.
51
+ */
52
+ const KBQ_PROFILE_MAPPING = new InjectionToken('KBQ_PROFILE_MAPPING', {
53
+ factory: () => ({
54
+ [KbqUsernameFormatKey.FirstNameShort]: 'firstName',
55
+ [KbqUsernameFormatKey.MiddleNameShort]: 'middleName',
56
+ [KbqUsernameFormatKey.LastNameShort]: 'lastName',
57
+ [KbqUsernameFormatKey.Dot]: undefined
58
+ })
59
+ });
60
+
61
+ class KbqUsernamePipe {
62
+ constructor() {
63
+ this.mapping = inject(KBQ_PROFILE_MAPPING, { optional: true });
64
+ }
65
+ /** Builds a formatted name string from the user profile using the provided format and mapping. */
66
+ transform(profile, format = kbqDefaultFullNameFormat, customMapping) {
67
+ const resolvedMapping = customMapping || this.mapping;
68
+ if (!resolvedMapping) {
69
+ throw KbqMappingMissingError();
70
+ }
71
+ if (!profile || typeof profile !== 'object')
72
+ return '';
73
+ let result = '';
74
+ const formatUnits = format.split('');
75
+ formatUnits.forEach((letter, index, array) => {
76
+ if (letter !== KbqUsernameFormatKey.Dot) {
77
+ const field = resolvedMapping[letter];
78
+ const fieldValue = profile[field];
79
+ if (fieldValue) {
80
+ const isShort = array[index + 1] === KbqUsernameFormatKey.Dot;
81
+ const resolvedFieldValue = isShort ? `${fieldValue[0]}${KbqUsernameFormatKey.Dot}` : fieldValue;
82
+ result += ` ${resolvedFieldValue}`;
83
+ }
84
+ }
85
+ });
86
+ return result.trim();
87
+ }
88
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqUsernamePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
89
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: KbqUsernamePipe, isStandalone: true, name: "kbqUsername" }); }
90
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqUsernamePipe, providedIn: 'root' }); }
91
+ }
92
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqUsernamePipe, decorators: [{
93
+ type: Injectable,
94
+ args: [{ providedIn: 'root' }]
95
+ }, {
96
+ type: Pipe,
97
+ args: [{
98
+ name: 'kbqUsername',
99
+ pure: true,
100
+ standalone: true
101
+ }]
102
+ }] });
103
+ /**
104
+ * Pipe to format a user profile into a name string using a format pattern and field mapping.
105
+ * Lowercase keys output initials; uppercase keys show full values.
106
+ */
107
+ class KbqUsernameCustomPipe {
108
+ constructor() {
109
+ this.mapping = inject(KBQ_PROFILE_MAPPING, { optional: true });
110
+ }
111
+ /** Builds a formatted name string from the user profile using the provided format and mapping. */
112
+ transform(profile, format = kbqDefaultFullNameFormatCustom, customMapping) {
113
+ const resolvedMapping = customMapping || this.mapping;
114
+ if (!resolvedMapping) {
115
+ throw KbqMappingMissingError();
116
+ }
117
+ if (!profile || typeof profile !== 'object')
118
+ return '';
119
+ let result = '';
120
+ const formatUnits = format.split('');
121
+ formatUnits.forEach((letter) => {
122
+ const field = resolvedMapping[letter];
123
+ if (!field) {
124
+ result += letter;
125
+ return;
126
+ }
127
+ const isShort = letter === letter.toLowerCase();
128
+ const fieldValue = profile[field] || '';
129
+ result += fieldValue && isShort ? fieldValue[0] : fieldValue;
130
+ });
131
+ return result.trim();
132
+ }
133
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqUsernameCustomPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
134
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: KbqUsernameCustomPipe, isStandalone: true, name: "kbqUsernameCustom" }); }
135
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqUsernameCustomPipe, providedIn: 'root' }); }
136
+ }
137
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqUsernameCustomPipe, decorators: [{
138
+ type: Injectable,
139
+ args: [{ providedIn: 'root' }]
140
+ }, {
141
+ type: Pipe,
142
+ args: [{
143
+ name: 'kbqUsernameCustom',
144
+ pure: true,
145
+ standalone: true
146
+ }]
147
+ }] });
148
+
149
+ const baseClass = 'kbq-username';
150
+ /** Styles the primary part of the username (e.g. full name). */
151
+ class KbqUsernamePrimary {
152
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqUsernamePrimary, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
153
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: KbqUsernamePrimary, isStandalone: true, selector: "[kbqUsernamePrimary]", host: { classAttribute: "kbq-username__primary" }, exportAs: ["kbqUsernamePrimary"], ngImport: i0 }); }
154
+ }
155
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqUsernamePrimary, decorators: [{
156
+ type: Directive,
157
+ args: [{
158
+ selector: '[kbqUsernamePrimary]',
159
+ exportAs: 'kbqUsernamePrimary',
160
+ standalone: true,
161
+ host: {
162
+ class: `${baseClass}__primary`
163
+ }
164
+ }]
165
+ }] });
166
+ /** Styles the secondary part. */
167
+ class KbqUsernameSecondary {
168
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqUsernameSecondary, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
169
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: KbqUsernameSecondary, isStandalone: true, selector: "[kbqUsernameSecondary]", host: { classAttribute: "kbq-username__secondary" }, exportAs: ["kbqUsernameSecondary"], ngImport: i0 }); }
170
+ }
171
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqUsernameSecondary, decorators: [{
172
+ type: Directive,
173
+ args: [{
174
+ selector: '[kbqUsernameSecondary]',
175
+ exportAs: 'kbqUsernameSecondary',
176
+ standalone: true,
177
+ host: {
178
+ class: `${baseClass}__secondary`
179
+ }
180
+ }]
181
+ }] });
182
+ /** Styles a secondary hint. */
183
+ class KbqUsernameSecondaryHint {
184
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqUsernameSecondaryHint, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
185
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: KbqUsernameSecondaryHint, isStandalone: true, selector: "[kbqUsernameSecondaryHint]", host: { classAttribute: "kbq-username__secondary-hint" }, exportAs: ["kbqUsernameSecondaryHint"], ngImport: i0 }); }
186
+ }
187
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqUsernameSecondaryHint, decorators: [{
188
+ type: Directive,
189
+ args: [{
190
+ selector: '[kbqUsernameSecondaryHint]',
191
+ exportAs: 'kbqUsernameSecondaryHint',
192
+ standalone: true,
193
+ host: {
194
+ class: `${baseClass}__secondary-hint`
195
+ }
196
+ }]
197
+ }] });
198
+ /** Custom content for `KbqUsername`, overrides default view. */
199
+ class KbqUsernameCustomView {
200
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqUsernameCustomView, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
201
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: KbqUsernameCustomView, isStandalone: true, selector: "kbq-username-custom-view, [kbq-username-custom-view]", host: { classAttribute: "kbq-username__custom-view" }, exportAs: ["kbqUsernameCustomView"], ngImport: i0 }); }
202
+ }
203
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqUsernameCustomView, decorators: [{
204
+ type: Directive,
205
+ args: [{
206
+ selector: 'kbq-username-custom-view, [kbq-username-custom-view]',
207
+ standalone: true,
208
+ exportAs: 'kbqUsernameCustomView',
209
+ host: {
210
+ class: `${baseClass}__custom-view`
211
+ }
212
+ }]
213
+ }] });
214
+ /**
215
+ * Displays a user's name based on profile data.
216
+ * Supports different display modes and visual styles.
217
+ * A custom view can be provided via `<kbq-username-custom-view>` for full control over the output.
218
+ * Accepts input profile data and optional formatting options.
219
+ */
220
+ class KbqUsername {
221
+ constructor() {
222
+ /** User profile data used for display. */
223
+ this.userInfo = input();
224
+ /** Enables compact display mode */
225
+ this.isCompact = input(false, { transform: booleanAttribute });
226
+ /** Format string for rendering the user's full name. */
227
+ this.fullNameFormat = input(kbqDefaultFullNameFormat);
228
+ /**
229
+ * Display mode of the username.
230
+ * @default inline
231
+ */
232
+ this.mode = input('inline');
233
+ /**
234
+ * Visual style of the username.
235
+ * @default default
236
+ */
237
+ this.type = input('default');
238
+ /**
239
+ * Custom projected view for username rendering.
240
+ * @docs-private
241
+ */
242
+ this.customView = contentChild(KbqUsernameCustomView);
243
+ /** @docs-private */
244
+ this.hasFullName = computed(() => {
245
+ const userInfo = this.userInfo();
246
+ if (!userInfo)
247
+ return false;
248
+ return userInfo?.lastName && userInfo?.firstName;
249
+ });
250
+ /** @docs-private */
251
+ this.class = computed(() => {
252
+ return [this.type(), this.mode()].map((modificator) => `${baseClass}_${modificator}`).join(' ');
253
+ });
254
+ }
255
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqUsername, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
256
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: KbqUsername, isStandalone: true, selector: "kbq-username", inputs: { userInfo: { classPropertyName: "userInfo", publicName: "userInfo", isSignal: true, isRequired: false, transformFunction: null }, isCompact: { classPropertyName: "isCompact", publicName: "isCompact", isSignal: true, isRequired: false, transformFunction: null }, fullNameFormat: { classPropertyName: "fullNameFormat", publicName: "fullNameFormat", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "class()" }, classAttribute: "kbq-username" }, queries: [{ propertyName: "customView", first: true, predicate: KbqUsernameCustomView, descendants: true, isSignal: true }], exportAs: ["kbqUsername"], ngImport: i0, template: "@let profile = userInfo();\n<ng-content select=\"kbq-username-custom-view,[kbq-username-custom-view]\" />\n\n@if (!customView() && profile) {\n @let fullName = profile | kbqUsername: fullNameFormat();\n\n @if (!isCompact()) {\n @if (hasFullName()) {\n <span kbq-title kbqUsernamePrimary>{{ fullName }}</span>\n }\n\n @if (profile.login) {\n <span kbq-title kbqUsernameSecondary>\n {{ profile.login }}\n\n @if (profile.site) {\n <span kbqUsernameSecondaryHint>({{ profile.site }})</span>\n }\n </span>\n }\n } @else {\n <span kbq-title kbqUsernamePrimary>\n @if (hasFullName()) {\n <span>{{ fullName }}</span>\n }\n @if (!hasFullName() && profile.login) {\n {{ profile.login }}\n }\n\n @if (profile.site) {\n <span kbqUsernameSecondaryHint>&nbsp;({{ profile.site }})</span>\n }\n </span>\n }\n}\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:64px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 12px,#ffffff1a 12px 22px,#0000000a 22px 34px,#ffffff1a 34px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-no-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-username{color:var(--kbq-username-primary-color)}.kbq-username .kbq-username__secondary,.kbq-username .kbq-username__secondary-hint{color:var(--kbq-username-secondary-color)}.kbq-username.kbq-username_default .kbq-username__secondary-hint,.kbq-username.kbq-username_default .kbq-username__primary+.kbq-username__secondary{--kbq-username-secondary-color: var(--kbq-foreground-contrast-secondary)}.kbq-username.kbq-username_error{--kbq-username-primary-color: var(--kbq-foreground-error);--kbq-username-secondary-color: var(--kbq-foreground-error)}.kbq-username.kbq-username_accented{--kbq-username-primary-color: var(--kbq-foreground-contrast);--kbq-username-secondary-color: var(--kbq-foreground-contrast)}.kbq-username.kbq-username_inherit{--kbq-username-primary-color: inherit;--kbq-username-secondary-color: inherit}.kbq-username{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-username.kbq-username_accented .kbq-username__primary{font-size:var(--kbq-typography-text-normal-strong-font-size);font-style:var(--kbq-typography-text-normal-strong-font-style);font-weight:var(--kbq-typography-text-normal-strong-font-weight);line-height:var(--kbq-typography-text-normal-strong-line-height);font-family:var(--kbq-typography-text-normal-strong-font-family);text-transform:var(--kbq-typography-text-normal-strong-text-transform);font-feature-settings:var(--kbq-typography-text-normal-strong-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-strong-letter-spacing)}.kbq-username.kbq-username_stacked:not(:has(>.kbq-username__custom-view)),.kbq-username.kbq-username_stacked>.kbq-username__custom-view{display:flex;flex-flow:column nowrap;justify-content:flex-start;align-items:normal;gap:var(--kbq-username-vertical-gap)}.kbq-username.kbq-username_inline:not(.kbq-username_inherit):not(:has(>.kbq-username__custom-view)),.kbq-username.kbq-username_inline:not(.kbq-username_inherit)>.kbq-username__custom-view{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:baseline}.kbq-username.kbq-username_inline:not(.kbq-username_inherit):not(:has(>.kbq-username__custom-view)) .kbq-username__primary+.kbq-username__secondary,.kbq-username.kbq-username_inline:not(.kbq-username_inherit)>.kbq-username__custom-view .kbq-username__primary+.kbq-username__secondary{margin-left:var(--kbq-username-horizontal-gap)}[dir=rtl] .kbq-username.kbq-username_inline:not(.kbq-username_inherit):not(:has(>.kbq-username__custom-view)) .kbq-username__primary+.kbq-username__secondary,[dir=rtl] .kbq-username.kbq-username_inline:not(.kbq-username_inherit)>.kbq-username__custom-view .kbq-username__primary+.kbq-username__secondary{margin-left:0;margin-right:var(--kbq-username-horizontal-gap)}.kbq-username.kbq-username_text:not(:has(>.kbq-username__custom-view)),.kbq-username.kbq-username_text>.kbq-username__custom-view{display:inline}.kbq-username.kbq-username_stacked:not(:has(>.kbq-username__custom-view)) .kbq-username__primary,.kbq-username.kbq-username_stacked:not(:has(>.kbq-username__custom-view)) .kbq-username__secondary,.kbq-username.kbq-username_stacked>.kbq-username__custom-view .kbq-username__primary,.kbq-username.kbq-username_stacked>.kbq-username__custom-view .kbq-username__secondary,.kbq-username.kbq-username_inline:not(:has(>.kbq-username__custom-view)) .kbq-username__primary,.kbq-username.kbq-username_inline:not(:has(>.kbq-username__custom-view)) .kbq-username__secondary,.kbq-username.kbq-username_inline>.kbq-username__custom-view .kbq-username__primary,.kbq-username.kbq-username_inline>.kbq-username__custom-view .kbq-username__secondary{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-username.kbq-username_inherit:not(:has(>.kbq-username__custom-view)),.kbq-username.kbq-username_inherit>.kbq-username__custom-view{font:inherit;display:inherit}\n", ":where(.kbq-username){--kbq-username-primary-color: var(--kbq-foreground-contrast);--kbq-username-secondary-color: inherit;--kbq-username-vertical-gap: var(--kbq-size-xxs);--kbq-username-horizontal-gap: var(--kbq-size-xxs)}\n"], dependencies: [{ kind: "ngmodule", type: KbqTitleModule }, { kind: "directive", type: i1.KbqTitleDirective, selector: "[kbq-title]", exportAs: ["kbqTitle"] }, { kind: "pipe", type: KbqUsernamePipe, name: "kbqUsername" }, { kind: "directive", type: KbqUsernamePrimary, selector: "[kbqUsernamePrimary]", exportAs: ["kbqUsernamePrimary"] }, { kind: "directive", type: KbqUsernameSecondary, selector: "[kbqUsernameSecondary]", exportAs: ["kbqUsernameSecondary"] }, { kind: "directive", type: KbqUsernameSecondaryHint, selector: "[kbqUsernameSecondaryHint]", exportAs: ["kbqUsernameSecondaryHint"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
257
+ }
258
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqUsername, decorators: [{
259
+ type: Component,
260
+ args: [{ selector: 'kbq-username', standalone: true, exportAs: 'kbqUsername', imports: [
261
+ KbqTitleModule,
262
+ KbqUsernamePipe,
263
+ KbqUsernamePrimary,
264
+ KbqUsernameSecondary,
265
+ KbqUsernameSecondaryHint
266
+ ], host: {
267
+ class: baseClass,
268
+ '[class]': 'class()'
269
+ }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "@let profile = userInfo();\n<ng-content select=\"kbq-username-custom-view,[kbq-username-custom-view]\" />\n\n@if (!customView() && profile) {\n @let fullName = profile | kbqUsername: fullNameFormat();\n\n @if (!isCompact()) {\n @if (hasFullName()) {\n <span kbq-title kbqUsernamePrimary>{{ fullName }}</span>\n }\n\n @if (profile.login) {\n <span kbq-title kbqUsernameSecondary>\n {{ profile.login }}\n\n @if (profile.site) {\n <span kbqUsernameSecondaryHint>({{ profile.site }})</span>\n }\n </span>\n }\n } @else {\n <span kbq-title kbqUsernamePrimary>\n @if (hasFullName()) {\n <span>{{ fullName }}</span>\n }\n @if (!hasFullName() && profile.login) {\n {{ profile.login }}\n }\n\n @if (profile.site) {\n <span kbqUsernameSecondaryHint>&nbsp;({{ profile.site }})</span>\n }\n </span>\n }\n}\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:64px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 12px,#ffffff1a 12px 22px,#0000000a 22px 34px,#ffffff1a 34px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-no-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-username{color:var(--kbq-username-primary-color)}.kbq-username .kbq-username__secondary,.kbq-username .kbq-username__secondary-hint{color:var(--kbq-username-secondary-color)}.kbq-username.kbq-username_default .kbq-username__secondary-hint,.kbq-username.kbq-username_default .kbq-username__primary+.kbq-username__secondary{--kbq-username-secondary-color: var(--kbq-foreground-contrast-secondary)}.kbq-username.kbq-username_error{--kbq-username-primary-color: var(--kbq-foreground-error);--kbq-username-secondary-color: var(--kbq-foreground-error)}.kbq-username.kbq-username_accented{--kbq-username-primary-color: var(--kbq-foreground-contrast);--kbq-username-secondary-color: var(--kbq-foreground-contrast)}.kbq-username.kbq-username_inherit{--kbq-username-primary-color: inherit;--kbq-username-secondary-color: inherit}.kbq-username{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-username.kbq-username_accented .kbq-username__primary{font-size:var(--kbq-typography-text-normal-strong-font-size);font-style:var(--kbq-typography-text-normal-strong-font-style);font-weight:var(--kbq-typography-text-normal-strong-font-weight);line-height:var(--kbq-typography-text-normal-strong-line-height);font-family:var(--kbq-typography-text-normal-strong-font-family);text-transform:var(--kbq-typography-text-normal-strong-text-transform);font-feature-settings:var(--kbq-typography-text-normal-strong-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-strong-letter-spacing)}.kbq-username.kbq-username_stacked:not(:has(>.kbq-username__custom-view)),.kbq-username.kbq-username_stacked>.kbq-username__custom-view{display:flex;flex-flow:column nowrap;justify-content:flex-start;align-items:normal;gap:var(--kbq-username-vertical-gap)}.kbq-username.kbq-username_inline:not(.kbq-username_inherit):not(:has(>.kbq-username__custom-view)),.kbq-username.kbq-username_inline:not(.kbq-username_inherit)>.kbq-username__custom-view{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:baseline}.kbq-username.kbq-username_inline:not(.kbq-username_inherit):not(:has(>.kbq-username__custom-view)) .kbq-username__primary+.kbq-username__secondary,.kbq-username.kbq-username_inline:not(.kbq-username_inherit)>.kbq-username__custom-view .kbq-username__primary+.kbq-username__secondary{margin-left:var(--kbq-username-horizontal-gap)}[dir=rtl] .kbq-username.kbq-username_inline:not(.kbq-username_inherit):not(:has(>.kbq-username__custom-view)) .kbq-username__primary+.kbq-username__secondary,[dir=rtl] .kbq-username.kbq-username_inline:not(.kbq-username_inherit)>.kbq-username__custom-view .kbq-username__primary+.kbq-username__secondary{margin-left:0;margin-right:var(--kbq-username-horizontal-gap)}.kbq-username.kbq-username_text:not(:has(>.kbq-username__custom-view)),.kbq-username.kbq-username_text>.kbq-username__custom-view{display:inline}.kbq-username.kbq-username_stacked:not(:has(>.kbq-username__custom-view)) .kbq-username__primary,.kbq-username.kbq-username_stacked:not(:has(>.kbq-username__custom-view)) .kbq-username__secondary,.kbq-username.kbq-username_stacked>.kbq-username__custom-view .kbq-username__primary,.kbq-username.kbq-username_stacked>.kbq-username__custom-view .kbq-username__secondary,.kbq-username.kbq-username_inline:not(:has(>.kbq-username__custom-view)) .kbq-username__primary,.kbq-username.kbq-username_inline:not(:has(>.kbq-username__custom-view)) .kbq-username__secondary,.kbq-username.kbq-username_inline>.kbq-username__custom-view .kbq-username__primary,.kbq-username.kbq-username_inline>.kbq-username__custom-view .kbq-username__secondary{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-username.kbq-username_inherit:not(:has(>.kbq-username__custom-view)),.kbq-username.kbq-username_inherit>.kbq-username__custom-view{font:inherit;display:inherit}\n", ":where(.kbq-username){--kbq-username-primary-color: var(--kbq-foreground-contrast);--kbq-username-secondary-color: inherit;--kbq-username-vertical-gap: var(--kbq-size-xxs);--kbq-username-horizontal-gap: var(--kbq-size-xxs)}\n"] }]
270
+ }] });
271
+
272
+ const COMPONENTS = [
273
+ KbqUsername,
274
+ KbqUsernameCustomView,
275
+ KbqUsernamePrimary,
276
+ KbqUsernameSecondary,
277
+ KbqUsernameCustomPipe,
278
+ KbqUsernamePipe
279
+ ];
280
+ class KbqUsernameModule {
281
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqUsernameModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
282
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: KbqUsernameModule, imports: [KbqUsername,
283
+ KbqUsernameCustomView,
284
+ KbqUsernamePrimary,
285
+ KbqUsernameSecondary,
286
+ KbqUsernameCustomPipe,
287
+ KbqUsernamePipe], exports: [KbqUsername,
288
+ KbqUsernameCustomView,
289
+ KbqUsernamePrimary,
290
+ KbqUsernameSecondary,
291
+ KbqUsernameCustomPipe,
292
+ KbqUsernamePipe] }); }
293
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqUsernameModule, imports: [KbqUsername] }); }
294
+ }
295
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqUsernameModule, decorators: [{
296
+ type: NgModule,
297
+ args: [{
298
+ imports: COMPONENTS,
299
+ exports: COMPONENTS
300
+ }]
301
+ }] });
302
+
303
+ /**
304
+ * Generated bundle index. Do not edit.
305
+ */
306
+
307
+ export { KBQ_PROFILE_MAPPING, KbqMappingMissingError, KbqUsername, KbqUsernameCustomPipe, KbqUsernameCustomView, KbqUsernameFormatKey, KbqUsernameModule, KbqUsernamePipe, KbqUsernamePrimary, KbqUsernameSecondary, KbqUsernameSecondaryHint, kbqDefaultFullNameFormat, kbqDefaultFullNameFormatCustom };
308
+ //# sourceMappingURL=koobiq-components-username.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"koobiq-components-username.mjs","sources":["../../../packages/components/username/types.ts","../../../packages/components/username/constants.ts","../../../packages/components/username/username.pipe.ts","../../../packages/components/username/username.ts","../../../packages/components/username/username.html","../../../packages/components/username/module.ts","../../../packages/components/username/koobiq-components-username.ts"],"sourcesContent":["/**\n * Keys for formatting username parts in short (initial) or full form.\n */\nexport enum KbqUsernameFormatKey {\n /**\n * Short form of the first name (e.g., \"John\" → \"J\")\n */\n FirstNameShort = 'f',\n\n /**\n * Full form of the first name (e.g., \"John\")\n */\n FirstNameFull = 'F',\n\n /**\n * Short form of the middle name (e.g., \"Henry\" → \"H\")\n */\n MiddleNameShort = 'm',\n\n /**\n * Full form of the middle name (e.g., \"Henry\")\n */\n MiddleNameFull = 'M',\n\n /**\n * Short form of the last name (e.g., \"Doe\" → \"D\")\n */\n LastNameShort = 'l',\n\n /**\n * Full form of the last name (e.g., \"Doe\")\n */\n LastNameFull = 'L',\n Dot = '.'\n}\n\n/**\n * Maps each format key to a property name in the user profile object.\n * Allows flexible formatting regardless of profile field names.\n */\nexport type KbqFormatKeyToProfileMapping<T = any> = {\n [key in Exclude<\n KbqUsernameFormatKey,\n KbqUsernameFormatKey.FirstNameFull | KbqUsernameFormatKey.MiddleNameFull | KbqUsernameFormatKey.LastNameFull\n >]: keyof T | undefined;\n};\n\n/**\n * Maps each format key to a property name in the user profile object.\n * Allows flexible formatting regardless of profile field names.\n * @see KbqUsernameCustomPipe\n */\nexport type KbqFormatKeyToProfileMappingExtended<T = any> = {\n [key in KbqUsernameFormatKey]: keyof T | undefined;\n};\n\n/**\n * Layout mode for displaying a username and applying text-ellipsis.\n *\n * - `stacked`: Elements shown vertically.\n * - `inline`: Elements shown in one line. Text ellipsis is applied to both parts.\n * - `text`: Plain text, no layout styling. No text-ellipsis.\n */\nexport type KbqUsernameMode = 'stacked' | 'inline' | 'text';\n\n/**\n * Visual style of the username.\n *\n * - `default`: standard styling with primary and secondary colors.\n * - `error`: error colors (e.g., red).\n * - `accented`: no color theming; emphasizes via typography only.\n * - `inherit`: inherits parent styles, no theming. For example, useful when using inside links.\n */\nexport type KbqUsernameStyle = 'default' | 'error' | 'accented' | 'inherit';\n","import { InjectionToken } from '@angular/core';\nimport { KbqFormatKeyToProfileMapping, KbqFormatKeyToProfileMappingExtended, KbqUsernameFormatKey } from './types';\n\n/** Default name format: Last name full, first and middle as initials. */\nexport const kbqDefaultFullNameFormatCustom = 'L f. m.';\n/** Default name format: Last name full, first and middle as initials. */\nexport const kbqDefaultFullNameFormat = 'lf.m.';\n\n/**\n * Throws an error when no profile field mapping is provided to the username pipe.\n * @docs-private\n */\nexport function KbqMappingMissingError() {\n return new Error('KbqUsernamePipe: profile field mapping is required but was not provided.');\n}\n\n/**\n * Injection token for providing a global username format-to-profile mapping.\n */\nexport const KBQ_PROFILE_MAPPING = new InjectionToken<\n KbqFormatKeyToProfileMapping | KbqFormatKeyToProfileMappingExtended\n>('KBQ_PROFILE_MAPPING', {\n factory: () =>\n ({\n [KbqUsernameFormatKey.FirstNameShort]: 'firstName',\n [KbqUsernameFormatKey.MiddleNameShort]: 'middleName',\n [KbqUsernameFormatKey.LastNameShort]: 'lastName',\n [KbqUsernameFormatKey.Dot]: undefined\n }) satisfies KbqFormatKeyToProfileMapping<{ firstName: string; middleName: string; lastName: string }>\n});\n","import { inject, Injectable, Pipe, PipeTransform } from '@angular/core';\nimport {\n KBQ_PROFILE_MAPPING,\n kbqDefaultFullNameFormat,\n kbqDefaultFullNameFormatCustom,\n KbqMappingMissingError\n} from './constants';\nimport { KbqFormatKeyToProfileMapping, KbqFormatKeyToProfileMappingExtended, KbqUsernameFormatKey } from './types';\n\n@Injectable({ providedIn: 'root' })\n@Pipe({\n name: 'kbqUsername',\n pure: true,\n standalone: true\n})\nexport class KbqUsernamePipe<T = unknown> implements PipeTransform {\n private readonly mapping = inject(KBQ_PROFILE_MAPPING, { optional: true });\n\n /** Builds a formatted name string from the user profile using the provided format and mapping. */\n transform(profile: T, format = kbqDefaultFullNameFormat, customMapping?: KbqFormatKeyToProfileMapping): string {\n const resolvedMapping = customMapping || this.mapping;\n\n if (!resolvedMapping) {\n throw KbqMappingMissingError();\n }\n\n if (!profile || typeof profile !== 'object') return '';\n\n let result = '';\n\n const formatUnits = format.split('');\n\n formatUnits.forEach((letter: KbqUsernameFormatKey | string, index: number, array) => {\n if (letter !== KbqUsernameFormatKey.Dot) {\n const field: keyof T = resolvedMapping[letter];\n const fieldValue = profile[field];\n\n if (fieldValue) {\n const isShort = array[index + 1] === KbqUsernameFormatKey.Dot;\n const resolvedFieldValue = isShort ? `${fieldValue[0]}${KbqUsernameFormatKey.Dot}` : fieldValue;\n\n result += ` ${resolvedFieldValue}`;\n }\n }\n });\n\n return result.trim();\n }\n}\n\n/**\n * Pipe to format a user profile into a name string using a format pattern and field mapping.\n * Lowercase keys output initials; uppercase keys show full values.\n */\n@Injectable({ providedIn: 'root' })\n@Pipe({\n name: 'kbqUsernameCustom',\n pure: true,\n standalone: true\n})\nexport class KbqUsernameCustomPipe<T = unknown> implements PipeTransform {\n private readonly mapping = inject(KBQ_PROFILE_MAPPING, { optional: true });\n\n /** Builds a formatted name string from the user profile using the provided format and mapping. */\n transform(\n profile: T,\n format = kbqDefaultFullNameFormatCustom,\n customMapping?: KbqFormatKeyToProfileMappingExtended<T>\n ): string {\n const resolvedMapping = customMapping || this.mapping;\n\n if (!resolvedMapping) {\n throw KbqMappingMissingError();\n }\n\n if (!profile || typeof profile !== 'object') return '';\n\n let result = '';\n\n const formatUnits = format.split('');\n\n formatUnits.forEach((letter: KbqUsernameFormatKey | string) => {\n const field: keyof T | undefined = resolvedMapping[letter];\n\n if (!field) {\n result += letter;\n\n return;\n }\n\n const isShort = letter === letter.toLowerCase();\n const fieldValue = profile[field] || '';\n\n result += fieldValue && isShort ? fieldValue[0] : fieldValue;\n });\n\n return result.trim();\n }\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n Directive,\n input,\n ViewEncapsulation\n} from '@angular/core';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { kbqDefaultFullNameFormat } from './constants';\nimport { KbqUsernameMode, KbqUsernameStyle } from './types';\nimport { KbqUsernamePipe } from './username.pipe';\n\nconst baseClass = 'kbq-username';\n\n/**\n * Basic user info\n * @docs-private\n */\nexport type KbqUserInfo = {\n firstName?: string;\n lastName?: string;\n middleName?: string;\n login?: string;\n site?: string;\n};\n\n/** Styles the primary part of the username (e.g. full name). */\n@Directive({\n selector: '[kbqUsernamePrimary]',\n exportAs: 'kbqUsernamePrimary',\n standalone: true,\n host: {\n class: `${baseClass}__primary`\n }\n})\nexport class KbqUsernamePrimary {}\n\n/** Styles the secondary part. */\n@Directive({\n selector: '[kbqUsernameSecondary]',\n exportAs: 'kbqUsernameSecondary',\n standalone: true,\n host: {\n class: `${baseClass}__secondary`\n }\n})\nexport class KbqUsernameSecondary {}\n\n/** Styles a secondary hint. */\n@Directive({\n selector: '[kbqUsernameSecondaryHint]',\n exportAs: 'kbqUsernameSecondaryHint',\n standalone: true,\n host: {\n class: `${baseClass}__secondary-hint`\n }\n})\nexport class KbqUsernameSecondaryHint {}\n\n/** Custom content for `KbqUsername`, overrides default view. */\n@Directive({\n selector: 'kbq-username-custom-view, [kbq-username-custom-view]',\n standalone: true,\n exportAs: 'kbqUsernameCustomView',\n host: {\n class: `${baseClass}__custom-view`\n }\n})\nexport class KbqUsernameCustomView {}\n\n/**\n * Displays a user's name based on profile data.\n * Supports different display modes and visual styles.\n * A custom view can be provided via `<kbq-username-custom-view>` for full control over the output.\n * Accepts input profile data and optional formatting options.\n */\n@Component({\n selector: 'kbq-username',\n standalone: true,\n exportAs: 'kbqUsername',\n imports: [\n KbqTitleModule,\n KbqUsernamePipe,\n KbqUsernamePrimary,\n KbqUsernameSecondary,\n KbqUsernameSecondaryHint\n ],\n templateUrl: './username.html',\n styleUrls: ['./username.scss', './username-tokens.scss'],\n host: {\n class: baseClass,\n '[class]': 'class()'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class KbqUsername {\n /** User profile data used for display. */\n readonly userInfo = input<KbqUserInfo>();\n /** Enables compact display mode */\n readonly isCompact = input(false, { transform: booleanAttribute });\n /** Format string for rendering the user's full name. */\n readonly fullNameFormat = input<string>(kbqDefaultFullNameFormat);\n /**\n * Display mode of the username.\n * @default inline\n */\n readonly mode = input<KbqUsernameMode>('inline');\n /**\n * Visual style of the username.\n * @default default\n */\n readonly type = input<KbqUsernameStyle>('default');\n /**\n * Custom projected view for username rendering.\n * @docs-private\n */\n protected readonly customView = contentChild(KbqUsernameCustomView);\n\n /** @docs-private */\n protected readonly hasFullName = computed(() => {\n const userInfo = this.userInfo();\n\n if (!userInfo) return false;\n\n return userInfo?.lastName && userInfo?.firstName;\n });\n\n /** @docs-private */\n protected readonly class = computed(() => {\n return [this.type(), this.mode()].map((modificator) => `${baseClass}_${modificator}`).join(' ');\n });\n}\n","@let profile = userInfo();\n<ng-content select=\"kbq-username-custom-view,[kbq-username-custom-view]\" />\n\n@if (!customView() && profile) {\n @let fullName = profile | kbqUsername: fullNameFormat();\n\n @if (!isCompact()) {\n @if (hasFullName()) {\n <span kbq-title kbqUsernamePrimary>{{ fullName }}</span>\n }\n\n @if (profile.login) {\n <span kbq-title kbqUsernameSecondary>\n {{ profile.login }}\n\n @if (profile.site) {\n <span kbqUsernameSecondaryHint>({{ profile.site }})</span>\n }\n </span>\n }\n } @else {\n <span kbq-title kbqUsernamePrimary>\n @if (hasFullName()) {\n <span>{{ fullName }}</span>\n }\n @if (!hasFullName() && profile.login) {\n {{ profile.login }}\n }\n\n @if (profile.site) {\n <span kbqUsernameSecondaryHint>&nbsp;({{ profile.site }})</span>\n }\n </span>\n }\n}\n","import { NgModule } from '@angular/core';\nimport { KbqUsername, KbqUsernameCustomView, KbqUsernamePrimary, KbqUsernameSecondary } from './username';\nimport { KbqUsernameCustomPipe, KbqUsernamePipe } from './username.pipe';\n\nconst COMPONENTS = [\n KbqUsername,\n KbqUsernameCustomView,\n KbqUsernamePrimary,\n KbqUsernameSecondary,\n KbqUsernameCustomPipe,\n KbqUsernamePipe\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS\n})\nexport class KbqUsernameModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -220,13 +220,18 @@
220
220
  }
221
221
 
222
222
  .kbq-file-upload__hint {
223
- .kbq-hint {
223
+ :where(& .kbq-hint) {
224
224
  color: var(--kbq-foreground-contrast-secondary);
225
225
  }
226
226
  }
227
227
  }
228
228
 
229
229
  @mixin kbq-file-upload-typography() {
230
+ .kbq-file-upload {
231
+ @include tokens.kbq-typography-level-to-styles-css-variables(typography, text-normal);
232
+ }
233
+
234
+ // @TODO: remove when redesign applied, use default font (#DS-3858)
230
235
  .kbq-single-file-upload {
231
236
  & .file-item__text-wrapper,
232
237
  & .dropzone__text {
@@ -239,6 +244,7 @@
239
244
  @include tokens.kbq-typography-level-to-styles-css-variables(typography, subheading);
240
245
  }
241
246
 
247
+ // @TODO: remove when redesign applied, use default font (#DS-3858)
242
248
  .multiple__caption {
243
249
  &,
244
250
  .kbq-link {
@@ -246,14 +252,17 @@
246
252
  }
247
253
  }
248
254
 
255
+ // @TODO: remove when redesign applied, use default font (#DS-3858)
249
256
  .kbq-file-multiple-uploaded__header {
250
257
  @include tokens.kbq-typography-level-to-styles-css-variables(typography, text-normal);
251
258
  }
252
259
 
260
+ // @TODO: remove when redesign applied, use default font (#DS-3858)
253
261
  .multiple__uploaded-item {
254
262
  @include tokens.kbq-typography-level-to-styles-css-variables(typography, text-normal);
255
263
  }
256
264
 
265
+ // @TODO: remove when redesign applied, use default font (#DS-3858)
257
266
  .kbq-file-upload {
258
267
  .kbq-list-item,
259
268
  .kbq-list-option {
@@ -5,7 +5,7 @@ export declare class KbqFileDropDirective {
5
5
  /** Flag that controls css-class modifications on drag events. */
6
6
  dragover: boolean;
7
7
  /** Emits an event when file items were dropped. */
8
- filesDropped: EventEmitter<FileList | KbqFile[]>;
8
+ readonly filesDropped: EventEmitter<FileList | KbqFile[]>;
9
9
  /** @docs-private */
10
10
  onDragOver(event: DragEvent): void;
11
11
  /** @docs-private */
@@ -105,8 +105,8 @@ export declare class KbqMultipleFileUploadComponent extends KbqFileUploadBase im
105
105
  /** @docs-private */
106
106
  readonly configuration: KbqInputFileMultipleLabel | null;
107
107
  constructor();
108
- ngAfterViewInit(): void;
109
108
  ngDoCheck(): void;
109
+ ngAfterViewInit(): void;
110
110
  /** Implemented as part of ControlValueAccessor.
111
111
  * @docs-private */
112
112
  writeValue(files: FileList | KbqFileItem[] | null): void;
@@ -34,7 +34,7 @@ export declare class KbqSingleFileUploadComponent extends KbqFileUploadBase impl
34
34
  showFileSize: boolean;
35
35
  /** Emits an event containing updated file.
36
36
  * public output will be renamed to fileChange in next major release (#DS-3700) */
37
- fileChange: EventEmitter<KbqFileItem | null>;
37
+ readonly fileChange: EventEmitter<KbqFileItem | null>;
38
38
  /** @docs-private */
39
39
  input: ElementRef<HTMLInputElement>;
40
40
  /** @docs-private */
@@ -64,8 +64,8 @@ export declare class KbqSingleFileUploadComponent extends KbqFileUploadBase impl
64
64
  /** @docs-private */
65
65
  readonly configuration: KbqInputFileLabel | null;
66
66
  constructor();
67
- ngAfterViewInit(): void;
68
67
  ngDoCheck(): void;
68
+ ngAfterViewInit(): void;
69
69
  /** Implemented as part of ControlValueAccessor.
70
70
  * @docs-private */
71
71
  writeValue(file: File | KbqFileItem | null): void;
@@ -51,6 +51,8 @@ export declare class KbqFilterBar {
51
51
  /** Whether the current filter is disabled */
52
52
  get isDisabled(): boolean;
53
53
  private savedFilter;
54
+ /** Event that emits whenever the filter is reset. */
55
+ readonly onResetFilter: BehaviorSubject<boolean>;
54
56
  /** all changes */
55
57
  readonly changes: BehaviorSubject<void>;
56
58
  /** internal filter changes */
@@ -88,6 +88,8 @@ export interface KbqPipe {
88
88
  value: unknown | null;
89
89
  search?: boolean;
90
90
  selectAll?: boolean;
91
+ openOnAdd?: boolean;
92
+ openOnReset?: boolean;
91
93
  /**
92
94
  * This is special logic that unselect all items when all selected because "all selected = nothing selected".
93
95
  * Default is true
@@ -101,8 +103,6 @@ export interface KbqPipe {
101
103
  }
102
104
  export interface KbqPipeData<V> extends KbqPipe {
103
105
  value: V | null;
104
- search?: boolean;
105
- openOnAdd?: boolean;
106
106
  }
107
107
  export interface KbqPipeTemplate extends Omit<KbqPipe, 'value'> {
108
108
  values?: unknown[];
@@ -1,3 +1,4 @@
1
+ import { AfterViewInit } from '@angular/core';
1
2
  import { FormGroup } from '@angular/forms';
2
3
  import { KbqButton, KbqButtonStyles } from '@koobiq/components/button';
3
4
  import { KbqComponentColors, PopUpPlacements } from '@koobiq/components/core';
@@ -6,7 +7,7 @@ import { KbqPopoverTrigger } from '@koobiq/components/popover';
6
7
  import { KbqDateTimeValue } from '../filter-bar.types';
7
8
  import { KbqBasePipe } from './base-pipe';
8
9
  import * as i0 from "@angular/core";
9
- export declare class KbqPipeDateComponent<D> extends KbqBasePipe<KbqDateTimeValue> {
10
+ export declare class KbqPipeDateComponent<D> extends KbqBasePipe<KbqDateTimeValue> implements AfterViewInit {
10
11
  private readonly adapter;
11
12
  private readonly formatter;
12
13
  /** @docs-private */
@@ -43,6 +44,7 @@ export declare class KbqPipeDateComponent<D> extends KbqBasePipe<KbqDateTimeValu
43
44
  listSelection: import("@angular/core").Signal<KbqListSelection>;
44
45
  /** @docs-private */
45
46
  returnButton: import("@angular/core").Signal<KbqButton>;
47
+ ngAfterViewInit(): void;
46
48
  /** keydown handler
47
49
  * @docs-private */
48
50
  onKeydown($event: KeyboardEvent): void;
@@ -1,3 +1,4 @@
1
+ import { AfterViewInit } from '@angular/core';
1
2
  import { FormGroup } from '@angular/forms';
2
3
  import { KbqButton, KbqButtonStyles } from '@koobiq/components/button';
3
4
  import { KbqComponentColors, PopUpPlacements } from '@koobiq/components/core';
@@ -6,7 +7,7 @@ import { KbqPopoverTrigger } from '@koobiq/components/popover';
6
7
  import { KbqDateTimeValue } from '../filter-bar.types';
7
8
  import { KbqBasePipe } from './base-pipe';
8
9
  import * as i0 from "@angular/core";
9
- export declare class KbqPipeDatetimeComponent<D> extends KbqBasePipe<KbqDateTimeValue> {
10
+ export declare class KbqPipeDatetimeComponent<D> extends KbqBasePipe<KbqDateTimeValue> implements AfterViewInit {
10
11
  private readonly adapter;
11
12
  private readonly formatter;
12
13
  /** @docs-private */
@@ -43,6 +44,7 @@ export declare class KbqPipeDatetimeComponent<D> extends KbqBasePipe<KbqDateTime
43
44
  listSelection: import("@angular/core").Signal<KbqListSelection>;
44
45
  /** @docs-private */
45
46
  returnButton: import("@angular/core").Signal<KbqButton>;
47
+ ngAfterViewInit(): void;
46
48
  /** keydown handler
47
49
  * @docs-private */
48
50
  onKeydown($event: KeyboardEvent): void;
@@ -30,7 +30,6 @@ export declare class KbqPipeMultiSelectComponent extends KbqBasePipe<KbqSelectVa
30
30
  private selectionAllInProgress;
31
31
  /** @docs-private */
32
32
  ngOnInit(): void;
33
- /** @docs-private */
34
33
  ngAfterViewInit(): void;
35
34
  /** @docs-private */
36
35
  onSelect(item: KbqSelectValue[]): void;
@@ -1,4 +1,4 @@
1
- import { OnInit } from '@angular/core';
1
+ import { AfterViewInit, OnInit } from '@angular/core';
2
2
  import { UntypedFormControl } from '@angular/forms';
3
3
  import { KbqPseudoCheckboxState } from '@koobiq/components/core';
4
4
  import { FlatTreeControl, KbqTreeFlatDataSource, KbqTreeFlattener, KbqTreeSelection } from '@koobiq/components/tree';
@@ -7,7 +7,7 @@ import { Observable } from 'rxjs';
7
7
  import { KbqPipeTemplate, KbqSelectValue, KbqTreeSelectFlatNode, KbqTreeSelectNode } from '../filter-bar.types';
8
8
  import { KbqBasePipe } from './base-pipe';
9
9
  import * as i0 from "@angular/core";
10
- export declare class KbqPipeMultiTreeSelectComponent extends KbqBasePipe<KbqSelectValue[]> implements OnInit {
10
+ export declare class KbqPipeMultiTreeSelectComponent extends KbqBasePipe<KbqSelectValue[]> implements OnInit, AfterViewInit {
11
11
  /** control for search options */
12
12
  searchControl: UntypedFormControl;
13
13
  /** filtered by search options */
@@ -33,6 +33,7 @@ export declare class KbqPipeMultiTreeSelectComponent extends KbqBasePipe<KbqSele
33
33
  get allVisibleOptionsSelected(): boolean;
34
34
  constructor();
35
35
  ngOnInit(): void;
36
+ ngAfterViewInit(): void;
36
37
  isNodeHasChild(_: number, nodeData: any): any;
37
38
  isNodeSelectAll(_: number, nodeData: any): boolean;
38
39
  onSelect({ value: option }: {
@@ -18,7 +18,6 @@ export declare class KbqPipeSelectComponent extends KbqBasePipe<KbqSelectValue>
18
18
  get isEmpty(): boolean;
19
19
  /** @docs-private */
20
20
  ngOnInit(): void;
21
- /** @docs-private */
22
21
  ngAfterViewInit(): void;
23
22
  onSelect(item: KbqSelectValue): void;
24
23
  /** Comparator of selected options */
@@ -1,4 +1,4 @@
1
- import { OnInit } from '@angular/core';
1
+ import { AfterViewInit, OnInit } from '@angular/core';
2
2
  import { UntypedFormControl } from '@angular/forms';
3
3
  import { FlatTreeControl, KbqTreeFlatDataSource, KbqTreeFlattener, KbqTreeOption } from '@koobiq/components/tree';
4
4
  import { KbqTreeSelect } from '@koobiq/components/tree-select';
@@ -6,7 +6,7 @@ import { Observable } from 'rxjs';
6
6
  import { KbqPipeTemplate, KbqSelectValue, KbqTreeSelectFlatNode, KbqTreeSelectNode } from '../filter-bar.types';
7
7
  import { KbqBasePipe } from './base-pipe';
8
8
  import * as i0 from "@angular/core";
9
- export declare class KbqPipeTreeSelectComponent extends KbqBasePipe<KbqSelectValue> implements OnInit {
9
+ export declare class KbqPipeTreeSelectComponent extends KbqBasePipe<KbqSelectValue> implements OnInit, AfterViewInit {
10
10
  /** control for search options */
11
11
  searchControl: UntypedFormControl;
12
12
  /** filtered by search options */
@@ -23,6 +23,7 @@ export declare class KbqPipeTreeSelectComponent extends KbqBasePipe<KbqSelectVal
23
23
  get isEmpty(): boolean;
24
24
  constructor();
25
25
  ngOnInit(): void;
26
+ ngAfterViewInit(): void;
26
27
  hasChild(_: number, nodeData: any): any;
27
28
  onSelect(item: KbqTreeOption): void;
28
29
  /** updates values for selection and value template */