@lifecorner/angular-ui-kit 3.4.1 → 3.5.1

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 +368 -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,1434 @@
1
+ import * as i0 from "@angular/core";
2
+ import { ChangeDetectionStrategy, Component, ContentChildren, Directive, TemplateRef, afterRenderEffect, computed, inject, input, linkedSignal, output, signal, viewChild, viewChildren } from "@angular/core";
3
+ import { NgStyle, NgTemplateOutlet } from "@angular/common";
4
+ import * as i1 from "@angular/forms";
5
+ import { FormsModule } from "@angular/forms";
6
+ import { InputComponent } from "@lifecorner/angular-ui-kit/input";
7
+ import { SelectComponent } from "@lifecorner/angular-ui-kit/select";
8
+ import { ButtonComponent } from "@lifecorner/angular-ui-kit/button";
9
+ import { IconComponent } from "@lifecorner/angular-ui-kit/icon";
10
+ var TableCellDirective = class TableCellDirective {
11
+ columnKey = input("", {
12
+ ...ngDevMode ? { debugName: "columnKey" } : /* istanbul ignore next */ {},
13
+ alias: "lcTableCell"
14
+ });
15
+ template = inject(TemplateRef);
16
+ static ɵfac = i0.ɵɵngDeclareFactory({
17
+ minVersion: "12.0.0",
18
+ version: "22.2.2",
19
+ ngImport: i0,
20
+ type: TableCellDirective,
21
+ deps: [],
22
+ target: i0.ɵɵFactoryTarget.Directive
23
+ });
24
+ static ɵdir = i0.ɵɵngDeclareDirective({
25
+ minVersion: "17.1.0",
26
+ version: "22.2.2",
27
+ type: TableCellDirective,
28
+ isStandalone: true,
29
+ selector: "[lcTableCell]",
30
+ inputs: { columnKey: {
31
+ classPropertyName: "columnKey",
32
+ publicName: "lcTableCell",
33
+ isSignal: true,
34
+ isRequired: false,
35
+ transformFunction: null
36
+ } },
37
+ ngImport: i0
38
+ });
39
+ };
40
+ i0.ɵɵngDeclareClassMetadata({
41
+ minVersion: "12.0.0",
42
+ version: "22.2.2",
43
+ ngImport: i0,
44
+ type: TableCellDirective,
45
+ decorators: [{
46
+ type: Directive,
47
+ args: [{
48
+ selector: "[lcTableCell]",
49
+ standalone: true
50
+ }]
51
+ }],
52
+ propDecorators: { columnKey: [{
53
+ type: i0.Input,
54
+ args: [{
55
+ isSignal: true,
56
+ alias: "lcTableCell",
57
+ required: false
58
+ }]
59
+ }] }
60
+ });
61
+ var TableComponent = class TableComponent {
62
+ cellTemplates;
63
+ columns = input([], ...ngDevMode ? [{ debugName: "columns" }] : /* istanbul ignore next */ []);
64
+ data = input([], ...ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []);
65
+ variant = input("default", ...ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []);
66
+ size = input("md", ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
67
+ hoverable = input(false, ...ngDevMode ? [{ debugName: "hoverable" }] : /* istanbul ignore next */ []);
68
+ responsive = input(true, ...ngDevMode ? [{ debugName: "responsive" }] : /* istanbul ignore next */ []);
69
+ emptyText = input("No data available", ...ngDevMode ? [{ debugName: "emptyText" }] : /* istanbul ignore next */ []);
70
+ filterPlaceholderLabel = input("Filter", ...ngDevMode ? [{ debugName: "filterPlaceholderLabel" }] : /* istanbul ignore next */ []);
71
+ selectAllAriaLabel = input("Select all rows", ...ngDevMode ? [{ debugName: "selectAllAriaLabel" }] : /* istanbul ignore next */ []);
72
+ selectRowAriaLabel = input("Select row", ...ngDevMode ? [{ debugName: "selectRowAriaLabel" }] : /* istanbul ignore next */ []);
73
+ sortedAscendingLabel = input("sorted ascending", ...ngDevMode ? [{ debugName: "sortedAscendingLabel" }] : /* istanbul ignore next */ []);
74
+ sortedDescendingLabel = input("sorted descending", ...ngDevMode ? [{ debugName: "sortedDescendingLabel" }] : /* istanbul ignore next */ []);
75
+ expandRowAriaLabel = input("Aufklappen:", ...ngDevMode ? [{ debugName: "expandRowAriaLabel" }] : /* istanbul ignore next */ []);
76
+ collapseRowAriaLabel = input("Einklappen:", ...ngDevMode ? [{ debugName: "collapseRowAriaLabel" }] : /* istanbul ignore next */ []);
77
+ rangeOfLabel = input("of", ...ngDevMode ? [{ debugName: "rangeOfLabel" }] : /* istanbul ignore next */ []);
78
+ rowsPerPageAriaLabel = input("Rows per page", ...ngDevMode ? [{ debugName: "rowsPerPageAriaLabel" }] : /* istanbul ignore next */ []);
79
+ previousPageAriaLabel = input("Previous page", ...ngDevMode ? [{ debugName: "previousPageAriaLabel" }] : /* istanbul ignore next */ []);
80
+ nextPageAriaLabel = input("Next page", ...ngDevMode ? [{ debugName: "nextPageAriaLabel" }] : /* istanbul ignore next */ []);
81
+ paginate = input(false, ...ngDevMode ? [{ debugName: "paginate" }] : /* istanbul ignore next */ []);
82
+ pageSize = input(10, ...ngDevMode ? [{ debugName: "pageSize" }] : /* istanbul ignore next */ []);
83
+ pageSizeOptions = input([
84
+ 5,
85
+ 10,
86
+ 25,
87
+ 50
88
+ ], ...ngDevMode ? [{ debugName: "pageSizeOptions" }] : /* istanbul ignore next */ []);
89
+ selectable = input(false, ...ngDevMode ? [{ debugName: "selectable" }] : /* istanbul ignore next */ []);
90
+ filterable = input(false, ...ngDevMode ? [{ debugName: "filterable" }] : /* istanbul ignore next */ []);
91
+ editable = input(false, ...ngDevMode ? [{ debugName: "editable" }] : /* istanbul ignore next */ []);
92
+ actions = input([], ...ngDevMode ? [{ debugName: "actions" }] : /* istanbul ignore next */ []);
93
+ actionsLabel = input("", ...ngDevMode ? [{ debugName: "actionsLabel" }] : /* istanbul ignore next */ []);
94
+ actionsWidth = input(void 0, ...ngDevMode ? [{ debugName: "actionsWidth" }] : /* istanbul ignore next */ []);
95
+ actionsAlign = input("start", ...ngDevMode ? [{ debugName: "actionsAlign" }] : /* istanbul ignore next */ []);
96
+ idKey = input(void 0, ...ngDevMode ? [{ debugName: "idKey" }] : /* istanbul ignore next */ []);
97
+ parentKey = input(void 0, ...ngDevMode ? [{ debugName: "parentKey" }] : /* istanbul ignore next */ []);
98
+ treeColumn = input(void 0, ...ngDevMode ? [{ debugName: "treeColumn" }] : /* istanbul ignore next */ []);
99
+ defaultExpanded = input(true, ...ngDevMode ? [{ debugName: "defaultExpanded" }] : /* istanbul ignore next */ []);
100
+ expandedIds = input(void 0, ...ngDevMode ? [{ debugName: "expandedIds" }] : /* istanbul ignore next */ []);
101
+ indentSize = input(20, ...ngDevMode ? [{ debugName: "indentSize" }] : /* istanbul ignore next */ []);
102
+ filterAriaLabel = input("Filter by", ...ngDevMode ? [{ debugName: "filterAriaLabel" }] : /* istanbul ignore next */ []);
103
+ sort = output();
104
+ rowClick = output();
105
+ cellEdit = output();
106
+ selectionChange = output();
107
+ actionClick = output();
108
+ rowToggle = output();
109
+ expandedIdsChange = output();
110
+ currentSort = signal(null, ...ngDevMode ? [{ debugName: "currentSort" }] : /* istanbul ignore next */ []);
111
+ internalPageSize = linkedSignal(() => this.pageSize(), ...ngDevMode ? [{ debugName: "internalPageSize" }] : /* istanbul ignore next */ []);
112
+ currentPage = linkedSignal({
113
+ ...ngDevMode ? { debugName: "currentPage" } : /* istanbul ignore next */ {},
114
+ source: () => this.totalPages(),
115
+ computation: (total, previous) => Math.min(previous?.value ?? 0, total - 1)
116
+ });
117
+ selectedRows = linkedSignal({
118
+ ...ngDevMode ? { debugName: "selectedRows" } : /* istanbul ignore next */ {},
119
+ source: () => this.rowKeys(),
120
+ computation: (keys, previous) => {
121
+ if (!previous) return /* @__PURE__ */ new Set();
122
+ const kept = new Set([...previous.value].filter((k) => keys.has(k)));
123
+ return kept.size === previous.value.size ? previous.value : kept;
124
+ }
125
+ });
126
+ columnFilters = signal({}, ...ngDevMode ? [{ debugName: "columnFilters" }] : /* istanbul ignore next */ []);
127
+ editingCell = signal(null, ...ngDevMode ? [{ debugName: "editingCell" }] : /* istanbul ignore next */ []);
128
+ editValue = signal("", ...ngDevMode ? [{ debugName: "editValue" }] : /* istanbul ignore next */ []);
129
+ editInput = viewChild("editInput", ...ngDevMode ? [{ debugName: "editInput" }] : /* istanbul ignore next */ []);
130
+ focusedEditInput = null;
131
+ constructor() {
132
+ afterRenderEffect(() => {
133
+ const el = this.editInput()?.nativeElement ?? null;
134
+ if (el && el !== this.focusedEditInput) el.focus();
135
+ this.focusedEditInput = el;
136
+ });
137
+ }
138
+ rowKeys = computed(() => new Set(this.data().map((row) => this.rowKey(row))), ...ngDevMode ? [{ debugName: "rowKeys" }] : /* istanbul ignore next */ []);
139
+ rowKey(row) {
140
+ const idKey = this.idKey();
141
+ return idKey ? String(row[idKey] ?? "") : row;
142
+ }
143
+ expandOverrides = signal(/* @__PURE__ */ new Map(), ...ngDevMode ? [{ debugName: "expandOverrides" }] : /* istanbul ignore next */ []);
144
+ filteredData = computed(() => {
145
+ let items = this.data();
146
+ const filters = this.columnFilters();
147
+ if (this.filterable()) {
148
+ for (const [key, value] of Object.entries(filters)) if (value.trim()) items = items.filter((row) => String(row[key] ?? "").toLowerCase().includes(value.toLowerCase()));
149
+ }
150
+ return items;
151
+ }, ...ngDevMode ? [{ debugName: "filteredData" }] : /* istanbul ignore next */ []);
152
+ rowComparator(sortState) {
153
+ return (a, b) => {
154
+ const aVal = a[sortState.column];
155
+ const bVal = b[sortState.column];
156
+ let cmp = 0;
157
+ if (aVal == null && bVal == null) cmp = 0;
158
+ else if (aVal == null) cmp = -1;
159
+ else if (bVal == null) cmp = 1;
160
+ else if (typeof aVal === "number" && typeof bVal === "number") cmp = aVal - bVal;
161
+ else cmp = String(aVal).localeCompare(String(bVal));
162
+ return sortState.direction === "asc" ? cmp : -cmp;
163
+ };
164
+ }
165
+ sortedData = computed(() => {
166
+ const items = [...this.filteredData()];
167
+ const sortState = this.currentSort();
168
+ if (!sortState) return items;
169
+ return items.sort(this.rowComparator(sortState));
170
+ }, ...ngDevMode ? [{ debugName: "sortedData" }] : /* istanbul ignore next */ []);
171
+ displayData = computed(() => {
172
+ const items = this.sortedData();
173
+ if (!this.paginate()) return items;
174
+ const ps = this.internalPageSize();
175
+ const start = this.currentPage() * ps;
176
+ return items.slice(start, start + ps);
177
+ }, ...ngDevMode ? [{ debugName: "displayData" }] : /* istanbul ignore next */ []);
178
+ treeMode = computed(() => !!this.idKey() && !!this.parentKey(), ...ngDevMode ? [{ debugName: "treeMode" }] : /* istanbul ignore next */ []);
179
+ effectiveTreeColumn = computed(() => this.treeColumn() || this.columns()[0]?.key, ...ngDevMode ? [{ debugName: "effectiveTreeColumn" }] : /* istanbul ignore next */ []);
180
+ dataIndexMap = computed(() => {
181
+ const map = /* @__PURE__ */ new Map();
182
+ this.data().forEach((row, i) => map.set(row, i));
183
+ return map;
184
+ }, ...ngDevMode ? [{ debugName: "dataIndexMap" }] : /* istanbul ignore next */ []);
185
+ treeBuild = computed(() => {
186
+ const idKey = this.idKey();
187
+ const parentKey = this.parentKey();
188
+ const byId = /* @__PURE__ */ new Map();
189
+ const childrenOf = /* @__PURE__ */ new Map();
190
+ const roots = [];
191
+ if (!idKey || !parentKey) return {
192
+ byId,
193
+ childrenOf,
194
+ roots
195
+ };
196
+ const rows = this.data();
197
+ for (const row of rows) {
198
+ const id = String(row[idKey] ?? "");
199
+ if (id) byId.set(id, row);
200
+ }
201
+ for (const row of rows) {
202
+ const parentRaw = row[parentKey];
203
+ const parentId = parentRaw == null ? "" : String(parentRaw);
204
+ if (parentId && byId.has(parentId)) {
205
+ const siblings = childrenOf.get(parentId) ?? [];
206
+ siblings.push(row);
207
+ childrenOf.set(parentId, siblings);
208
+ } else roots.push(row);
209
+ }
210
+ return {
211
+ byId,
212
+ childrenOf,
213
+ roots
214
+ };
215
+ }, ...ngDevMode ? [{ debugName: "treeBuild" }] : /* istanbul ignore next */ []);
216
+ treeFiltered = computed(() => {
217
+ const { byId, childrenOf, roots } = this.treeBuild();
218
+ const parentKey = this.parentKey();
219
+ const filters = this.columnFilters();
220
+ if (!(this.filterable() && parentKey && Object.values(filters).some((v) => v.trim()))) return {
221
+ childrenOf,
222
+ roots
223
+ };
224
+ const matches = (row) => Object.entries(filters).every(([key, value]) => !value.trim() || String(row[key] ?? "").toLowerCase().includes(value.toLowerCase()));
225
+ const visible = /* @__PURE__ */ new Set();
226
+ for (const row of this.data()) {
227
+ if (!matches(row)) continue;
228
+ let current = row;
229
+ while (current && !visible.has(current)) {
230
+ visible.add(current);
231
+ const parentRaw = current[parentKey];
232
+ const parentId = parentRaw == null ? "" : String(parentRaw);
233
+ current = parentId ? byId.get(parentId) : void 0;
234
+ }
235
+ }
236
+ const visibleChildrenOf = /* @__PURE__ */ new Map();
237
+ const visibleRoots = [];
238
+ for (const row of this.data()) {
239
+ if (!visible.has(row)) continue;
240
+ const parentRaw = row[parentKey];
241
+ const parentId = parentRaw == null ? "" : String(parentRaw);
242
+ const parent = parentId ? byId.get(parentId) : void 0;
243
+ if (parent && visible.has(parent)) {
244
+ const siblings = visibleChildrenOf.get(parentId) ?? [];
245
+ siblings.push(row);
246
+ visibleChildrenOf.set(parentId, siblings);
247
+ } else visibleRoots.push(row);
248
+ }
249
+ return {
250
+ childrenOf: visibleChildrenOf,
251
+ roots: visibleRoots
252
+ };
253
+ }, ...ngDevMode ? [{ debugName: "treeFiltered" }] : /* istanbul ignore next */ []);
254
+ treeSorted = computed(() => {
255
+ const { childrenOf, roots } = this.treeFiltered();
256
+ const sortState = this.currentSort();
257
+ if (!sortState) return {
258
+ childrenOf,
259
+ roots
260
+ };
261
+ const cmp = this.rowComparator(sortState);
262
+ const sortedChildrenOf = /* @__PURE__ */ new Map();
263
+ for (const [parentId, siblings] of childrenOf) sortedChildrenOf.set(parentId, [...siblings].sort(cmp));
264
+ return {
265
+ childrenOf: sortedChildrenOf,
266
+ roots: [...roots].sort(cmp)
267
+ };
268
+ }, ...ngDevMode ? [{ debugName: "treeSorted" }] : /* istanbul ignore next */ []);
269
+ treeRoots = computed(() => this.treeSorted().roots, ...ngDevMode ? [{ debugName: "treeRoots" }] : /* istanbul ignore next */ []);
270
+ displayRows = computed(() => {
271
+ const dataIndex = this.dataIndexMap();
272
+ if (!this.treeMode()) return this.displayData().map((row) => ({
273
+ row,
274
+ absIndex: dataIndex.get(row) ?? -1,
275
+ key: this.rowKey(row),
276
+ id: null,
277
+ depth: 0,
278
+ level: 0,
279
+ hasChildren: false,
280
+ expanded: false,
281
+ posInSet: 0,
282
+ setSize: 0
283
+ }));
284
+ const idKey = this.idKey();
285
+ const { childrenOf } = this.treeSorted();
286
+ let roots = this.treeRoots();
287
+ if (this.paginate()) {
288
+ const ps = this.internalPageSize();
289
+ const start = this.currentPage() * ps;
290
+ roots = roots.slice(start, start + ps);
291
+ }
292
+ const out = [];
293
+ const walk = (group, depth) => {
294
+ group.forEach((row, idx) => {
295
+ const id = String(row[idKey] ?? "");
296
+ const children = childrenOf.get(id) ?? [];
297
+ const hasChildren = children.length > 0;
298
+ const expanded = hasChildren && this.isExpanded(id);
299
+ out.push({
300
+ row,
301
+ absIndex: dataIndex.get(row) ?? -1,
302
+ key: this.rowKey(row),
303
+ id,
304
+ depth,
305
+ level: depth + 1,
306
+ hasChildren,
307
+ expanded,
308
+ posInSet: idx + 1,
309
+ setSize: group.length
310
+ });
311
+ if (expanded) walk(children, depth + 1);
312
+ });
313
+ };
314
+ walk(roots, 0);
315
+ return out;
316
+ }, ...ngDevMode ? [{ debugName: "displayRows" }] : /* istanbul ignore next */ []);
317
+ totalPages = computed(() => {
318
+ if (!this.paginate()) return 1;
319
+ const total = this.treeMode() ? this.treeRoots().length : this.filteredData().length;
320
+ return Math.max(1, Math.ceil(total / this.internalPageSize()));
321
+ }, ...ngDevMode ? [{ debugName: "totalPages" }] : /* istanbul ignore next */ []);
322
+ totalRows = computed(() => this.treeMode() ? this.treeRoots().length : this.filteredData().length, ...ngDevMode ? [{ debugName: "totalRows" }] : /* istanbul ignore next */ []);
323
+ allSelected = computed(() => {
324
+ const rows = this.displayRows();
325
+ if (rows.length === 0) return false;
326
+ const selected = this.selectedRows();
327
+ return rows.every((r) => selected.has(r.key));
328
+ }, ...ngDevMode ? [{ debugName: "allSelected" }] : /* istanbul ignore next */ []);
329
+ someSelected = computed(() => {
330
+ const selected = this.selectedRows();
331
+ return !this.allSelected() && this.displayRows().some((r) => selected.has(r.key));
332
+ }, ...ngDevMode ? [{ debugName: "someSelected" }] : /* istanbul ignore next */ []);
333
+ pageSizeSelectOptions = computed(() => this.pageSizeOptions().map((opt) => ({
334
+ value: opt,
335
+ label: `${opt} / page`
336
+ })), ...ngDevMode ? [{ debugName: "pageSizeSelectOptions" }] : /* istanbul ignore next */ []);
337
+ tableClasses = computed(() => {
338
+ const classes = ["lc-table"];
339
+ classes.push(`lc-table--${this.variant()}`);
340
+ classes.push(`lc-table--${this.size()}`);
341
+ if (this.hoverable()) classes.push("lc-table--hoverable");
342
+ return classes.join(" ");
343
+ }, ...ngDevMode ? [{ debugName: "tableClasses" }] : /* istanbul ignore next */ []);
344
+ wrapperClasses = computed(() => {
345
+ const classes = ["lc-table-wrapper"];
346
+ if (this.responsive()) classes.push("lc-table-wrapper--responsive");
347
+ return classes.join(" ");
348
+ }, ...ngDevMode ? [{ debugName: "wrapperClasses" }] : /* istanbul ignore next */ []);
349
+ handleSort(columnKey) {
350
+ const column = this.columns().find((col) => col.key === columnKey);
351
+ if (!column || !column.sortable) return;
352
+ const current = this.currentSort();
353
+ let direction = "asc";
354
+ if (current && current.column === columnKey) direction = current.direction === "asc" ? "desc" : "asc";
355
+ this.currentSort.set({
356
+ column: columnKey,
357
+ direction
358
+ });
359
+ this.sort.emit({
360
+ column: columnKey,
361
+ direction
362
+ });
363
+ }
364
+ getSortState(columnKey) {
365
+ const current = this.currentSort();
366
+ if (current && current.column === columnKey) return current.direction;
367
+ return null;
368
+ }
369
+ getAriaSort(columnKey) {
370
+ const sortState = this.getSortState(columnKey);
371
+ if (sortState === "asc") return "ascending";
372
+ if (sortState === "desc") return "descending";
373
+ return null;
374
+ }
375
+ getHeaderClasses(column) {
376
+ const classes = [];
377
+ if (column.sortable) classes.push("sortable");
378
+ const sortState = this.getSortState(column.key);
379
+ if (sortState) classes.push(`sorted-${sortState}`);
380
+ return classes.join(" ");
381
+ }
382
+ getCellValue(row, columnKey) {
383
+ return row[columnKey];
384
+ }
385
+ getFormattedCellValue(row, column, rowIndex) {
386
+ const value = this.getCellValue(row, column.key);
387
+ if (!column.formatter) return value;
388
+ return column.formatter(value, row, column, rowIndex);
389
+ }
390
+ getCellClasses(row, column, rowIndex) {
391
+ const classes = [];
392
+ if (column.cssClass) classes.push(column.cssClass);
393
+ if (typeof column.cellClass === "string") classes.push(column.cellClass);
394
+ else if (typeof column.cellClass === "function") {
395
+ const resolved = column.cellClass(this.getCellValue(row, column.key), row, column, rowIndex);
396
+ if (resolved) classes.push(resolved);
397
+ }
398
+ return classes.join(" ").trim();
399
+ }
400
+ getCellStyles(row, column, rowIndex) {
401
+ if (!column.cellStyle) return null;
402
+ if (typeof column.cellStyle === "function") return column.cellStyle(this.getCellValue(row, column.key), row, column, rowIndex);
403
+ return column.cellStyle;
404
+ }
405
+ isTreeColumn(columnKey) {
406
+ return this.treeMode() && columnKey === this.effectiveTreeColumn();
407
+ }
408
+ indentLevels(depth) {
409
+ return Array.from({ length: depth }, (_, i) => i);
410
+ }
411
+ treeCellLabel(row) {
412
+ const col = this.effectiveTreeColumn();
413
+ return col ? String(row[col] ?? "") : "";
414
+ }
415
+ getCellTemplate(columnKey) {
416
+ return this.cellTemplates?.find((template) => template.columnKey() === columnKey);
417
+ }
418
+ hasCustomTemplate(columnKey) {
419
+ return !!this.getCellTemplate(columnKey);
420
+ }
421
+ onRowClick(row) {
422
+ this.rowClick.emit(row);
423
+ }
424
+ hasActions = computed(() => this.actions().length > 0, ...ngDevMode ? [{ debugName: "hasActions" }] : /* istanbul ignore next */ []);
425
+ isActionHidden(action, row, rowIndex) {
426
+ return action.hidden ? action.hidden(row, rowIndex) : false;
427
+ }
428
+ isActionDisabled(action, row, rowIndex) {
429
+ return action.disabled ? action.disabled(row, rowIndex) : false;
430
+ }
431
+ onActionClick(action, row, rowIndex) {
432
+ this.actionClick.emit({
433
+ action: action.key,
434
+ row,
435
+ rowIndex
436
+ });
437
+ }
438
+ rowEls = viewChildren("dataRow", ...ngDevMode ? [{ debugName: "rowEls" }] : /* istanbul ignore next */ []);
439
+ focusedRowKey = signal(null, ...ngDevMode ? [{ debugName: "focusedRowKey" }] : /* istanbul ignore next */ []);
440
+ effectiveFocusedKey = computed(() => {
441
+ const rows = this.displayRows();
442
+ const key = this.focusedRowKey();
443
+ return rows.some((r) => r.key === key) ? key : rows[0]?.key;
444
+ }, ...ngDevMode ? [{ debugName: "effectiveFocusedKey" }] : /* istanbul ignore next */ []);
445
+ rowTabindex(dr) {
446
+ if (!this.treeMode()) return null;
447
+ return dr.key === this.effectiveFocusedKey() ? 0 : -1;
448
+ }
449
+ onRowFocus(dr) {
450
+ if (this.treeMode()) this.focusedRowKey.set(dr.key);
451
+ }
452
+ onRowKeydown(event, dr) {
453
+ if (!this.treeMode()) return;
454
+ if (event.target.tagName === "INPUT") return;
455
+ const rows = this.displayRows();
456
+ const index = rows.findIndex((r) => r.key === dr.key);
457
+ if (index < 0) return;
458
+ switch (event.key) {
459
+ case "ArrowDown":
460
+ this.focusRow(index + 1);
461
+ break;
462
+ case "ArrowUp":
463
+ this.focusRow(index - 1);
464
+ break;
465
+ case "Home":
466
+ this.focusRow(0);
467
+ break;
468
+ case "End":
469
+ this.focusRow(rows.length - 1);
470
+ break;
471
+ case "ArrowRight":
472
+ if (!dr.hasChildren) return;
473
+ if (dr.expanded) this.focusRow(index + 1);
474
+ else if (dr.id) this.toggleRow(dr.id, dr.row);
475
+ break;
476
+ case "ArrowLeft":
477
+ if (dr.hasChildren && dr.expanded && dr.id) this.toggleRow(dr.id, dr.row);
478
+ else if (dr.depth > 0) {
479
+ for (let i = index - 1; i >= 0; i--) if (rows[i].depth < dr.depth) {
480
+ this.focusRow(i);
481
+ break;
482
+ }
483
+ } else return;
484
+ break;
485
+ case "Enter":
486
+ this.rowClick.emit(dr.row);
487
+ break;
488
+ case " ":
489
+ if (!this.selectable()) return;
490
+ this.toggleRowSelect(dr.row);
491
+ break;
492
+ default: return;
493
+ }
494
+ event.preventDefault();
495
+ }
496
+ focusRow(index) {
497
+ const rows = this.displayRows();
498
+ if (index < 0 || index >= rows.length) return;
499
+ this.focusedRowKey.set(rows[index].key);
500
+ this.rowEls()[index]?.nativeElement.focus();
501
+ }
502
+ isExpanded(id) {
503
+ const controlled = this.expandedIds();
504
+ if (controlled !== void 0) return controlled.includes(id);
505
+ const override = this.expandOverrides().get(id);
506
+ if (override !== void 0) return override;
507
+ return this.defaultExpanded();
508
+ }
509
+ onChevronClick(displayRow, event) {
510
+ event.stopPropagation();
511
+ if (displayRow.id) this.toggleRow(displayRow.id, displayRow.row);
512
+ }
513
+ toggleRow(id, row) {
514
+ const expanded = !this.isExpanded(id);
515
+ this.expandOverrides.update((map) => {
516
+ const next = new Map(map);
517
+ next.set(id, expanded);
518
+ return next;
519
+ });
520
+ this.rowToggle.emit({
521
+ id,
522
+ expanded,
523
+ row
524
+ });
525
+ this.expandedIdsChange.emit(this.nextExpandedIds(id, expanded));
526
+ }
527
+ nextExpandedIds(changedId, changedExpanded) {
528
+ const controlled = this.expandedIds();
529
+ const overrides = this.expandOverrides();
530
+ return Array.from(this.treeBuild().childrenOf.keys()).filter((pid) => {
531
+ if (pid === changedId) return changedExpanded;
532
+ if (controlled !== void 0) return controlled.includes(pid);
533
+ const override = overrides.get(pid);
534
+ return override !== void 0 ? override : this.defaultExpanded();
535
+ });
536
+ }
537
+ goToPage(page) {
538
+ if (page >= 0 && page < this.totalPages()) this.currentPage.set(page);
539
+ }
540
+ onPageSizeChange(event) {
541
+ const newSize = Number(event.target.value);
542
+ this.internalPageSize.set(newSize);
543
+ this.currentPage.set(0);
544
+ }
545
+ onPageSizeModelChange(value) {
546
+ if (value == null) return;
547
+ const parsed = typeof value === "number" ? value : Number(value);
548
+ if (!Number.isFinite(parsed)) return;
549
+ this.internalPageSize.set(parsed);
550
+ this.currentPage.set(0);
551
+ }
552
+ get paginationStart() {
553
+ if (this.totalRows() === 0) return 0;
554
+ return this.currentPage() * this.internalPageSize() + 1;
555
+ }
556
+ get paginationEnd() {
557
+ return Math.min((this.currentPage() + 1) * this.internalPageSize(), this.totalRows());
558
+ }
559
+ toggleSelectAll() {
560
+ const selected = new Set(this.selectedRows());
561
+ const rows = this.displayRows();
562
+ const allSelected = this.allSelected();
563
+ rows.forEach((r) => {
564
+ if (allSelected) selected.delete(r.key);
565
+ else selected.add(r.key);
566
+ });
567
+ this.selectedRows.set(selected);
568
+ this.emitSelectionChange();
569
+ }
570
+ toggleRowSelect(row) {
571
+ const key = this.rowKey(row);
572
+ const selected = new Set(this.selectedRows());
573
+ if (selected.has(key)) selected.delete(key);
574
+ else selected.add(key);
575
+ this.selectedRows.set(selected);
576
+ this.emitSelectionChange();
577
+ }
578
+ isRowSelected(row) {
579
+ return this.selectedRows().has(this.rowKey(row));
580
+ }
581
+ emitSelectionChange() {
582
+ const keys = this.selectedRows();
583
+ const selected = this.data().filter((row) => keys.has(this.rowKey(row)));
584
+ this.selectionChange.emit({
585
+ selected,
586
+ allSelected: this.allSelected()
587
+ });
588
+ }
589
+ onFilterChange(columnKey, value) {
590
+ const filters = {
591
+ ...this.columnFilters(),
592
+ [columnKey]: value
593
+ };
594
+ this.columnFilters.set(filters);
595
+ this.currentPage.set(0);
596
+ }
597
+ getFilterValue(columnKey) {
598
+ return this.columnFilters()[columnKey] || "";
599
+ }
600
+ startEdit(row, column, currentValue) {
601
+ if (!this.editable()) return;
602
+ const col = this.columns().find((c) => c.key === column);
603
+ if (col && col.editable === false) return;
604
+ this.editingCell.set({
605
+ key: this.rowKey(row),
606
+ column
607
+ });
608
+ this.editValue.set(String(currentValue ?? ""));
609
+ }
610
+ isEditing(row, column) {
611
+ const cell = this.editingCell();
612
+ return cell !== null && cell.key === this.rowKey(row) && cell.column === column;
613
+ }
614
+ commitEdit(row, column) {
615
+ if (!this.isEditing(row, column)) return;
616
+ const oldValue = row[column];
617
+ const newValue = this.editValue();
618
+ this.editingCell.set(null);
619
+ this.editValue.set("");
620
+ if (String(oldValue ?? "") !== newValue) {
621
+ const rowIndex = this.dataIndexMap().get(row) ?? -1;
622
+ this.cellEdit.emit({
623
+ row,
624
+ column,
625
+ oldValue,
626
+ newValue,
627
+ rowIndex
628
+ });
629
+ }
630
+ }
631
+ cancelEdit() {
632
+ this.editingCell.set(null);
633
+ this.editValue.set("");
634
+ }
635
+ onEditKeydown(event, row, column) {
636
+ if (event.key === "Enter") this.commitEdit(row, column);
637
+ else if (event.key === "Escape") this.cancelEdit();
638
+ }
639
+ onHeaderKeydown(event, columnKey) {
640
+ if (event.key === "Enter" || event.key === " ") {
641
+ event.preventDefault();
642
+ this.handleSort(columnKey);
643
+ }
644
+ }
645
+ getInputValue(event) {
646
+ return event.target.value;
647
+ }
648
+ static ɵfac = i0.ɵɵngDeclareFactory({
649
+ minVersion: "12.0.0",
650
+ version: "22.2.2",
651
+ ngImport: i0,
652
+ type: TableComponent,
653
+ deps: [],
654
+ target: i0.ɵɵFactoryTarget.Component
655
+ });
656
+ static ɵcmp = i0.ɵɵngDeclareComponent({
657
+ minVersion: "17.0.0",
658
+ version: "22.2.2",
659
+ type: TableComponent,
660
+ isStandalone: true,
661
+ selector: "lc-table",
662
+ inputs: {
663
+ columns: {
664
+ classPropertyName: "columns",
665
+ publicName: "columns",
666
+ isSignal: true,
667
+ isRequired: false,
668
+ transformFunction: null
669
+ },
670
+ data: {
671
+ classPropertyName: "data",
672
+ publicName: "data",
673
+ isSignal: true,
674
+ isRequired: false,
675
+ transformFunction: null
676
+ },
677
+ variant: {
678
+ classPropertyName: "variant",
679
+ publicName: "variant",
680
+ isSignal: true,
681
+ isRequired: false,
682
+ transformFunction: null
683
+ },
684
+ size: {
685
+ classPropertyName: "size",
686
+ publicName: "size",
687
+ isSignal: true,
688
+ isRequired: false,
689
+ transformFunction: null
690
+ },
691
+ hoverable: {
692
+ classPropertyName: "hoverable",
693
+ publicName: "hoverable",
694
+ isSignal: true,
695
+ isRequired: false,
696
+ transformFunction: null
697
+ },
698
+ responsive: {
699
+ classPropertyName: "responsive",
700
+ publicName: "responsive",
701
+ isSignal: true,
702
+ isRequired: false,
703
+ transformFunction: null
704
+ },
705
+ emptyText: {
706
+ classPropertyName: "emptyText",
707
+ publicName: "emptyText",
708
+ isSignal: true,
709
+ isRequired: false,
710
+ transformFunction: null
711
+ },
712
+ filterPlaceholderLabel: {
713
+ classPropertyName: "filterPlaceholderLabel",
714
+ publicName: "filterPlaceholderLabel",
715
+ isSignal: true,
716
+ isRequired: false,
717
+ transformFunction: null
718
+ },
719
+ selectAllAriaLabel: {
720
+ classPropertyName: "selectAllAriaLabel",
721
+ publicName: "selectAllAriaLabel",
722
+ isSignal: true,
723
+ isRequired: false,
724
+ transformFunction: null
725
+ },
726
+ selectRowAriaLabel: {
727
+ classPropertyName: "selectRowAriaLabel",
728
+ publicName: "selectRowAriaLabel",
729
+ isSignal: true,
730
+ isRequired: false,
731
+ transformFunction: null
732
+ },
733
+ sortedAscendingLabel: {
734
+ classPropertyName: "sortedAscendingLabel",
735
+ publicName: "sortedAscendingLabel",
736
+ isSignal: true,
737
+ isRequired: false,
738
+ transformFunction: null
739
+ },
740
+ sortedDescendingLabel: {
741
+ classPropertyName: "sortedDescendingLabel",
742
+ publicName: "sortedDescendingLabel",
743
+ isSignal: true,
744
+ isRequired: false,
745
+ transformFunction: null
746
+ },
747
+ expandRowAriaLabel: {
748
+ classPropertyName: "expandRowAriaLabel",
749
+ publicName: "expandRowAriaLabel",
750
+ isSignal: true,
751
+ isRequired: false,
752
+ transformFunction: null
753
+ },
754
+ collapseRowAriaLabel: {
755
+ classPropertyName: "collapseRowAriaLabel",
756
+ publicName: "collapseRowAriaLabel",
757
+ isSignal: true,
758
+ isRequired: false,
759
+ transformFunction: null
760
+ },
761
+ rangeOfLabel: {
762
+ classPropertyName: "rangeOfLabel",
763
+ publicName: "rangeOfLabel",
764
+ isSignal: true,
765
+ isRequired: false,
766
+ transformFunction: null
767
+ },
768
+ rowsPerPageAriaLabel: {
769
+ classPropertyName: "rowsPerPageAriaLabel",
770
+ publicName: "rowsPerPageAriaLabel",
771
+ isSignal: true,
772
+ isRequired: false,
773
+ transformFunction: null
774
+ },
775
+ previousPageAriaLabel: {
776
+ classPropertyName: "previousPageAriaLabel",
777
+ publicName: "previousPageAriaLabel",
778
+ isSignal: true,
779
+ isRequired: false,
780
+ transformFunction: null
781
+ },
782
+ nextPageAriaLabel: {
783
+ classPropertyName: "nextPageAriaLabel",
784
+ publicName: "nextPageAriaLabel",
785
+ isSignal: true,
786
+ isRequired: false,
787
+ transformFunction: null
788
+ },
789
+ paginate: {
790
+ classPropertyName: "paginate",
791
+ publicName: "paginate",
792
+ isSignal: true,
793
+ isRequired: false,
794
+ transformFunction: null
795
+ },
796
+ pageSize: {
797
+ classPropertyName: "pageSize",
798
+ publicName: "pageSize",
799
+ isSignal: true,
800
+ isRequired: false,
801
+ transformFunction: null
802
+ },
803
+ pageSizeOptions: {
804
+ classPropertyName: "pageSizeOptions",
805
+ publicName: "pageSizeOptions",
806
+ isSignal: true,
807
+ isRequired: false,
808
+ transformFunction: null
809
+ },
810
+ selectable: {
811
+ classPropertyName: "selectable",
812
+ publicName: "selectable",
813
+ isSignal: true,
814
+ isRequired: false,
815
+ transformFunction: null
816
+ },
817
+ filterable: {
818
+ classPropertyName: "filterable",
819
+ publicName: "filterable",
820
+ isSignal: true,
821
+ isRequired: false,
822
+ transformFunction: null
823
+ },
824
+ editable: {
825
+ classPropertyName: "editable",
826
+ publicName: "editable",
827
+ isSignal: true,
828
+ isRequired: false,
829
+ transformFunction: null
830
+ },
831
+ actions: {
832
+ classPropertyName: "actions",
833
+ publicName: "actions",
834
+ isSignal: true,
835
+ isRequired: false,
836
+ transformFunction: null
837
+ },
838
+ actionsLabel: {
839
+ classPropertyName: "actionsLabel",
840
+ publicName: "actionsLabel",
841
+ isSignal: true,
842
+ isRequired: false,
843
+ transformFunction: null
844
+ },
845
+ actionsWidth: {
846
+ classPropertyName: "actionsWidth",
847
+ publicName: "actionsWidth",
848
+ isSignal: true,
849
+ isRequired: false,
850
+ transformFunction: null
851
+ },
852
+ actionsAlign: {
853
+ classPropertyName: "actionsAlign",
854
+ publicName: "actionsAlign",
855
+ isSignal: true,
856
+ isRequired: false,
857
+ transformFunction: null
858
+ },
859
+ idKey: {
860
+ classPropertyName: "idKey",
861
+ publicName: "idKey",
862
+ isSignal: true,
863
+ isRequired: false,
864
+ transformFunction: null
865
+ },
866
+ parentKey: {
867
+ classPropertyName: "parentKey",
868
+ publicName: "parentKey",
869
+ isSignal: true,
870
+ isRequired: false,
871
+ transformFunction: null
872
+ },
873
+ treeColumn: {
874
+ classPropertyName: "treeColumn",
875
+ publicName: "treeColumn",
876
+ isSignal: true,
877
+ isRequired: false,
878
+ transformFunction: null
879
+ },
880
+ defaultExpanded: {
881
+ classPropertyName: "defaultExpanded",
882
+ publicName: "defaultExpanded",
883
+ isSignal: true,
884
+ isRequired: false,
885
+ transformFunction: null
886
+ },
887
+ expandedIds: {
888
+ classPropertyName: "expandedIds",
889
+ publicName: "expandedIds",
890
+ isSignal: true,
891
+ isRequired: false,
892
+ transformFunction: null
893
+ },
894
+ indentSize: {
895
+ classPropertyName: "indentSize",
896
+ publicName: "indentSize",
897
+ isSignal: true,
898
+ isRequired: false,
899
+ transformFunction: null
900
+ },
901
+ filterAriaLabel: {
902
+ classPropertyName: "filterAriaLabel",
903
+ publicName: "filterAriaLabel",
904
+ isSignal: true,
905
+ isRequired: false,
906
+ transformFunction: null
907
+ }
908
+ },
909
+ outputs: {
910
+ sort: "sort",
911
+ rowClick: "rowClick",
912
+ cellEdit: "cellEdit",
913
+ selectionChange: "selectionChange",
914
+ actionClick: "actionClick",
915
+ rowToggle: "rowToggle",
916
+ expandedIdsChange: "expandedIdsChange"
917
+ },
918
+ queries: [{
919
+ propertyName: "cellTemplates",
920
+ predicate: TableCellDirective
921
+ }],
922
+ viewQueries: [{
923
+ propertyName: "editInput",
924
+ first: true,
925
+ predicate: ["editInput"],
926
+ descendants: true,
927
+ isSignal: true
928
+ }, {
929
+ propertyName: "rowEls",
930
+ predicate: ["dataRow"],
931
+ descendants: true,
932
+ isSignal: true
933
+ }],
934
+ ngImport: i0,
935
+ template: "<div [class]=\"wrapperClasses()\">\n <table [class]=\"tableClasses()\" [attr.role]=\"treeMode() ? 'treegrid' : 'table'\">\n <thead>\n <!-- Filter row -->\n @if (filterable()) {\n <tr class=\"lc-table__filter-row\">\n @if (selectable()) {\n <th class=\"lc-table__select-cell\"></th>\n }\n @for (column of columns(); track column.key) {\n <th>\n @if (column.filterable !== false) {\n <lc-input\n class=\"lc-table__filter-input\"\n size=\"xs\"\n [placeholder]=\"filterPlaceholderLabel() + ' ' + column.label\"\n [ariaLabel]=\"filterAriaLabel() + ' ' + column.label\"\n [ngModel]=\"getFilterValue(column.key)\"\n (ngModelChange)=\"onFilterChange(column.key, $event)\"\n />\n }\n </th>\n }\n @if (hasActions()) {\n <th class=\"lc-table__actions-cell\"></th>\n }\n </tr>\n }\n <!-- Header row -->\n <tr>\n @if (selectable()) {\n <th class=\"lc-table__select-cell\" scope=\"col\">\n <input\n type=\"checkbox\"\n class=\"lc-table__checkbox\"\n [checked]=\"allSelected()\"\n [indeterminate]=\"someSelected()\"\n (change)=\"toggleSelectAll()\"\n [attr.aria-label]=\"selectAllAriaLabel()\"\n />\n </th>\n }\n @for (column of columns(); track column.key) {\n <!-- A sortable header is a keyboard stop too: Enter/Space sort like a click. -->\n <th\n scope=\"col\"\n [class]=\"getHeaderClasses(column) + (column.cssClass ? ' ' + column.cssClass : '')\"\n [attr.aria-sort]=\"getAriaSort(column.key)\"\n [attr.tabindex]=\"column.sortable ? 0 : null\"\n [style.width]=\"column.width\"\n [title]=\"column.tooltip || ''\"\n (click)=\"handleSort(column.key)\"\n (keydown)=\"column.sortable ? onHeaderKeydown($event, column.key) : null\">\n {{ column.label }}\n @if (column.sortable && getSortState(column.key)) {\n <span class=\"sort-indicator\" [attr.aria-label]=\"getSortState(column.key) === 'asc' ? sortedAscendingLabel() : sortedDescendingLabel()\">\n @if (getSortState(column.key) === 'asc') {\n ↑\n } @else {\n ↓\n }\n </span>\n }\n </th>\n }\n @if (hasActions()) {\n <th\n scope=\"col\"\n class=\"lc-table__actions-cell\"\n [class]=\"'lc-table__actions-cell--' + actionsAlign()\"\n [style.width]=\"actionsWidth()\"\n >\n {{ actionsLabel() }}\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @if (displayRows().length === 0) {\n <tr>\n <td [attr.colspan]=\"columns().length + (selectable() ? 1 : 0) + (hasActions() ? 1 : 0)\" class=\"lc-table__empty\">\n {{ emptyText() }}\n </td>\n </tr>\n } @else {\n @for (dr of displayRows(); track dr.key) {\n <!-- In tree mode the rows form the treegrid's keyboard model: a roving\n tab stop plus Arrow/Home/End/Enter/Space handling (see the\n component). Flat mode keeps plain table rows. -->\n <tr\n #dataRow\n [class.lc-table__row--selected]=\"selectable() && isRowSelected(dr.row)\"\n [class.lc-table__row--group]=\"dr.hasChildren\"\n [attr.role]=\"treeMode() ? 'row' : null\"\n [attr.tabindex]=\"rowTabindex(dr)\"\n [attr.aria-level]=\"treeMode() ? dr.level : null\"\n [attr.aria-expanded]=\"treeMode() && dr.hasChildren ? dr.expanded : null\"\n [attr.aria-posinset]=\"treeMode() ? dr.posInSet : null\"\n [attr.aria-setsize]=\"treeMode() ? dr.setSize : null\"\n [attr.aria-selected]=\"treeMode() && selectable() ? isRowSelected(dr.row) : null\"\n (click)=\"onRowClick(dr.row)\"\n (focus)=\"onRowFocus(dr)\"\n (keydown)=\"onRowKeydown($event, dr)\"\n >\n @if (selectable()) {\n <td class=\"lc-table__select-cell\" [attr.role]=\"treeMode() ? 'gridcell' : null\">\n <input\n type=\"checkbox\"\n class=\"lc-table__checkbox\"\n [checked]=\"isRowSelected(dr.row)\"\n (change)=\"toggleRowSelect(dr.row)\"\n (click)=\"$event.stopPropagation()\"\n [attr.aria-label]=\"selectRowAriaLabel() + ' ' + (dr.absIndex + 1)\"\n />\n </td>\n }\n @for (column of columns(); track column.key) {\n <td\n [class]=\"getCellClasses(dr.row, column, dr.absIndex)\"\n [ngStyle]=\"getCellStyles(dr.row, column, dr.absIndex)\"\n [attr.role]=\"treeMode() ? 'gridcell' : null\"\n (dblclick)=\"editable() ? startEdit(dr.row, column.key, getCellValue(dr.row, column.key)) : null\"\n >\n @if (isTreeColumn(column.key)) {\n <span class=\"lc-table__tree-cell\">\n @for (lvl of indentLevels(dr.depth); track lvl) {\n <span class=\"lc-table__tree-indent\" [style.width.px]=\"indentSize()\"></span>\n }\n <span class=\"lc-table__tree-chevron\" [style.width.px]=\"indentSize()\">\n @if (dr.hasChildren) {\n <button\n type=\"button\"\n class=\"lc-table__chevron-btn\"\n [class.lc-table__chevron-btn--expanded]=\"dr.expanded\"\n [attr.aria-label]=\"(dr.expanded ? collapseRowAriaLabel() : expandRowAriaLabel()) + ' ' + treeCellLabel(dr.row)\"\n [attr.aria-expanded]=\"dr.expanded\"\n (click)=\"onChevronClick(dr, $event)\"\n >\n <lc-icon name=\"chevron-right\" size=\"xs\" [decorative]=\"true\" />\n </button>\n }\n </span>\n <span class=\"lc-table__tree-content\">\n <ng-container\n *ngTemplateOutlet=\"cellContent; context: { row: dr.row, column: column, absIndex: dr.absIndex }\"\n ></ng-container>\n </span>\n </span>\n } @else {\n <ng-container\n *ngTemplateOutlet=\"cellContent; context: { row: dr.row, column: column, absIndex: dr.absIndex }\"\n ></ng-container>\n }\n </td>\n }\n @if (hasActions()) {\n <td\n class=\"lc-table__actions-cell\"\n [class]=\"'lc-table__actions-cell--' + actionsAlign()\"\n [attr.role]=\"treeMode() ? 'gridcell' : null\"\n (click)=\"$event.stopPropagation()\"\n >\n <div class=\"lc-table__actions\">\n @for (action of actions(); track action.key) {\n @if (!isActionHidden(action, dr.row, dr.absIndex)) {\n <lc-button\n [variant]=\"action.variant ?? 'ghost'\"\n size=\"xs\"\n [iconOnly]=\"!action.label\"\n [disabled]=\"isActionDisabled(action, dr.row, dr.absIndex)\"\n [ariaLabel]=\"action.tooltip ?? action.label ?? action.key\"\n (clicked)=\"onActionClick(action, dr.row, dr.absIndex)\"\n >\n @if (action.icon) {\n <lc-icon [name]=\"action.icon\" size=\"sm\" [decorative]=\"true\" />\n }\n @if (action.label) {\n {{ action.label }}\n }\n </lc-button>\n }\n }\n </div>\n </td>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n</div>\n\n<!-- Shared cell content (edit input / custom template / formatted value) -->\n<ng-template #cellContent let-row=\"row\" let-column=\"column\" let-absIndex=\"absIndex\">\n @if (isEditing(row, column.key)) {\n <input\n #editInput\n type=\"text\"\n class=\"lc-table__edit-input\"\n [value]=\"editValue()\"\n (input)=\"editValue.set(getInputValue($event))\"\n (blur)=\"commitEdit(row, column.key)\"\n (keydown)=\"onEditKeydown($event, row, column.key)\"\n />\n } @else if (hasCustomTemplate(column.key)) {\n <ng-container *ngTemplateOutlet=\"getCellTemplate(column.key)!.template; context: { $implicit: row }\"></ng-container>\n } @else {\n {{ getFormattedCellValue(row, column, absIndex) }}\n }\n</ng-template>\n\n<!-- Pagination -->\n@if (paginate()) {\n <div class=\"lc-table-pagination\">\n <div class=\"lc-table-pagination__info\">\n {{ paginationStart }}–{{ paginationEnd }} {{ rangeOfLabel() }} {{ totalRows() }}\n </div>\n <div class=\"lc-table-pagination__controls\">\n <lc-select\n class=\"lc-table-pagination__size\"\n [size]=\"size() === 'sm' ? 'sm' : size() === 'lg' ? 'lg' : 'md'\"\n [options]=\"pageSizeSelectOptions()\"\n [ngModel]=\"internalPageSize()\"\n [ariaLabel]=\"rowsPerPageAriaLabel()\"\n (ngModelChange)=\"onPageSizeModelChange($event)\"\n />\n <button\n type=\"button\"\n class=\"lc-table-pagination__btn\"\n [disabled]=\"currentPage() === 0\"\n (click)=\"goToPage(currentPage() - 1)\"\n [attr.aria-label]=\"previousPageAriaLabel()\"\n >‹</button>\n <span class=\"lc-table-pagination__page\">\n {{ currentPage() + 1 }} / {{ totalPages() }}\n </span>\n <button\n type=\"button\"\n class=\"lc-table-pagination__btn\"\n [disabled]=\"currentPage() >= totalPages() - 1\"\n (click)=\"goToPage(currentPage() + 1)\"\n [attr.aria-label]=\"nextPageAriaLabel()\"\n >›</button>\n </div>\n </div>\n}\n",
936
+ styles: [".lc-table-wrapper{width:100%}.lc-table-wrapper--responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width:768px){.lc-table-wrapper--responsive::-webkit-scrollbar{height:8px}.lc-table-wrapper--responsive::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:var(--border-radius-sm)}}.lc-table{width:100%;border-collapse:collapse;border-spacing:0;background-color:var(--color-surface);color:var(--color-text-primary);font-family:var(--typography-font-family)}.lc-table thead{background-color:var(--color-surface-2);border-bottom:2px solid var(--color-border-strong)}.lc-table thead tr th{padding:var(--lc-density-padding-sm, var(--spacing-3)) var(--lc-density-padding-md, var(--spacing-4));text-align:left;font-weight:var(--typography-font-weight-semibold);font-size:var(--typography-font-size-sm);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary);white-space:nowrap;-webkit-user-select:none;user-select:none}.lc-table thead tr th.sortable{cursor:pointer;position:relative;padding-right:var(--spacing-8);transition:background-color .2s ease}.lc-table thead tr th.sortable:focus-visible{outline:2px solid var(--color-primary-500);outline-offset:-2px}.lc-table thead tr th.sortable:hover{background-color:var(--color-surface-hover);color:var(--color-text-primary)}.lc-table thead tr th.sortable .sort-indicator{position:absolute;right:var(--spacing-3);top:50%;transform:translateY(-50%);font-size:var(--typography-font-size-xs);color:var(--color-primary)}.lc-table thead tr th.sorted-asc,.lc-table thead tr th.sorted-desc{background-color:var(--color-surface-hover);color:var(--color-text-primary)}.lc-table tbody tr{border-bottom:1px solid var(--color-divider)}.lc-table tbody tr:last-child{border-bottom:none}.lc-table tbody tr td{padding:var(--lc-density-padding-sm, var(--spacing-3)) var(--lc-density-padding-md, var(--spacing-4));font-size:var(--typography-font-size-sm);color:var(--color-text-primary)}.lc-table__empty{text-align:center;padding:var(--spacing-8) var(--spacing-4)!important;color:var(--color-text-secondary);font-style:italic}.lc-table--striped tbody tr:focus-visible{outline:2px solid var(--color-primary-500);outline-offset:-2px}.lc-table--striped tbody tr:nth-child(2n){background-color:var(--color-surface-2)}.lc-table--bordered{border:1px solid var(--color-border)}.lc-table--bordered thead tr th,.lc-table--bordered tbody tr td{border-right:1px solid var(--color-divider)}.lc-table--bordered thead tr th:last-child,.lc-table--bordered tbody tr td:last-child{border-right:none}.lc-table--bordered tbody tr{border-bottom:1px solid var(--color-border)}.lc-table--hoverable tbody tr{transition:background-color .15s ease;cursor:pointer}.lc-table--hoverable tbody tr:hover{background-color:var(--color-surface-hover)}.lc-table--sm thead tr th,.lc-table--sm tbody tr td{padding:var(--lc-density-padding-xs, var(--spacing-2)) var(--lc-density-padding-sm, var(--spacing-3));font-size:var(--typography-font-size-xs)}.lc-table--lg thead tr th,.lc-table--lg tbody tr td{padding:var(--lc-density-padding-md, var(--spacing-4)) var(--spacing-5);font-size:var(--typography-font-size-base)}.lc-table__filter-row th{padding:var(--spacing-2) var(--spacing-4)!important;background-color:var(--color-surface)!important;border-bottom:1px solid var(--color-divider)!important}.lc-table__filter-input{width:100%;display:block}.lc-table__filter-input .input-field{font-size:var(--typography-font-size-xs)}.lc-table__select-cell{width:40px;text-align:center!important;padding:var(--spacing-2)!important}.lc-table__checkbox{width:16px;height:16px;cursor:pointer;accent-color:var(--color-primary)}.lc-table__row--selected{background-color:var(--color-surface-selected)!important}.lc-table__actions-cell{white-space:nowrap}.lc-table th.lc-table__actions-cell--start,.lc-table td.lc-table__actions-cell--start{text-align:left}.lc-table th.lc-table__actions-cell--center,.lc-table td.lc-table__actions-cell--center{text-align:center}.lc-table th.lc-table__actions-cell--end,.lc-table td.lc-table__actions-cell--end{text-align:right}.lc-table__actions{display:flex;align-items:center;gap:var(--spacing-2);justify-content:flex-start}.lc-table__actions-cell--center .lc-table__actions{justify-content:center}.lc-table__actions-cell--end .lc-table__actions{justify-content:flex-end}.lc-table__tree-cell{display:flex;align-items:center;min-width:0}.lc-table__tree-indent{flex:0 0 auto;align-self:stretch;position:relative}.lc-table__tree-indent:before{content:\"\";position:absolute;left:50%;top:0;bottom:0;width:1px;background-color:var(--color-border)}.lc-table__tree-chevron{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center}.lc-table__chevron-btn{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;border:none;background:transparent;color:var(--color-text-secondary);cursor:pointer;border-radius:var(--border-radius-sm);transition:transform .2s ease,background-color .15s ease,color .15s ease}.lc-table__chevron-btn:hover{background-color:var(--color-surface-hover);color:var(--color-text-primary)}.lc-table__chevron-btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.lc-table__chevron-btn--expanded{transform:rotate(90deg)}.lc-table__tree-content{flex:1 1 auto;min-width:0}.lc-table__row--group .lc-table__tree-content{font-weight:var(--typography-font-weight-semibold)}.lc-table__edit-input{width:100%;padding:var(--spacing-1) var(--spacing-2);border:2px solid var(--color-primary);border-radius:var(--border-radius-sm);font-size:inherit;background-color:var(--color-surface-2);color:var(--color-text-primary);outline:none}.lc-table-pagination{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-3) var(--spacing-1);font-size:var(--typography-font-size-sm);color:var(--color-text-secondary)}.lc-table-pagination__info{white-space:nowrap}.lc-table-pagination__controls{display:flex;align-items:center;gap:var(--spacing-2)}.lc-table-pagination__size{display:block;min-width:110px}.lc-table-pagination__btn{appearance:none;border:1px solid var(--color-border);background-color:var(--color-surface);color:var(--color-text-primary);width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:var(--border-radius-sm);font-size:var(--typography-font-size-base);cursor:pointer;transition:background-color .15s ease}.lc-table-pagination__btn:hover:not(:disabled){background-color:var(--color-surface-hover)}.lc-table-pagination__btn:disabled{opacity:.4;cursor:not-allowed}.lc-table-pagination__page{white-space:nowrap;min-width:60px;text-align:center}@media(max-width:640px){.lc-table-wrapper--stack .lc-table thead{display:none}.lc-table-wrapper--stack .lc-table tbody tr{display:block;margin-bottom:var(--spacing-4);border:1px solid var(--color-border);border-radius:var(--border-radius-md)}.lc-table-wrapper--stack .lc-table tbody tr td{display:block;text-align:right;padding:var(--spacing-2) var(--spacing-4);border-bottom:1px solid var(--color-divider)}.lc-table-wrapper--stack .lc-table tbody tr td:last-child{border-bottom:none}.lc-table-wrapper--stack .lc-table tbody tr td:before{content:attr(data-label);float:left;font-weight:var(--typography-font-weight-semibold);color:var(--color-text-secondary)}}\n"],
937
+ dependencies: [
938
+ {
939
+ kind: "directive",
940
+ type: NgTemplateOutlet,
941
+ selector: "[ngTemplateOutlet]",
942
+ inputs: [
943
+ "ngTemplateOutletContext",
944
+ "ngTemplateOutlet",
945
+ "ngTemplateOutletInjector"
946
+ ]
947
+ },
948
+ {
949
+ kind: "directive",
950
+ type: NgStyle,
951
+ selector: "[ngStyle]",
952
+ inputs: ["ngStyle"]
953
+ },
954
+ {
955
+ kind: "ngmodule",
956
+ type: FormsModule
957
+ },
958
+ {
959
+ kind: "directive",
960
+ type: i1.NgControlStatus,
961
+ selector: "[formControlName],[ngModel],[formControl]"
962
+ },
963
+ {
964
+ kind: "directive",
965
+ type: i1.NgModel,
966
+ selector: "[ngModel]:not([formControlName]):not([formControl])",
967
+ inputs: [
968
+ "name",
969
+ "disabled",
970
+ "ngModel",
971
+ "ngModelOptions"
972
+ ],
973
+ outputs: ["ngModelChange"],
974
+ exportAs: ["ngModel"]
975
+ },
976
+ {
977
+ kind: "component",
978
+ type: SelectComponent,
979
+ selector: "lc-select",
980
+ inputs: [
981
+ "variant",
982
+ "size",
983
+ "disabled",
984
+ "error",
985
+ "required",
986
+ "loading",
987
+ "searchable",
988
+ "multiple",
989
+ "placeholder",
990
+ "helperText",
991
+ "errorMessage",
992
+ "ariaLabel",
993
+ "options",
994
+ "clearAriaLabel",
995
+ "searchPlaceholder",
996
+ "searchAriaLabel",
997
+ "noOptionsLabel"
998
+ ],
999
+ outputs: [
1000
+ "selectionChange",
1001
+ "opened",
1002
+ "closed"
1003
+ ]
1004
+ },
1005
+ {
1006
+ kind: "component",
1007
+ type: InputComponent,
1008
+ selector: "lc-input",
1009
+ inputs: [
1010
+ "label",
1011
+ "placeholder",
1012
+ "type",
1013
+ "size",
1014
+ "disabled",
1015
+ "readonly",
1016
+ "readonlyWrap",
1017
+ "required",
1018
+ "requiredIndicator",
1019
+ "error",
1020
+ "helperText",
1021
+ "iconBefore",
1022
+ "iconAfter",
1023
+ "maxLength",
1024
+ "showCharCount",
1025
+ "charCountRemainingLabel",
1026
+ "charCountAnnounceThreshold",
1027
+ "ariaLabel",
1028
+ "autocomplete",
1029
+ "name",
1030
+ "autocapitalize",
1031
+ "spellcheck",
1032
+ "enterkeyhint",
1033
+ "requiredAriaLabel",
1034
+ "value"
1035
+ ],
1036
+ outputs: [
1037
+ "valueChange",
1038
+ "focused",
1039
+ "blurred",
1040
+ "enterPressed"
1041
+ ]
1042
+ },
1043
+ {
1044
+ kind: "component",
1045
+ type: ButtonComponent,
1046
+ selector: "lc-button",
1047
+ inputs: [
1048
+ "variant",
1049
+ "size",
1050
+ "disabled",
1051
+ "loading",
1052
+ "iconOnly",
1053
+ "fullWidth",
1054
+ "ariaLabel",
1055
+ "type",
1056
+ "title",
1057
+ "disabledReason",
1058
+ "inline"
1059
+ ],
1060
+ outputs: [
1061
+ "clicked",
1062
+ "focused",
1063
+ "blurred"
1064
+ ]
1065
+ },
1066
+ {
1067
+ kind: "component",
1068
+ type: IconComponent,
1069
+ selector: "lc-icon",
1070
+ inputs: [
1071
+ "name",
1072
+ "variant",
1073
+ "size",
1074
+ "color",
1075
+ "ariaLabel",
1076
+ "decorative",
1077
+ "strict"
1078
+ ]
1079
+ }
1080
+ ],
1081
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
1082
+ });
1083
+ };
1084
+ i0.ɵɵngDeclareClassMetadata({
1085
+ minVersion: "12.0.0",
1086
+ version: "22.2.2",
1087
+ ngImport: i0,
1088
+ type: TableComponent,
1089
+ decorators: [{
1090
+ type: Component,
1091
+ args: [{
1092
+ selector: "lc-table",
1093
+ standalone: true,
1094
+ imports: [
1095
+ NgTemplateOutlet,
1096
+ NgStyle,
1097
+ FormsModule,
1098
+ SelectComponent,
1099
+ InputComponent,
1100
+ ButtonComponent,
1101
+ IconComponent
1102
+ ],
1103
+ changeDetection: ChangeDetectionStrategy.OnPush,
1104
+ template: "<div [class]=\"wrapperClasses()\">\n <table [class]=\"tableClasses()\" [attr.role]=\"treeMode() ? 'treegrid' : 'table'\">\n <thead>\n <!-- Filter row -->\n @if (filterable()) {\n <tr class=\"lc-table__filter-row\">\n @if (selectable()) {\n <th class=\"lc-table__select-cell\"></th>\n }\n @for (column of columns(); track column.key) {\n <th>\n @if (column.filterable !== false) {\n <lc-input\n class=\"lc-table__filter-input\"\n size=\"xs\"\n [placeholder]=\"filterPlaceholderLabel() + ' ' + column.label\"\n [ariaLabel]=\"filterAriaLabel() + ' ' + column.label\"\n [ngModel]=\"getFilterValue(column.key)\"\n (ngModelChange)=\"onFilterChange(column.key, $event)\"\n />\n }\n </th>\n }\n @if (hasActions()) {\n <th class=\"lc-table__actions-cell\"></th>\n }\n </tr>\n }\n <!-- Header row -->\n <tr>\n @if (selectable()) {\n <th class=\"lc-table__select-cell\" scope=\"col\">\n <input\n type=\"checkbox\"\n class=\"lc-table__checkbox\"\n [checked]=\"allSelected()\"\n [indeterminate]=\"someSelected()\"\n (change)=\"toggleSelectAll()\"\n [attr.aria-label]=\"selectAllAriaLabel()\"\n />\n </th>\n }\n @for (column of columns(); track column.key) {\n <!-- A sortable header is a keyboard stop too: Enter/Space sort like a click. -->\n <th\n scope=\"col\"\n [class]=\"getHeaderClasses(column) + (column.cssClass ? ' ' + column.cssClass : '')\"\n [attr.aria-sort]=\"getAriaSort(column.key)\"\n [attr.tabindex]=\"column.sortable ? 0 : null\"\n [style.width]=\"column.width\"\n [title]=\"column.tooltip || ''\"\n (click)=\"handleSort(column.key)\"\n (keydown)=\"column.sortable ? onHeaderKeydown($event, column.key) : null\">\n {{ column.label }}\n @if (column.sortable && getSortState(column.key)) {\n <span class=\"sort-indicator\" [attr.aria-label]=\"getSortState(column.key) === 'asc' ? sortedAscendingLabel() : sortedDescendingLabel()\">\n @if (getSortState(column.key) === 'asc') {\n ↑\n } @else {\n ↓\n }\n </span>\n }\n </th>\n }\n @if (hasActions()) {\n <th\n scope=\"col\"\n class=\"lc-table__actions-cell\"\n [class]=\"'lc-table__actions-cell--' + actionsAlign()\"\n [style.width]=\"actionsWidth()\"\n >\n {{ actionsLabel() }}\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @if (displayRows().length === 0) {\n <tr>\n <td [attr.colspan]=\"columns().length + (selectable() ? 1 : 0) + (hasActions() ? 1 : 0)\" class=\"lc-table__empty\">\n {{ emptyText() }}\n </td>\n </tr>\n } @else {\n @for (dr of displayRows(); track dr.key) {\n <!-- In tree mode the rows form the treegrid's keyboard model: a roving\n tab stop plus Arrow/Home/End/Enter/Space handling (see the\n component). Flat mode keeps plain table rows. -->\n <tr\n #dataRow\n [class.lc-table__row--selected]=\"selectable() && isRowSelected(dr.row)\"\n [class.lc-table__row--group]=\"dr.hasChildren\"\n [attr.role]=\"treeMode() ? 'row' : null\"\n [attr.tabindex]=\"rowTabindex(dr)\"\n [attr.aria-level]=\"treeMode() ? dr.level : null\"\n [attr.aria-expanded]=\"treeMode() && dr.hasChildren ? dr.expanded : null\"\n [attr.aria-posinset]=\"treeMode() ? dr.posInSet : null\"\n [attr.aria-setsize]=\"treeMode() ? dr.setSize : null\"\n [attr.aria-selected]=\"treeMode() && selectable() ? isRowSelected(dr.row) : null\"\n (click)=\"onRowClick(dr.row)\"\n (focus)=\"onRowFocus(dr)\"\n (keydown)=\"onRowKeydown($event, dr)\"\n >\n @if (selectable()) {\n <td class=\"lc-table__select-cell\" [attr.role]=\"treeMode() ? 'gridcell' : null\">\n <input\n type=\"checkbox\"\n class=\"lc-table__checkbox\"\n [checked]=\"isRowSelected(dr.row)\"\n (change)=\"toggleRowSelect(dr.row)\"\n (click)=\"$event.stopPropagation()\"\n [attr.aria-label]=\"selectRowAriaLabel() + ' ' + (dr.absIndex + 1)\"\n />\n </td>\n }\n @for (column of columns(); track column.key) {\n <td\n [class]=\"getCellClasses(dr.row, column, dr.absIndex)\"\n [ngStyle]=\"getCellStyles(dr.row, column, dr.absIndex)\"\n [attr.role]=\"treeMode() ? 'gridcell' : null\"\n (dblclick)=\"editable() ? startEdit(dr.row, column.key, getCellValue(dr.row, column.key)) : null\"\n >\n @if (isTreeColumn(column.key)) {\n <span class=\"lc-table__tree-cell\">\n @for (lvl of indentLevels(dr.depth); track lvl) {\n <span class=\"lc-table__tree-indent\" [style.width.px]=\"indentSize()\"></span>\n }\n <span class=\"lc-table__tree-chevron\" [style.width.px]=\"indentSize()\">\n @if (dr.hasChildren) {\n <button\n type=\"button\"\n class=\"lc-table__chevron-btn\"\n [class.lc-table__chevron-btn--expanded]=\"dr.expanded\"\n [attr.aria-label]=\"(dr.expanded ? collapseRowAriaLabel() : expandRowAriaLabel()) + ' ' + treeCellLabel(dr.row)\"\n [attr.aria-expanded]=\"dr.expanded\"\n (click)=\"onChevronClick(dr, $event)\"\n >\n <lc-icon name=\"chevron-right\" size=\"xs\" [decorative]=\"true\" />\n </button>\n }\n </span>\n <span class=\"lc-table__tree-content\">\n <ng-container\n *ngTemplateOutlet=\"cellContent; context: { row: dr.row, column: column, absIndex: dr.absIndex }\"\n ></ng-container>\n </span>\n </span>\n } @else {\n <ng-container\n *ngTemplateOutlet=\"cellContent; context: { row: dr.row, column: column, absIndex: dr.absIndex }\"\n ></ng-container>\n }\n </td>\n }\n @if (hasActions()) {\n <td\n class=\"lc-table__actions-cell\"\n [class]=\"'lc-table__actions-cell--' + actionsAlign()\"\n [attr.role]=\"treeMode() ? 'gridcell' : null\"\n (click)=\"$event.stopPropagation()\"\n >\n <div class=\"lc-table__actions\">\n @for (action of actions(); track action.key) {\n @if (!isActionHidden(action, dr.row, dr.absIndex)) {\n <lc-button\n [variant]=\"action.variant ?? 'ghost'\"\n size=\"xs\"\n [iconOnly]=\"!action.label\"\n [disabled]=\"isActionDisabled(action, dr.row, dr.absIndex)\"\n [ariaLabel]=\"action.tooltip ?? action.label ?? action.key\"\n (clicked)=\"onActionClick(action, dr.row, dr.absIndex)\"\n >\n @if (action.icon) {\n <lc-icon [name]=\"action.icon\" size=\"sm\" [decorative]=\"true\" />\n }\n @if (action.label) {\n {{ action.label }}\n }\n </lc-button>\n }\n }\n </div>\n </td>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n</div>\n\n<!-- Shared cell content (edit input / custom template / formatted value) -->\n<ng-template #cellContent let-row=\"row\" let-column=\"column\" let-absIndex=\"absIndex\">\n @if (isEditing(row, column.key)) {\n <input\n #editInput\n type=\"text\"\n class=\"lc-table__edit-input\"\n [value]=\"editValue()\"\n (input)=\"editValue.set(getInputValue($event))\"\n (blur)=\"commitEdit(row, column.key)\"\n (keydown)=\"onEditKeydown($event, row, column.key)\"\n />\n } @else if (hasCustomTemplate(column.key)) {\n <ng-container *ngTemplateOutlet=\"getCellTemplate(column.key)!.template; context: { $implicit: row }\"></ng-container>\n } @else {\n {{ getFormattedCellValue(row, column, absIndex) }}\n }\n</ng-template>\n\n<!-- Pagination -->\n@if (paginate()) {\n <div class=\"lc-table-pagination\">\n <div class=\"lc-table-pagination__info\">\n {{ paginationStart }}–{{ paginationEnd }} {{ rangeOfLabel() }} {{ totalRows() }}\n </div>\n <div class=\"lc-table-pagination__controls\">\n <lc-select\n class=\"lc-table-pagination__size\"\n [size]=\"size() === 'sm' ? 'sm' : size() === 'lg' ? 'lg' : 'md'\"\n [options]=\"pageSizeSelectOptions()\"\n [ngModel]=\"internalPageSize()\"\n [ariaLabel]=\"rowsPerPageAriaLabel()\"\n (ngModelChange)=\"onPageSizeModelChange($event)\"\n />\n <button\n type=\"button\"\n class=\"lc-table-pagination__btn\"\n [disabled]=\"currentPage() === 0\"\n (click)=\"goToPage(currentPage() - 1)\"\n [attr.aria-label]=\"previousPageAriaLabel()\"\n >‹</button>\n <span class=\"lc-table-pagination__page\">\n {{ currentPage() + 1 }} / {{ totalPages() }}\n </span>\n <button\n type=\"button\"\n class=\"lc-table-pagination__btn\"\n [disabled]=\"currentPage() >= totalPages() - 1\"\n (click)=\"goToPage(currentPage() + 1)\"\n [attr.aria-label]=\"nextPageAriaLabel()\"\n >›</button>\n </div>\n </div>\n}\n",
1105
+ styles: [".lc-table-wrapper{width:100%}.lc-table-wrapper--responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width:768px){.lc-table-wrapper--responsive::-webkit-scrollbar{height:8px}.lc-table-wrapper--responsive::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:var(--border-radius-sm)}}.lc-table{width:100%;border-collapse:collapse;border-spacing:0;background-color:var(--color-surface);color:var(--color-text-primary);font-family:var(--typography-font-family)}.lc-table thead{background-color:var(--color-surface-2);border-bottom:2px solid var(--color-border-strong)}.lc-table thead tr th{padding:var(--lc-density-padding-sm, var(--spacing-3)) var(--lc-density-padding-md, var(--spacing-4));text-align:left;font-weight:var(--typography-font-weight-semibold);font-size:var(--typography-font-size-sm);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary);white-space:nowrap;-webkit-user-select:none;user-select:none}.lc-table thead tr th.sortable{cursor:pointer;position:relative;padding-right:var(--spacing-8);transition:background-color .2s ease}.lc-table thead tr th.sortable:focus-visible{outline:2px solid var(--color-primary-500);outline-offset:-2px}.lc-table thead tr th.sortable:hover{background-color:var(--color-surface-hover);color:var(--color-text-primary)}.lc-table thead tr th.sortable .sort-indicator{position:absolute;right:var(--spacing-3);top:50%;transform:translateY(-50%);font-size:var(--typography-font-size-xs);color:var(--color-primary)}.lc-table thead tr th.sorted-asc,.lc-table thead tr th.sorted-desc{background-color:var(--color-surface-hover);color:var(--color-text-primary)}.lc-table tbody tr{border-bottom:1px solid var(--color-divider)}.lc-table tbody tr:last-child{border-bottom:none}.lc-table tbody tr td{padding:var(--lc-density-padding-sm, var(--spacing-3)) var(--lc-density-padding-md, var(--spacing-4));font-size:var(--typography-font-size-sm);color:var(--color-text-primary)}.lc-table__empty{text-align:center;padding:var(--spacing-8) var(--spacing-4)!important;color:var(--color-text-secondary);font-style:italic}.lc-table--striped tbody tr:focus-visible{outline:2px solid var(--color-primary-500);outline-offset:-2px}.lc-table--striped tbody tr:nth-child(2n){background-color:var(--color-surface-2)}.lc-table--bordered{border:1px solid var(--color-border)}.lc-table--bordered thead tr th,.lc-table--bordered tbody tr td{border-right:1px solid var(--color-divider)}.lc-table--bordered thead tr th:last-child,.lc-table--bordered tbody tr td:last-child{border-right:none}.lc-table--bordered tbody tr{border-bottom:1px solid var(--color-border)}.lc-table--hoverable tbody tr{transition:background-color .15s ease;cursor:pointer}.lc-table--hoverable tbody tr:hover{background-color:var(--color-surface-hover)}.lc-table--sm thead tr th,.lc-table--sm tbody tr td{padding:var(--lc-density-padding-xs, var(--spacing-2)) var(--lc-density-padding-sm, var(--spacing-3));font-size:var(--typography-font-size-xs)}.lc-table--lg thead tr th,.lc-table--lg tbody tr td{padding:var(--lc-density-padding-md, var(--spacing-4)) var(--spacing-5);font-size:var(--typography-font-size-base)}.lc-table__filter-row th{padding:var(--spacing-2) var(--spacing-4)!important;background-color:var(--color-surface)!important;border-bottom:1px solid var(--color-divider)!important}.lc-table__filter-input{width:100%;display:block}.lc-table__filter-input .input-field{font-size:var(--typography-font-size-xs)}.lc-table__select-cell{width:40px;text-align:center!important;padding:var(--spacing-2)!important}.lc-table__checkbox{width:16px;height:16px;cursor:pointer;accent-color:var(--color-primary)}.lc-table__row--selected{background-color:var(--color-surface-selected)!important}.lc-table__actions-cell{white-space:nowrap}.lc-table th.lc-table__actions-cell--start,.lc-table td.lc-table__actions-cell--start{text-align:left}.lc-table th.lc-table__actions-cell--center,.lc-table td.lc-table__actions-cell--center{text-align:center}.lc-table th.lc-table__actions-cell--end,.lc-table td.lc-table__actions-cell--end{text-align:right}.lc-table__actions{display:flex;align-items:center;gap:var(--spacing-2);justify-content:flex-start}.lc-table__actions-cell--center .lc-table__actions{justify-content:center}.lc-table__actions-cell--end .lc-table__actions{justify-content:flex-end}.lc-table__tree-cell{display:flex;align-items:center;min-width:0}.lc-table__tree-indent{flex:0 0 auto;align-self:stretch;position:relative}.lc-table__tree-indent:before{content:\"\";position:absolute;left:50%;top:0;bottom:0;width:1px;background-color:var(--color-border)}.lc-table__tree-chevron{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center}.lc-table__chevron-btn{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;border:none;background:transparent;color:var(--color-text-secondary);cursor:pointer;border-radius:var(--border-radius-sm);transition:transform .2s ease,background-color .15s ease,color .15s ease}.lc-table__chevron-btn:hover{background-color:var(--color-surface-hover);color:var(--color-text-primary)}.lc-table__chevron-btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.lc-table__chevron-btn--expanded{transform:rotate(90deg)}.lc-table__tree-content{flex:1 1 auto;min-width:0}.lc-table__row--group .lc-table__tree-content{font-weight:var(--typography-font-weight-semibold)}.lc-table__edit-input{width:100%;padding:var(--spacing-1) var(--spacing-2);border:2px solid var(--color-primary);border-radius:var(--border-radius-sm);font-size:inherit;background-color:var(--color-surface-2);color:var(--color-text-primary);outline:none}.lc-table-pagination{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-3) var(--spacing-1);font-size:var(--typography-font-size-sm);color:var(--color-text-secondary)}.lc-table-pagination__info{white-space:nowrap}.lc-table-pagination__controls{display:flex;align-items:center;gap:var(--spacing-2)}.lc-table-pagination__size{display:block;min-width:110px}.lc-table-pagination__btn{appearance:none;border:1px solid var(--color-border);background-color:var(--color-surface);color:var(--color-text-primary);width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:var(--border-radius-sm);font-size:var(--typography-font-size-base);cursor:pointer;transition:background-color .15s ease}.lc-table-pagination__btn:hover:not(:disabled){background-color:var(--color-surface-hover)}.lc-table-pagination__btn:disabled{opacity:.4;cursor:not-allowed}.lc-table-pagination__page{white-space:nowrap;min-width:60px;text-align:center}@media(max-width:640px){.lc-table-wrapper--stack .lc-table thead{display:none}.lc-table-wrapper--stack .lc-table tbody tr{display:block;margin-bottom:var(--spacing-4);border:1px solid var(--color-border);border-radius:var(--border-radius-md)}.lc-table-wrapper--stack .lc-table tbody tr td{display:block;text-align:right;padding:var(--spacing-2) var(--spacing-4);border-bottom:1px solid var(--color-divider)}.lc-table-wrapper--stack .lc-table tbody tr td:last-child{border-bottom:none}.lc-table-wrapper--stack .lc-table tbody tr td:before{content:attr(data-label);float:left;font-weight:var(--typography-font-weight-semibold);color:var(--color-text-secondary)}}\n"]
1106
+ }]
1107
+ }],
1108
+ ctorParameters: () => [],
1109
+ propDecorators: {
1110
+ cellTemplates: [{
1111
+ type: ContentChildren,
1112
+ args: [TableCellDirective]
1113
+ }],
1114
+ columns: [{
1115
+ type: i0.Input,
1116
+ args: [{
1117
+ isSignal: true,
1118
+ alias: "columns",
1119
+ required: false
1120
+ }]
1121
+ }],
1122
+ data: [{
1123
+ type: i0.Input,
1124
+ args: [{
1125
+ isSignal: true,
1126
+ alias: "data",
1127
+ required: false
1128
+ }]
1129
+ }],
1130
+ variant: [{
1131
+ type: i0.Input,
1132
+ args: [{
1133
+ isSignal: true,
1134
+ alias: "variant",
1135
+ required: false
1136
+ }]
1137
+ }],
1138
+ size: [{
1139
+ type: i0.Input,
1140
+ args: [{
1141
+ isSignal: true,
1142
+ alias: "size",
1143
+ required: false
1144
+ }]
1145
+ }],
1146
+ hoverable: [{
1147
+ type: i0.Input,
1148
+ args: [{
1149
+ isSignal: true,
1150
+ alias: "hoverable",
1151
+ required: false
1152
+ }]
1153
+ }],
1154
+ responsive: [{
1155
+ type: i0.Input,
1156
+ args: [{
1157
+ isSignal: true,
1158
+ alias: "responsive",
1159
+ required: false
1160
+ }]
1161
+ }],
1162
+ emptyText: [{
1163
+ type: i0.Input,
1164
+ args: [{
1165
+ isSignal: true,
1166
+ alias: "emptyText",
1167
+ required: false
1168
+ }]
1169
+ }],
1170
+ filterPlaceholderLabel: [{
1171
+ type: i0.Input,
1172
+ args: [{
1173
+ isSignal: true,
1174
+ alias: "filterPlaceholderLabel",
1175
+ required: false
1176
+ }]
1177
+ }],
1178
+ selectAllAriaLabel: [{
1179
+ type: i0.Input,
1180
+ args: [{
1181
+ isSignal: true,
1182
+ alias: "selectAllAriaLabel",
1183
+ required: false
1184
+ }]
1185
+ }],
1186
+ selectRowAriaLabel: [{
1187
+ type: i0.Input,
1188
+ args: [{
1189
+ isSignal: true,
1190
+ alias: "selectRowAriaLabel",
1191
+ required: false
1192
+ }]
1193
+ }],
1194
+ sortedAscendingLabel: [{
1195
+ type: i0.Input,
1196
+ args: [{
1197
+ isSignal: true,
1198
+ alias: "sortedAscendingLabel",
1199
+ required: false
1200
+ }]
1201
+ }],
1202
+ sortedDescendingLabel: [{
1203
+ type: i0.Input,
1204
+ args: [{
1205
+ isSignal: true,
1206
+ alias: "sortedDescendingLabel",
1207
+ required: false
1208
+ }]
1209
+ }],
1210
+ expandRowAriaLabel: [{
1211
+ type: i0.Input,
1212
+ args: [{
1213
+ isSignal: true,
1214
+ alias: "expandRowAriaLabel",
1215
+ required: false
1216
+ }]
1217
+ }],
1218
+ collapseRowAriaLabel: [{
1219
+ type: i0.Input,
1220
+ args: [{
1221
+ isSignal: true,
1222
+ alias: "collapseRowAriaLabel",
1223
+ required: false
1224
+ }]
1225
+ }],
1226
+ rangeOfLabel: [{
1227
+ type: i0.Input,
1228
+ args: [{
1229
+ isSignal: true,
1230
+ alias: "rangeOfLabel",
1231
+ required: false
1232
+ }]
1233
+ }],
1234
+ rowsPerPageAriaLabel: [{
1235
+ type: i0.Input,
1236
+ args: [{
1237
+ isSignal: true,
1238
+ alias: "rowsPerPageAriaLabel",
1239
+ required: false
1240
+ }]
1241
+ }],
1242
+ previousPageAriaLabel: [{
1243
+ type: i0.Input,
1244
+ args: [{
1245
+ isSignal: true,
1246
+ alias: "previousPageAriaLabel",
1247
+ required: false
1248
+ }]
1249
+ }],
1250
+ nextPageAriaLabel: [{
1251
+ type: i0.Input,
1252
+ args: [{
1253
+ isSignal: true,
1254
+ alias: "nextPageAriaLabel",
1255
+ required: false
1256
+ }]
1257
+ }],
1258
+ paginate: [{
1259
+ type: i0.Input,
1260
+ args: [{
1261
+ isSignal: true,
1262
+ alias: "paginate",
1263
+ required: false
1264
+ }]
1265
+ }],
1266
+ pageSize: [{
1267
+ type: i0.Input,
1268
+ args: [{
1269
+ isSignal: true,
1270
+ alias: "pageSize",
1271
+ required: false
1272
+ }]
1273
+ }],
1274
+ pageSizeOptions: [{
1275
+ type: i0.Input,
1276
+ args: [{
1277
+ isSignal: true,
1278
+ alias: "pageSizeOptions",
1279
+ required: false
1280
+ }]
1281
+ }],
1282
+ selectable: [{
1283
+ type: i0.Input,
1284
+ args: [{
1285
+ isSignal: true,
1286
+ alias: "selectable",
1287
+ required: false
1288
+ }]
1289
+ }],
1290
+ filterable: [{
1291
+ type: i0.Input,
1292
+ args: [{
1293
+ isSignal: true,
1294
+ alias: "filterable",
1295
+ required: false
1296
+ }]
1297
+ }],
1298
+ editable: [{
1299
+ type: i0.Input,
1300
+ args: [{
1301
+ isSignal: true,
1302
+ alias: "editable",
1303
+ required: false
1304
+ }]
1305
+ }],
1306
+ actions: [{
1307
+ type: i0.Input,
1308
+ args: [{
1309
+ isSignal: true,
1310
+ alias: "actions",
1311
+ required: false
1312
+ }]
1313
+ }],
1314
+ actionsLabel: [{
1315
+ type: i0.Input,
1316
+ args: [{
1317
+ isSignal: true,
1318
+ alias: "actionsLabel",
1319
+ required: false
1320
+ }]
1321
+ }],
1322
+ actionsWidth: [{
1323
+ type: i0.Input,
1324
+ args: [{
1325
+ isSignal: true,
1326
+ alias: "actionsWidth",
1327
+ required: false
1328
+ }]
1329
+ }],
1330
+ actionsAlign: [{
1331
+ type: i0.Input,
1332
+ args: [{
1333
+ isSignal: true,
1334
+ alias: "actionsAlign",
1335
+ required: false
1336
+ }]
1337
+ }],
1338
+ idKey: [{
1339
+ type: i0.Input,
1340
+ args: [{
1341
+ isSignal: true,
1342
+ alias: "idKey",
1343
+ required: false
1344
+ }]
1345
+ }],
1346
+ parentKey: [{
1347
+ type: i0.Input,
1348
+ args: [{
1349
+ isSignal: true,
1350
+ alias: "parentKey",
1351
+ required: false
1352
+ }]
1353
+ }],
1354
+ treeColumn: [{
1355
+ type: i0.Input,
1356
+ args: [{
1357
+ isSignal: true,
1358
+ alias: "treeColumn",
1359
+ required: false
1360
+ }]
1361
+ }],
1362
+ defaultExpanded: [{
1363
+ type: i0.Input,
1364
+ args: [{
1365
+ isSignal: true,
1366
+ alias: "defaultExpanded",
1367
+ required: false
1368
+ }]
1369
+ }],
1370
+ expandedIds: [{
1371
+ type: i0.Input,
1372
+ args: [{
1373
+ isSignal: true,
1374
+ alias: "expandedIds",
1375
+ required: false
1376
+ }]
1377
+ }],
1378
+ indentSize: [{
1379
+ type: i0.Input,
1380
+ args: [{
1381
+ isSignal: true,
1382
+ alias: "indentSize",
1383
+ required: false
1384
+ }]
1385
+ }],
1386
+ filterAriaLabel: [{
1387
+ type: i0.Input,
1388
+ args: [{
1389
+ isSignal: true,
1390
+ alias: "filterAriaLabel",
1391
+ required: false
1392
+ }]
1393
+ }],
1394
+ sort: [{
1395
+ type: i0.Output,
1396
+ args: ["sort"]
1397
+ }],
1398
+ rowClick: [{
1399
+ type: i0.Output,
1400
+ args: ["rowClick"]
1401
+ }],
1402
+ cellEdit: [{
1403
+ type: i0.Output,
1404
+ args: ["cellEdit"]
1405
+ }],
1406
+ selectionChange: [{
1407
+ type: i0.Output,
1408
+ args: ["selectionChange"]
1409
+ }],
1410
+ actionClick: [{
1411
+ type: i0.Output,
1412
+ args: ["actionClick"]
1413
+ }],
1414
+ rowToggle: [{
1415
+ type: i0.Output,
1416
+ args: ["rowToggle"]
1417
+ }],
1418
+ expandedIdsChange: [{
1419
+ type: i0.Output,
1420
+ args: ["expandedIdsChange"]
1421
+ }],
1422
+ editInput: [{
1423
+ type: i0.ViewChild,
1424
+ args: ["editInput", { isSignal: true }]
1425
+ }],
1426
+ rowEls: [{
1427
+ type: i0.ViewChildren,
1428
+ args: ["dataRow", { isSignal: true }]
1429
+ }]
1430
+ }
1431
+ });
1432
+ export { TableCellDirective, TableComponent };
1433
+
1434
+ //# sourceMappingURL=lifecorner-angular-ui-kit-table.mjs.map