ngwr 6.1.1 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (605) hide show
  1. package/LICENSE +1 -3
  2. package/README.md +179 -32
  3. package/affix/styles/_index.scss +12 -0
  4. package/alert/styles/_index.scss +75 -32
  5. package/anchor/styles/_index.scss +59 -0
  6. package/aurora/aurora.scss +1 -0
  7. package/aurora/styles/_index.scss +30 -0
  8. package/avatar/styles/_index.scss +30 -14
  9. package/back-top/styles/_index.scss +42 -0
  10. package/badge/styles/_index.scss +80 -0
  11. package/badge/styles/_tag.scss +81 -0
  12. package/bar-chart/styles/_index.scss +56 -0
  13. package/blur-text/blur-text.scss +1 -0
  14. package/blur-text/styles/_index.scss +14 -0
  15. package/border-glow/border-glow.scss +4 -0
  16. package/border-glow/styles/_index.scss +228 -0
  17. package/breadcrumbs/breadcrumbs.scss +1 -0
  18. package/breadcrumbs/styles/_index.scss +76 -0
  19. package/button/styles/_index.scss +148 -125
  20. package/calendar/styles/_index.scss +252 -0
  21. package/calendar-heatmap/styles/_index.scss +69 -0
  22. package/card/card.scss +1 -0
  23. package/card/styles/_index.scss +96 -0
  24. package/carousel/styles/_index.scss +102 -0
  25. package/cascader/cascader.scss +1 -0
  26. package/cascader/styles/_index.scss +174 -0
  27. package/checkbox/styles/_index.scss +76 -60
  28. package/circular-text/circular-text.scss +1 -0
  29. package/circular-text/styles/_index.scss +45 -0
  30. package/click-spark/click-spark.scss +1 -0
  31. package/click-spark/styles/_index.scss +16 -0
  32. package/collapse/styles/_index.scss +92 -0
  33. package/color-picker/styles/_index.scss +247 -0
  34. package/command-palette/styles/_index.scss +188 -0
  35. package/compare/styles/_index.scss +100 -0
  36. package/context-menu/styles/_index.scss +112 -0
  37. package/counter/styles/_index.scss +44 -0
  38. package/date-picker/styles/_index.scss +204 -0
  39. package/decrypt-text/decrypt-text.scss +1 -0
  40. package/decrypt-text/styles/_index.scss +26 -0
  41. package/density/styles/_index.scss +37 -0
  42. package/descriptions/styles/_index.scss +104 -0
  43. package/dialog/styles/_index.scss +101 -27
  44. package/divider/styles/_index.scss +43 -24
  45. package/donut-chart/styles/_index.scss +76 -0
  46. package/drag-drop/sortable-list.scss +1 -0
  47. package/drag-drop/styles/_index.scss +99 -0
  48. package/drawer/styles/_index.scss +164 -0
  49. package/dropdown/styles/_index.scss +76 -56
  50. package/empty/styles/_index.scss +49 -0
  51. package/falling-text/falling-text.scss +1 -0
  52. package/falling-text/styles/_index.scss +30 -0
  53. package/fesm2022/ngwr-affix.mjs +102 -0
  54. package/fesm2022/ngwr-affix.mjs.map +1 -0
  55. package/fesm2022/ngwr-alert.mjs +70 -52
  56. package/fesm2022/ngwr-alert.mjs.map +1 -1
  57. package/fesm2022/ngwr-anchor.mjs +103 -0
  58. package/fesm2022/ngwr-anchor.mjs.map +1 -0
  59. package/fesm2022/ngwr-aurora.mjs +309 -0
  60. package/fesm2022/ngwr-aurora.mjs.map +1 -0
  61. package/fesm2022/ngwr-avatar.mjs +81 -71
  62. package/fesm2022/ngwr-avatar.mjs.map +1 -1
  63. package/fesm2022/ngwr-back-top.mjs +81 -0
  64. package/fesm2022/ngwr-back-top.mjs.map +1 -0
  65. package/fesm2022/ngwr-badge.mjs +192 -0
  66. package/fesm2022/ngwr-badge.mjs.map +1 -0
  67. package/fesm2022/ngwr-bar-chart.mjs +69 -0
  68. package/fesm2022/ngwr-bar-chart.mjs.map +1 -0
  69. package/fesm2022/ngwr-blur-text.mjs +181 -0
  70. package/fesm2022/ngwr-blur-text.mjs.map +1 -0
  71. package/fesm2022/ngwr-border-glow.mjs +278 -0
  72. package/fesm2022/ngwr-border-glow.mjs.map +1 -0
  73. package/fesm2022/ngwr-breadcrumbs.mjs +101 -0
  74. package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -0
  75. package/fesm2022/ngwr-button.mjs +179 -104
  76. package/fesm2022/ngwr-button.mjs.map +1 -1
  77. package/fesm2022/ngwr-calendar-heatmap.mjs +145 -0
  78. package/fesm2022/ngwr-calendar-heatmap.mjs.map +1 -0
  79. package/fesm2022/ngwr-calendar.mjs +402 -0
  80. package/fesm2022/ngwr-calendar.mjs.map +1 -0
  81. package/fesm2022/ngwr-card.mjs +100 -0
  82. package/fesm2022/ngwr-card.mjs.map +1 -0
  83. package/fesm2022/ngwr-carousel.mjs +128 -0
  84. package/fesm2022/ngwr-carousel.mjs.map +1 -0
  85. package/fesm2022/ngwr-cascader.mjs +280 -0
  86. package/fesm2022/ngwr-cascader.mjs.map +1 -0
  87. package/fesm2022/ngwr-checkbox.mjs +214 -54
  88. package/fesm2022/ngwr-checkbox.mjs.map +1 -1
  89. package/fesm2022/ngwr-circular-text.mjs +168 -0
  90. package/fesm2022/ngwr-circular-text.mjs.map +1 -0
  91. package/fesm2022/ngwr-click-spark.mjs +163 -0
  92. package/fesm2022/ngwr-click-spark.mjs.map +1 -0
  93. package/fesm2022/ngwr-clipboard.mjs +130 -0
  94. package/fesm2022/ngwr-clipboard.mjs.map +1 -0
  95. package/fesm2022/ngwr-collapse.mjs +232 -0
  96. package/fesm2022/ngwr-collapse.mjs.map +1 -0
  97. package/fesm2022/ngwr-color-picker.mjs +646 -0
  98. package/fesm2022/ngwr-color-picker.mjs.map +1 -0
  99. package/fesm2022/ngwr-command-palette.mjs +259 -0
  100. package/fesm2022/ngwr-command-palette.mjs.map +1 -0
  101. package/fesm2022/ngwr-compare.mjs +137 -0
  102. package/fesm2022/ngwr-compare.mjs.map +1 -0
  103. package/fesm2022/ngwr-confetti.mjs +160 -0
  104. package/fesm2022/ngwr-confetti.mjs.map +1 -0
  105. package/fesm2022/ngwr-context-menu.mjs +653 -0
  106. package/fesm2022/ngwr-context-menu.mjs.map +1 -0
  107. package/fesm2022/ngwr-cookie.mjs +127 -0
  108. package/fesm2022/ngwr-cookie.mjs.map +1 -0
  109. package/fesm2022/ngwr-counter.mjs +415 -0
  110. package/fesm2022/ngwr-counter.mjs.map +1 -0
  111. package/fesm2022/ngwr-date-adapter-fns.mjs +180 -0
  112. package/fesm2022/ngwr-date-adapter-fns.mjs.map +1 -0
  113. package/fesm2022/ngwr-date-adapter-luxon.mjs +201 -0
  114. package/fesm2022/ngwr-date-adapter-luxon.mjs.map +1 -0
  115. package/fesm2022/ngwr-date-adapter.mjs +419 -0
  116. package/fesm2022/ngwr-date-adapter.mjs.map +1 -0
  117. package/fesm2022/ngwr-date-picker.mjs +624 -0
  118. package/fesm2022/ngwr-date-picker.mjs.map +1 -0
  119. package/fesm2022/ngwr-decrypt-text.mjs +396 -0
  120. package/fesm2022/ngwr-decrypt-text.mjs.map +1 -0
  121. package/fesm2022/ngwr-density.mjs +157 -0
  122. package/fesm2022/ngwr-density.mjs.map +1 -0
  123. package/fesm2022/ngwr-descriptions.mjs +83 -0
  124. package/fesm2022/ngwr-descriptions.mjs.map +1 -0
  125. package/fesm2022/ngwr-dialog.mjs +249 -377
  126. package/fesm2022/ngwr-dialog.mjs.map +1 -1
  127. package/fesm2022/ngwr-directives.mjs +315 -0
  128. package/fesm2022/ngwr-directives.mjs.map +1 -0
  129. package/fesm2022/ngwr-divider.mjs +74 -59
  130. package/fesm2022/ngwr-divider.mjs.map +1 -1
  131. package/fesm2022/ngwr-donut-chart.mjs +131 -0
  132. package/fesm2022/ngwr-donut-chart.mjs.map +1 -0
  133. package/fesm2022/ngwr-drag-drop.mjs +117 -0
  134. package/fesm2022/ngwr-drag-drop.mjs.map +1 -0
  135. package/fesm2022/ngwr-drawer.mjs +315 -0
  136. package/fesm2022/ngwr-drawer.mjs.map +1 -0
  137. package/fesm2022/ngwr-dropdown.mjs +276 -229
  138. package/fesm2022/ngwr-dropdown.mjs.map +1 -1
  139. package/fesm2022/ngwr-empty.mjs +57 -0
  140. package/fesm2022/ngwr-empty.mjs.map +1 -0
  141. package/fesm2022/ngwr-falling-text.mjs +316 -0
  142. package/fesm2022/ngwr-falling-text.mjs.map +1 -0
  143. package/fesm2022/ngwr-file-upload.mjs +260 -0
  144. package/fesm2022/ngwr-file-upload.mjs.map +1 -0
  145. package/fesm2022/ngwr-form.mjs +133 -48
  146. package/fesm2022/ngwr-form.mjs.map +1 -1
  147. package/fesm2022/ngwr-fuzzy-text.mjs +373 -0
  148. package/fesm2022/ngwr-fuzzy-text.mjs.map +1 -0
  149. package/fesm2022/ngwr-gauge.mjs +83 -0
  150. package/fesm2022/ngwr-gauge.mjs.map +1 -0
  151. package/fesm2022/ngwr-glitch-text.mjs +67 -0
  152. package/fesm2022/ngwr-glitch-text.mjs.map +1 -0
  153. package/fesm2022/ngwr-gradient-text.mjs +109 -0
  154. package/fesm2022/ngwr-gradient-text.mjs.map +1 -0
  155. package/fesm2022/ngwr-hotkey.mjs +263 -0
  156. package/fesm2022/ngwr-hotkey.mjs.map +1 -0
  157. package/fesm2022/ngwr-i18n-en.mjs +168 -0
  158. package/fesm2022/ngwr-i18n-en.mjs.map +1 -0
  159. package/fesm2022/ngwr-i18n-ru.mjs +156 -0
  160. package/fesm2022/ngwr-i18n-ru.mjs.map +1 -0
  161. package/fesm2022/ngwr-i18n.mjs +478 -0
  162. package/fesm2022/ngwr-i18n.mjs.map +1 -0
  163. package/fesm2022/ngwr-icon-adapters-feather.mjs +74 -0
  164. package/fesm2022/ngwr-icon-adapters-feather.mjs.map +1 -0
  165. package/fesm2022/ngwr-icon-adapters-lucide.mjs +88 -0
  166. package/fesm2022/ngwr-icon-adapters-lucide.mjs.map +1 -0
  167. package/fesm2022/ngwr-icon.mjs +189 -649
  168. package/fesm2022/ngwr-icon.mjs.map +1 -1
  169. package/fesm2022/ngwr-image-cropper.mjs +299 -0
  170. package/fesm2022/ngwr-image-cropper.mjs.map +1 -0
  171. package/fesm2022/ngwr-input-number.mjs +239 -0
  172. package/fesm2022/ngwr-input-number.mjs.map +1 -0
  173. package/fesm2022/ngwr-input-otp.mjs +216 -0
  174. package/fesm2022/ngwr-input-otp.mjs.map +1 -0
  175. package/fesm2022/ngwr-input.mjs +183 -104
  176. package/fesm2022/ngwr-input.mjs.map +1 -1
  177. package/fesm2022/ngwr-keyboard.mjs +47 -0
  178. package/fesm2022/ngwr-keyboard.mjs.map +1 -0
  179. package/fesm2022/ngwr-knob.mjs +227 -0
  180. package/fesm2022/ngwr-knob.mjs.map +1 -0
  181. package/fesm2022/ngwr-layout.mjs +197 -0
  182. package/fesm2022/ngwr-layout.mjs.map +1 -0
  183. package/fesm2022/ngwr-lightbox.mjs +131 -0
  184. package/fesm2022/ngwr-lightbox.mjs.map +1 -0
  185. package/fesm2022/ngwr-line-chart.mjs +176 -0
  186. package/fesm2022/ngwr-line-chart.mjs.map +1 -0
  187. package/fesm2022/ngwr-list.mjs +132 -0
  188. package/fesm2022/ngwr-list.mjs.map +1 -0
  189. package/fesm2022/ngwr-loading-bar.mjs +160 -0
  190. package/fesm2022/ngwr-loading-bar.mjs.map +1 -0
  191. package/fesm2022/ngwr-marquee.mjs +224 -0
  192. package/fesm2022/ngwr-marquee.mjs.map +1 -0
  193. package/fesm2022/ngwr-media.mjs +132 -0
  194. package/fesm2022/ngwr-media.mjs.map +1 -0
  195. package/fesm2022/ngwr-mention.mjs +374 -0
  196. package/fesm2022/ngwr-mention.mjs.map +1 -0
  197. package/fesm2022/ngwr-meta.mjs +266 -0
  198. package/fesm2022/ngwr-meta.mjs.map +1 -0
  199. package/fesm2022/ngwr-meter-group.mjs +73 -0
  200. package/fesm2022/ngwr-meter-group.mjs.map +1 -0
  201. package/fesm2022/ngwr-overlay.mjs +145 -0
  202. package/fesm2022/ngwr-overlay.mjs.map +1 -0
  203. package/fesm2022/ngwr-page-header.mjs +53 -0
  204. package/fesm2022/ngwr-page-header.mjs.map +1 -0
  205. package/fesm2022/ngwr-pagination.mjs +152 -96
  206. package/fesm2022/ngwr-pagination.mjs.map +1 -1
  207. package/fesm2022/ngwr-pipes.mjs +290 -11
  208. package/fesm2022/ngwr-pipes.mjs.map +1 -1
  209. package/fesm2022/ngwr-platform.mjs +63 -0
  210. package/fesm2022/ngwr-platform.mjs.map +1 -0
  211. package/fesm2022/ngwr-popconfirm.mjs +188 -0
  212. package/fesm2022/ngwr-popconfirm.mjs.map +1 -0
  213. package/fesm2022/ngwr-popover.mjs +361 -0
  214. package/fesm2022/ngwr-popover.mjs.map +1 -0
  215. package/fesm2022/ngwr-progress.mjs +47 -39
  216. package/fesm2022/ngwr-progress.mjs.map +1 -1
  217. package/fesm2022/ngwr-qr.mjs +160 -179
  218. package/fesm2022/ngwr-qr.mjs.map +1 -1
  219. package/fesm2022/ngwr-radio.mjs +204 -0
  220. package/fesm2022/ngwr-radio.mjs.map +1 -0
  221. package/fesm2022/ngwr-rating.mjs +180 -0
  222. package/fesm2022/ngwr-rating.mjs.map +1 -0
  223. package/fesm2022/ngwr-result.mjs +119 -0
  224. package/fesm2022/ngwr-result.mjs.map +1 -0
  225. package/fesm2022/ngwr-rotating-text.mjs +256 -0
  226. package/fesm2022/ngwr-rotating-text.mjs.map +1 -0
  227. package/fesm2022/ngwr-scramble-text.mjs +165 -0
  228. package/fesm2022/ngwr-scramble-text.mjs.map +1 -0
  229. package/fesm2022/ngwr-scroll.mjs +107 -0
  230. package/fesm2022/ngwr-scroll.mjs.map +1 -0
  231. package/fesm2022/ngwr-segmented.mjs +96 -0
  232. package/fesm2022/ngwr-segmented.mjs.map +1 -0
  233. package/fesm2022/ngwr-select.mjs +844 -309
  234. package/fesm2022/ngwr-select.mjs.map +1 -1
  235. package/fesm2022/ngwr-shiny-text.mjs +127 -0
  236. package/fesm2022/ngwr-shiny-text.mjs.map +1 -0
  237. package/fesm2022/ngwr-sidebar.mjs +134 -0
  238. package/fesm2022/ngwr-sidebar.mjs.map +1 -0
  239. package/fesm2022/ngwr-skeleton.mjs +59 -34
  240. package/fesm2022/ngwr-skeleton.mjs.map +1 -1
  241. package/fesm2022/ngwr-slider.mjs +234 -0
  242. package/fesm2022/ngwr-slider.mjs.map +1 -0
  243. package/fesm2022/ngwr-sparkline.mjs +104 -0
  244. package/fesm2022/ngwr-sparkline.mjs.map +1 -0
  245. package/fesm2022/ngwr-speed-dial.mjs +79 -0
  246. package/fesm2022/ngwr-speed-dial.mjs.map +1 -0
  247. package/fesm2022/ngwr-spinner.mjs +34 -28
  248. package/fesm2022/ngwr-spinner.mjs.map +1 -1
  249. package/fesm2022/ngwr-splash-cursor.mjs +970 -0
  250. package/fesm2022/ngwr-splash-cursor.mjs.map +1 -0
  251. package/fesm2022/ngwr-split-text.mjs +200 -0
  252. package/fesm2022/ngwr-split-text.mjs.map +1 -0
  253. package/fesm2022/ngwr-splitter.mjs +125 -0
  254. package/fesm2022/ngwr-splitter.mjs.map +1 -0
  255. package/fesm2022/ngwr-spotlight-card.mjs +138 -0
  256. package/fesm2022/ngwr-spotlight-card.mjs.map +1 -0
  257. package/fesm2022/ngwr-squircle.mjs +320 -0
  258. package/fesm2022/ngwr-squircle.mjs.map +1 -0
  259. package/fesm2022/ngwr-star-border.mjs +72 -0
  260. package/fesm2022/ngwr-star-border.mjs.map +1 -0
  261. package/fesm2022/ngwr-statistic.mjs +220 -0
  262. package/fesm2022/ngwr-statistic.mjs.map +1 -0
  263. package/fesm2022/ngwr-stepper.mjs +186 -0
  264. package/fesm2022/ngwr-stepper.mjs.map +1 -0
  265. package/fesm2022/ngwr-storage.mjs +317 -0
  266. package/fesm2022/ngwr-storage.mjs.map +1 -0
  267. package/fesm2022/ngwr-switch.mjs +99 -0
  268. package/fesm2022/ngwr-switch.mjs.map +1 -0
  269. package/fesm2022/ngwr-table.mjs +217 -206
  270. package/fesm2022/ngwr-table.mjs.map +1 -1
  271. package/fesm2022/ngwr-tabs.mjs +217 -0
  272. package/fesm2022/ngwr-tabs.mjs.map +1 -0
  273. package/fesm2022/ngwr-textarea.mjs +106 -120
  274. package/fesm2022/ngwr-textarea.mjs.map +1 -1
  275. package/fesm2022/ngwr-theme.mjs +152 -0
  276. package/fesm2022/ngwr-theme.mjs.map +1 -0
  277. package/fesm2022/ngwr-tilt-card.mjs +137 -0
  278. package/fesm2022/ngwr-tilt-card.mjs.map +1 -0
  279. package/fesm2022/ngwr-timeline.mjs +73 -0
  280. package/fesm2022/ngwr-timeline.mjs.map +1 -0
  281. package/fesm2022/ngwr-toast.mjs +446 -0
  282. package/fesm2022/ngwr-toast.mjs.map +1 -0
  283. package/fesm2022/ngwr-toolbar.mjs +46 -0
  284. package/fesm2022/ngwr-toolbar.mjs.map +1 -0
  285. package/fesm2022/ngwr-tree.mjs +483 -0
  286. package/fesm2022/ngwr-tree.mjs.map +1 -0
  287. package/fesm2022/ngwr-typewriter.mjs +229 -0
  288. package/fesm2022/ngwr-typewriter.mjs.map +1 -0
  289. package/fesm2022/ngwr-typography.mjs +79 -0
  290. package/fesm2022/ngwr-typography.mjs.map +1 -0
  291. package/fesm2022/ngwr-utils.mjs +535 -0
  292. package/fesm2022/ngwr-utils.mjs.map +1 -0
  293. package/fesm2022/ngwr-validators.mjs +214 -0
  294. package/fesm2022/ngwr-validators.mjs.map +1 -0
  295. package/fesm2022/ngwr-version.mjs +51 -0
  296. package/fesm2022/ngwr-version.mjs.map +1 -0
  297. package/fesm2022/ngwr-virtual-scroll.mjs +99 -0
  298. package/fesm2022/ngwr-virtual-scroll.mjs.map +1 -0
  299. package/fesm2022/ngwr-waves.mjs +356 -0
  300. package/fesm2022/ngwr-waves.mjs.map +1 -0
  301. package/fesm2022/ngwr-window.mjs +1141 -0
  302. package/fesm2022/ngwr-window.mjs.map +1 -0
  303. package/fesm2022/ngwr.mjs +0 -3
  304. package/fesm2022/ngwr.mjs.map +1 -1
  305. package/file-upload/styles/_index.scss +152 -0
  306. package/form/styles/_index.scss +85 -42
  307. package/gauge/styles/_index.scss +37 -0
  308. package/glitch-text/glitch-text.scss +1 -0
  309. package/glitch-text/styles/_index.scss +144 -0
  310. package/gradient-text/gradient-text.scss +1 -0
  311. package/gradient-text/styles/_index.scss +113 -0
  312. package/icon/styles/_index.scss +21 -15
  313. package/image-cropper/styles/_index.scss +114 -0
  314. package/input/styles/_index.scss +133 -93
  315. package/input-number/styles/_index.scss +75 -0
  316. package/input-otp/styles/_index.scss +53 -0
  317. package/keyboard/styles/_index.scss +55 -0
  318. package/knob/styles/_index.scss +54 -0
  319. package/layout/styles/_index.scss +65 -0
  320. package/lightbox/lightbox.scss +1 -0
  321. package/lightbox/styles/_index.scss +144 -0
  322. package/line-chart/styles/_index.scss +93 -0
  323. package/list/list.scss +1 -0
  324. package/list/styles/_index.scss +101 -0
  325. package/loading-bar/loading-bar.scss +1 -0
  326. package/loading-bar/styles/_index.scss +29 -0
  327. package/marquee/marquee.scss +1 -0
  328. package/marquee/styles/_index.scss +138 -0
  329. package/mention/styles/_index.scss +47 -0
  330. package/meter-group/styles/_index.scss +61 -0
  331. package/package.json +576 -99
  332. package/page-header/styles/_index.scss +78 -0
  333. package/pagination/styles/_index.scss +89 -34
  334. package/popconfirm/styles/_index.scss +32 -0
  335. package/popover/styles/_index.scss +83 -0
  336. package/progress/styles/_index.scss +29 -14
  337. package/qr/styles/_index.scss +6 -3
  338. package/radio/styles/_index.scss +111 -0
  339. package/rating/styles/_index.scss +63 -0
  340. package/result/styles/_index.scss +69 -0
  341. package/rotating-text/rotating-text.scss +1 -0
  342. package/rotating-text/styles/_index.scss +39 -0
  343. package/schematics/collection.json +37 -0
  344. package/schematics/component-style/index.js +49 -0
  345. package/{cdk/utils/index.d.ts → schematics/component-style/schema.js} +2 -8
  346. package/schematics/component-style/schema.json +20 -0
  347. package/schematics/icon-set/index.js +96 -0
  348. package/schematics/icon-set/schema.js +8 -0
  349. package/schematics/icon-set/schema.json +39 -0
  350. package/schematics/migrations/v7/index.js +187 -0
  351. package/schematics/migrations.json +10 -0
  352. package/schematics/ng-add/index.js +180 -0
  353. package/schematics/ng-add/schema.js +8 -0
  354. package/schematics/ng-add/schema.json +80 -0
  355. package/schematics/page/index.js +63 -0
  356. package/schematics/page/schema.js +8 -0
  357. package/schematics/page/schema.json +39 -0
  358. package/schematics/page/templates.js +198 -0
  359. package/schematics/provider/index.js +126 -0
  360. package/schematics/provider/schema.js +8 -0
  361. package/schematics/provider/schema.json +52 -0
  362. package/schematics/use/index.js +143 -0
  363. package/schematics/use/schema.js +8 -0
  364. package/schematics/use/schema.json +25 -0
  365. package/schematics/use/symbol-map.json +356 -0
  366. package/scramble-text/scramble-text.scss +1 -0
  367. package/scramble-text/styles/_index.scss +8 -0
  368. package/segmented/styles/_index.scss +92 -0
  369. package/select/styles/_index.scss +245 -159
  370. package/shiny-text/shiny-text.scss +1 -0
  371. package/shiny-text/styles/_index.scss +101 -0
  372. package/sidebar/styles/_index.scss +208 -0
  373. package/skeleton/styles/_index.scss +33 -33
  374. package/slider/styles/_index.scss +77 -0
  375. package/sparkline/styles/_index.scss +9 -0
  376. package/speed-dial/styles/_index.scss +158 -0
  377. package/spinner/styles/_index.scss +38 -22
  378. package/splash-cursor/splash-cursor.scss +1 -0
  379. package/splash-cursor/styles/_index.scss +27 -0
  380. package/split-text/split-text.scss +1 -0
  381. package/split-text/styles/_index.scss +22 -0
  382. package/splitter/styles/_index.scss +85 -0
  383. package/spotlight-card/spotlight-card.scss +1 -0
  384. package/spotlight-card/styles/_index.scss +43 -0
  385. package/squircle/styles/_index.scss +34 -0
  386. package/star-border/star-border.scss +1 -0
  387. package/star-border/styles/_index.scss +118 -0
  388. package/statistic/styles/_index.scss +54 -0
  389. package/stepper/styles/_index.scss +162 -0
  390. package/styles/_animations.scss +198 -0
  391. package/styles/_breakpoints.scss +75 -0
  392. package/styles/_grid.scss +71 -0
  393. package/styles/_reset.scss +123 -0
  394. package/styles/_typography.scss +122 -0
  395. package/styles.scss +102 -13
  396. package/switch/styles/_index.scss +82 -0
  397. package/table/styles/_index.scss +255 -4
  398. package/tabs/styles/_index.scss +71 -0
  399. package/textarea/styles/_index.scss +47 -56
  400. package/theme/styles/_colors.scss +83 -0
  401. package/theme/styles/_dark.scss +85 -0
  402. package/theme/styles/_focus.scss +93 -0
  403. package/theme/styles/_index.scss +5 -0
  404. package/theme/styles/_mixins.scss +57 -0
  405. package/theme/styles/_variables.scss +118 -0
  406. package/tilt-card/styles/_index.scss +40 -0
  407. package/tilt-card/tilt-card.scss +1 -0
  408. package/timeline/styles/_index.scss +127 -0
  409. package/toast/styles/_index.scss +263 -0
  410. package/toolbar/styles/_index.scss +65 -0
  411. package/tree/styles/_index.scss +271 -0
  412. package/types/ngwr-affix.d.ts +43 -0
  413. package/types/ngwr-alert.d.ts +68 -0
  414. package/types/ngwr-anchor.d.ts +53 -0
  415. package/types/ngwr-aurora.d.ts +52 -0
  416. package/types/ngwr-avatar.d.ts +90 -0
  417. package/types/ngwr-back-top.d.ts +37 -0
  418. package/types/ngwr-badge.d.ts +158 -0
  419. package/types/ngwr-bar-chart.d.ts +47 -0
  420. package/types/ngwr-blur-text.d.ts +62 -0
  421. package/types/ngwr-border-glow.d.ts +66 -0
  422. package/types/ngwr-breadcrumbs.d.ts +61 -0
  423. package/types/ngwr-button.d.ts +176 -0
  424. package/types/ngwr-calendar-heatmap.d.ts +58 -0
  425. package/types/ngwr-calendar.d.ts +116 -0
  426. package/types/ngwr-card.d.ts +50 -0
  427. package/types/ngwr-carousel.d.ts +57 -0
  428. package/types/ngwr-cascader.d.ts +107 -0
  429. package/types/ngwr-checkbox.d.ts +139 -0
  430. package/types/ngwr-circular-text.d.ts +49 -0
  431. package/types/ngwr-click-spark.d.ts +52 -0
  432. package/types/ngwr-clipboard.d.ts +53 -0
  433. package/types/ngwr-collapse.d.ts +139 -0
  434. package/types/ngwr-color-picker.d.ts +302 -0
  435. package/types/ngwr-command-palette.d.ts +113 -0
  436. package/types/ngwr-compare.d.ts +55 -0
  437. package/types/ngwr-confetti.d.ts +70 -0
  438. package/types/ngwr-context-menu.d.ts +207 -0
  439. package/types/ngwr-cookie.d.ts +60 -0
  440. package/types/ngwr-counter.d.ts +182 -0
  441. package/types/ngwr-date-adapter-fns.d.ts +73 -0
  442. package/types/ngwr-date-adapter-luxon.d.ts +73 -0
  443. package/types/ngwr-date-adapter.d.ts +198 -0
  444. package/types/ngwr-date-picker.d.ts +117 -0
  445. package/types/ngwr-decrypt-text.d.ts +85 -0
  446. package/types/ngwr-density.d.ts +97 -0
  447. package/types/ngwr-descriptions.d.ts +41 -0
  448. package/types/ngwr-dialog.d.ts +210 -0
  449. package/types/ngwr-directives.d.ts +125 -0
  450. package/types/ngwr-divider.d.ts +73 -0
  451. package/types/ngwr-donut-chart.d.ts +53 -0
  452. package/types/ngwr-drag-drop.d.ts +83 -0
  453. package/types/ngwr-drawer.d.ts +155 -0
  454. package/types/ngwr-dropdown.d.ts +124 -0
  455. package/types/ngwr-empty.d.ts +38 -0
  456. package/types/ngwr-falling-text.d.ts +63 -0
  457. package/types/ngwr-file-upload.d.ts +94 -0
  458. package/types/ngwr-form.d.ts +95 -0
  459. package/types/ngwr-fuzzy-text.d.ts +74 -0
  460. package/types/ngwr-gauge.d.ts +39 -0
  461. package/types/ngwr-glitch-text.d.ts +31 -0
  462. package/types/ngwr-gradient-text.d.ts +46 -0
  463. package/types/ngwr-hotkey.d.ts +142 -0
  464. package/types/ngwr-i18n-en.d.ts +18 -0
  465. package/types/ngwr-i18n-ru.d.ts +6 -0
  466. package/types/ngwr-i18n.d.ts +336 -0
  467. package/types/ngwr-icon-adapters-feather.d.ts +44 -0
  468. package/types/ngwr-icon-adapters-lucide.d.ts +54 -0
  469. package/types/ngwr-icon.d.ts +180 -0
  470. package/types/ngwr-image-cropper.d.ts +110 -0
  471. package/types/ngwr-input-number.d.ts +77 -0
  472. package/types/ngwr-input-otp.d.ts +78 -0
  473. package/types/ngwr-input.d.ts +131 -0
  474. package/types/ngwr-keyboard.d.ts +34 -0
  475. package/types/ngwr-knob.d.ts +77 -0
  476. package/types/ngwr-layout.d.ts +89 -0
  477. package/types/ngwr-lightbox.d.ts +50 -0
  478. package/types/ngwr-line-chart.d.ts +90 -0
  479. package/types/ngwr-list.d.ts +71 -0
  480. package/types/ngwr-loading-bar.d.ts +79 -0
  481. package/types/ngwr-marquee.d.ts +95 -0
  482. package/types/ngwr-media.d.ts +74 -0
  483. package/types/ngwr-mention.d.ts +110 -0
  484. package/types/ngwr-meta.d.ts +164 -0
  485. package/types/ngwr-meter-group.d.ts +57 -0
  486. package/types/ngwr-overlay.d.ts +110 -0
  487. package/types/ngwr-page-header.d.ts +35 -0
  488. package/types/ngwr-pagination.d.ts +119 -0
  489. package/types/ngwr-pipes.d.ts +177 -0
  490. package/types/ngwr-platform.d.ts +38 -0
  491. package/types/ngwr-popconfirm.d.ts +79 -0
  492. package/types/ngwr-popover.d.ts +90 -0
  493. package/types/ngwr-progress.d.ts +33 -0
  494. package/types/ngwr-qr.d.ts +56 -0
  495. package/types/ngwr-radio.d.ts +120 -0
  496. package/types/ngwr-rating.d.ts +62 -0
  497. package/types/ngwr-result.d.ts +64 -0
  498. package/types/ngwr-rotating-text.d.ts +72 -0
  499. package/types/ngwr-scramble-text.d.ts +49 -0
  500. package/types/ngwr-scroll.d.ts +65 -0
  501. package/types/ngwr-segmented.d.ts +65 -0
  502. package/types/ngwr-select.d.ts +413 -0
  503. package/types/ngwr-shiny-text.d.ts +70 -0
  504. package/types/ngwr-sidebar.d.ts +83 -0
  505. package/types/ngwr-skeleton.d.ts +41 -0
  506. package/types/ngwr-slider.d.ts +86 -0
  507. package/types/ngwr-sparkline.d.ts +48 -0
  508. package/types/ngwr-speed-dial.d.ts +51 -0
  509. package/types/ngwr-spinner.d.ts +41 -0
  510. package/types/ngwr-splash-cursor.d.ts +94 -0
  511. package/types/ngwr-split-text.d.ts +83 -0
  512. package/types/ngwr-splitter.d.ts +52 -0
  513. package/types/ngwr-spotlight-card.d.ts +71 -0
  514. package/types/ngwr-squircle.d.ts +132 -0
  515. package/types/ngwr-star-border.d.ts +40 -0
  516. package/types/ngwr-statistic.d.ts +88 -0
  517. package/types/ngwr-stepper.d.ts +99 -0
  518. package/types/ngwr-storage.d.ts +178 -0
  519. package/types/ngwr-switch.d.ts +39 -0
  520. package/types/ngwr-table.d.ts +237 -0
  521. package/types/ngwr-tabs.d.ts +125 -0
  522. package/types/ngwr-textarea.d.ts +60 -0
  523. package/types/ngwr-theme.d.ts +124 -0
  524. package/types/ngwr-tilt-card.d.ts +63 -0
  525. package/types/ngwr-timeline.d.ts +40 -0
  526. package/types/ngwr-toast.d.ts +230 -0
  527. package/types/ngwr-toolbar.d.ts +30 -0
  528. package/types/ngwr-tree.d.ts +150 -0
  529. package/types/ngwr-typewriter.d.ts +84 -0
  530. package/types/ngwr-typography.d.ts +56 -0
  531. package/types/ngwr-utils.d.ts +447 -0
  532. package/types/ngwr-validators.d.ts +70 -0
  533. package/types/ngwr-version.d.ts +44 -0
  534. package/types/ngwr-virtual-scroll.d.ts +64 -0
  535. package/types/ngwr-waves.d.ts +71 -0
  536. package/types/ngwr-window.d.ts +437 -0
  537. package/typewriter/styles/_index.scss +33 -0
  538. package/typewriter/typewriter.scss +1 -0
  539. package/typography/styles/_index.scss +211 -0
  540. package/virtual-scroll/styles/_index.scss +27 -0
  541. package/virtual-scroll/virtual-scroll.scss +1 -0
  542. package/waves/styles/_index.scss +24 -0
  543. package/waves/waves.scss +1 -0
  544. package/window/styles/_index.scss +430 -0
  545. package/alert/index.d.ts +0 -32
  546. package/alert/styles/theming.scss +0 -26
  547. package/alert/styles/vars.scss +0 -11
  548. package/avatar/index.d.ts +0 -30
  549. package/button/index.d.ts +0 -45
  550. package/button/styles/vars.scss +0 -13
  551. package/cdk/index.d.ts +0 -24
  552. package/cdk/rxjs/index.d.ts +0 -40
  553. package/cdk/types/index.d.ts +0 -27
  554. package/checkbox/index.d.ts +0 -31
  555. package/checkbox/styles/vars.scss +0 -16
  556. package/dialog/index.d.ts +0 -193
  557. package/dialog/styles/vars.scss +0 -7
  558. package/divider/index.d.ts +0 -16
  559. package/dropdown/index.d.ts +0 -68
  560. package/dropdown/styles/vars.scss +0 -18
  561. package/fesm2022/ngwr-cdk-rxjs.mjs +0 -53
  562. package/fesm2022/ngwr-cdk-rxjs.mjs.map +0 -1
  563. package/fesm2022/ngwr-cdk-types.mjs +0 -44
  564. package/fesm2022/ngwr-cdk-types.mjs.map +0 -1
  565. package/fesm2022/ngwr-cdk-utils.mjs +0 -30
  566. package/fesm2022/ngwr-cdk-utils.mjs.map +0 -1
  567. package/fesm2022/ngwr-cdk.mjs +0 -46
  568. package/fesm2022/ngwr-cdk.mjs.map +0 -1
  569. package/fesm2022/ngwr-tag.mjs +0 -87
  570. package/fesm2022/ngwr-tag.mjs.map +0 -1
  571. package/form/index.d.ts +0 -28
  572. package/icon/index.d.ts +0 -830
  573. package/icon/styles/vars.scss +0 -3
  574. package/input/index.d.ts +0 -43
  575. package/input/styles/vars.scss +0 -17
  576. package/pagination/index.d.ts +0 -34
  577. package/pagination/styles/vars.scss +0 -14
  578. package/pipes/index.d.ts +0 -17
  579. package/progress/index.d.ts +0 -13
  580. package/progress/styles/theming.scss +0 -8
  581. package/progress/styles/vars.scss +0 -6
  582. package/qr/index.d.ts +0 -127
  583. package/select/index.d.ts +0 -121
  584. package/select/styles/vars.scss +0 -32
  585. package/skeleton/index.d.ts +0 -13
  586. package/spinner/index.d.ts +0 -23
  587. package/styles/animations.scss +0 -92
  588. package/styles/cdk.scss +0 -5
  589. package/styles/colors.scss +0 -72
  590. package/styles/grid.scss +0 -99
  591. package/styles/maps.scss +0 -31
  592. package/styles/reset.scss +0 -112
  593. package/styles/variables.scss +0 -72
  594. package/table/index.d.ts +0 -101
  595. package/table/styles/table-filter.scss +0 -202
  596. package/table/styles/table-sort.scss +0 -47
  597. package/table/styles/table.scss +0 -232
  598. package/table/styles/vars.scss +0 -21
  599. package/tag/index.d.ts +0 -24
  600. package/tag/styles/_index.scss +0 -32
  601. package/tag/styles/theming.scss +0 -21
  602. package/tag/styles/vars.scss +0 -12
  603. package/textarea/index.d.ts +0 -47
  604. package/textarea/styles/vars.scss +0 -17
  605. /package/{index.d.ts → types/ngwr.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ngwr-table.mjs","sources":["../../../projects/lib/table/types/table-order.enum.ts","../../../projects/lib/table/table-cell/table-cell.directive.ts","../../../projects/lib/table/table-cell/index.ts","../../../projects/lib/table/table-filter/table-filter.component.ts","../../../projects/lib/table/table-filter/table-filter.component.html","../../../projects/lib/table/table-filter/index.ts","../../../projects/lib/table/table-sort/table-sort.component.ts","../../../projects/lib/table/table-sort/table-sort.component.html","../../../projects/lib/table/table-sort/index.ts","../../../projects/lib/table/table.component.ts","../../../projects/lib/table/table.component.html","../../../projects/lib/table/public-api.ts","../../../projects/lib/table/ngwr-table.ts"],"sourcesContent":["export enum WrTableOrder {\n REMOVE,\n ASC,\n DESC,\n}\n","import { Directive, inject, input, TemplateRef } from '@angular/core';\n\nimport { WrTableCellContext } from '../types';\n\n@Directive({\n selector: '[wrTableCell]',\n})\nexport class WrTableCellDirective {\n columnKey = input.required<string>({ alias: 'wrTableCell' });\n\n template = inject(TemplateRef<WrTableCellContext>);\n}\n","/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n */\n\nexport * from './table-cell.directive';\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n input,\n OnInit,\n Output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { startWith } from 'rxjs';\n\nimport { WrAbstractBase } from 'ngwr/cdk';\nimport { WrDropdownDirective, WrDropdownMenuComponent } from 'ngwr/dropdown';\nimport { checkmark, filter as filterIcon, provideWrIcons, WrIconComponent } from 'ngwr/icon';\n\nimport { WrTableFilterItem } from '../types';\n\n@Component({\n selector: 'wr-table-filter',\n templateUrl: './table-filter.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [ReactiveFormsModule, WrIconComponent, WrDropdownDirective, WrDropdownMenuComponent],\n providers: [provideWrIcons([checkmark, filterIcon])],\n host: {\n class: 'wr-table-filter',\n '[class.wr-table-filter--active]': 'length > 0',\n },\n})\nexport class WrTableFilterComponent extends WrAbstractBase implements OnInit {\n items = input.required<WrTableFilterItem[]>();\n\n @Output()\n readonly selectedItems = new EventEmitter<WrTableFilterItem[]>();\n\n protected readonly search = new FormControl<string | null>(null, { nonNullable: true });\n protected readonly filteredItems = signal<WrTableFilterItem[]>([]);\n\n protected get length(): number {\n return this.filteredItems().filter(i => i.isSelected).length;\n }\n\n ngOnInit(): void {\n this.search.valueChanges\n .pipe(startWith(null))\n .pipe(takeUntilDestroyed(this.destroyRef$))\n .subscribe(value => {\n let filtered = [...this.items()];\n if (value) {\n filtered = this.items().filter(i => {\n const searchValue = value.toLowerCase();\n\n const itemTitle = i.title.toLowerCase();\n const itemValue = i.value.toLowerCase();\n\n const hasTitle = itemTitle.includes(searchValue);\n const hasValue = itemValue.includes(searchValue);\n\n return hasTitle || hasValue;\n });\n }\n this.filteredItems.set(filtered);\n });\n }\n\n onItemSelect(item: WrTableFilterItem): void {\n const array = this.filteredItems();\n const index = array.findIndex(i => i === item);\n array[index].isSelected = !array[index].isSelected;\n this.getSelectedItems();\n }\n\n onResetClick(): void {\n const array = [...this.filteredItems()];\n array.map(i => (i.isSelected = false));\n this.filteredItems.set(array);\n this.selectedItems.emit([]);\n }\n\n getSelectedItems(): void {\n const selected = this.filteredItems().filter(i => i.isSelected);\n this.selectedItems.emit(selected);\n }\n}\n","<div class=\"wr-table-filter-icon\" wrDropdown [dropdownMenu]=\"tableFilterDropdown\">\n <wr-icon class=\"wr-table-filter-icon__icon\" name=\"filter\" />\n</div>\n\n<wr-dropdown-menu #tableFilterDropdown=\"wrDropdownMenu\">\n <div class=\"wr-table-filter-dropdown\">\n <input class=\"wr-table-filter-dropdown__input\" [formControl]=\"search\" placeholder=\"Поиск...\" />\n\n <div class=\"wr-table-filter-dropdown__body\">\n @if (filteredItems(); as items) {\n @for (item of items; track $index) {\n <div\n class=\"wr-table-filter-dropdown-item\"\n [class.wr-table-filter-dropdown-item--selected]=\"item?.isSelected\"\n (click)=\"onItemSelect(item)\"\n >\n <div class=\"wr-table-filter-dropdown-item-check\">\n <wr-icon class=\"wr-table-filter-dropdown-item-check__icon\" name=\"checkmark\" />\n </div>\n <span class=\"wr-table-filter-dropdown-item__title\">{{ item?.title }}</span>\n </div>\n }\n\n @if (items.length < 1) {\n <div class=\"wr-table-filter-dropdown-empty\">\n <span class=\"wr-table-filter-dropdown-empty__title\">Нет элементов</span>\n </div>\n }\n }\n </div>\n\n @if (length > 0) {\n <div class=\"wr-table-filter-dropdown__reset\" (click)=\"onResetClick()\">Сбросить</div>\n }\n </div>\n</wr-dropdown-menu>\n","/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n */\n\nexport * from './table-filter.component';\n","import { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\n\nimport { arrowTop, provideWrIcons, WrIconComponent } from 'ngwr/icon';\n\nimport { WrTableOrder } from '../types';\n\n@Component({\n selector: 'wr-table-sort',\n templateUrl: './table-sort.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [provideWrIcons([arrowTop])],\n imports: [WrIconComponent],\n host: {\n class: 'wr-table-sort',\n '[class.wr-table-sort--asc]': 'order() === TableOrder.ASC',\n '[class.wr-table-sort--desc]': 'order() === TableOrder.DESC',\n },\n})\nexport class WrTableSortComponent {\n order = input<WrTableOrder>();\n\n protected readonly TableOrder = WrTableOrder;\n}\n","<wr-icon class=\"wr-table-sort__icon\" name=\"arrow-top\" />\n","/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n */\n\nexport * from './table-sort.component';\n","import { KeyValuePipe, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n EventEmitter,\n HostBinding,\n HostListener,\n numberAttribute,\n Output,\n QueryList,\n TemplateRef,\n ViewEncapsulation,\n AfterContentInit,\n input,\n model,\n} from '@angular/core';\n\nimport { SafeAny } from 'ngwr/cdk/types';\nimport { WrDropdownDirective, WrDropdownMenuComponent } from 'ngwr/dropdown';\nimport { infoCircleOutline, provideWrIcons, WrIconComponent } from 'ngwr/icon';\nimport { WrPaginationComponent } from 'ngwr/pagination';\nimport { NewArrayPipe } from 'ngwr/pipes';\nimport { WrSpinnerComponent } from 'ngwr/spinner';\n\nimport { WrTableCellDirective } from './table-cell';\nimport { WrTableFilterComponent } from './table-filter';\nimport { WrTableSortComponent } from './table-sort';\nimport {\n WrTableCellContext,\n WrTableColumns,\n WrTableFilterEmit,\n WrTableFilterItem,\n WrTableOrder,\n WrTableOrderItem,\n} from './types';\n\n@Component({\n selector: 'wr-table',\n templateUrl: './table.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n NgTemplateOutlet,\n KeyValuePipe,\n NewArrayPipe,\n WrIconComponent,\n WrSpinnerComponent,\n WrDropdownDirective,\n WrDropdownMenuComponent,\n WrPaginationComponent,\n WrTableSortComponent,\n WrTableFilterComponent,\n ],\n providers: [provideWrIcons([infoCircleOutline])],\n host: {\n class: 'wr-table',\n },\n})\nexport class WrTableComponent implements AfterContentInit {\n columns = input.required<WrTableColumns>();\n items = input.required<SafeAny[] | undefined>();\n loading = input<boolean>();\n pagination = input<boolean>(false);\n total = input<number, unknown>(1, { transform: numberAttribute });\n currentPage = model<number>(1);\n pageSize = model<number>(15);\n pageSizeOptions = input<number[]>([15, 25, 50]);\n ordering = model<WrTableOrderItem[]>();\n\n @Output() readonly filterChange = new EventEmitter<WrTableFilterEmit>();\n\n @HostBinding('style')\n get styles(): Record<string, string | number> {\n return {\n '--wr-table-columns': Object.keys(this.columns).length,\n };\n }\n\n @HostListener('document:keydown', ['$event'])\n onKeypress(evt: KeyboardEvent): void {\n const isCtrl = evt.ctrlKey;\n const isPeriod = evt.code === 'Period';\n const isComma = evt.code === 'Comma';\n\n if (isCtrl && isPeriod) {\n const totalPages = Math.ceil(this.total() / this.pageSize());\n\n if (this.currentPage() < totalPages) {\n this.currentPage.update(value => ++value);\n }\n }\n\n if (isCtrl && isComma) {\n if (this.currentPage() > 1) {\n this.currentPage.update(value => --value);\n }\n }\n }\n\n @ContentChildren(WrTableCellDirective)\n private customCells: QueryList<WrTableCellDirective> | undefined;\n\n private cellTemplates = new Map<string, TemplateRef<WrTableCellContext>>();\n\n ngAfterContentInit(): void {\n this.customCells?.forEach(cell => {\n this.cellTemplates.set(cell.columnKey(), cell.template);\n });\n }\n\n protected getCellTemplate(columnKey: string): TemplateRef<WrTableCellContext> | null {\n return this.cellTemplates.get(columnKey) || null;\n }\n\n protected hasCellTemplate(columnKey: string): boolean {\n return this.cellTemplates.has(columnKey);\n }\n\n /**\n * We need to pass null to save original order for keyvalue pipe\n * https://angular.dev/api/common/KeyValuePipe?tab=description\n */\n protected readonly keepOrder = (): SafeAny => null;\n\n protected getOrder(key: string): WrTableOrder {\n return this.ordering()?.find(o => o.key === key)?.order ?? WrTableOrder.REMOVE;\n }\n\n protected onOrderChange(key: string): void {\n const item = this.ordering()?.find(o => o.key === key);\n\n let order: WrTableOrder;\n switch (item?.order) {\n case WrTableOrder.ASC:\n order = WrTableOrder.DESC;\n break;\n case WrTableOrder.DESC:\n order = WrTableOrder.REMOVE;\n break;\n default:\n order = WrTableOrder.ASC;\n }\n\n const orderingItem: WrTableOrderItem = {\n key,\n order,\n };\n\n this.ordering.update(ordering => {\n const orderingMap = new Map(ordering?.map(item => [item.key, item]) ?? []);\n orderingMap.set(key, orderingItem);\n return Array.from(orderingMap.values());\n });\n }\n\n protected onFilterChange(key: string, items: WrTableFilterItem[]): void {\n this.filterChange.emit({ key, items });\n }\n}\n","@if (pagination()) {\n <div class=\"wr-table-top\">\n @if (loading()) {\n <wr-spinner class=\"wr-table__spinner\" />\n }\n\n <div class=\"wr-table-hint\" wrDropdown [dropdownMenu]=\"tablePaginationHelpDropdown\">\n <wr-icon class=\"wr-table-hint__icon\" name=\"info-circle-outline\" />\n </div>\n\n <ng-template [ngTemplateOutlet]=\"tablePagination\" />\n </div>\n}\n\n<div class=\"wr-table-head\">\n <div class=\"wr-table-head__wrapper\">\n @for (item of columns() | keyvalue: keepOrder; track item.key) {\n @if (item.value; as column) {\n <div class=\"wr-table-head-cell\">\n <span class=\"wr-table-head-cell__title\">{{ column.title }}</span>\n\n @if (column.sortable) {\n <wr-table-sort [order]=\"getOrder(item.key)\" (click)=\"onOrderChange(item.key)\" />\n }\n @if (column.filterItems && column.filterItems.length > 0) {\n <wr-table-filter [items]=\"column.filterItems\" (selectedItems)=\"onFilterChange(item.key, $event)\" />\n }\n </div>\n }\n }\n </div>\n</div>\n\n<div class=\"wr-table-body\">\n @if (items()?.length) {\n @for (item of items(); track $index) {\n <div class=\"wr-table-body__row\">\n @for (column of columns() | keyvalue: keepOrder; track column.key) {\n <div class=\"wr-table-body-cell\">\n @if (hasCellTemplate(column.key)) {\n <ng-container\n [ngTemplateOutlet]=\"getCellTemplate(column.key)!\"\n [ngTemplateOutletContext]=\"{\n $implicit: item[column.key],\n item: item,\n column: column.value,\n }\"\n />\n } @else {\n <span>{{ item[column.key] }}</span>\n }\n </div>\n }\n </div>\n }\n } @else {\n <div class=\"wr-table-body__loader\">\n <wr-spinner size=\"large\"></wr-spinner>\n </div>\n\n @for (i of pageSize() | newArray; track $index) {\n <div class=\"wr-table-body__row\">\n @for (column of columns() | keyvalue; track column.key) {\n <div class=\"wr-table-body-item\">\n <span>&nbsp;</span>\n </div>\n }\n </div>\n }\n }\n</div>\n\n@if (pagination()) {\n <div class=\"wr-table-bot\">\n <ng-template [ngTemplateOutlet]=\"tablePagination\" />\n </div>\n}\n\n<ng-template #tablePagination>\n <wr-pagination\n class=\"wr-table__pagination\"\n [showSizeChanger]=\"true\"\n [disabled]=\"!!loading()\"\n [total]=\"total()\"\n [(currentPage)]=\"currentPage\"\n [(pageSize)]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions()\"\n />\n</ng-template>\n\n<wr-dropdown-menu #tablePaginationHelpDropdown=\"wrDropdownMenu\">\n <div class=\"wr-table-hint-dropdown\">\n <div class=\"wr-table-hint-dropdown-item\">\n <span class=\"wr-table-hint-dropdown-item__title\">Next:</span>\n <div class=\"wr-table-hint-dropdown-item__keys\">\n <span class=\"wr-table-hint-dropdown-item__key\">Ctrl</span>\n <span>+</span>\n <span class=\"wr-table-hint-dropdown-item__key\">{{ '>' }}</span>\n </div>\n </div>\n\n <div class=\"wr-table-hint-dropdown-item\">\n <span class=\"wr-table-hint-dropdown-item__title\">Prev:</span>\n <div class=\"wr-table-hint-dropdown-item__keys\">\n <span class=\"wr-table-hint-dropdown-item__key\">Ctrl</span>\n <span>+</span>\n <span class=\"wr-table-hint-dropdown-item__key\">{{ '<' }}</span>\n </div>\n </div>\n </div>\n</wr-dropdown-menu>\n","/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n */\n\nexport * from './types';\nexport * from './table.component';\nexport * from './table-cell';\nexport * from './table-filter';\nexport * from './table-sort';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["filterIcon"],"mappings":"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"}
1
+ {"version":3,"file":"ngwr-table.mjs","sources":["../../../projects/lib/table/table-cell.ts","../../../projects/lib/table/table-filter.ts","../../../projects/lib/table/table-filter.html","../../../projects/lib/table/table-sort.ts","../../../projects/lib/table/table.ts","../../../projects/lib/table/table.html","../../../projects/lib/table/ngwr-table.ts"],"sourcesContent":["/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n */\n\nimport { Directive, TemplateRef, inject, input } from '@angular/core';\n\nimport type { WrTableCellContext } from './interfaces';\n\n/**\n * Provide a custom template for a specific column's cells.\n *\n * @example\n * ```html\n * <wr-table [columns]=\"columns\" [items]=\"items\">\n * <ng-template wrTableCell=\"role\" let-value let-row=\"item\">\n * <wr-tag [color]=\"value === 'admin' ? 'danger' : 'medium'\">{{ value }}</wr-tag>\n * </ng-template>\n * </wr-table>\n * ```\n */\n@Directive({\n selector: '[wrTableCell]',\n})\nexport class WrTableCell {\n /** Column key the template applies to. */\n readonly columnKey = input.required<string>({ alias: 'wrTableCell' });\n\n readonly template = inject<TemplateRef<WrTableCellContext>>(TemplateRef);\n}\n","/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n */\n\nimport { Component, ViewEncapsulation, computed, input, output, signal } from '@angular/core';\n\nimport { WrDropdown, WrDropdownMenu } from 'ngwr/dropdown';\n\nimport type { WrTableFilterItem } from './interfaces';\n\n/**\n * Filter dropdown rendered in a filterable column's header.\n *\n * @internal — used internally by `<wr-table>`.\n */\n@Component({\n selector: 'wr-table-filter',\n templateUrl: './table-filter.html',\n encapsulation: ViewEncapsulation.None,\n host: { '[class]': 'classes()' },\n imports: [WrDropdown, WrDropdownMenu],\n})\nexport class WrTableFilter {\n /** Available filter options. */\n readonly items = input.required<readonly WrTableFilterItem[]>();\n\n /** Fires whenever the selection changes. */\n readonly selectionChange = output<readonly WrTableFilterItem[]>();\n\n protected readonly query = signal('');\n\n /** Filtered + selection-tracked view of items. */\n protected readonly visible = computed<WrTableFilterItem[]>(() => {\n const q = this.query().trim().toLowerCase();\n const all = this.items();\n if (!q) return [...all];\n return all.filter(i => i.title.toLowerCase().includes(q));\n });\n\n protected readonly selectedCount = computed(() => this.items().filter(i => i.selected).length);\n\n protected readonly classes = computed(() => {\n const parts = ['wr-table-filter'];\n if (this.selectedCount() > 0) parts.push('wr-table-filter--active');\n return parts.join(' ');\n });\n\n protected onSearchInput(event: Event): void {\n this.query.set((event.target as HTMLInputElement).value);\n }\n\n protected onToggle(item: WrTableFilterItem): void {\n item.selected = !item.selected;\n this.emitSelected();\n }\n\n protected onReset(): void {\n for (const item of this.items()) item.selected = false;\n this.selectionChange.emit([]);\n }\n\n private emitSelected(): void {\n this.selectionChange.emit(this.items().filter(i => i.selected));\n }\n}\n","<button type=\"button\" class=\"wr-table-filter__trigger\" [wrDropdown]=\"menu\" aria-label=\"Filter column\">\n <svg\n class=\"wr-icon__svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z\"\n />\n </svg>\n @if (selectedCount() > 0) {\n <span class=\"wr-table-filter__count\">{{ selectedCount() }}</span>\n }\n</button>\n\n<wr-dropdown-menu #menu>\n <div class=\"wr-table-filter__panel\">\n <input\n class=\"wr-table-filter__search\"\n type=\"search\"\n placeholder=\"Search\"\n [value]=\"query()\"\n (input)=\"onSearchInput($event)\"\n />\n\n <div class=\"wr-table-filter__list\">\n @for (item of visible(); track item.value) {\n <button\n type=\"button\"\n class=\"wr-table-filter__item\"\n [class.wr-table-filter__item--selected]=\"item.selected\"\n (click)=\"onToggle(item)\"\n >\n <span class=\"wr-table-filter__check\">\n <svg\n class=\"wr-icon__svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n </span>\n <span class=\"wr-table-filter__title\">{{ item.title }}</span>\n </button>\n } @empty {\n <div class=\"wr-table-filter__empty\">No matches</div>\n }\n </div>\n\n @if (selectedCount() > 0) {\n <button type=\"button\" class=\"wr-table-filter__reset\" (click)=\"onReset()\">Reset</button>\n }\n </div>\n</wr-dropdown-menu>\n","/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n */\n\nimport { Component, ViewEncapsulation, computed, input } from '@angular/core';\n\nimport type { WrTableSortDirection } from './interfaces';\n\n/**\n * Sort indicator rendered in a sortable column's header.\n *\n * @internal — used internally by `<wr-table>`. Parent listens for clicks\n * on the indicator to cycle direction.\n */\n@Component({\n selector: 'wr-table-sort',\n template:\n '<svg class=\"wr-icon__svg wr-table-sort__icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"m5 12 7-7 7 7\"/><path d=\"M12 19V5\"/></svg>',\n encapsulation: ViewEncapsulation.None,\n host: { '[class]': 'classes()' },\n})\nexport class WrTableSort {\n readonly direction = input<WrTableSortDirection>(null);\n\n protected readonly classes = computed(() => {\n const parts = ['wr-table-sort'];\n const dir = this.direction();\n if (dir) parts.push(`wr-table-sort--${dir}`);\n return parts.join(' ');\n });\n}\n","/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n */\n\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { KeyValuePipe, NgTemplateOutlet } from '@angular/common';\nimport type { TemplateRef } from '@angular/core';\nimport { Component, ViewEncapsulation, computed, contentChildren, input, model, output } from '@angular/core';\n\nimport { WrPagination } from 'ngwr/pagination';\nimport { WrSpinner } from 'ngwr/spinner';\n\nimport type {\n WrTableCellContext,\n WrTableColumns,\n WrTableFilterChange,\n WrTableFilterItem,\n WrTableSortState,\n WrTableSortDirection,\n} from './interfaces';\nimport { WrTableCell } from './table-cell';\nimport { WrTableFilter } from './table-filter';\nimport { WrTableSort } from './table-sort';\n\n/**\n * Data table with sortable / filterable headers and custom cell templates.\n *\n * Columns are defined via the `columns` input (a `Record<key, column>`).\n * Rows are objects whose property names match the column keys. Cells can\n * be customised by projecting an `[wrTableCell]=\"key\"` template.\n *\n * @example\n * ```html\n * <wr-table\n * [columns]=\"columns\"\n * [items]=\"rows\"\n * [(sort)]=\"sort\"\n * (filterChange)=\"onFilter($event)\"\n * >\n * <ng-template wrTableCell=\"role\" let-value>\n * <wr-tag [color]=\"value === 'admin' ? 'danger' : 'medium'\">{{ value }}</wr-tag>\n * </ng-template>\n * </wr-table>\n * ```\n *\n * @see https://ngwr.dev/components/table\n */\n@Component({\n selector: 'wr-table',\n templateUrl: './table.html',\n encapsulation: ViewEncapsulation.None,\n host: { class: 'wr-table' },\n imports: [NgTemplateOutlet, KeyValuePipe, WrPagination, WrSpinner, WrTableSort, WrTableFilter],\n})\nexport class WrTable {\n /** Column definitions, keyed by row property name. */\n readonly columns = input.required<WrTableColumns>();\n\n /** Row items. `null`/`undefined` → loading skeleton. */\n readonly items = input<readonly Record<string, unknown>[] | null | undefined>(null);\n\n /** Show the loading spinner overlay. @default false */\n readonly loading = input(false, { transform: coerceBooleanProperty });\n\n /** Two-way bindable sort array. Order in array = application order. */\n readonly sort = model<readonly WrTableSortState[]>([]);\n\n /** Fires whenever a column's filter selection changes. */\n readonly filterChange = output<WrTableFilterChange>();\n\n /**\n * Rows per page. Set to `0` (default) to disable client-side pagination\n * and render every row at once.\n */\n readonly pageSize = input(0, { transform: (v: unknown): number => Math.max(0, coerceNumberProperty(v, 0)) });\n\n /** Two-way bindable 1-based current page. */\n readonly page = model<number>(1);\n\n /**\n * Total row count for server-side pagination — when set, the table\n * shows the pager but does NOT slice `items` (you provide the current\n * page's slice yourself and react to `(page)` changes).\n */\n readonly totalItems = input<number | null>(null);\n\n /** Total row count derived for the pager (server-mode wins). */\n protected readonly resolvedTotal = computed<number>(() => {\n const server = this.totalItems();\n if (server !== null) return server;\n return this.items()?.length ?? 0;\n });\n\n /** Items visible on the current page (client mode slices; server mode passes through). */\n protected readonly visibleItems = computed<readonly Record<string, unknown>[] | null | undefined>(() => {\n const items = this.items();\n if (!items) return items;\n const size = this.pageSize();\n if (size <= 0 || this.totalItems() !== null) return items;\n const start = (this.page() - 1) * size;\n return items.slice(start, start + size);\n });\n\n /** Show the pager footer only when paging is enabled and rows overflow. */\n protected readonly showPager = computed<boolean>(() => {\n const size = this.pageSize();\n return size > 0 && this.resolvedTotal() > size;\n });\n\n private readonly cellTemplates = contentChildren(WrTableCell);\n\n /** Map of column key → custom template (if provided via `[wrTableCell]`). */\n protected readonly cellMap = computed(() => {\n const map = new Map<string, TemplateRef<WrTableCellContext>>();\n for (const cell of this.cellTemplates()) map.set(cell.columnKey(), cell.template);\n return map;\n });\n\n /** Keep KeyValuePipe in declaration order (comparator that treats all keys as equal). */\n protected readonly keepOrder = (): number => 0;\n\n protected directionFor(key: string): WrTableSortDirection {\n return this.sort().find(s => s.key === key)?.direction ?? null;\n }\n\n protected cycleSort(key: string): void {\n const current = this.directionFor(key);\n const next: WrTableSortDirection = current === null ? 'asc' : current === 'asc' ? 'desc' : null;\n\n const list = this.sort().filter(s => s.key !== key);\n if (next !== null) list.push({ key, direction: next });\n this.sort.set(list);\n }\n\n protected onFilter(key: string, items: readonly WrTableFilterItem[]): void {\n this.filterChange.emit({ key, items });\n }\n\n protected cellContext(item: Record<string, unknown>, key: string, column: unknown): WrTableCellContext {\n return { $implicit: item[key], item, column: column as WrTableCellContext['column'] };\n }\n\n protected getValue(item: Record<string, unknown>, key: unknown): unknown {\n return item[String(key)];\n }\n\n protected templateFor(key: unknown): TemplateRef<WrTableCellContext> | undefined {\n return this.cellMap().get(String(key));\n }\n}\n","@if (loading()) {\n <div class=\"wr-table__loading\">\n <wr-spinner size=\"lg\" />\n </div>\n}\n\n<div class=\"wr-table__scroll\">\n <table class=\"wr-table__table\">\n <thead>\n <tr>\n @for (entry of columns() | keyvalue: keepOrder; track entry.key) {\n <th class=\"wr-table__th\">\n <div class=\"wr-table__th-inner\">\n <span class=\"wr-table__title\">{{ entry.value.title }}</span>\n\n @if (entry.value.sortable) {\n <button\n type=\"button\"\n class=\"wr-table__sort-btn\"\n aria-label=\"Sort column\"\n (click)=\"cycleSort(entry.key)\"\n >\n <wr-table-sort [direction]=\"directionFor(entry.key)\" />\n </button>\n }\n\n @if (entry.value.filterItems; as filterItems) {\n @if (filterItems.length) {\n <wr-table-filter [items]=\"filterItems\" (selectionChange)=\"onFilter(entry.key, $event)\" />\n }\n }\n </div>\n </th>\n }\n </tr>\n </thead>\n\n <tbody>\n @if (visibleItems(); as rows) {\n @for (row of rows; track $index) {\n <tr class=\"wr-table__tr\">\n @for (entry of columns() | keyvalue: keepOrder; track entry.key) {\n <td class=\"wr-table__td\">\n @if (templateFor(entry.key); as tpl) {\n <ng-container\n [ngTemplateOutlet]=\"tpl\"\n [ngTemplateOutletContext]=\"cellContext(row, entry.key, entry.value)\"\n />\n } @else {\n {{ getValue(row, entry.key) }}\n }\n </td>\n }\n </tr>\n } @empty {\n <tr>\n <td class=\"wr-table__empty\" [attr.colspan]=\"(columns() | keyvalue).length\">No data</td>\n </tr>\n }\n }\n </tbody>\n </table>\n</div>\n\n@if (showPager()) {\n <div class=\"wr-table__pager\">\n <wr-pagination [(currentPage)]=\"page\" [pageSize]=\"pageSize()\" [total]=\"resolvedTotal()\" />\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,217 @@
1
+ import { NgTemplateOutlet } from '@angular/common';
2
+ import * as i0 from '@angular/core';
3
+ import { InjectionToken, input, viewChild, TemplateRef, inject, DestroyRef, computed, ViewEncapsulation, Component, model, contentChildren, forwardRef } from '@angular/core';
4
+ import { RouterLink, RouterLinkActive } from '@angular/router';
5
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
6
+ import { randomId } from 'ngwr/utils';
7
+
8
+ /**
9
+ * @license
10
+ *
11
+ * Use of this source code is governed by an MIT-style license that can be
12
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
13
+ */
14
+ /**
15
+ * Token a `<wr-tab>` injects to register itself with — and read the active
16
+ * key from — its parent `<wr-tabs>` host.
17
+ *
18
+ * @internal
19
+ */
20
+ const WR_TABS = new InjectionToken('WR_TABS');
21
+
22
+ /**
23
+ * @license
24
+ *
25
+ * Use of this source code is governed by an MIT-style license that can be
26
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
27
+ */
28
+ /**
29
+ * Single tab. Two modes, decided by inputs:
30
+ *
31
+ * - **Content tab** — projected children render in the parent's content
32
+ * panel when this tab is active.
33
+ * - **Router tab** — set `routerLink` and the tab becomes a link; the
34
+ * parent skips its content panel and the consumer drops a
35
+ * `<router-outlet>` below the tab strip.
36
+ */
37
+ class WrTab {
38
+ /** Visible label on the tab strip. */
39
+ title = input.required(/* @ts-ignore */
40
+ ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
41
+ /**
42
+ * Stable identifier used by the parent to track the active tab.
43
+ * Auto-generated if omitted.
44
+ */
45
+ key = input(randomId('wr-tab'), /* @ts-ignore */
46
+ ...(ngDevMode ? [{ debugName: "key" }] : /* istanbul ignore next */ []));
47
+ /** Router target — when set, the tab becomes a `[routerLink]` link. */
48
+ routerLink = input(null, /* @ts-ignore */
49
+ ...(ngDevMode ? [{ debugName: "routerLink" }] : /* istanbul ignore next */ []));
50
+ /** Disable the tab. */
51
+ disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: coerceBooleanProperty });
52
+ /** Tab content template; portaled into the parent's panel area. @internal */
53
+ contentTpl = viewChild.required(TemplateRef);
54
+ parent = inject(WR_TABS, { optional: true });
55
+ destroyRef = inject(DestroyRef);
56
+ isRouter = computed(() => this.routerLink() !== null, /* @ts-ignore */
57
+ ...(ngDevMode ? [{ debugName: "isRouter" }] : /* istanbul ignore next */ []));
58
+ constructor() {
59
+ if (this.parent) {
60
+ this.parent.register({ key: this.key(), routerLink: this.routerLink() });
61
+ this.destroyRef.onDestroy(() => this.parent?.unregister(this.key()));
62
+ }
63
+ }
64
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrTab, deps: [], target: i0.ɵɵFactoryTarget.Component });
65
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.1", type: WrTab, isStandalone: true, selector: "wr-tab", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: false, transformFunction: null }, routerLink: { classPropertyName: "routerLink", publicName: "routerLink", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { styleAttribute: "display:none" }, viewQueries: [{ propertyName: "contentTpl", first: true, predicate: TemplateRef, descendants: true, isSignal: true }], ngImport: i0, template: `<ng-template><ng-content /></ng-template>`, isInline: true, encapsulation: i0.ViewEncapsulation.None });
66
+ }
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrTab, decorators: [{
68
+ type: Component,
69
+ args: [{
70
+ selector: 'wr-tab',
71
+ template: `<ng-template><ng-content /></ng-template>`,
72
+ encapsulation: ViewEncapsulation.None,
73
+ host: { style: 'display:none' },
74
+ }]
75
+ }], ctorParameters: () => [], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: true }] }], key: [{ type: i0.Input, args: [{ isSignal: true, alias: "key", required: false }] }], routerLink: [{ type: i0.Input, args: [{ isSignal: true, alias: "routerLink", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], contentTpl: [{ type: i0.ViewChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }] } });
76
+
77
+ /**
78
+ * @license
79
+ *
80
+ * Use of this source code is governed by an MIT-style license that can be
81
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
82
+ */
83
+ /**
84
+ * Tabbed container. Two modes depending on the child `<wr-tab>`
85
+ * definitions:
86
+ *
87
+ * - **Content** — children project body content; the parent renders an
88
+ * active-tab panel automatically.
89
+ * - **Router** — any child with `routerLink` switches the whole strip
90
+ * into router mode; the parent skips its panel so the consumer can
91
+ * drop a `<router-outlet>` after it.
92
+ *
93
+ * @example
94
+ * ```html
95
+ * <!-- content tabs -->
96
+ * <wr-tabs [(active)]="key">
97
+ * <wr-tab key="one" title="One">First panel</wr-tab>
98
+ * <wr-tab key="two" title="Two">Second panel</wr-tab>
99
+ * </wr-tabs>
100
+ *
101
+ * <!-- router tabs -->
102
+ * <wr-tabs>
103
+ * <wr-tab title="Overview" routerLink="overview" />
104
+ * <wr-tab title="Details" routerLink="details" />
105
+ * </wr-tabs>
106
+ * <router-outlet />
107
+ * ```
108
+ *
109
+ * @see https://ngwr.dev/components/tabs
110
+ */
111
+ class WrTabs {
112
+ /** Two-way bindable active tab key (content mode). */
113
+ active = model(null, /* @ts-ignore */
114
+ ...(ngDevMode ? [{ debugName: "active" }] : /* istanbul ignore next */ []));
115
+ /** Visual size variant. */
116
+ size = input('md', /* @ts-ignore */
117
+ ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
118
+ tabs = contentChildren(WrTab, /* @ts-ignore */
119
+ ...(ngDevMode ? [{ debugName: "tabs" }] : /* istanbul ignore next */ []));
120
+ /** When any child has a routerLink, the whole strip switches to router mode. */
121
+ isRouter = computed(() => this.tabs().some(t => t.routerLink() !== null), /* @ts-ignore */
122
+ ...(ngDevMode ? [{ debugName: "isRouter" }] : /* istanbul ignore next */ []));
123
+ /** Content-mode: the tab whose key matches `active()` (or the first tab if none yet). */
124
+ activeTab = computed(() => {
125
+ const key = this.active();
126
+ const tabs = this.tabs();
127
+ if (tabs.length === 0)
128
+ return null;
129
+ return tabs.find(t => t.key() === key) ?? tabs[0];
130
+ }, /* @ts-ignore */
131
+ ...(ngDevMode ? [{ debugName: "activeTab" }] : /* istanbul ignore next */ []));
132
+ // WrTabsContext
133
+ activate(key) {
134
+ this.active.set(key);
135
+ }
136
+ register({ key }) {
137
+ if (this.active() === null)
138
+ this.active.set(key);
139
+ }
140
+ unregister() {
141
+ // No-op: contentChildren handles removal.
142
+ }
143
+ // Template handlers
144
+ stripRef = viewChild('strip', /* @ts-ignore */
145
+ ...(ngDevMode ? [{ debugName: "stripRef" }] : /* istanbul ignore next */ []));
146
+ onTabClick(tab) {
147
+ if (tab.disabled())
148
+ return;
149
+ if (!this.isRouter())
150
+ this.activate(tab.key());
151
+ }
152
+ /** Header id for `aria-labelledby` on the panel. @internal */
153
+ headerId(key) {
154
+ return `wr-tab-${key}-header`;
155
+ }
156
+ /** Panel id for `aria-controls` on the tab header. @internal */
157
+ panelId(key) {
158
+ return `wr-tab-${key}-panel`;
159
+ }
160
+ /** ArrowLeft/Right/Home/End keyboard navigation on the tab strip. */
161
+ onStripKeydown(event) {
162
+ const tabs = this.tabs().filter(t => !t.disabled());
163
+ if (tabs.length === 0)
164
+ return;
165
+ const active = this.activeTab();
166
+ const idx = active ? tabs.indexOf(active) : -1;
167
+ let nextIdx;
168
+ switch (event.key) {
169
+ case 'ArrowRight':
170
+ nextIdx = idx < tabs.length - 1 ? idx + 1 : 0;
171
+ break;
172
+ case 'ArrowLeft':
173
+ nextIdx = idx > 0 ? idx - 1 : tabs.length - 1;
174
+ break;
175
+ case 'Home':
176
+ nextIdx = 0;
177
+ break;
178
+ case 'End':
179
+ nextIdx = tabs.length - 1;
180
+ break;
181
+ default:
182
+ return;
183
+ }
184
+ event.preventDefault();
185
+ const next = tabs[nextIdx];
186
+ if (!this.isRouter())
187
+ this.activate(next.key());
188
+ // Move focus to the corresponding header element.
189
+ const headerEl = this.stripRef()?.nativeElement.querySelector(`#${CSS.escape(this.headerId(next.key()))}`);
190
+ headerEl?.focus();
191
+ }
192
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrTabs, deps: [], target: i0.ɵɵFactoryTarget.Component });
193
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: WrTabs, isStandalone: true, selector: "wr-tabs", inputs: { active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { active: "activeChange" }, host: { classAttribute: "wr-tabs" }, providers: [
194
+ {
195
+ provide: WR_TABS,
196
+ // eslint-disable-next-line @angular-eslint/no-forward-ref
197
+ useExisting: forwardRef(() => WrTabs),
198
+ },
199
+ ], queries: [{ propertyName: "tabs", predicate: WrTab, isSignal: true }], viewQueries: [{ propertyName: "stripRef", first: true, predicate: ["strip"], descendants: true, isSignal: true }], ngImport: i0, template: "<!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\n<div #strip class=\"wr-tabs__strip\" role=\"tablist\" aria-orientation=\"horizontal\" (keydown)=\"onStripKeydown($event)\">\n @for (tab of tabs(); track tab.key()) {\n @if (tab.routerLink(); as link) {\n <a\n class=\"wr-tabs__tab\"\n role=\"tab\"\n routerLinkActive=\"wr-tabs__tab--active\"\n [attr.id]=\"headerId(tab.key())\"\n [routerLink]=\"link\"\n [class.wr-tabs__tab--disabled]=\"tab.disabled()\"\n [attr.aria-disabled]=\"tab.disabled() ? true : null\"\n [attr.tabindex]=\"tab.disabled() ? -1 : 0\"\n >\n {{ tab.title() }}\n </a>\n } @else {\n <button\n type=\"button\"\n class=\"wr-tabs__tab\"\n role=\"tab\"\n [attr.id]=\"headerId(tab.key())\"\n [attr.aria-controls]=\"panelId(tab.key())\"\n [attr.tabindex]=\"tab === activeTab() ? 0 : -1\"\n [class.wr-tabs__tab--active]=\"tab === activeTab()\"\n [class.wr-tabs__tab--disabled]=\"tab.disabled()\"\n [attr.aria-selected]=\"tab === activeTab()\"\n [disabled]=\"tab.disabled()\"\n (click)=\"onTabClick(tab)\"\n >\n {{ tab.title() }}\n </button>\n }\n }\n</div>\n\n@if (!isRouter() && activeTab(); as tab) {\n <div\n class=\"wr-tabs__panel\"\n role=\"tabpanel\"\n tabindex=\"0\"\n [attr.id]=\"panelId(tab.key())\"\n [attr.aria-labelledby]=\"headerId(tab.key())\"\n >\n <ng-container [ngTemplateOutlet]=\"tab.contentTpl()\" />\n </div>\n}\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], encapsulation: i0.ViewEncapsulation.None });
200
+ }
201
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrTabs, decorators: [{
202
+ type: Component,
203
+ args: [{ selector: 'wr-tabs', encapsulation: ViewEncapsulation.None, host: { class: 'wr-tabs' }, imports: [NgTemplateOutlet, RouterLink, RouterLinkActive], providers: [
204
+ {
205
+ provide: WR_TABS,
206
+ // eslint-disable-next-line @angular-eslint/no-forward-ref
207
+ useExisting: forwardRef(() => WrTabs),
208
+ },
209
+ ], template: "<!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\n<div #strip class=\"wr-tabs__strip\" role=\"tablist\" aria-orientation=\"horizontal\" (keydown)=\"onStripKeydown($event)\">\n @for (tab of tabs(); track tab.key()) {\n @if (tab.routerLink(); as link) {\n <a\n class=\"wr-tabs__tab\"\n role=\"tab\"\n routerLinkActive=\"wr-tabs__tab--active\"\n [attr.id]=\"headerId(tab.key())\"\n [routerLink]=\"link\"\n [class.wr-tabs__tab--disabled]=\"tab.disabled()\"\n [attr.aria-disabled]=\"tab.disabled() ? true : null\"\n [attr.tabindex]=\"tab.disabled() ? -1 : 0\"\n >\n {{ tab.title() }}\n </a>\n } @else {\n <button\n type=\"button\"\n class=\"wr-tabs__tab\"\n role=\"tab\"\n [attr.id]=\"headerId(tab.key())\"\n [attr.aria-controls]=\"panelId(tab.key())\"\n [attr.tabindex]=\"tab === activeTab() ? 0 : -1\"\n [class.wr-tabs__tab--active]=\"tab === activeTab()\"\n [class.wr-tabs__tab--disabled]=\"tab.disabled()\"\n [attr.aria-selected]=\"tab === activeTab()\"\n [disabled]=\"tab.disabled()\"\n (click)=\"onTabClick(tab)\"\n >\n {{ tab.title() }}\n </button>\n }\n }\n</div>\n\n@if (!isRouter() && activeTab(); as tab) {\n <div\n class=\"wr-tabs__panel\"\n role=\"tabpanel\"\n tabindex=\"0\"\n [attr.id]=\"panelId(tab.key())\"\n [attr.aria-labelledby]=\"headerId(tab.key())\"\n >\n <ng-container [ngTemplateOutlet]=\"tab.contentTpl()\" />\n </div>\n}\n" }]
210
+ }], propDecorators: { active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }, { type: i0.Output, args: ["activeChange"] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], tabs: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => WrTab), { isSignal: true }] }], stripRef: [{ type: i0.ViewChild, args: ['strip', { isSignal: true }] }] } });
211
+
212
+ /**
213
+ * Generated bundle index. Do not edit.
214
+ */
215
+
216
+ export { WR_TABS, WrTab, WrTabs };
217
+ //# sourceMappingURL=ngwr-tabs.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngwr-tabs.mjs","sources":["../../../projects/lib/tabs/tokens/tabs.token.ts","../../../projects/lib/tabs/tab.ts","../../../projects/lib/tabs/tabs.ts","../../../projects/lib/tabs/tabs.html","../../../projects/lib/tabs/ngwr-tabs.ts"],"sourcesContent":["/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n */\n\nimport { InjectionToken, type Signal } from '@angular/core';\n\n/**\n * Contract a `<wr-tab>` uses to talk to its parent `<wr-tabs>`.\n *\n * @internal\n */\nexport interface WrTabsContext {\n /** Currently active tab key (component-managed only). */\n readonly active: Signal<string | null>;\n /** Activate a tab by key (component-managed only). */\n activate(key: string): void;\n /** Register a child tab so the parent can pick a default. */\n register(tab: { key: string; routerLink: unknown }): void;\n /** Unregister on destroy. */\n unregister(key: string): void;\n}\n\n/**\n * Token a `<wr-tab>` injects to register itself with — and read the active\n * key from — its parent `<wr-tabs>` host.\n *\n * @internal\n */\nexport const WR_TABS = new InjectionToken<WrTabsContext>('WR_TABS');\n","/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n */\n\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n Component,\n DestroyRef,\n TemplateRef,\n ViewEncapsulation,\n computed,\n inject,\n input,\n viewChild,\n} from '@angular/core';\n\nimport { randomId } from 'ngwr/utils';\n\nimport { WR_TABS } from './tokens';\n\n/**\n * Single tab. Two modes, decided by inputs:\n *\n * - **Content tab** — projected children render in the parent's content\n * panel when this tab is active.\n * - **Router tab** — set `routerLink` and the tab becomes a link; the\n * parent skips its content panel and the consumer drops a\n * `<router-outlet>` below the tab strip.\n */\n@Component({\n selector: 'wr-tab',\n template: `<ng-template><ng-content /></ng-template>`,\n encapsulation: ViewEncapsulation.None,\n host: { style: 'display:none' },\n})\nexport class WrTab {\n /** Visible label on the tab strip. */\n readonly title = input.required<string>();\n\n /**\n * Stable identifier used by the parent to track the active tab.\n * Auto-generated if omitted.\n */\n readonly key = input<string>(randomId('wr-tab'));\n\n /** Router target — when set, the tab becomes a `[routerLink]` link. */\n readonly routerLink = input<string | readonly string[] | null>(null);\n\n /** Disable the tab. */\n readonly disabled = input(false, { transform: coerceBooleanProperty });\n\n /** Tab content template; portaled into the parent's panel area. @internal */\n readonly contentTpl = viewChild.required(TemplateRef);\n\n private readonly parent = inject(WR_TABS, { optional: true });\n private readonly destroyRef = inject(DestroyRef);\n\n protected readonly isRouter = computed(() => this.routerLink() !== null);\n\n constructor() {\n if (this.parent) {\n this.parent.register({ key: this.key(), routerLink: this.routerLink() });\n this.destroyRef.onDestroy(() => this.parent?.unregister(this.key()));\n }\n }\n}\n","/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n */\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n type ElementRef,\n ViewEncapsulation,\n computed,\n contentChildren,\n forwardRef,\n input,\n model,\n viewChild,\n} from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\n\nimport { WrTab } from './tab';\nimport { WR_TABS, type WrTabsContext } from './tokens';\n\n/**\n * Tabbed container. Two modes depending on the child `<wr-tab>`\n * definitions:\n *\n * - **Content** — children project body content; the parent renders an\n * active-tab panel automatically.\n * - **Router** — any child with `routerLink` switches the whole strip\n * into router mode; the parent skips its panel so the consumer can\n * drop a `<router-outlet>` after it.\n *\n * @example\n * ```html\n * <!-- content tabs -->\n * <wr-tabs [(active)]=\"key\">\n * <wr-tab key=\"one\" title=\"One\">First panel</wr-tab>\n * <wr-tab key=\"two\" title=\"Two\">Second panel</wr-tab>\n * </wr-tabs>\n *\n * <!-- router tabs -->\n * <wr-tabs>\n * <wr-tab title=\"Overview\" routerLink=\"overview\" />\n * <wr-tab title=\"Details\" routerLink=\"details\" />\n * </wr-tabs>\n * <router-outlet />\n * ```\n *\n * @see https://ngwr.dev/components/tabs\n */\n@Component({\n selector: 'wr-tabs',\n templateUrl: './tabs.html',\n encapsulation: ViewEncapsulation.None,\n host: { class: 'wr-tabs' },\n imports: [NgTemplateOutlet, RouterLink, RouterLinkActive],\n providers: [\n {\n provide: WR_TABS,\n // eslint-disable-next-line @angular-eslint/no-forward-ref\n useExisting: forwardRef(() => WrTabs),\n },\n ],\n})\nexport class WrTabs implements WrTabsContext {\n /** Two-way bindable active tab key (content mode). */\n readonly active = model<string | null>(null);\n\n /** Visual size variant. */\n readonly size = input<'sm' | 'md' | 'lg'>('md');\n\n protected readonly tabs = contentChildren(WrTab);\n\n /** When any child has a routerLink, the whole strip switches to router mode. */\n protected readonly isRouter = computed(() => this.tabs().some(t => t.routerLink() !== null));\n\n /** Content-mode: the tab whose key matches `active()` (or the first tab if none yet). */\n protected readonly activeTab = computed(() => {\n const key = this.active();\n const tabs = this.tabs();\n if (tabs.length === 0) return null;\n return tabs.find(t => t.key() === key) ?? tabs[0];\n });\n\n // WrTabsContext\n\n activate(key: string): void {\n this.active.set(key);\n }\n\n register({ key }: { key: string; routerLink: unknown }): void {\n if (this.active() === null) this.active.set(key);\n }\n\n unregister(): void {\n // No-op: contentChildren handles removal.\n }\n\n // Template handlers\n\n protected readonly stripRef = viewChild<ElementRef<HTMLElement>>('strip');\n\n protected onTabClick(tab: WrTab): void {\n if (tab.disabled()) return;\n if (!this.isRouter()) this.activate(tab.key());\n }\n\n /** Header id for `aria-labelledby` on the panel. @internal */\n headerId(key: string): string {\n return `wr-tab-${key}-header`;\n }\n\n /** Panel id for `aria-controls` on the tab header. @internal */\n panelId(key: string): string {\n return `wr-tab-${key}-panel`;\n }\n\n /** ArrowLeft/Right/Home/End keyboard navigation on the tab strip. */\n protected onStripKeydown(event: KeyboardEvent): void {\n const tabs = this.tabs().filter(t => !t.disabled());\n if (tabs.length === 0) return;\n const active = this.activeTab();\n const idx = active ? tabs.indexOf(active) : -1;\n let nextIdx: number;\n\n switch (event.key) {\n case 'ArrowRight':\n nextIdx = idx < tabs.length - 1 ? idx + 1 : 0;\n break;\n case 'ArrowLeft':\n nextIdx = idx > 0 ? idx - 1 : tabs.length - 1;\n break;\n case 'Home':\n nextIdx = 0;\n break;\n case 'End':\n nextIdx = tabs.length - 1;\n break;\n default:\n return;\n }\n\n event.preventDefault();\n const next = tabs[nextIdx];\n if (!this.isRouter()) this.activate(next.key());\n // Move focus to the corresponding header element.\n const headerEl = this.stripRef()?.nativeElement.querySelector<HTMLElement>(\n `#${CSS.escape(this.headerId(next.key()))}`\n );\n headerEl?.focus();\n }\n}\n","<!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\n<div #strip class=\"wr-tabs__strip\" role=\"tablist\" aria-orientation=\"horizontal\" (keydown)=\"onStripKeydown($event)\">\n @for (tab of tabs(); track tab.key()) {\n @if (tab.routerLink(); as link) {\n <a\n class=\"wr-tabs__tab\"\n role=\"tab\"\n routerLinkActive=\"wr-tabs__tab--active\"\n [attr.id]=\"headerId(tab.key())\"\n [routerLink]=\"link\"\n [class.wr-tabs__tab--disabled]=\"tab.disabled()\"\n [attr.aria-disabled]=\"tab.disabled() ? true : null\"\n [attr.tabindex]=\"tab.disabled() ? -1 : 0\"\n >\n {{ tab.title() }}\n </a>\n } @else {\n <button\n type=\"button\"\n class=\"wr-tabs__tab\"\n role=\"tab\"\n [attr.id]=\"headerId(tab.key())\"\n [attr.aria-controls]=\"panelId(tab.key())\"\n [attr.tabindex]=\"tab === activeTab() ? 0 : -1\"\n [class.wr-tabs__tab--active]=\"tab === activeTab()\"\n [class.wr-tabs__tab--disabled]=\"tab.disabled()\"\n [attr.aria-selected]=\"tab === activeTab()\"\n [disabled]=\"tab.disabled()\"\n (click)=\"onTabClick(tab)\"\n >\n {{ tab.title() }}\n </button>\n }\n }\n</div>\n\n@if (!isRouter() && activeTab(); as tab) {\n <div\n class=\"wr-tabs__panel\"\n role=\"tabpanel\"\n tabindex=\"0\"\n [attr.id]=\"panelId(tab.key())\"\n [attr.aria-labelledby]=\"headerId(tab.key())\"\n >\n <ng-container [ngTemplateOutlet]=\"tab.contentTpl()\" />\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}