@lifecorner/angular-ui-kit 3.4.0 → 3.5.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 (340) hide show
  1. package/README.md +12 -2
  2. package/fesm2022/lifecorner-angular-ui-kit-accordion.mjs +454 -0
  3. package/fesm2022/lifecorner-angular-ui-kit-accordion.mjs.map +1 -0
  4. package/fesm2022/lifecorner-angular-ui-kit-alert.mjs +297 -0
  5. package/fesm2022/lifecorner-angular-ui-kit-alert.mjs.map +1 -0
  6. package/fesm2022/lifecorner-angular-ui-kit-app-shell.mjs +190 -0
  7. package/fesm2022/lifecorner-angular-ui-kit-app-shell.mjs.map +1 -0
  8. package/fesm2022/lifecorner-angular-ui-kit-area-chart.mjs +446 -0
  9. package/fesm2022/lifecorner-angular-ui-kit-area-chart.mjs.map +1 -0
  10. package/fesm2022/lifecorner-angular-ui-kit-avatar-group.mjs +158 -0
  11. package/fesm2022/lifecorner-angular-ui-kit-avatar-group.mjs.map +1 -0
  12. package/fesm2022/lifecorner-angular-ui-kit-avatar.mjs +216 -0
  13. package/fesm2022/lifecorner-angular-ui-kit-avatar.mjs.map +1 -0
  14. package/fesm2022/lifecorner-angular-ui-kit-badge.mjs +121 -0
  15. package/fesm2022/lifecorner-angular-ui-kit-badge.mjs.map +1 -0
  16. package/fesm2022/lifecorner-angular-ui-kit-bar-chart.mjs +360 -0
  17. package/fesm2022/lifecorner-angular-ui-kit-bar-chart.mjs.map +1 -0
  18. package/fesm2022/lifecorner-angular-ui-kit-bottom-nav.mjs +344 -0
  19. package/fesm2022/lifecorner-angular-ui-kit-bottom-nav.mjs.map +1 -0
  20. package/fesm2022/lifecorner-angular-ui-kit-breadcrumbs.mjs +191 -0
  21. package/fesm2022/lifecorner-angular-ui-kit-breadcrumbs.mjs.map +1 -0
  22. package/fesm2022/lifecorner-angular-ui-kit-button.mjs +423 -0
  23. package/fesm2022/lifecorner-angular-ui-kit-button.mjs.map +1 -0
  24. package/fesm2022/lifecorner-angular-ui-kit-calendar.mjs +368 -0
  25. package/fesm2022/lifecorner-angular-ui-kit-calendar.mjs.map +1 -0
  26. package/fesm2022/lifecorner-angular-ui-kit-callout.mjs +203 -0
  27. package/fesm2022/lifecorner-angular-ui-kit-callout.mjs.map +1 -0
  28. package/fesm2022/lifecorner-angular-ui-kit-card.mjs +323 -0
  29. package/fesm2022/lifecorner-angular-ui-kit-card.mjs.map +1 -0
  30. package/fesm2022/lifecorner-angular-ui-kit-chat.mjs +790 -0
  31. package/fesm2022/lifecorner-angular-ui-kit-chat.mjs.map +1 -0
  32. package/fesm2022/lifecorner-angular-ui-kit-checkbox.mjs +325 -0
  33. package/fesm2022/lifecorner-angular-ui-kit-checkbox.mjs.map +1 -0
  34. package/fesm2022/lifecorner-angular-ui-kit-chip.mjs +214 -0
  35. package/fesm2022/lifecorner-angular-ui-kit-chip.mjs.map +1 -0
  36. package/fesm2022/lifecorner-angular-ui-kit-choice-prompt.mjs +375 -0
  37. package/fesm2022/lifecorner-angular-ui-kit-choice-prompt.mjs.map +1 -0
  38. package/fesm2022/lifecorner-angular-ui-kit-code-block.mjs +518 -0
  39. package/fesm2022/lifecorner-angular-ui-kit-code-block.mjs.map +1 -0
  40. package/fesm2022/lifecorner-angular-ui-kit-color-picker.mjs +278 -0
  41. package/fesm2022/lifecorner-angular-ui-kit-color-picker.mjs.map +1 -0
  42. package/fesm2022/lifecorner-angular-ui-kit-combobox.mjs +688 -0
  43. package/fesm2022/lifecorner-angular-ui-kit-combobox.mjs.map +1 -0
  44. package/fesm2022/lifecorner-angular-ui-kit-confirm-dialog.mjs +494 -0
  45. package/fesm2022/lifecorner-angular-ui-kit-confirm-dialog.mjs.map +1 -0
  46. package/fesm2022/lifecorner-angular-ui-kit-container.mjs +103 -0
  47. package/fesm2022/lifecorner-angular-ui-kit-container.mjs.map +1 -0
  48. package/fesm2022/lifecorner-angular-ui-kit-copy-field.mjs +308 -0
  49. package/fesm2022/lifecorner-angular-ui-kit-copy-field.mjs.map +1 -0
  50. package/fesm2022/lifecorner-angular-ui-kit-date-range-picker.mjs +466 -0
  51. package/fesm2022/lifecorner-angular-ui-kit-date-range-picker.mjs.map +1 -0
  52. package/fesm2022/lifecorner-angular-ui-kit-datepicker.mjs +810 -0
  53. package/fesm2022/lifecorner-angular-ui-kit-datepicker.mjs.map +1 -0
  54. package/fesm2022/lifecorner-angular-ui-kit-dependency-viewer.mjs +1761 -0
  55. package/fesm2022/lifecorner-angular-ui-kit-dependency-viewer.mjs.map +1 -0
  56. package/fesm2022/lifecorner-angular-ui-kit-description-list.mjs +165 -0
  57. package/fesm2022/lifecorner-angular-ui-kit-description-list.mjs.map +1 -0
  58. package/fesm2022/lifecorner-angular-ui-kit-diff-viewer.mjs +356 -0
  59. package/fesm2022/lifecorner-angular-ui-kit-diff-viewer.mjs.map +1 -0
  60. package/fesm2022/lifecorner-angular-ui-kit-divider.mjs +119 -0
  61. package/fesm2022/lifecorner-angular-ui-kit-divider.mjs.map +1 -0
  62. package/fesm2022/lifecorner-angular-ui-kit-document-viewer.mjs +762 -0
  63. package/fesm2022/lifecorner-angular-ui-kit-document-viewer.mjs.map +1 -0
  64. package/fesm2022/lifecorner-angular-ui-kit-donut-chart.mjs +255 -0
  65. package/fesm2022/lifecorner-angular-ui-kit-donut-chart.mjs.map +1 -0
  66. package/fesm2022/lifecorner-angular-ui-kit-drawer.mjs +308 -0
  67. package/fesm2022/lifecorner-angular-ui-kit-drawer.mjs.map +1 -0
  68. package/fesm2022/lifecorner-angular-ui-kit-email-input.mjs +519 -0
  69. package/fesm2022/lifecorner-angular-ui-kit-email-input.mjs.map +1 -0
  70. package/fesm2022/lifecorner-angular-ui-kit-empty-state.mjs +143 -0
  71. package/fesm2022/lifecorner-angular-ui-kit-empty-state.mjs.map +1 -0
  72. package/fesm2022/lifecorner-angular-ui-kit-error-display.mjs +306 -0
  73. package/fesm2022/lifecorner-angular-ui-kit-error-display.mjs.map +1 -0
  74. package/fesm2022/lifecorner-angular-ui-kit-field-group.mjs +154 -0
  75. package/fesm2022/lifecorner-angular-ui-kit-field-group.mjs.map +1 -0
  76. package/fesm2022/lifecorner-angular-ui-kit-file-upload.mjs +281 -0
  77. package/fesm2022/lifecorner-angular-ui-kit-file-upload.mjs.map +1 -0
  78. package/fesm2022/lifecorner-angular-ui-kit-filter-bar.mjs +258 -0
  79. package/fesm2022/lifecorner-angular-ui-kit-filter-bar.mjs.map +1 -0
  80. package/fesm2022/lifecorner-angular-ui-kit-footer.mjs +200 -0
  81. package/fesm2022/lifecorner-angular-ui-kit-footer.mjs.map +1 -0
  82. package/fesm2022/lifecorner-angular-ui-kit-funnel-chart.mjs +292 -0
  83. package/fesm2022/lifecorner-angular-ui-kit-funnel-chart.mjs.map +1 -0
  84. package/fesm2022/lifecorner-angular-ui-kit-gallery.mjs +563 -0
  85. package/fesm2022/lifecorner-angular-ui-kit-gallery.mjs.map +1 -0
  86. package/fesm2022/lifecorner-angular-ui-kit-gantt-chart.mjs +314 -0
  87. package/fesm2022/lifecorner-angular-ui-kit-gantt-chart.mjs.map +1 -0
  88. package/fesm2022/lifecorner-angular-ui-kit-gauge.mjs +265 -0
  89. package/fesm2022/lifecorner-angular-ui-kit-gauge.mjs.map +1 -0
  90. package/fesm2022/lifecorner-angular-ui-kit-header.mjs +955 -0
  91. package/fesm2022/lifecorner-angular-ui-kit-header.mjs.map +1 -0
  92. package/fesm2022/lifecorner-angular-ui-kit-heatmap.mjs +305 -0
  93. package/fesm2022/lifecorner-angular-ui-kit-heatmap.mjs.map +1 -0
  94. package/fesm2022/lifecorner-angular-ui-kit-hero.mjs +168 -0
  95. package/fesm2022/lifecorner-angular-ui-kit-hero.mjs.map +1 -0
  96. package/fesm2022/lifecorner-angular-ui-kit-icon-names.mjs +9 -0
  97. package/fesm2022/lifecorner-angular-ui-kit-icon-names.mjs.map +1 -0
  98. package/fesm2022/lifecorner-angular-ui-kit-icon.mjs +1026 -0
  99. package/fesm2022/lifecorner-angular-ui-kit-icon.mjs.map +1 -0
  100. package/fesm2022/lifecorner-angular-ui-kit-input.mjs +595 -0
  101. package/fesm2022/lifecorner-angular-ui-kit-input.mjs.map +1 -0
  102. package/fesm2022/lifecorner-angular-ui-kit-internal-chart.mjs +105 -0
  103. package/fesm2022/lifecorner-angular-ui-kit-internal-chart.mjs.map +1 -0
  104. package/fesm2022/lifecorner-angular-ui-kit-internal-overlay.mjs +50 -0
  105. package/fesm2022/lifecorner-angular-ui-kit-internal-overlay.mjs.map +1 -0
  106. package/fesm2022/lifecorner-angular-ui-kit-internal-url.mjs +22 -0
  107. package/fesm2022/lifecorner-angular-ui-kit-internal-url.mjs.map +1 -0
  108. package/fesm2022/lifecorner-angular-ui-kit-kanban-board.mjs +319 -0
  109. package/fesm2022/lifecorner-angular-ui-kit-kanban-board.mjs.map +1 -0
  110. package/fesm2022/lifecorner-angular-ui-kit-line-chart.mjs +413 -0
  111. package/fesm2022/lifecorner-angular-ui-kit-line-chart.mjs.map +1 -0
  112. package/fesm2022/lifecorner-angular-ui-kit-list.mjs +338 -0
  113. package/fesm2022/lifecorner-angular-ui-kit-list.mjs.map +1 -0
  114. package/fesm2022/lifecorner-angular-ui-kit-log-viewer.mjs +813 -0
  115. package/fesm2022/lifecorner-angular-ui-kit-log-viewer.mjs.map +1 -0
  116. package/fesm2022/lifecorner-angular-ui-kit-logo.mjs +226 -0
  117. package/fesm2022/lifecorner-angular-ui-kit-logo.mjs.map +1 -0
  118. package/fesm2022/lifecorner-angular-ui-kit-markdown.mjs +756 -0
  119. package/fesm2022/lifecorner-angular-ui-kit-markdown.mjs.map +1 -0
  120. package/fesm2022/lifecorner-angular-ui-kit-menu.mjs +321 -0
  121. package/fesm2022/lifecorner-angular-ui-kit-menu.mjs.map +1 -0
  122. package/fesm2022/lifecorner-angular-ui-kit-modal.mjs +329 -0
  123. package/fesm2022/lifecorner-angular-ui-kit-modal.mjs.map +1 -0
  124. package/fesm2022/lifecorner-angular-ui-kit-models.mjs +0 -0
  125. package/fesm2022/lifecorner-angular-ui-kit-next-step-card.mjs +419 -0
  126. package/fesm2022/lifecorner-angular-ui-kit-next-step-card.mjs.map +1 -0
  127. package/fesm2022/lifecorner-angular-ui-kit-notification-center.mjs +644 -0
  128. package/fesm2022/lifecorner-angular-ui-kit-notification-center.mjs.map +1 -0
  129. package/fesm2022/lifecorner-angular-ui-kit-number-input.mjs +401 -0
  130. package/fesm2022/lifecorner-angular-ui-kit-number-input.mjs.map +1 -0
  131. package/fesm2022/lifecorner-angular-ui-kit-page-header.mjs +266 -0
  132. package/fesm2022/lifecorner-angular-ui-kit-page-header.mjs.map +1 -0
  133. package/fesm2022/lifecorner-angular-ui-kit-page-layout.mjs +127 -0
  134. package/fesm2022/lifecorner-angular-ui-kit-page-layout.mjs.map +1 -0
  135. package/fesm2022/lifecorner-angular-ui-kit-pagination.mjs +343 -0
  136. package/fesm2022/lifecorner-angular-ui-kit-pagination.mjs.map +1 -0
  137. package/fesm2022/lifecorner-angular-ui-kit-password-input.mjs +696 -0
  138. package/fesm2022/lifecorner-angular-ui-kit-password-input.mjs.map +1 -0
  139. package/fesm2022/lifecorner-angular-ui-kit-pie-chart.mjs +162 -0
  140. package/fesm2022/lifecorner-angular-ui-kit-pie-chart.mjs.map +1 -0
  141. package/fesm2022/lifecorner-angular-ui-kit-pipeline.mjs +159 -0
  142. package/fesm2022/lifecorner-angular-ui-kit-pipeline.mjs.map +1 -0
  143. package/fesm2022/lifecorner-angular-ui-kit-popover.mjs +190 -0
  144. package/fesm2022/lifecorner-angular-ui-kit-popover.mjs.map +1 -0
  145. package/fesm2022/lifecorner-angular-ui-kit-progress-bar.mjs +190 -0
  146. package/fesm2022/lifecorner-angular-ui-kit-progress-bar.mjs.map +1 -0
  147. package/fesm2022/lifecorner-angular-ui-kit-progress-ring.mjs +175 -0
  148. package/fesm2022/lifecorner-angular-ui-kit-progress-ring.mjs.map +1 -0
  149. package/fesm2022/lifecorner-angular-ui-kit-provider-button.mjs +255 -0
  150. package/fesm2022/lifecorner-angular-ui-kit-provider-button.mjs.map +1 -0
  151. package/fesm2022/lifecorner-angular-ui-kit-radar-chart.mjs +309 -0
  152. package/fesm2022/lifecorner-angular-ui-kit-radar-chart.mjs.map +1 -0
  153. package/fesm2022/lifecorner-angular-ui-kit-radio.mjs +708 -0
  154. package/fesm2022/lifecorner-angular-ui-kit-radio.mjs.map +1 -0
  155. package/fesm2022/lifecorner-angular-ui-kit-rating.mjs +327 -0
  156. package/fesm2022/lifecorner-angular-ui-kit-rating.mjs.map +1 -0
  157. package/fesm2022/lifecorner-angular-ui-kit-rich-text-editor.mjs +718 -0
  158. package/fesm2022/lifecorner-angular-ui-kit-rich-text-editor.mjs.map +1 -0
  159. package/fesm2022/lifecorner-angular-ui-kit-scatter-plot.mjs +415 -0
  160. package/fesm2022/lifecorner-angular-ui-kit-scatter-plot.mjs.map +1 -0
  161. package/fesm2022/lifecorner-angular-ui-kit-search-input.mjs +290 -0
  162. package/fesm2022/lifecorner-angular-ui-kit-search-input.mjs.map +1 -0
  163. package/fesm2022/lifecorner-angular-ui-kit-section.mjs +127 -0
  164. package/fesm2022/lifecorner-angular-ui-kit-section.mjs.map +1 -0
  165. package/fesm2022/lifecorner-angular-ui-kit-select.mjs +650 -0
  166. package/fesm2022/lifecorner-angular-ui-kit-select.mjs.map +1 -0
  167. package/fesm2022/lifecorner-angular-ui-kit-sidenav.mjs +691 -0
  168. package/fesm2022/lifecorner-angular-ui-kit-sidenav.mjs.map +1 -0
  169. package/fesm2022/lifecorner-angular-ui-kit-skeleton.mjs +144 -0
  170. package/fesm2022/lifecorner-angular-ui-kit-skeleton.mjs.map +1 -0
  171. package/fesm2022/lifecorner-angular-ui-kit-slider.mjs +204 -0
  172. package/fesm2022/lifecorner-angular-ui-kit-slider.mjs.map +1 -0
  173. package/fesm2022/lifecorner-angular-ui-kit-spacer.mjs +73 -0
  174. package/fesm2022/lifecorner-angular-ui-kit-spacer.mjs.map +1 -0
  175. package/fesm2022/lifecorner-angular-ui-kit-sparkline.mjs +318 -0
  176. package/fesm2022/lifecorner-angular-ui-kit-sparkline.mjs.map +1 -0
  177. package/fesm2022/lifecorner-angular-ui-kit-spinner.mjs +95 -0
  178. package/fesm2022/lifecorner-angular-ui-kit-spinner.mjs.map +1 -0
  179. package/fesm2022/lifecorner-angular-ui-kit-split-pane.mjs +298 -0
  180. package/fesm2022/lifecorner-angular-ui-kit-split-pane.mjs.map +1 -0
  181. package/fesm2022/lifecorner-angular-ui-kit-stack.mjs +162 -0
  182. package/fesm2022/lifecorner-angular-ui-kit-stack.mjs.map +1 -0
  183. package/fesm2022/lifecorner-angular-ui-kit-stacked-bar-chart.mjs +412 -0
  184. package/fesm2022/lifecorner-angular-ui-kit-stacked-bar-chart.mjs.map +1 -0
  185. package/fesm2022/lifecorner-angular-ui-kit-stage-list.mjs +186 -0
  186. package/fesm2022/lifecorner-angular-ui-kit-stage-list.mjs.map +1 -0
  187. package/fesm2022/lifecorner-angular-ui-kit-stat-trend.mjs +224 -0
  188. package/fesm2022/lifecorner-angular-ui-kit-stat-trend.mjs.map +1 -0
  189. package/fesm2022/lifecorner-angular-ui-kit-status-dot.mjs +122 -0
  190. package/fesm2022/lifecorner-angular-ui-kit-status-dot.mjs.map +1 -0
  191. package/fesm2022/lifecorner-angular-ui-kit-stepper.mjs +209 -0
  192. package/fesm2022/lifecorner-angular-ui-kit-stepper.mjs.map +1 -0
  193. package/fesm2022/lifecorner-angular-ui-kit-switch.mjs +249 -0
  194. package/fesm2022/lifecorner-angular-ui-kit-switch.mjs.map +1 -0
  195. package/fesm2022/lifecorner-angular-ui-kit-table.mjs +1434 -0
  196. package/fesm2022/lifecorner-angular-ui-kit-table.mjs.map +1 -0
  197. package/fesm2022/lifecorner-angular-ui-kit-tabs.mjs +407 -0
  198. package/fesm2022/lifecorner-angular-ui-kit-tabs.mjs.map +1 -0
  199. package/fesm2022/lifecorner-angular-ui-kit-tag-input.mjs +380 -0
  200. package/fesm2022/lifecorner-angular-ui-kit-tag-input.mjs.map +1 -0
  201. package/fesm2022/lifecorner-angular-ui-kit-textarea.mjs +440 -0
  202. package/fesm2022/lifecorner-angular-ui-kit-textarea.mjs.map +1 -0
  203. package/fesm2022/lifecorner-angular-ui-kit-theme.mjs +145 -0
  204. package/fesm2022/lifecorner-angular-ui-kit-theme.mjs.map +1 -0
  205. package/fesm2022/lifecorner-angular-ui-kit-timeline.mjs +262 -0
  206. package/fesm2022/lifecorner-angular-ui-kit-timeline.mjs.map +1 -0
  207. package/fesm2022/lifecorner-angular-ui-kit-toast.mjs +352 -0
  208. package/fesm2022/lifecorner-angular-ui-kit-toast.mjs.map +1 -0
  209. package/fesm2022/lifecorner-angular-ui-kit-toggle-group.mjs +215 -0
  210. package/fesm2022/lifecorner-angular-ui-kit-toggle-group.mjs.map +1 -0
  211. package/fesm2022/lifecorner-angular-ui-kit-tokens.mjs +134 -0
  212. package/fesm2022/lifecorner-angular-ui-kit-tokens.mjs.map +1 -0
  213. package/fesm2022/lifecorner-angular-ui-kit-toolbar.mjs +225 -0
  214. package/fesm2022/lifecorner-angular-ui-kit-toolbar.mjs.map +1 -0
  215. package/fesm2022/lifecorner-angular-ui-kit-tooltip.mjs +386 -0
  216. package/fesm2022/lifecorner-angular-ui-kit-tooltip.mjs.map +1 -0
  217. package/fesm2022/lifecorner-angular-ui-kit-tree-view.mjs +509 -0
  218. package/fesm2022/lifecorner-angular-ui-kit-tree-view.mjs.map +1 -0
  219. package/fesm2022/lifecorner-angular-ui-kit-typography.mjs +209 -0
  220. package/fesm2022/lifecorner-angular-ui-kit-typography.mjs.map +1 -0
  221. package/fesm2022/lifecorner-angular-ui-kit-verification-code-input.mjs +365 -0
  222. package/fesm2022/lifecorner-angular-ui-kit-verification-code-input.mjs.map +1 -0
  223. package/fesm2022/lifecorner-angular-ui-kit-waterfall-chart.mjs +371 -0
  224. package/fesm2022/lifecorner-angular-ui-kit-waterfall-chart.mjs.map +1 -0
  225. package/fesm2022/lifecorner-angular-ui-kit.mjs +109 -38925
  226. package/package.json +449 -1
  227. package/types/lifecorner-angular-ui-kit-accordion.d.ts +239 -0
  228. package/types/lifecorner-angular-ui-kit-alert.d.ts +189 -0
  229. package/types/lifecorner-angular-ui-kit-app-shell.d.ts +148 -0
  230. package/types/lifecorner-angular-ui-kit-area-chart.d.ts +180 -0
  231. package/types/lifecorner-angular-ui-kit-avatar-group.d.ts +62 -0
  232. package/types/lifecorner-angular-ui-kit-avatar.d.ts +131 -0
  233. package/types/lifecorner-angular-ui-kit-badge.d.ts +59 -0
  234. package/types/lifecorner-angular-ui-kit-bar-chart.d.ts +157 -0
  235. package/types/lifecorner-angular-ui-kit-bottom-nav.d.ts +184 -0
  236. package/types/lifecorner-angular-ui-kit-breadcrumbs.d.ts +55 -0
  237. package/types/lifecorner-angular-ui-kit-button.d.ts +181 -0
  238. package/types/lifecorner-angular-ui-kit-calendar.d.ts +136 -0
  239. package/types/lifecorner-angular-ui-kit-callout.d.ts +77 -0
  240. package/types/lifecorner-angular-ui-kit-card.d.ts +213 -0
  241. package/types/lifecorner-angular-ui-kit-chat.d.ts +379 -0
  242. package/types/lifecorner-angular-ui-kit-checkbox.d.ts +116 -0
  243. package/types/lifecorner-angular-ui-kit-chip.d.ts +104 -0
  244. package/types/lifecorner-angular-ui-kit-choice-prompt.d.ts +186 -0
  245. package/types/lifecorner-angular-ui-kit-code-block.d.ts +85 -0
  246. package/types/lifecorner-angular-ui-kit-color-picker.d.ts +88 -0
  247. package/types/lifecorner-angular-ui-kit-combobox.d.ts +222 -0
  248. package/types/lifecorner-angular-ui-kit-confirm-dialog.d.ts +211 -0
  249. package/types/lifecorner-angular-ui-kit-container.d.ts +47 -0
  250. package/types/lifecorner-angular-ui-kit-copy-field.d.ts +89 -0
  251. package/types/lifecorner-angular-ui-kit-date-range-picker.d.ts +126 -0
  252. package/types/lifecorner-angular-ui-kit-datepicker.d.ts +363 -0
  253. package/types/lifecorner-angular-ui-kit-dependency-viewer.d.ts +568 -0
  254. package/types/lifecorner-angular-ui-kit-description-list.d.ts +137 -0
  255. package/types/lifecorner-angular-ui-kit-diff-viewer.d.ts +93 -0
  256. package/types/lifecorner-angular-ui-kit-divider.d.ts +66 -0
  257. package/types/lifecorner-angular-ui-kit-document-viewer.d.ts +256 -0
  258. package/types/lifecorner-angular-ui-kit-donut-chart.d.ts +92 -0
  259. package/types/lifecorner-angular-ui-kit-drawer.d.ts +124 -0
  260. package/types/lifecorner-angular-ui-kit-email-input.d.ts +292 -0
  261. package/types/lifecorner-angular-ui-kit-empty-state.d.ts +81 -0
  262. package/types/lifecorner-angular-ui-kit-error-display.d.ts +157 -0
  263. package/types/lifecorner-angular-ui-kit-field-group.d.ts +69 -0
  264. package/types/lifecorner-angular-ui-kit-file-upload.d.ts +122 -0
  265. package/types/lifecorner-angular-ui-kit-filter-bar.d.ts +116 -0
  266. package/types/lifecorner-angular-ui-kit-footer.d.ts +97 -0
  267. package/types/lifecorner-angular-ui-kit-funnel-chart.d.ts +97 -0
  268. package/types/lifecorner-angular-ui-kit-gallery.d.ts +240 -0
  269. package/types/lifecorner-angular-ui-kit-gantt-chart.d.ts +133 -0
  270. package/types/lifecorner-angular-ui-kit-gauge.d.ts +94 -0
  271. package/types/lifecorner-angular-ui-kit-header.d.ts +496 -0
  272. package/types/lifecorner-angular-ui-kit-heatmap.d.ts +126 -0
  273. package/types/lifecorner-angular-ui-kit-hero.d.ts +121 -0
  274. package/types/lifecorner-angular-ui-kit-icon-names.d.ts +21 -0
  275. package/types/lifecorner-angular-ui-kit-icon.d.ts +260 -0
  276. package/types/lifecorner-angular-ui-kit-input.d.ts +346 -0
  277. package/types/lifecorner-angular-ui-kit-internal-chart.d.ts +86 -0
  278. package/types/lifecorner-angular-ui-kit-internal-overlay.d.ts +31 -0
  279. package/types/lifecorner-angular-ui-kit-internal-url.d.ts +22 -0
  280. package/types/lifecorner-angular-ui-kit-kanban-board.d.ts +111 -0
  281. package/types/lifecorner-angular-ui-kit-line-chart.d.ts +186 -0
  282. package/types/lifecorner-angular-ui-kit-list.d.ts +215 -0
  283. package/types/lifecorner-angular-ui-kit-log-viewer.d.ts +355 -0
  284. package/types/lifecorner-angular-ui-kit-logo.d.ts +182 -0
  285. package/types/lifecorner-angular-ui-kit-markdown.d.ts +278 -0
  286. package/types/lifecorner-angular-ui-kit-menu.d.ts +152 -0
  287. package/types/lifecorner-angular-ui-kit-modal.d.ts +207 -0
  288. package/types/lifecorner-angular-ui-kit-models.d.ts +62 -0
  289. package/types/lifecorner-angular-ui-kit-next-step-card.d.ts +262 -0
  290. package/types/lifecorner-angular-ui-kit-notification-center.d.ts +237 -0
  291. package/types/lifecorner-angular-ui-kit-number-input.d.ts +126 -0
  292. package/types/lifecorner-angular-ui-kit-page-header.d.ts +178 -0
  293. package/types/lifecorner-angular-ui-kit-page-layout.d.ts +61 -0
  294. package/types/lifecorner-angular-ui-kit-pagination.d.ts +141 -0
  295. package/types/lifecorner-angular-ui-kit-password-input.d.ts +361 -0
  296. package/types/lifecorner-angular-ui-kit-pie-chart.d.ts +58 -0
  297. package/types/lifecorner-angular-ui-kit-pipeline.d.ts +89 -0
  298. package/types/lifecorner-angular-ui-kit-popover.d.ts +104 -0
  299. package/types/lifecorner-angular-ui-kit-progress-bar.d.ts +116 -0
  300. package/types/lifecorner-angular-ui-kit-progress-ring.d.ts +67 -0
  301. package/types/lifecorner-angular-ui-kit-provider-button.d.ts +137 -0
  302. package/types/lifecorner-angular-ui-kit-radar-chart.d.ts +113 -0
  303. package/types/lifecorner-angular-ui-kit-radio.d.ts +297 -0
  304. package/types/lifecorner-angular-ui-kit-rating.d.ts +115 -0
  305. package/types/lifecorner-angular-ui-kit-rich-text-editor.d.ts +226 -0
  306. package/types/lifecorner-angular-ui-kit-scatter-plot.d.ts +190 -0
  307. package/types/lifecorner-angular-ui-kit-search-input.d.ts +137 -0
  308. package/types/lifecorner-angular-ui-kit-section.d.ts +34 -0
  309. package/types/lifecorner-angular-ui-kit-select.d.ts +274 -0
  310. package/types/lifecorner-angular-ui-kit-sidenav.d.ts +367 -0
  311. package/types/lifecorner-angular-ui-kit-skeleton.d.ts +61 -0
  312. package/types/lifecorner-angular-ui-kit-slider.d.ts +79 -0
  313. package/types/lifecorner-angular-ui-kit-spacer.d.ts +27 -0
  314. package/types/lifecorner-angular-ui-kit-sparkline.d.ts +113 -0
  315. package/types/lifecorner-angular-ui-kit-spinner.d.ts +50 -0
  316. package/types/lifecorner-angular-ui-kit-split-pane.d.ts +131 -0
  317. package/types/lifecorner-angular-ui-kit-stack.d.ts +49 -0
  318. package/types/lifecorner-angular-ui-kit-stacked-bar-chart.d.ts +171 -0
  319. package/types/lifecorner-angular-ui-kit-stage-list.d.ts +69 -0
  320. package/types/lifecorner-angular-ui-kit-stat-trend.d.ts +62 -0
  321. package/types/lifecorner-angular-ui-kit-status-dot.d.ts +62 -0
  322. package/types/lifecorner-angular-ui-kit-stepper.d.ts +113 -0
  323. package/types/lifecorner-angular-ui-kit-switch.d.ts +141 -0
  324. package/types/lifecorner-angular-ui-kit-table.d.ts +632 -0
  325. package/types/lifecorner-angular-ui-kit-tabs.d.ts +196 -0
  326. package/types/lifecorner-angular-ui-kit-tag-input.d.ts +123 -0
  327. package/types/lifecorner-angular-ui-kit-textarea.d.ts +225 -0
  328. package/types/lifecorner-angular-ui-kit-theme.d.ts +91 -0
  329. package/types/lifecorner-angular-ui-kit-timeline.d.ts +162 -0
  330. package/types/lifecorner-angular-ui-kit-toast.d.ts +204 -0
  331. package/types/lifecorner-angular-ui-kit-toggle-group.d.ts +100 -0
  332. package/types/lifecorner-angular-ui-kit-tokens.d.ts +134 -0
  333. package/types/lifecorner-angular-ui-kit-toolbar.d.ts +120 -0
  334. package/types/lifecorner-angular-ui-kit-tooltip.d.ts +120 -0
  335. package/types/lifecorner-angular-ui-kit-tree-view.d.ts +231 -0
  336. package/types/lifecorner-angular-ui-kit-typography.d.ts +126 -0
  337. package/types/lifecorner-angular-ui-kit-verification-code-input.d.ts +187 -0
  338. package/types/lifecorner-angular-ui-kit-waterfall-chart.d.ts +163 -0
  339. package/types/lifecorner-angular-ui-kit.d.ts +109 -17401
  340. package/fesm2022/lifecorner-angular-ui-kit.mjs.map +0 -1
@@ -0,0 +1,380 @@
1
+ import * as i0 from "@angular/core";
2
+ import { ChangeDetectionStrategy, Component, computed, forwardRef, input, output, signal, viewChild } from "@angular/core";
3
+ import { NG_VALUE_ACCESSOR } from "@angular/forms";
4
+ var TagInputComponent = class TagInputComponent {
5
+ static nextId = 0;
6
+ placeholder = input("Add tag…", ...ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []);
7
+ maxTags = input(Infinity, ...ngDevMode ? [{ debugName: "maxTags" }] : /* istanbul ignore next */ []);
8
+ allowDuplicates = input(false, ...ngDevMode ? [{ debugName: "allowDuplicates" }] : /* istanbul ignore next */ []);
9
+ removable = input(true, ...ngDevMode ? [{ debugName: "removable" }] : /* istanbul ignore next */ []);
10
+ disabled = input(false, ...ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []);
11
+ separator = input("both", ...ngDevMode ? [{ debugName: "separator" }] : /* istanbul ignore next */ []);
12
+ suggestions = input([], ...ngDevMode ? [{ debugName: "suggestions" }] : /* istanbul ignore next */ []);
13
+ label = input("", ...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
14
+ maxTagsReachedLabel = input("Maximum of {max} tags reached", ...ngDevMode ? [{ debugName: "maxTagsReachedLabel" }] : /* istanbul ignore next */ []);
15
+ removeTagAriaLabel = input("Remove", ...ngDevMode ? [{ debugName: "removeTagAriaLabel" }] : /* istanbul ignore next */ []);
16
+ suggestionsAriaLabel = input("Suggestions", ...ngDevMode ? [{ debugName: "suggestionsAriaLabel" }] : /* istanbul ignore next */ []);
17
+ tagAdded = output();
18
+ tagRemoved = output();
19
+ inputId = `lc-tag-input-${++TagInputComponent.nextId}`;
20
+ listboxId = `${this.inputId}-listbox`;
21
+ tags = signal([], ...ngDevMode ? [{ debugName: "tags" }] : /* istanbul ignore next */ []);
22
+ inputValue = signal("", ...ngDevMode ? [{ debugName: "inputValue" }] : /* istanbul ignore next */ []);
23
+ focused = signal(false, ...ngDevMode ? [{ debugName: "focused" }] : /* istanbul ignore next */ []);
24
+ activeIndex = signal(-1, ...ngDevMode ? [{ debugName: "activeIndex" }] : /* istanbul ignore next */ []);
25
+ suggestionsDismissed = signal(false, ...ngDevMode ? [{ debugName: "suggestionsDismissed" }] : /* istanbul ignore next */ []);
26
+ formDisabled = signal(false, ...ngDevMode ? [{ debugName: "formDisabled" }] : /* istanbul ignore next */ []);
27
+ isDisabled = computed(() => this.disabled() || this.formDisabled(), ...ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []);
28
+ inputEl = viewChild("inputEl", ...ngDevMode ? [{ debugName: "inputEl" }] : /* istanbul ignore next */ []);
29
+ filteredSuggestions = computed(() => {
30
+ const val = this.inputValue().toLowerCase().trim();
31
+ if (!val) return [];
32
+ return this.suggestions().filter((s) => s.toLowerCase().includes(val) && (this.allowDuplicates() || !this.tags().includes(s)));
33
+ }, ...ngDevMode ? [{ debugName: "filteredSuggestions" }] : /* istanbul ignore next */ []);
34
+ hasSuggestions = computed(() => this.suggestions().length > 0, ...ngDevMode ? [{ debugName: "hasSuggestions" }] : /* istanbul ignore next */ []);
35
+ showSuggestions = computed(() => this.focused() && !this.suggestionsDismissed() && this.filteredSuggestions().length > 0, ...ngDevMode ? [{ debugName: "showSuggestions" }] : /* istanbul ignore next */ []);
36
+ canAdd = computed(() => this.tags().length < this.maxTags(), ...ngDevMode ? [{ debugName: "canAdd" }] : /* istanbul ignore next */ []);
37
+ inputPlaceholder = computed(() => {
38
+ if (!this.canAdd()) return this.maxTagsReachedLabel().replace("{max}", String(this.maxTags()));
39
+ return this.tags().length ? "" : this.placeholder();
40
+ }, ...ngDevMode ? [{ debugName: "inputPlaceholder" }] : /* istanbul ignore next */ []);
41
+ onChange = () => {};
42
+ onTouched = () => {};
43
+ writeValue(value) {
44
+ this.tags.set(value ?? []);
45
+ }
46
+ registerOnChange(fn) {
47
+ this.onChange = fn;
48
+ }
49
+ registerOnTouched(fn) {
50
+ this.onTouched = fn;
51
+ }
52
+ setDisabledState(isDisabled) {
53
+ this.formDisabled.set(isDisabled);
54
+ }
55
+ optionId(index) {
56
+ return `${this.listboxId}-option-${index}`;
57
+ }
58
+ addTag(value) {
59
+ const tag = value.trim();
60
+ if (!tag || !this.canAdd()) return;
61
+ if (!this.allowDuplicates() && this.tags().includes(tag)) return;
62
+ this.tags.update((t) => [...t, tag]);
63
+ this.inputValue.set("");
64
+ this.activeIndex.set(-1);
65
+ this.onChange(this.tags());
66
+ this.tagAdded.emit(tag);
67
+ }
68
+ removeTag(index) {
69
+ const removed = this.tags()[index];
70
+ this.tags.update((t) => t.filter((_, i) => i !== index));
71
+ this.onChange(this.tags());
72
+ this.tagRemoved.emit(removed);
73
+ }
74
+ onKeydown(event) {
75
+ const sep = this.separator();
76
+ const val = this.inputValue();
77
+ const listOpen = this.showSuggestions();
78
+ switch (event.key) {
79
+ case "ArrowDown":
80
+ case "ArrowUp": {
81
+ const count = this.filteredSuggestions().length;
82
+ if (!count) return;
83
+ event.preventDefault();
84
+ this.suggestionsDismissed.set(false);
85
+ const delta = event.key === "ArrowDown" ? 1 : -1;
86
+ const next = (this.activeIndex() + delta + count) % count;
87
+ this.activeIndex.set(next);
88
+ document.getElementById(this.optionId(next))?.scrollIntoView?.({ block: "nearest" });
89
+ return;
90
+ }
91
+ case "Escape":
92
+ if (listOpen) {
93
+ event.preventDefault();
94
+ this.suggestionsDismissed.set(true);
95
+ this.activeIndex.set(-1);
96
+ }
97
+ return;
98
+ case "Enter":
99
+ if (listOpen && this.activeIndex() >= 0) {
100
+ event.preventDefault();
101
+ this.addTag(this.filteredSuggestions()[this.activeIndex()]);
102
+ } else if (sep === "enter" || sep === "both") {
103
+ event.preventDefault();
104
+ this.addTag(val);
105
+ }
106
+ return;
107
+ case ",":
108
+ if (sep === "comma" || sep === "both") {
109
+ event.preventDefault();
110
+ this.addTag(val);
111
+ }
112
+ return;
113
+ case "Backspace":
114
+ if (!val && this.removable() && this.tags().length > 0) this.removeTag(this.tags().length - 1);
115
+ return;
116
+ }
117
+ }
118
+ onInput(event) {
119
+ this.inputValue.set(event.target.value);
120
+ this.activeIndex.set(-1);
121
+ this.suggestionsDismissed.set(false);
122
+ }
123
+ onFocus() {
124
+ this.focused.set(true);
125
+ }
126
+ onBlur() {
127
+ this.focused.set(false);
128
+ this.activeIndex.set(-1);
129
+ this.onTouched();
130
+ const val = this.inputValue();
131
+ if (val.trim()) this.addTag(val);
132
+ }
133
+ selectSuggestion(value) {
134
+ this.addTag(value);
135
+ this.inputEl()?.nativeElement.focus();
136
+ }
137
+ focusInput() {
138
+ this.inputEl()?.nativeElement.focus();
139
+ }
140
+ static ɵfac = i0.ɵɵngDeclareFactory({
141
+ minVersion: "12.0.0",
142
+ version: "22.2.2",
143
+ ngImport: i0,
144
+ type: TagInputComponent,
145
+ deps: [],
146
+ target: i0.ɵɵFactoryTarget.Component
147
+ });
148
+ static ɵcmp = i0.ɵɵngDeclareComponent({
149
+ minVersion: "17.0.0",
150
+ version: "22.2.2",
151
+ type: TagInputComponent,
152
+ isStandalone: true,
153
+ selector: "lc-tag-input",
154
+ inputs: {
155
+ placeholder: {
156
+ classPropertyName: "placeholder",
157
+ publicName: "placeholder",
158
+ isSignal: true,
159
+ isRequired: false,
160
+ transformFunction: null
161
+ },
162
+ maxTags: {
163
+ classPropertyName: "maxTags",
164
+ publicName: "maxTags",
165
+ isSignal: true,
166
+ isRequired: false,
167
+ transformFunction: null
168
+ },
169
+ allowDuplicates: {
170
+ classPropertyName: "allowDuplicates",
171
+ publicName: "allowDuplicates",
172
+ isSignal: true,
173
+ isRequired: false,
174
+ transformFunction: null
175
+ },
176
+ removable: {
177
+ classPropertyName: "removable",
178
+ publicName: "removable",
179
+ isSignal: true,
180
+ isRequired: false,
181
+ transformFunction: null
182
+ },
183
+ disabled: {
184
+ classPropertyName: "disabled",
185
+ publicName: "disabled",
186
+ isSignal: true,
187
+ isRequired: false,
188
+ transformFunction: null
189
+ },
190
+ separator: {
191
+ classPropertyName: "separator",
192
+ publicName: "separator",
193
+ isSignal: true,
194
+ isRequired: false,
195
+ transformFunction: null
196
+ },
197
+ suggestions: {
198
+ classPropertyName: "suggestions",
199
+ publicName: "suggestions",
200
+ isSignal: true,
201
+ isRequired: false,
202
+ transformFunction: null
203
+ },
204
+ label: {
205
+ classPropertyName: "label",
206
+ publicName: "label",
207
+ isSignal: true,
208
+ isRequired: false,
209
+ transformFunction: null
210
+ },
211
+ maxTagsReachedLabel: {
212
+ classPropertyName: "maxTagsReachedLabel",
213
+ publicName: "maxTagsReachedLabel",
214
+ isSignal: true,
215
+ isRequired: false,
216
+ transformFunction: null
217
+ },
218
+ removeTagAriaLabel: {
219
+ classPropertyName: "removeTagAriaLabel",
220
+ publicName: "removeTagAriaLabel",
221
+ isSignal: true,
222
+ isRequired: false,
223
+ transformFunction: null
224
+ },
225
+ suggestionsAriaLabel: {
226
+ classPropertyName: "suggestionsAriaLabel",
227
+ publicName: "suggestionsAriaLabel",
228
+ isSignal: true,
229
+ isRequired: false,
230
+ transformFunction: null
231
+ }
232
+ },
233
+ outputs: {
234
+ tagAdded: "tagAdded",
235
+ tagRemoved: "tagRemoved"
236
+ },
237
+ providers: [{
238
+ provide: NG_VALUE_ACCESSOR,
239
+ useExisting: forwardRef(() => TagInputComponent),
240
+ multi: true
241
+ }],
242
+ viewQueries: [{
243
+ propertyName: "inputEl",
244
+ first: true,
245
+ predicate: ["inputEl"],
246
+ descendants: true,
247
+ isSignal: true
248
+ }],
249
+ ngImport: i0,
250
+ template: "@if (label()) {\n <label class=\"lc-tag-input__label\" [for]=\"inputId\">{{ label() }}</label>\n}\n\n<!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -- container click only forwards focus to the input, which is focusable itself -->\n<div\n class=\"lc-tag-input__container\"\n [class.lc-tag-input__container--focused]=\"focused()\"\n [class.lc-tag-input__container--disabled]=\"isDisabled()\"\n (click)=\"focusInput()\"\n>\n @for (tag of tags(); track $index) {\n <span class=\"lc-tag-input__tag\">\n <span class=\"lc-tag-input__tag-text\">{{ tag }}</span>\n @if (removable() && !isDisabled()) {\n <button\n type=\"button\"\n class=\"lc-tag-input__tag-remove\"\n (click)=\"removeTag($index); $event.stopPropagation()\"\n [attr.aria-label]=\"removeTagAriaLabel() + ' ' + tag\"\n >×</button>\n }\n </span>\n }\n\n <input\n #inputEl\n type=\"text\"\n [id]=\"inputId\"\n class=\"lc-tag-input__input\"\n [attr.role]=\"hasSuggestions() ? 'combobox' : null\"\n [attr.aria-autocomplete]=\"hasSuggestions() ? 'list' : null\"\n [attr.aria-expanded]=\"hasSuggestions() ? showSuggestions() : null\"\n [attr.aria-controls]=\"showSuggestions() ? listboxId : null\"\n [attr.aria-activedescendant]=\"showSuggestions() && activeIndex() >= 0 ? optionId(activeIndex()) : null\"\n [placeholder]=\"inputPlaceholder()\"\n [value]=\"inputValue()\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"!canAdd()\"\n [attr.aria-readonly]=\"!canAdd() ? true : null\"\n (input)=\"onInput($event)\"\n (keydown)=\"onKeydown($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n</div>\n\n@if (showSuggestions()) {\n <ul class=\"lc-tag-input__suggestions\" role=\"listbox\" [id]=\"listboxId\" [attr.aria-label]=\"label() || suggestionsAriaLabel()\">\n @for (sug of filteredSuggestions(); track sug; let i = $index) {\n <li\n class=\"lc-tag-input__suggestion\"\n [class.lc-tag-input__suggestion--active]=\"i === activeIndex()\"\n role=\"option\"\n [id]=\"optionId(i)\"\n [attr.aria-selected]=\"i === activeIndex()\"\n (mouseenter)=\"activeIndex.set(i)\"\n (mousedown)=\"selectSuggestion(sug); $event.preventDefault()\"\n >{{ sug }}</li>\n }\n </ul>\n}\n",
251
+ styles: [":host{display:block;position:relative}.lc-tag-input__label{display:block;margin-bottom:4px;font-size:var(--typography-font-size-sm, .875rem);font-weight:500;color:var(--color-text-secondary)}.lc-tag-input__container{display:flex;flex-wrap:wrap;align-items:center;gap:4px;padding:6px 8px;min-height:40px;border:1px solid var(--color-field-border);border-radius:var(--border-radius-md);background:var(--color-surface-2);cursor:text;transition:border-color .15s,box-shadow .15s}.lc-tag-input__container:hover{border-color:var(--color-text-secondary)}.lc-tag-input__container--focused{border-color:var(--color-primary-500);box-shadow:0 0 0 2px #20849740}.lc-tag-input__container--disabled{opacity:.6;background:var(--color-surface-muted);cursor:default}.lc-tag-input__tag{display:inline-flex;align-items:center;gap:2px;padding:2px 8px;border-radius:var(--border-radius-full);background:#20849729;border:1px solid var(--color-border-strong);color:var(--color-primary-500);font-size:var(--typography-font-size-sm, .875rem);line-height:1.4;-webkit-user-select:none;user-select:none}.lc-tag-input__tag-text{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lc-tag-input__tag-remove{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border:none;border-radius:50%;background:transparent;color:currentColor;cursor:pointer;font-size:14px;line-height:1;padding:0;opacity:.7;transition:opacity .1s,background .1s}.lc-tag-input__tag-remove:hover{opacity:1;background:#20849733}.lc-tag-input__input{flex:1;min-width:60px;border:none;outline:none;background:transparent;font-size:var(--typography-font-size-sm, .875rem);color:var(--color-text-primary);padding:2px 0}.lc-tag-input__input::placeholder{color:var(--color-text-tertiary)}.lc-tag-input__input:read-only{cursor:default}.lc-tag-input__suggestions{position:absolute;z-index:50;top:100%;left:0;right:0;margin:4px 0 0;padding:4px 0;list-style:none;border:1px solid var(--color-border-strong);border-radius:var(--border-radius-md);background-color:var(--color-surface);background-image:var(--gradient-surface);box-shadow:var(--elevation-4);max-height:180px;overflow-y:auto}.lc-tag-input__suggestion{padding:6px 12px;font-size:var(--typography-font-size-sm, .875rem);cursor:pointer;color:var(--color-text-secondary)}.lc-tag-input__suggestion:hover,.lc-tag-input__suggestion--active{background:var(--color-surface-hover);color:var(--color-text-primary)}\n"],
252
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
253
+ });
254
+ };
255
+ i0.ɵɵngDeclareClassMetadata({
256
+ minVersion: "12.0.0",
257
+ version: "22.2.2",
258
+ ngImport: i0,
259
+ type: TagInputComponent,
260
+ decorators: [{
261
+ type: Component,
262
+ args: [{
263
+ selector: "lc-tag-input",
264
+ standalone: true,
265
+ changeDetection: ChangeDetectionStrategy.OnPush,
266
+ providers: [{
267
+ provide: NG_VALUE_ACCESSOR,
268
+ useExisting: forwardRef(() => TagInputComponent),
269
+ multi: true
270
+ }],
271
+ template: "@if (label()) {\n <label class=\"lc-tag-input__label\" [for]=\"inputId\">{{ label() }}</label>\n}\n\n<!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -- container click only forwards focus to the input, which is focusable itself -->\n<div\n class=\"lc-tag-input__container\"\n [class.lc-tag-input__container--focused]=\"focused()\"\n [class.lc-tag-input__container--disabled]=\"isDisabled()\"\n (click)=\"focusInput()\"\n>\n @for (tag of tags(); track $index) {\n <span class=\"lc-tag-input__tag\">\n <span class=\"lc-tag-input__tag-text\">{{ tag }}</span>\n @if (removable() && !isDisabled()) {\n <button\n type=\"button\"\n class=\"lc-tag-input__tag-remove\"\n (click)=\"removeTag($index); $event.stopPropagation()\"\n [attr.aria-label]=\"removeTagAriaLabel() + ' ' + tag\"\n >×</button>\n }\n </span>\n }\n\n <input\n #inputEl\n type=\"text\"\n [id]=\"inputId\"\n class=\"lc-tag-input__input\"\n [attr.role]=\"hasSuggestions() ? 'combobox' : null\"\n [attr.aria-autocomplete]=\"hasSuggestions() ? 'list' : null\"\n [attr.aria-expanded]=\"hasSuggestions() ? showSuggestions() : null\"\n [attr.aria-controls]=\"showSuggestions() ? listboxId : null\"\n [attr.aria-activedescendant]=\"showSuggestions() && activeIndex() >= 0 ? optionId(activeIndex()) : null\"\n [placeholder]=\"inputPlaceholder()\"\n [value]=\"inputValue()\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"!canAdd()\"\n [attr.aria-readonly]=\"!canAdd() ? true : null\"\n (input)=\"onInput($event)\"\n (keydown)=\"onKeydown($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n</div>\n\n@if (showSuggestions()) {\n <ul class=\"lc-tag-input__suggestions\" role=\"listbox\" [id]=\"listboxId\" [attr.aria-label]=\"label() || suggestionsAriaLabel()\">\n @for (sug of filteredSuggestions(); track sug; let i = $index) {\n <li\n class=\"lc-tag-input__suggestion\"\n [class.lc-tag-input__suggestion--active]=\"i === activeIndex()\"\n role=\"option\"\n [id]=\"optionId(i)\"\n [attr.aria-selected]=\"i === activeIndex()\"\n (mouseenter)=\"activeIndex.set(i)\"\n (mousedown)=\"selectSuggestion(sug); $event.preventDefault()\"\n >{{ sug }}</li>\n }\n </ul>\n}\n",
272
+ styles: [":host{display:block;position:relative}.lc-tag-input__label{display:block;margin-bottom:4px;font-size:var(--typography-font-size-sm, .875rem);font-weight:500;color:var(--color-text-secondary)}.lc-tag-input__container{display:flex;flex-wrap:wrap;align-items:center;gap:4px;padding:6px 8px;min-height:40px;border:1px solid var(--color-field-border);border-radius:var(--border-radius-md);background:var(--color-surface-2);cursor:text;transition:border-color .15s,box-shadow .15s}.lc-tag-input__container:hover{border-color:var(--color-text-secondary)}.lc-tag-input__container--focused{border-color:var(--color-primary-500);box-shadow:0 0 0 2px #20849740}.lc-tag-input__container--disabled{opacity:.6;background:var(--color-surface-muted);cursor:default}.lc-tag-input__tag{display:inline-flex;align-items:center;gap:2px;padding:2px 8px;border-radius:var(--border-radius-full);background:#20849729;border:1px solid var(--color-border-strong);color:var(--color-primary-500);font-size:var(--typography-font-size-sm, .875rem);line-height:1.4;-webkit-user-select:none;user-select:none}.lc-tag-input__tag-text{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lc-tag-input__tag-remove{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border:none;border-radius:50%;background:transparent;color:currentColor;cursor:pointer;font-size:14px;line-height:1;padding:0;opacity:.7;transition:opacity .1s,background .1s}.lc-tag-input__tag-remove:hover{opacity:1;background:#20849733}.lc-tag-input__input{flex:1;min-width:60px;border:none;outline:none;background:transparent;font-size:var(--typography-font-size-sm, .875rem);color:var(--color-text-primary);padding:2px 0}.lc-tag-input__input::placeholder{color:var(--color-text-tertiary)}.lc-tag-input__input:read-only{cursor:default}.lc-tag-input__suggestions{position:absolute;z-index:50;top:100%;left:0;right:0;margin:4px 0 0;padding:4px 0;list-style:none;border:1px solid var(--color-border-strong);border-radius:var(--border-radius-md);background-color:var(--color-surface);background-image:var(--gradient-surface);box-shadow:var(--elevation-4);max-height:180px;overflow-y:auto}.lc-tag-input__suggestion{padding:6px 12px;font-size:var(--typography-font-size-sm, .875rem);cursor:pointer;color:var(--color-text-secondary)}.lc-tag-input__suggestion:hover,.lc-tag-input__suggestion--active{background:var(--color-surface-hover);color:var(--color-text-primary)}\n"]
273
+ }]
274
+ }],
275
+ propDecorators: {
276
+ placeholder: [{
277
+ type: i0.Input,
278
+ args: [{
279
+ isSignal: true,
280
+ alias: "placeholder",
281
+ required: false
282
+ }]
283
+ }],
284
+ maxTags: [{
285
+ type: i0.Input,
286
+ args: [{
287
+ isSignal: true,
288
+ alias: "maxTags",
289
+ required: false
290
+ }]
291
+ }],
292
+ allowDuplicates: [{
293
+ type: i0.Input,
294
+ args: [{
295
+ isSignal: true,
296
+ alias: "allowDuplicates",
297
+ required: false
298
+ }]
299
+ }],
300
+ removable: [{
301
+ type: i0.Input,
302
+ args: [{
303
+ isSignal: true,
304
+ alias: "removable",
305
+ required: false
306
+ }]
307
+ }],
308
+ disabled: [{
309
+ type: i0.Input,
310
+ args: [{
311
+ isSignal: true,
312
+ alias: "disabled",
313
+ required: false
314
+ }]
315
+ }],
316
+ separator: [{
317
+ type: i0.Input,
318
+ args: [{
319
+ isSignal: true,
320
+ alias: "separator",
321
+ required: false
322
+ }]
323
+ }],
324
+ suggestions: [{
325
+ type: i0.Input,
326
+ args: [{
327
+ isSignal: true,
328
+ alias: "suggestions",
329
+ required: false
330
+ }]
331
+ }],
332
+ label: [{
333
+ type: i0.Input,
334
+ args: [{
335
+ isSignal: true,
336
+ alias: "label",
337
+ required: false
338
+ }]
339
+ }],
340
+ maxTagsReachedLabel: [{
341
+ type: i0.Input,
342
+ args: [{
343
+ isSignal: true,
344
+ alias: "maxTagsReachedLabel",
345
+ required: false
346
+ }]
347
+ }],
348
+ removeTagAriaLabel: [{
349
+ type: i0.Input,
350
+ args: [{
351
+ isSignal: true,
352
+ alias: "removeTagAriaLabel",
353
+ required: false
354
+ }]
355
+ }],
356
+ suggestionsAriaLabel: [{
357
+ type: i0.Input,
358
+ args: [{
359
+ isSignal: true,
360
+ alias: "suggestionsAriaLabel",
361
+ required: false
362
+ }]
363
+ }],
364
+ tagAdded: [{
365
+ type: i0.Output,
366
+ args: ["tagAdded"]
367
+ }],
368
+ tagRemoved: [{
369
+ type: i0.Output,
370
+ args: ["tagRemoved"]
371
+ }],
372
+ inputEl: [{
373
+ type: i0.ViewChild,
374
+ args: ["inputEl", { isSignal: true }]
375
+ }]
376
+ }
377
+ });
378
+ export { TagInputComponent };
379
+
380
+ //# sourceMappingURL=lifecorner-angular-ui-kit-tag-input.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecorner-angular-ui-kit-tag-input.mjs","names":[],"sources":["../../../../libs/angular-ui-kit/src/lib/tag-input/tag-input.component.ts","../../../../libs/angular-ui-kit/src/lib/tag-input/tag-input.component.html"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n input,\n signal,\n computed,\n output,\n forwardRef,\n ElementRef,\n viewChild,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\n@Component({\n selector: 'lc-tag-input',\n standalone: true,\n templateUrl: './tag-input.component.html',\n styleUrls: ['./tag-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TagInputComponent),\n multi: true,\n },\n ],\n})\nexport class TagInputComponent implements ControlValueAccessor {\n private static nextId = 0;\n\n readonly placeholder = input('Add tag…');\n readonly maxTags = input(Infinity);\n readonly allowDuplicates = input(false);\n readonly removable = input(true);\n readonly disabled = input(false);\n readonly separator = input<'enter' | 'comma' | 'both'>('both');\n readonly suggestions = input<string[]>([]);\n readonly label = input('');\n\n /** Placeholder once `maxTags` is reached; `{max}` is replaced by the limit. */\n readonly maxTagsReachedLabel = input('Maximum of {max} tags reached');\n\n /** Accessible name prefix of a tag's remove button, followed by the tag. */\n readonly removeTagAriaLabel = input('Remove');\n\n /** Accessible name of the suggestion list when no `label` is set. */\n readonly suggestionsAriaLabel = input('Suggestions');\n\n readonly tagAdded = output<string>();\n readonly tagRemoved = output<string>();\n\n /** Per-instance id wiring the label, the suggestion listbox and its options to the input. */\n readonly inputId = `lc-tag-input-${++TagInputComponent.nextId}`;\n protected readonly listboxId = `${this.inputId}-listbox`;\n\n protected tags = signal<string[]>([]);\n protected inputValue = signal('');\n protected focused = signal(false);\n\n /** Index of the keyboard-highlighted suggestion; -1 = none. */\n protected activeIndex = signal(-1);\n\n /** Set by Escape; hides the list until the text changes again. */\n private readonly suggestionsDismissed = signal(false);\n\n /** Disabled through the form control (`setDisabledState`), as opposed to the input. */\n private readonly formDisabled = signal(false);\n\n /** Disabled by either route — the one flag the template consults. */\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled());\n\n protected readonly inputEl = viewChild<ElementRef<HTMLInputElement>>('inputEl');\n\n protected readonly filteredSuggestions = computed(() => {\n const val = this.inputValue().toLowerCase().trim();\n if (!val) return [];\n return this.suggestions().filter(\n s => s.toLowerCase().includes(val) && (this.allowDuplicates() || !this.tags().includes(s))\n );\n });\n\n /** Combobox semantics only make sense when there is a list to open. */\n protected readonly hasSuggestions = computed(() => this.suggestions().length > 0);\n\n protected readonly showSuggestions = computed(\n () => this.focused() && !this.suggestionsDismissed() && this.filteredSuggestions().length > 0\n );\n\n protected readonly canAdd = computed(() => this.tags().length < this.maxTags());\n\n /**\n * The input stays mounted when the limit is reached (removing it would drop\n * focus to `<body>`); it becomes read-only and says why.\n */\n protected readonly inputPlaceholder = computed(() => {\n if (!this.canAdd()) return this.maxTagsReachedLabel().replace('{max}', String(this.maxTags()));\n return this.tags().length ? '' : this.placeholder();\n });\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (val: string[]) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n writeValue(value: string[] | null): void {\n this.tags.set(value ?? []);\n }\n\n registerOnChange(fn: (val: string[]) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled);\n }\n\n protected optionId(index: number): string {\n return `${this.listboxId}-option-${index}`;\n }\n\n protected addTag(value: string): void {\n const tag = value.trim();\n if (!tag || !this.canAdd()) return;\n if (!this.allowDuplicates() && this.tags().includes(tag)) return;\n\n this.tags.update(t => [...t, tag]);\n this.inputValue.set('');\n this.activeIndex.set(-1);\n this.onChange(this.tags());\n this.tagAdded.emit(tag);\n }\n\n protected removeTag(index: number): void {\n const removed = this.tags()[index];\n this.tags.update(t => t.filter((_, i) => i !== index));\n this.onChange(this.tags());\n this.tagRemoved.emit(removed);\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const sep = this.separator();\n const val = this.inputValue();\n const listOpen = this.showSuggestions();\n\n switch (event.key) {\n case 'ArrowDown':\n case 'ArrowUp': {\n const count = this.filteredSuggestions().length;\n if (!count) return;\n event.preventDefault();\n this.suggestionsDismissed.set(false);\n const delta = event.key === 'ArrowDown' ? 1 : -1;\n const next = (this.activeIndex() + delta + count) % count;\n this.activeIndex.set(next);\n document.getElementById(this.optionId(next))?.scrollIntoView?.({ block: 'nearest' });\n return;\n }\n case 'Escape':\n if (listOpen) {\n event.preventDefault();\n this.suggestionsDismissed.set(true);\n this.activeIndex.set(-1);\n }\n return;\n case 'Enter':\n if (listOpen && this.activeIndex() >= 0) {\n event.preventDefault();\n this.addTag(this.filteredSuggestions()[this.activeIndex()]);\n } else if (sep === 'enter' || sep === 'both') {\n event.preventDefault();\n this.addTag(val);\n }\n return;\n case ',':\n if (sep === 'comma' || sep === 'both') {\n event.preventDefault();\n this.addTag(val);\n }\n return;\n case 'Backspace':\n if (!val && this.removable() && this.tags().length > 0) {\n this.removeTag(this.tags().length - 1);\n }\n return;\n }\n }\n\n protected onInput(event: Event): void {\n this.inputValue.set((event.target as HTMLInputElement).value);\n this.activeIndex.set(-1);\n this.suggestionsDismissed.set(false);\n }\n\n protected onFocus(): void {\n this.focused.set(true);\n }\n\n protected onBlur(): void {\n this.focused.set(false);\n this.activeIndex.set(-1);\n this.onTouched();\n const val = this.inputValue();\n if (val.trim()) this.addTag(val);\n }\n\n protected selectSuggestion(value: string): void {\n this.addTag(value);\n this.inputEl()?.nativeElement.focus();\n }\n\n protected focusInput(): void {\n this.inputEl()?.nativeElement.focus();\n }\n}\n","@if (label()) {\n <label class=\"lc-tag-input__label\" [for]=\"inputId\">{{ label() }}</label>\n}\n\n<!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -- container click only forwards focus to the input, which is focusable itself -->\n<div\n class=\"lc-tag-input__container\"\n [class.lc-tag-input__container--focused]=\"focused()\"\n [class.lc-tag-input__container--disabled]=\"isDisabled()\"\n (click)=\"focusInput()\"\n>\n @for (tag of tags(); track $index) {\n <span class=\"lc-tag-input__tag\">\n <span class=\"lc-tag-input__tag-text\">{{ tag }}</span>\n @if (removable() && !isDisabled()) {\n <button\n type=\"button\"\n class=\"lc-tag-input__tag-remove\"\n (click)=\"removeTag($index); $event.stopPropagation()\"\n [attr.aria-label]=\"removeTagAriaLabel() + ' ' + tag\"\n >×</button>\n }\n </span>\n }\n\n <input\n #inputEl\n type=\"text\"\n [id]=\"inputId\"\n class=\"lc-tag-input__input\"\n [attr.role]=\"hasSuggestions() ? 'combobox' : null\"\n [attr.aria-autocomplete]=\"hasSuggestions() ? 'list' : null\"\n [attr.aria-expanded]=\"hasSuggestions() ? showSuggestions() : null\"\n [attr.aria-controls]=\"showSuggestions() ? listboxId : null\"\n [attr.aria-activedescendant]=\"showSuggestions() && activeIndex() >= 0 ? optionId(activeIndex()) : null\"\n [placeholder]=\"inputPlaceholder()\"\n [value]=\"inputValue()\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"!canAdd()\"\n [attr.aria-readonly]=\"!canAdd() ? true : null\"\n (input)=\"onInput($event)\"\n (keydown)=\"onKeydown($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n</div>\n\n@if (showSuggestions()) {\n <ul class=\"lc-tag-input__suggestions\" role=\"listbox\" [id]=\"listboxId\" [attr.aria-label]=\"label() || suggestionsAriaLabel()\">\n @for (sug of filteredSuggestions(); track sug; let i = $index) {\n <li\n class=\"lc-tag-input__suggestion\"\n [class.lc-tag-input__suggestion--active]=\"i === activeIndex()\"\n role=\"option\"\n [id]=\"optionId(i)\"\n [attr.aria-selected]=\"i === activeIndex()\"\n (mouseenter)=\"activeIndex.set(i)\"\n (mousedown)=\"selectSuggestion(sug); $event.preventDefault()\"\n >{{ sug }}</li>\n }\n </ul>\n}\n"],"mappings":"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"}