ngwr 11.1.0 → 12.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 (481) hide show
  1. package/README.md +7 -7
  2. package/burger/styles/_index.scss +1 -1
  3. package/button/styles/_index.scss +2 -2
  4. package/calendar/styles/_index.scss +32 -12
  5. package/calendar-heatmap/styles/_index.scss +20 -0
  6. package/carousel/styles/_index.scss +23 -1
  7. package/cascader/styles/_index.scss +15 -3
  8. package/checkbox/styles/_index.scss +2 -2
  9. package/circular-text/styles/_index.scss +11 -0
  10. package/collapse/styles/_index.scss +2 -2
  11. package/color-picker/styles/_index.scss +3 -3
  12. package/command-palette/styles/_index.scss +12 -0
  13. package/compare/styles/_index.scss +18 -2
  14. package/context-menu/styles/_index.scss +21 -2
  15. package/date-picker/styles/_index.scss +5 -5
  16. package/descriptions/styles/_index.scss +1 -1
  17. package/drag-drop/styles/_index.scss +28 -1
  18. package/drawer/styles/_index.scss +37 -0
  19. package/dropdown/styles/_index.scss +2 -2
  20. package/event-calendar/styles/_index.scss +67 -10
  21. package/fesm2022/ngwr-action-sheet-testing.mjs +313 -0
  22. package/fesm2022/ngwr-action-sheet-testing.mjs.map +1 -0
  23. package/fesm2022/ngwr-action-sheet.mjs +3 -3
  24. package/fesm2022/ngwr-affix.mjs +3 -3
  25. package/fesm2022/ngwr-alert.mjs +3 -3
  26. package/fesm2022/ngwr-anchor.mjs +3 -3
  27. package/fesm2022/ngwr-aurora.mjs +3 -3
  28. package/fesm2022/ngwr-avatar.mjs +3 -3
  29. package/fesm2022/ngwr-back-top.mjs +3 -3
  30. package/fesm2022/ngwr-badge.mjs +6 -6
  31. package/fesm2022/ngwr-bar-chart-testing.mjs +107 -0
  32. package/fesm2022/ngwr-bar-chart-testing.mjs.map +1 -0
  33. package/fesm2022/ngwr-bar-chart.mjs +3 -3
  34. package/fesm2022/ngwr-blur-text-testing.mjs +203 -0
  35. package/fesm2022/ngwr-blur-text-testing.mjs.map +1 -0
  36. package/fesm2022/ngwr-blur-text.mjs +18 -4
  37. package/fesm2022/ngwr-blur-text.mjs.map +1 -1
  38. package/fesm2022/ngwr-border-glow-testing.mjs +325 -0
  39. package/fesm2022/ngwr-border-glow-testing.mjs.map +1 -0
  40. package/fesm2022/ngwr-border-glow.mjs +4 -4
  41. package/fesm2022/ngwr-border-glow.mjs.map +1 -1
  42. package/fesm2022/ngwr-breadcrumbs.mjs +29 -17
  43. package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -1
  44. package/fesm2022/ngwr-burger.mjs +3 -3
  45. package/fesm2022/ngwr-button.mjs +6 -6
  46. package/fesm2022/ngwr-calendar-heatmap-testing.mjs +95 -0
  47. package/fesm2022/ngwr-calendar-heatmap-testing.mjs.map +1 -0
  48. package/fesm2022/ngwr-calendar-heatmap.mjs +17 -5
  49. package/fesm2022/ngwr-calendar-heatmap.mjs.map +1 -1
  50. package/fesm2022/ngwr-calendar-testing.mjs +368 -0
  51. package/fesm2022/ngwr-calendar-testing.mjs.map +1 -0
  52. package/fesm2022/ngwr-calendar.mjs +228 -10
  53. package/fesm2022/ngwr-calendar.mjs.map +1 -1
  54. package/fesm2022/ngwr-card.mjs +10 -10
  55. package/fesm2022/ngwr-card.mjs.map +1 -1
  56. package/fesm2022/ngwr-carousel.mjs +124 -24
  57. package/fesm2022/ngwr-carousel.mjs.map +1 -1
  58. package/fesm2022/ngwr-cascader.mjs +60 -5
  59. package/fesm2022/ngwr-cascader.mjs.map +1 -1
  60. package/fesm2022/ngwr-checkbox.mjs +14 -6
  61. package/fesm2022/ngwr-checkbox.mjs.map +1 -1
  62. package/fesm2022/ngwr-circular-text-testing.mjs +230 -0
  63. package/fesm2022/ngwr-circular-text-testing.mjs.map +1 -0
  64. package/fesm2022/ngwr-circular-text.mjs +4 -4
  65. package/fesm2022/ngwr-circular-text.mjs.map +1 -1
  66. package/fesm2022/ngwr-click-spark.mjs +27 -7
  67. package/fesm2022/ngwr-click-spark.mjs.map +1 -1
  68. package/fesm2022/ngwr-clipboard.mjs +3 -3
  69. package/fesm2022/ngwr-collapse.mjs +9 -9
  70. package/fesm2022/ngwr-color-picker-testing.mjs +452 -0
  71. package/fesm2022/ngwr-color-picker-testing.mjs.map +1 -0
  72. package/fesm2022/ngwr-color-picker.mjs +126 -10
  73. package/fesm2022/ngwr-color-picker.mjs.map +1 -1
  74. package/fesm2022/ngwr-command-palette.mjs +14 -5
  75. package/fesm2022/ngwr-command-palette.mjs.map +1 -1
  76. package/fesm2022/ngwr-compare.mjs +3 -3
  77. package/fesm2022/ngwr-confetti.mjs +31 -6
  78. package/fesm2022/ngwr-confetti.mjs.map +1 -1
  79. package/fesm2022/ngwr-config.mjs +9 -0
  80. package/fesm2022/ngwr-config.mjs.map +1 -1
  81. package/fesm2022/ngwr-context-menu-testing.mjs +30 -11
  82. package/fesm2022/ngwr-context-menu-testing.mjs.map +1 -1
  83. package/fesm2022/ngwr-context-menu.mjs +358 -48
  84. package/fesm2022/ngwr-context-menu.mjs.map +1 -1
  85. package/fesm2022/ngwr-cookie.mjs +3 -3
  86. package/fesm2022/ngwr-counter.mjs +25 -9
  87. package/fesm2022/ngwr-counter.mjs.map +1 -1
  88. package/fesm2022/{ngwr-date-adapter-fns.mjs → ngwr-date-adapters-fns.mjs} +37 -10
  89. package/fesm2022/ngwr-date-adapters-fns.mjs.map +1 -0
  90. package/fesm2022/{ngwr-date-adapter-luxon.mjs → ngwr-date-adapters-luxon.mjs} +5 -5
  91. package/fesm2022/ngwr-date-adapters-luxon.mjs.map +1 -0
  92. package/fesm2022/ngwr-date-picker-testing.mjs +21 -85
  93. package/fesm2022/ngwr-date-picker-testing.mjs.map +1 -1
  94. package/fesm2022/ngwr-date-picker.mjs +119 -37
  95. package/fesm2022/ngwr-date-picker.mjs.map +1 -1
  96. package/fesm2022/{ngwr-date-adapter.mjs → ngwr-date.mjs} +36 -10
  97. package/fesm2022/ngwr-date.mjs.map +1 -0
  98. package/fesm2022/ngwr-decrypt-text-testing.mjs +261 -0
  99. package/fesm2022/ngwr-decrypt-text-testing.mjs.map +1 -0
  100. package/fesm2022/ngwr-decrypt-text.mjs +9 -4
  101. package/fesm2022/ngwr-decrypt-text.mjs.map +1 -1
  102. package/fesm2022/ngwr-density.mjs +6 -6
  103. package/fesm2022/ngwr-descriptions.mjs +6 -6
  104. package/fesm2022/ngwr-dialog.mjs +73 -18
  105. package/fesm2022/ngwr-dialog.mjs.map +1 -1
  106. package/fesm2022/ngwr-directives.mjs +12 -12
  107. package/fesm2022/ngwr-divider.mjs +52 -5
  108. package/fesm2022/ngwr-divider.mjs.map +1 -1
  109. package/fesm2022/ngwr-donut-chart-testing.mjs +97 -0
  110. package/fesm2022/ngwr-donut-chart-testing.mjs.map +1 -0
  111. package/fesm2022/ngwr-donut-chart.mjs +7 -7
  112. package/fesm2022/ngwr-donut-chart.mjs.map +1 -1
  113. package/fesm2022/ngwr-drag-drop.mjs +160 -11
  114. package/fesm2022/ngwr-drag-drop.mjs.map +1 -1
  115. package/fesm2022/ngwr-drawer.mjs +156 -64
  116. package/fesm2022/ngwr-drawer.mjs.map +1 -1
  117. package/fesm2022/ngwr-dropdown.mjs +58 -12
  118. package/fesm2022/ngwr-dropdown.mjs.map +1 -1
  119. package/fesm2022/ngwr-empty.mjs +3 -3
  120. package/fesm2022/ngwr-event-calendar-testing.mjs +446 -0
  121. package/fesm2022/ngwr-event-calendar-testing.mjs.map +1 -0
  122. package/fesm2022/ngwr-event-calendar.mjs +66 -28
  123. package/fesm2022/ngwr-event-calendar.mjs.map +1 -1
  124. package/fesm2022/ngwr-falling-text-testing.mjs +220 -0
  125. package/fesm2022/ngwr-falling-text-testing.mjs.map +1 -0
  126. package/fesm2022/ngwr-falling-text.mjs +75 -46
  127. package/fesm2022/ngwr-falling-text.mjs.map +1 -1
  128. package/fesm2022/ngwr-file-upload.mjs +3 -3
  129. package/fesm2022/ngwr-form.mjs +32 -15
  130. package/fesm2022/ngwr-form.mjs.map +1 -1
  131. package/fesm2022/ngwr-fuzzy-text-testing.mjs +134 -0
  132. package/fesm2022/ngwr-fuzzy-text-testing.mjs.map +1 -0
  133. package/fesm2022/ngwr-fuzzy-text.mjs +21 -11
  134. package/fesm2022/ngwr-fuzzy-text.mjs.map +1 -1
  135. package/fesm2022/ngwr-gauge-testing.mjs +86 -0
  136. package/fesm2022/ngwr-gauge-testing.mjs.map +1 -0
  137. package/fesm2022/ngwr-gauge.mjs +3 -3
  138. package/fesm2022/ngwr-glitch-text-testing.mjs +215 -0
  139. package/fesm2022/ngwr-glitch-text-testing.mjs.map +1 -0
  140. package/fesm2022/ngwr-glitch-text.mjs +7 -7
  141. package/fesm2022/ngwr-glitch-text.mjs.map +1 -1
  142. package/fesm2022/ngwr-gradient-text-testing.mjs +258 -0
  143. package/fesm2022/ngwr-gradient-text-testing.mjs.map +1 -0
  144. package/fesm2022/ngwr-gradient-text.mjs +4 -4
  145. package/fesm2022/ngwr-gradient-text.mjs.map +1 -1
  146. package/fesm2022/ngwr-hotkey.mjs +24 -9
  147. package/fesm2022/ngwr-hotkey.mjs.map +1 -1
  148. package/fesm2022/ngwr-i18n-en.mjs +87 -1
  149. package/fesm2022/ngwr-i18n-en.mjs.map +1 -1
  150. package/fesm2022/ngwr-i18n-ru.mjs +69 -1
  151. package/fesm2022/ngwr-i18n-ru.mjs.map +1 -1
  152. package/fesm2022/ngwr-i18n.mjs +26 -15
  153. package/fesm2022/ngwr-i18n.mjs.map +1 -1
  154. package/fesm2022/ngwr-icon.mjs +6 -6
  155. package/fesm2022/ngwr-image-cropper-testing.mjs +200 -0
  156. package/fesm2022/ngwr-image-cropper-testing.mjs.map +1 -0
  157. package/fesm2022/ngwr-image-cropper.mjs +156 -11
  158. package/fesm2022/ngwr-image-cropper.mjs.map +1 -1
  159. package/fesm2022/ngwr-input-number-testing.mjs +15 -10
  160. package/fesm2022/ngwr-input-number-testing.mjs.map +1 -1
  161. package/fesm2022/ngwr-input-number.mjs +89 -15
  162. package/fesm2022/ngwr-input-number.mjs.map +1 -1
  163. package/fesm2022/ngwr-input-otp-testing.mjs +12 -6
  164. package/fesm2022/ngwr-input-otp-testing.mjs.map +1 -1
  165. package/fesm2022/ngwr-input-otp.mjs +24 -5
  166. package/fesm2022/ngwr-input-otp.mjs.map +1 -1
  167. package/fesm2022/ngwr-input.mjs +15 -15
  168. package/fesm2022/ngwr-keyboard.mjs +3 -3
  169. package/fesm2022/ngwr-knob-testing.mjs +220 -0
  170. package/fesm2022/ngwr-knob-testing.mjs.map +1 -0
  171. package/fesm2022/ngwr-knob.mjs +3 -3
  172. package/fesm2022/ngwr-layout.mjs +15 -15
  173. package/fesm2022/ngwr-lightbox-testing.mjs +223 -0
  174. package/fesm2022/ngwr-lightbox-testing.mjs.map +1 -0
  175. package/fesm2022/ngwr-lightbox.mjs +11 -4
  176. package/fesm2022/ngwr-lightbox.mjs.map +1 -1
  177. package/fesm2022/ngwr-line-chart-testing.mjs +119 -0
  178. package/fesm2022/ngwr-line-chart-testing.mjs.map +1 -0
  179. package/fesm2022/ngwr-line-chart.mjs +73 -26
  180. package/fesm2022/ngwr-line-chart.mjs.map +1 -1
  181. package/fesm2022/ngwr-list.mjs +7 -7
  182. package/fesm2022/ngwr-list.mjs.map +1 -1
  183. package/fesm2022/ngwr-loading-bar.mjs +7 -7
  184. package/fesm2022/ngwr-loading-bar.mjs.map +1 -1
  185. package/fesm2022/ngwr-markdown.mjs +66 -8
  186. package/fesm2022/ngwr-markdown.mjs.map +1 -1
  187. package/fesm2022/ngwr-marquee-testing.mjs +336 -0
  188. package/fesm2022/ngwr-marquee-testing.mjs.map +1 -0
  189. package/fesm2022/ngwr-marquee.mjs +4 -4
  190. package/fesm2022/ngwr-marquee.mjs.map +1 -1
  191. package/fesm2022/ngwr-media.mjs +3 -3
  192. package/fesm2022/ngwr-mention.mjs +108 -13
  193. package/fesm2022/ngwr-mention.mjs.map +1 -1
  194. package/fesm2022/ngwr-meta.mjs +6 -6
  195. package/fesm2022/ngwr-meter-group-testing.mjs +100 -0
  196. package/fesm2022/ngwr-meter-group-testing.mjs.map +1 -0
  197. package/fesm2022/ngwr-meter-group.mjs +3 -3
  198. package/fesm2022/ngwr-overlay.mjs +34 -7
  199. package/fesm2022/ngwr-overlay.mjs.map +1 -1
  200. package/fesm2022/ngwr-page-header.mjs +3 -3
  201. package/fesm2022/ngwr-pagination-testing.mjs +6 -6
  202. package/fesm2022/ngwr-pagination-testing.mjs.map +1 -1
  203. package/fesm2022/ngwr-pagination.mjs +17 -13
  204. package/fesm2022/ngwr-pagination.mjs.map +1 -1
  205. package/fesm2022/ngwr-pipes.mjs +39 -26
  206. package/fesm2022/ngwr-pipes.mjs.map +1 -1
  207. package/fesm2022/ngwr-platform.mjs +9 -9
  208. package/fesm2022/ngwr-popconfirm.mjs +6 -6
  209. package/fesm2022/ngwr-popover-testing.mjs +7 -2
  210. package/fesm2022/ngwr-popover-testing.mjs.map +1 -1
  211. package/fesm2022/ngwr-popover.mjs +169 -33
  212. package/fesm2022/ngwr-popover.mjs.map +1 -1
  213. package/fesm2022/ngwr-progress.mjs +3 -3
  214. package/fesm2022/ngwr-pull-to-refresh.mjs +3 -3
  215. package/fesm2022/ngwr-qr.mjs +42 -5
  216. package/fesm2022/ngwr-qr.mjs.map +1 -1
  217. package/fesm2022/ngwr-radio.mjs +6 -6
  218. package/fesm2022/ngwr-rating.mjs +3 -3
  219. package/fesm2022/ngwr-result.mjs +21 -30
  220. package/fesm2022/ngwr-result.mjs.map +1 -1
  221. package/fesm2022/ngwr-rotating-text-testing.mjs +220 -0
  222. package/fesm2022/ngwr-rotating-text-testing.mjs.map +1 -0
  223. package/fesm2022/ngwr-rotating-text.mjs +4 -4
  224. package/fesm2022/ngwr-rotating-text.mjs.map +1 -1
  225. package/fesm2022/ngwr-scroll.mjs +3 -3
  226. package/fesm2022/ngwr-segmented-testing.mjs +14 -1
  227. package/fesm2022/ngwr-segmented-testing.mjs.map +1 -1
  228. package/fesm2022/ngwr-segmented.mjs +29 -6
  229. package/fesm2022/ngwr-segmented.mjs.map +1 -1
  230. package/fesm2022/ngwr-select.mjs +227 -43
  231. package/fesm2022/ngwr-select.mjs.map +1 -1
  232. package/fesm2022/ngwr-shiny-text-testing.mjs +237 -0
  233. package/fesm2022/ngwr-shiny-text-testing.mjs.map +1 -0
  234. package/fesm2022/ngwr-shiny-text.mjs +11 -9
  235. package/fesm2022/ngwr-shiny-text.mjs.map +1 -1
  236. package/fesm2022/ngwr-sidebar.mjs +31 -16
  237. package/fesm2022/ngwr-sidebar.mjs.map +1 -1
  238. package/fesm2022/ngwr-skeleton.mjs +3 -3
  239. package/fesm2022/ngwr-slider.mjs +143 -14
  240. package/fesm2022/ngwr-slider.mjs.map +1 -1
  241. package/fesm2022/ngwr-sparkline-testing.mjs +76 -0
  242. package/fesm2022/ngwr-sparkline-testing.mjs.map +1 -0
  243. package/fesm2022/ngwr-sparkline.mjs +3 -3
  244. package/fesm2022/ngwr-speed-dial-testing.mjs +281 -0
  245. package/fesm2022/ngwr-speed-dial-testing.mjs.map +1 -0
  246. package/fesm2022/ngwr-speed-dial.mjs +27 -12
  247. package/fesm2022/ngwr-speed-dial.mjs.map +1 -1
  248. package/fesm2022/ngwr-spinner.mjs +3 -3
  249. package/fesm2022/ngwr-splash-cursor-testing.mjs +89 -0
  250. package/fesm2022/ngwr-splash-cursor-testing.mjs.map +1 -0
  251. package/fesm2022/ngwr-splash-cursor.mjs +3 -3
  252. package/fesm2022/ngwr-split-text-testing.mjs +224 -0
  253. package/fesm2022/ngwr-split-text-testing.mjs.map +1 -0
  254. package/fesm2022/ngwr-split-text.mjs +31 -5
  255. package/fesm2022/ngwr-split-text.mjs.map +1 -1
  256. package/fesm2022/ngwr-splitter-testing.mjs +245 -0
  257. package/fesm2022/ngwr-splitter-testing.mjs.map +1 -0
  258. package/fesm2022/ngwr-splitter.mjs +3 -3
  259. package/fesm2022/ngwr-spotlight-card-testing.mjs +368 -0
  260. package/fesm2022/ngwr-spotlight-card-testing.mjs.map +1 -0
  261. package/fesm2022/ngwr-spotlight-card.mjs +7 -7
  262. package/fesm2022/ngwr-spotlight-card.mjs.map +1 -1
  263. package/fesm2022/ngwr-squircle.mjs +6 -6
  264. package/fesm2022/ngwr-star-border-testing.mjs +172 -0
  265. package/fesm2022/ngwr-star-border-testing.mjs.map +1 -0
  266. package/fesm2022/ngwr-star-border.mjs +4 -4
  267. package/fesm2022/ngwr-star-border.mjs.map +1 -1
  268. package/fesm2022/ngwr-statistic.mjs +9 -9
  269. package/fesm2022/ngwr-stepper-testing.mjs +8 -8
  270. package/fesm2022/ngwr-stepper-testing.mjs.map +1 -1
  271. package/fesm2022/ngwr-stepper.mjs +33 -8
  272. package/fesm2022/ngwr-stepper.mjs.map +1 -1
  273. package/fesm2022/ngwr-storage.mjs +17 -5
  274. package/fesm2022/ngwr-storage.mjs.map +1 -1
  275. package/fesm2022/ngwr-switch.mjs +3 -3
  276. package/fesm2022/ngwr-table.mjs +110 -40
  277. package/fesm2022/ngwr-table.mjs.map +1 -1
  278. package/fesm2022/ngwr-tabs-testing.mjs +11 -10
  279. package/fesm2022/ngwr-tabs-testing.mjs.map +1 -1
  280. package/fesm2022/ngwr-tabs.mjs +51 -11
  281. package/fesm2022/ngwr-tabs.mjs.map +1 -1
  282. package/fesm2022/ngwr-textarea.mjs +3 -3
  283. package/fesm2022/ngwr-theme.mjs +181 -4
  284. package/fesm2022/ngwr-theme.mjs.map +1 -1
  285. package/fesm2022/ngwr-tilt-card-testing.mjs +190 -0
  286. package/fesm2022/ngwr-tilt-card-testing.mjs.map +1 -0
  287. package/fesm2022/ngwr-tilt-card.mjs +26 -8
  288. package/fesm2022/ngwr-tilt-card.mjs.map +1 -1
  289. package/fesm2022/ngwr-timeline.mjs +6 -6
  290. package/fesm2022/ngwr-toast.mjs +44 -15
  291. package/fesm2022/ngwr-toast.mjs.map +1 -1
  292. package/fesm2022/ngwr-toolbar.mjs +3 -3
  293. package/fesm2022/ngwr-tour-testing.mjs +173 -0
  294. package/fesm2022/ngwr-tour-testing.mjs.map +1 -0
  295. package/fesm2022/ngwr-tour.mjs +34 -10
  296. package/fesm2022/ngwr-tour.mjs.map +1 -1
  297. package/fesm2022/ngwr-transfer.mjs +3 -3
  298. package/fesm2022/ngwr-tree.mjs +36 -11
  299. package/fesm2022/ngwr-tree.mjs.map +1 -1
  300. package/fesm2022/ngwr-typewriter-testing.mjs +242 -0
  301. package/fesm2022/ngwr-typewriter-testing.mjs.map +1 -0
  302. package/fesm2022/ngwr-typewriter.mjs +13 -5
  303. package/fesm2022/ngwr-typewriter.mjs.map +1 -1
  304. package/fesm2022/ngwr-typography.mjs +3 -3
  305. package/fesm2022/ngwr-utils.mjs +5 -2
  306. package/fesm2022/ngwr-utils.mjs.map +1 -1
  307. package/fesm2022/ngwr-version.mjs +1 -1
  308. package/fesm2022/ngwr-version.mjs.map +1 -1
  309. package/fesm2022/ngwr-virtual-scroll.mjs +4 -4
  310. package/fesm2022/ngwr-virtual-scroll.mjs.map +1 -1
  311. package/fesm2022/ngwr-waves-testing.mjs +128 -0
  312. package/fesm2022/ngwr-waves-testing.mjs.map +1 -0
  313. package/fesm2022/ngwr-waves.mjs +4 -4
  314. package/fesm2022/ngwr-waves.mjs.map +1 -1
  315. package/fesm2022/ngwr-window-testing.mjs +361 -0
  316. package/fesm2022/ngwr-window-testing.mjs.map +1 -0
  317. package/fesm2022/ngwr-window.mjs +175 -31
  318. package/fesm2022/ngwr-window.mjs.map +1 -1
  319. package/file-upload/styles/_index.scss +2 -2
  320. package/glitch-text/styles/_index.scss +27 -12
  321. package/i18n/en.json +71 -7
  322. package/i18n/ru.json +71 -7
  323. package/image-cropper/styles/_index.scss +19 -0
  324. package/input/styles/_index.scss +2 -2
  325. package/input-number/styles/_index.scss +2 -2
  326. package/input-otp/styles/_index.scss +9 -2
  327. package/knob/styles/_index.scss +1 -1
  328. package/lightbox/styles/_index.scss +16 -2
  329. package/line-chart/styles/_index.scss +28 -14
  330. package/list/styles/_index.scss +1 -1
  331. package/llms-full.txt +161 -19
  332. package/llms.txt +45 -10
  333. package/markdown/styles/_index.scss +3 -3
  334. package/mcp/api.js +6 -4
  335. package/mcp/catalog.js +40 -3
  336. package/mcp/providers.js +42 -0
  337. package/mcp/tools.js +22 -30
  338. package/meter-group/styles/_index.scss +1 -1
  339. package/overlay/styles/_index.scss +33 -1
  340. package/package.json +161 -12
  341. package/pagination/styles/_index.scss +23 -1
  342. package/popover/styles/_index.scss +16 -7
  343. package/progress/styles/_index.scss +1 -1
  344. package/radio/styles/_index.scss +2 -2
  345. package/rating/styles/_index.scss +1 -1
  346. package/schematics/collection.json +1 -1
  347. package/schematics/migrations/v12/index.js +65 -0
  348. package/schematics/migrations/v7/index.js +12 -1
  349. package/schematics/migrations/v8/index.js +10 -1
  350. package/schematics/migrations.json +5 -0
  351. package/schematics/ng-add/index.js +8 -3
  352. package/schematics/provider/index.js +80 -13
  353. package/schematics/use/index.js +9 -129
  354. package/schematics/use/rule.js +206 -0
  355. package/schematics/use/symbol-map.json +4 -4
  356. package/segmented/styles/_index.scss +14 -3
  357. package/select/styles/_index.scss +14 -2
  358. package/sidebar/styles/_index.scss +12 -10
  359. package/skills/ngwr/SKILL.md +117 -0
  360. package/skills/ngwr/references/catalog.md +212 -0
  361. package/skills/ngwr/references/setup.md +78 -0
  362. package/slider/styles/_index.scss +1 -1
  363. package/speed-dial/styles/_index.scss +1 -1
  364. package/stepper/styles/_index.scss +12 -3
  365. package/switch/styles/_index.scss +2 -2
  366. package/table/styles/_index.scss +61 -12
  367. package/tabs/styles/_index.scss +1 -1
  368. package/textarea/styles/_index.scss +1 -1
  369. package/theme/styles/_colors.scss +142 -56
  370. package/theme/styles/_dark.scss +46 -3
  371. package/theme/styles/_focus.scss +28 -5
  372. package/theme/styles/_mixins.scss +1 -1
  373. package/theme/styles/_variables.scss +67 -0
  374. package/transfer/styles/_index.scss +26 -3
  375. package/tree/styles/_index.scss +29 -6
  376. package/types/ngwr-action-sheet-testing.d.ts +260 -0
  377. package/types/ngwr-bar-chart-testing.d.ts +85 -0
  378. package/types/ngwr-blur-text-testing.d.ts +180 -0
  379. package/types/ngwr-blur-text.d.ts +20 -4
  380. package/types/ngwr-border-glow-testing.d.ts +219 -0
  381. package/types/ngwr-breadcrumbs.d.ts +17 -10
  382. package/types/ngwr-calendar-heatmap-testing.d.ts +79 -0
  383. package/types/ngwr-calendar-testing.d.ts +277 -0
  384. package/types/ngwr-calendar.d.ts +76 -0
  385. package/types/ngwr-carousel.d.ts +85 -6
  386. package/types/ngwr-cascader.d.ts +17 -0
  387. package/types/ngwr-checkbox.d.ts +13 -0
  388. package/types/ngwr-circular-text-testing.d.ts +196 -0
  389. package/types/ngwr-click-spark.d.ts +4 -0
  390. package/types/ngwr-color-picker-testing.d.ts +299 -0
  391. package/types/ngwr-color-picker.d.ts +34 -2
  392. package/types/ngwr-confetti.d.ts +8 -0
  393. package/types/ngwr-config.d.ts +10 -1
  394. package/types/ngwr-context-menu-testing.d.ts +24 -11
  395. package/types/ngwr-context-menu.d.ts +71 -1
  396. package/types/ngwr-counter.d.ts +1 -0
  397. package/types/{ngwr-date-adapter-fns.d.ts → ngwr-date-adapters-fns.d.ts} +33 -6
  398. package/types/{ngwr-date-adapter-luxon.d.ts → ngwr-date-adapters-luxon.d.ts} +1 -1
  399. package/types/ngwr-date-picker-testing.d.ts +17 -72
  400. package/types/ngwr-date-picker.d.ts +8 -4
  401. package/types/{ngwr-date-adapter.d.ts → ngwr-date.d.ts} +24 -5
  402. package/types/ngwr-decrypt-text-testing.d.ts +222 -0
  403. package/types/ngwr-dialog.d.ts +38 -1
  404. package/types/ngwr-divider.d.ts +25 -0
  405. package/types/ngwr-donut-chart-testing.d.ts +83 -0
  406. package/types/ngwr-donut-chart.d.ts +3 -3
  407. package/types/ngwr-drag-drop.d.ts +56 -2
  408. package/types/ngwr-drawer.d.ts +68 -5
  409. package/types/ngwr-dropdown.d.ts +9 -0
  410. package/types/ngwr-event-calendar-testing.d.ts +301 -0
  411. package/types/ngwr-event-calendar.d.ts +17 -8
  412. package/types/ngwr-falling-text-testing.d.ts +188 -0
  413. package/types/ngwr-falling-text.d.ts +1 -1
  414. package/types/ngwr-form.d.ts +12 -2
  415. package/types/ngwr-fuzzy-text-testing.d.ts +130 -0
  416. package/types/ngwr-gauge-testing.d.ts +71 -0
  417. package/types/ngwr-glitch-text-testing.d.ts +201 -0
  418. package/types/ngwr-gradient-text-testing.d.ts +186 -0
  419. package/types/ngwr-i18n.d.ts +13 -4
  420. package/types/ngwr-image-cropper-testing.d.ts +173 -0
  421. package/types/ngwr-image-cropper.d.ts +71 -5
  422. package/types/ngwr-input-number-testing.d.ts +15 -10
  423. package/types/ngwr-input-number.d.ts +44 -5
  424. package/types/ngwr-input-otp-testing.d.ts +12 -6
  425. package/types/ngwr-input-otp.d.ts +15 -1
  426. package/types/ngwr-knob-testing.d.ts +150 -0
  427. package/types/ngwr-lightbox-testing.d.ts +154 -0
  428. package/types/ngwr-lightbox.d.ts +6 -0
  429. package/types/ngwr-line-chart-testing.d.ts +93 -0
  430. package/types/ngwr-line-chart.d.ts +20 -3
  431. package/types/ngwr-markdown.d.ts +11 -0
  432. package/types/ngwr-marquee-testing.d.ts +280 -0
  433. package/types/ngwr-mention.d.ts +32 -0
  434. package/types/ngwr-meter-group-testing.d.ts +77 -0
  435. package/types/ngwr-overlay.d.ts +20 -1
  436. package/types/ngwr-pagination-testing.d.ts +4 -4
  437. package/types/ngwr-pipes.d.ts +1 -1
  438. package/types/ngwr-popover-testing.d.ts +7 -2
  439. package/types/ngwr-popover.d.ts +1 -0
  440. package/types/ngwr-result.d.ts +6 -0
  441. package/types/ngwr-rotating-text-testing.d.ts +191 -0
  442. package/types/ngwr-segmented-testing.d.ts +9 -0
  443. package/types/ngwr-segmented.d.ts +21 -1
  444. package/types/ngwr-select.d.ts +100 -6
  445. package/types/ngwr-shiny-text-testing.d.ts +165 -0
  446. package/types/ngwr-shiny-text.d.ts +4 -2
  447. package/types/ngwr-sidebar.d.ts +14 -5
  448. package/types/ngwr-slider.d.ts +84 -1
  449. package/types/ngwr-sparkline-testing.d.ts +69 -0
  450. package/types/ngwr-speed-dial-testing.d.ts +199 -0
  451. package/types/ngwr-speed-dial.d.ts +22 -3
  452. package/types/ngwr-splash-cursor-testing.d.ts +95 -0
  453. package/types/ngwr-split-text-testing.d.ts +209 -0
  454. package/types/ngwr-split-text.d.ts +21 -0
  455. package/types/ngwr-splitter-testing.d.ts +174 -0
  456. package/types/ngwr-spotlight-card-testing.d.ts +303 -0
  457. package/types/ngwr-star-border-testing.d.ts +135 -0
  458. package/types/ngwr-stepper-testing.d.ts +5 -5
  459. package/types/ngwr-stepper.d.ts +8 -0
  460. package/types/ngwr-storage.d.ts +1 -0
  461. package/types/ngwr-table.d.ts +114 -12
  462. package/types/ngwr-tabs-testing.d.ts +11 -10
  463. package/types/ngwr-tabs.d.ts +2 -0
  464. package/types/ngwr-theme.d.ts +82 -1
  465. package/types/ngwr-tilt-card-testing.d.ts +158 -0
  466. package/types/ngwr-tilt-card.d.ts +2 -0
  467. package/types/ngwr-toast.d.ts +14 -5
  468. package/types/ngwr-tour-testing.d.ts +143 -0
  469. package/types/ngwr-tour.d.ts +22 -4
  470. package/types/ngwr-tree.d.ts +12 -4
  471. package/types/ngwr-typewriter-testing.d.ts +211 -0
  472. package/types/ngwr-utils.d.ts +5 -2
  473. package/types/ngwr-version.d.ts +1 -1
  474. package/types/ngwr-waves-testing.d.ts +121 -0
  475. package/types/ngwr-window-testing.d.ts +263 -0
  476. package/types/ngwr-window.d.ts +66 -21
  477. package/typography/styles/_index.scss +1 -1
  478. package/window/styles/_index.scss +116 -42
  479. package/fesm2022/ngwr-date-adapter-fns.mjs.map +0 -1
  480. package/fesm2022/ngwr-date-adapter-luxon.mjs.map +0 -1
  481. package/fesm2022/ngwr-date-adapter.mjs.map +0 -1
@@ -0,0 +1,277 @@
1
+ import { BaseHarnessFilters, ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';
2
+ import { WrCalendarMode } from 'ngwr/calendar';
3
+
4
+ /**
5
+ * @license
6
+ *
7
+ * Use of this source code is governed by an MIT-style license that can be
8
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
9
+ */
10
+
11
+ /** Which of the three sub-views the calendar is showing. */
12
+ type WrCalendarView = 'day' | 'month' | 'year';
13
+ /** One month or year chip, as the picker views render them. */
14
+ interface WrCalendarChip {
15
+ /** The label as printed — a short month name, or the year. */
16
+ readonly label: string;
17
+ /** Whether it is the current selection. */
18
+ readonly selected: boolean;
19
+ /** Whether it is the month / year containing today. */
20
+ readonly current: boolean;
21
+ /** Whether `min` / `max` ruled it out. */
22
+ readonly disabled: boolean;
23
+ }
24
+ /** Narrows which `<wr-calendar>` a harness query matches. */
25
+ interface WrCalendarHarnessFilters extends BaseHarnessFilters {
26
+ /** Match the header label as printed, e.g. `March 2026`. */
27
+ readonly headerLabel?: string | RegExp;
28
+ /** Match single- or range-selection calendars. */
29
+ readonly mode?: WrCalendarMode;
30
+ /** Match only enabled (`false`) or only disabled (`true`) calendars. */
31
+ readonly disabled?: boolean;
32
+ }
33
+ /** Narrows which day cell a harness query matches. */
34
+ interface WrCalendarDayHarnessFilters extends BaseHarnessFilters {
35
+ /**
36
+ * Match the cell's day number as rendered (`'1'` … `'31'`). A string is an exact
37
+ * match, a RegExp is tested — note the grid spills into the neighbouring months,
38
+ * so most numbers appear twice.
39
+ */
40
+ readonly text?: string | RegExp;
41
+ /** Match only selected (`true`) or only unselected (`false`) cells. */
42
+ readonly selected?: boolean;
43
+ /** Match only enabled (`false`) or only disabled (`true`) cells. */
44
+ readonly disabled?: boolean;
45
+ /**
46
+ * Match cells strictly BETWEEN the two ends of a picked range — the ends
47
+ * themselves are `selected`, not `inRange`.
48
+ */
49
+ readonly inRange?: boolean;
50
+ }
51
+
52
+ /**
53
+ * @license
54
+ *
55
+ * Use of this source code is governed by an MIT-style license that can be
56
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
57
+ */
58
+
59
+ /**
60
+ * Test harness for one day cell of a `<wr-calendar>` grid.
61
+ *
62
+ * The cell belongs to the calendar, and a date-picker's popup is a calendar in an
63
+ * overlay — so this is the harness for both, re-exported from
64
+ * `ngwr/date-picker/testing` under the name it shipped as
65
+ * (`WrDatePickerDayHarness`). Reach it through `WrCalendarHarness.getDays()`, or
66
+ * through `WrDatePickerHarness.getDay()` / `getDays()`, which scope it to ONE
67
+ * picker's panel — those cells are in the shared overlay container, so a bare query
68
+ * would answer with whichever picker opened first.
69
+ *
70
+ * State is read the way a screen reader reads it (`role`, `aria-selected`,
71
+ * `aria-disabled`) with the `.wr-calendar__day--*` modifiers filling in what
72
+ * ARIA has no word for: today, the spill days of the neighbouring months, and
73
+ * the interior of a picked range.
74
+ *
75
+ * @see https://ngwr.dev/guides/testing
76
+ */
77
+ declare class WrCalendarDayHarness extends ComponentHarness {
78
+ static hostSelector: string;
79
+ /** Build a predicate that narrows the query. */
80
+ static with(options?: WrCalendarDayHarnessFilters): HarnessPredicate<WrCalendarDayHarness>;
81
+ /** The day number as rendered. */
82
+ getText(): Promise<string>;
83
+ /** The day number as a number, for mapping a list of cells to dates. */
84
+ getDayOfMonth(): Promise<number>;
85
+ /** `'gridcell'` — the cell is a button, and the grid semantics are what a spec should assert. */
86
+ getRole(): Promise<string | null>;
87
+ /** Whether this day is (one end of) the current selection. */
88
+ isSelected(): Promise<boolean>;
89
+ /**
90
+ * Whether the day refuses selection — `min` / `max` or `dateFilter` ruled it
91
+ * out, or the whole calendar is disabled.
92
+ */
93
+ isDisabled(): Promise<boolean>;
94
+ /** Whether the cell is today's date. */
95
+ isToday(): Promise<boolean>;
96
+ /**
97
+ * Whether the cell belongs to a neighbouring month. The grid is always 6x7, so
98
+ * every month is padded with days that are selectable but not "in" the month —
99
+ * which is why `WrDatePickerHarness.getDay` and {@link WrCalendarHarness.getDay} skip them.
100
+ */
101
+ isOutOfMonth(): Promise<boolean>;
102
+ /** Whether the day lies strictly between the two ends of a picked range. */
103
+ isInRange(): Promise<boolean>;
104
+ /**
105
+ * Whether this is the roving cell — the grid's single tab stop, and where the
106
+ * arrow keys move from.
107
+ *
108
+ * At most ONE cell answers `true`, and it is not always one: the calendar's
109
+ * roving date does not follow `next()` / `previous()`, so a grid navigated away
110
+ * from that month has no active cell (and, deliberately or not, no tab stop)
111
+ * until a cell is clicked or the arrows move it.
112
+ */
113
+ isActive(): Promise<boolean>;
114
+ /** Click the cell. A disabled cell swallows the click — assert, do not assume. */
115
+ click(): Promise<void>;
116
+ }
117
+
118
+ /**
119
+ * @license
120
+ *
121
+ * Use of this source code is governed by an MIT-style license that can be
122
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
123
+ */
124
+
125
+ /** The arrow keys, by the direction a user would say out loud. */
126
+ type Arrow = 'left' | 'right' | 'up' | 'down';
127
+ /**
128
+ * Test harness for `<wr-calendar>` — the standalone month grid, and the one
129
+ * `<wr-date-picker>` puts in an overlay.
130
+ *
131
+ * **It is three views behind one header.** Clicking the header label walks
132
+ * `day → month → year`, and each view renders something different: a
133
+ * `role="grid"` of day cells, or a `role="listbox"` of chips. Every day method
134
+ * throws off the day view rather than answering `[]`, which would read as "this
135
+ * month has no days".
136
+ *
137
+ * **The roving cell is not the selection.** The grid has one tab stop and the
138
+ * arrows move it; it starts on the selected date, or on today when nothing is
139
+ * picked. And it does NOT follow {@link next} / {@link previous} — a grid paged
140
+ * away from the roving month has no active cell at all, and so no tab stop, until
141
+ * a key or a click puts one back. That is the component's behaviour, and
142
+ * {@link getActiveDayNumber} is how a spec sees it.
143
+ *
144
+ * **Keys go to the host, not to a cell.** The component listens on its own element,
145
+ * so {@link pressArrow} works whether or not jsdom managed to put real focus
146
+ * anywhere — which it often does not, since the calendar moves focus in an
147
+ * `afterNextRender` and a disabled cell cannot take it.
148
+ *
149
+ * @example
150
+ * ```ts
151
+ * const calendar = await loader.getHarness(WrCalendarHarness);
152
+ *
153
+ * expect(await calendar.getHeaderLabel()).toBe('March 2026');
154
+ * await (await calendar.getDay(14)).click();
155
+ * expect(await calendar.getSelectedDayNumbers()).toEqual([14]);
156
+ * ```
157
+ *
158
+ * @see https://ngwr.dev/guides/testing
159
+ */
160
+ declare class WrCalendarHarness extends ComponentHarness {
161
+ static hostSelector: string;
162
+ /** Build a predicate that narrows the query — pass to `getHarness` / `getAllHarnesses`. */
163
+ static with(options?: WrCalendarHarnessFilters): HarnessPredicate<WrCalendarHarness>;
164
+ private readonly header;
165
+ private readonly prevButton;
166
+ private readonly nextButton;
167
+ /** Which sub-view is showing. */
168
+ getView(): Promise<WrCalendarView>;
169
+ /** Single- or range-selection, from the host modifier. */
170
+ getMode(): Promise<WrCalendarMode>;
171
+ /** Whether the whole calendar refuses interaction. */
172
+ isDisabled(): Promise<boolean>;
173
+ /** The header text — `March 2026`, `2026`, or `2016 – 2027` depending on the view. */
174
+ getHeaderLabel(): Promise<string>;
175
+ /**
176
+ * Click the header — stepping `day → month → year`.
177
+ *
178
+ * The year view is the end of the walk: the header is disabled there, so this
179
+ * throws rather than clicking a button the DOM would ignore.
180
+ */
181
+ clickHeader(): Promise<void>;
182
+ /**
183
+ * Step back — a month, a year or twelve years, depending on the view.
184
+ *
185
+ * The roving day cell does NOT come along: paging is a view change, not a
186
+ * navigation, and the tab stop stays on the month it was in.
187
+ */
188
+ previous(): Promise<void>;
189
+ /** Step forward — a month, a year or twelve years, depending on the view. */
190
+ next(): Promise<void>;
191
+ /**
192
+ * The back arrow's accessible name, which changes with the view — the arrows are
193
+ * icon-only, so this is the only name they have.
194
+ */
195
+ getPreviousLabel(): Promise<string | null>;
196
+ /** The forward arrow's accessible name. */
197
+ getNextLabel(): Promise<string | null>;
198
+ /** The weekday column headers, in the order the adapter's first day of week puts them. */
199
+ getWeekdayNames(): Promise<string[]>;
200
+ /**
201
+ * Every day cell, in DOM order — 42 of them, since the grid is always six weeks.
202
+ *
203
+ * That includes the spill days of the neighbouring months, which are selectable
204
+ * and not "in" the month; {@link getDay} skips them, and
205
+ * `WrCalendarDayHarness.isOutOfMonth()` tells them apart.
206
+ */
207
+ getDays(filters?: WrCalendarDayHarnessFilters): Promise<WrCalendarDayHarness[]>;
208
+ /**
209
+ * The cell for a day of THIS month.
210
+ *
211
+ * The number alone is ambiguous — a 42-cell grid shows most numbers twice — so
212
+ * the spill days are skipped rather than matched, which is what "the 3rd" means
213
+ * to someone reading the calendar.
214
+ */
215
+ getDay(dayOfMonth: number): Promise<WrCalendarDayHarness>;
216
+ /** The day numbers currently selected — one in single mode, both ends in range mode. */
217
+ getSelectedDayNumbers(): Promise<number[]>;
218
+ /** The day numbers strictly inside a picked range — never the ends. */
219
+ getInRangeDayNumbers(): Promise<number[]>;
220
+ /**
221
+ * The day number holding the roving tab stop, or `null` when the grid has none.
222
+ *
223
+ * `null` is a real answer, not a failure: paging with {@link next} leaves the
224
+ * roving date behind in another month, and the grid then has no `tabindex="0"`
225
+ * at all until a key or a click puts one back.
226
+ */
227
+ getActiveDayNumber(): Promise<number | null>;
228
+ /** The month chips, with their state. Throws off the month view. */
229
+ getMonths(): Promise<WrCalendarChip[]>;
230
+ /** The year chips, with their state. Throws off the year view. */
231
+ getYears(): Promise<WrCalendarChip[]>;
232
+ /**
233
+ * Click a month or year chip by its printed label — which drops the calendar back
234
+ * one view, the way clicking the header climbed up.
235
+ *
236
+ * Throws on the day view, where there are no chips, and on a label the view does
237
+ * not offer, naming what it does.
238
+ */
239
+ selectChip(label: string): Promise<void>;
240
+ /**
241
+ * Press an arrow key — one day left or right, one WEEK up or down.
242
+ *
243
+ * Sent to the host, where the component listens, so this does not depend on jsdom
244
+ * having managed to focus a cell. Under `dir="rtl"` the horizontal pair mirrors:
245
+ * ArrowRight goes back a day, because the grid itself is mirrored.
246
+ */
247
+ pressArrow(arrow: Arrow): Promise<void>;
248
+ /** Press Home — the first day of the roving cell's week, not of the month. */
249
+ pressHome(): Promise<void>;
250
+ /** Press End — the last day of the roving cell's week. */
251
+ pressEnd(): Promise<void>;
252
+ /** Press PageUp — a month back, or a YEAR back with `shift`. */
253
+ pressPageUp(options?: {
254
+ shift?: boolean;
255
+ }): Promise<void>;
256
+ /** Press PageDown — a month on, or a YEAR on with `shift`. */
257
+ pressPageDown(options?: {
258
+ shift?: boolean;
259
+ }): Promise<void>;
260
+ /** Press Enter — picking the roving day, exactly as clicking it would. */
261
+ pressEnter(): Promise<void>;
262
+ /**
263
+ * The role of the element that owns the day rows.
264
+ *
265
+ * Worth asserting rather than assuming: the grid is NOT the host. The host also
266
+ * holds the nav header, and a `role="grid"` may only own rows — so the role sits
267
+ * on the body, and the weekday strip is a row inside it rather than a sibling.
268
+ */
269
+ getGridRole(): Promise<string | null>;
270
+ /** How many week rows the grid renders — always six, which is what keeps it from reflowing. */
271
+ getWeekCount(): Promise<number>;
272
+ private readChips;
273
+ private requireView;
274
+ }
275
+
276
+ export { WrCalendarDayHarness, WrCalendarHarness };
277
+ export type { WrCalendarChip, WrCalendarDayHarnessFilters, WrCalendarHarnessFilters, WrCalendarView };
@@ -79,6 +79,26 @@ declare class WrCalendar {
79
79
  protected readonly hoverDate: _angular_core.WritableSignal<Date | null>;
80
80
  /** Which sub-view is currently shown. Cycles `day → month → year` on header click. */
81
81
  protected readonly viewMode: _angular_core.WritableSignal<"day" | "month" | "year">;
82
+ /**
83
+ * Chip the month / year listbox has moved its ring to, as an index into
84
+ * `monthsView()` / `yearsView()`. `null` means "nobody has pressed an arrow
85
+ * yet", which resolves to the month or year on screen — see {@link activeChip}.
86
+ *
87
+ * Reset on every view change rather than remembered: coming back to the month
88
+ * list should ring the month you are looking at, not the one an earlier visit
89
+ * happened to leave the ring on.
90
+ */
91
+ private readonly rovedChip;
92
+ private readonly prevMonthLabel;
93
+ private readonly nextMonthLabel;
94
+ private readonly prevYearLabel;
95
+ private readonly nextYearLabel;
96
+ private readonly prevYearsLabel;
97
+ private readonly nextYearsLabel;
98
+ /** What the ← button does from here — a month, a year, or a 12-year page. */
99
+ protected readonly prevLabel: _angular_core.Signal<string>;
100
+ /** What the → button does from here. */
101
+ protected readonly nextLabel: _angular_core.Signal<string>;
82
102
  protected readonly today: _angular_core.Signal<Date>;
83
103
  protected readonly weekdayNames: _angular_core.Signal<readonly string[]>;
84
104
  protected readonly monthsView: _angular_core.Signal<readonly string[]>;
@@ -87,6 +107,22 @@ declare class WrCalendar {
87
107
  protected readonly headerLabel: _angular_core.Signal<string>;
88
108
  /** 6×7 day grid covering the current month plus spillover. */
89
109
  protected readonly weeks: _angular_core.Signal<readonly (readonly Date[])[]>;
110
+ /**
111
+ * The chip carrying the listbox's only `tabindex="0"` — where the ring is, and
112
+ * where Tab lands.
113
+ *
114
+ * A listbox owns its arrows, and these two did not: twelve months were twelve
115
+ * tab stops, so the role promised an interaction model the component never
116
+ * implemented. One tab stop plus arrow keys is the roving-tabindex half of the
117
+ * pattern the day grid already uses.
118
+ *
119
+ * Routed through {@link nearestEnabledChip} on BOTH paths — the seed and every
120
+ * arrow — for the reason the grid learned first: `.focus()` on a
121
+ * `<button disabled>` is a no-op, so parking the sole tab stop on a month a
122
+ * `[min]` has closed off leaves the whole view unreachable by keyboard.
123
+ * `-1` on the day view, where there are no chips at all.
124
+ */
125
+ protected readonly activeChip: _angular_core.Signal<number>;
90
126
  protected readonly classes: _angular_core.Signal<string>;
91
127
  constructor();
92
128
  /** Header `‹` button — steps by month / year / decade based on the active view. */
@@ -97,6 +133,14 @@ declare class WrCalendar {
97
133
  protected onLabelClick(): void;
98
134
  protected onMonthSelect(monthIdx: number): void;
99
135
  protected onYearSelect(year: number): void;
136
+ /**
137
+ * Switch views and drop the chip ring with them.
138
+ *
139
+ * Every view change is the only thing that changes what the chips MEAN, so it
140
+ * is the one place the ring has to forget where it was — otherwise a year
141
+ * picked at index 7 rings the eighth MONTH on the way back down.
142
+ */
143
+ private setViewMode;
100
144
  private stepViewDate;
101
145
  protected isToday(date: Date): boolean;
102
146
  protected isOutOfMonth(date: Date): boolean;
@@ -116,6 +160,38 @@ declare class WrCalendar {
116
160
  protected onCellLeave(): void;
117
161
  private applyRangeClick;
118
162
  protected onKeyDown(event: KeyboardEvent): void;
163
+ /**
164
+ * Arrow / Home / End inside the month or year listbox — the roving half of the
165
+ * pattern their `role` has always claimed.
166
+ *
167
+ * Steps by one along the row and by a full row vertically, and the inline pair
168
+ * mirrors under `dir="rtl"` for the same reason the grid's does: those two keys
169
+ * name a side of the screen. The page does NOT wrap or spill into the next
170
+ * one — a month list is twelve fixed cells, and the header's `‹` / `›` are what
171
+ * change which twelve. Anything else (Enter, Space, Tab, Escape) is left to the
172
+ * button and to whatever owns the calendar.
173
+ */
174
+ private onChipKeyDown;
175
+ /** How many chips the current view renders — twelve either way, read rather than assumed. */
176
+ private chipCount;
177
+ /** Whether the chip at `index` refuses selection in the current view. */
178
+ private isChipDisabled;
179
+ /** The chip the view itself points at: the month or year currently on screen. */
180
+ private currentChip;
181
+ /**
182
+ * The first selectable chip at or after `from`, else the first before it, else
183
+ * `from` unchanged when the whole page is closed off — the chip version of
184
+ * {@link nearestEnabled}, and it exists for the same reason: the ring carries
185
+ * the only `tabindex="0"`, and a disabled button cannot hold it.
186
+ */
187
+ private nearestEnabledChip;
188
+ /**
189
+ * The first selectable chip at `from` or beyond it in `step`'s direction, else
190
+ * null when that whole direction is closed off — which is the answer for an
191
+ * ArrowLeft on the first chip: stay put.
192
+ */
193
+ private enabledChipToward;
194
+ private focusActiveChip;
119
195
  /**
120
196
  * The first selectable day at or after `candidate`, else the first before it,
121
197
  * else `candidate` unchanged when everything nearby is closed off. Bounded at
@@ -1,14 +1,74 @@
1
1
  import * as ngwr_i18n from 'ngwr/i18n';
2
2
  import * as _angular_core from '@angular/core';
3
+ import { InjectionToken, Signal } from '@angular/core';
3
4
 
4
5
  /**
5
6
  * One slide in a {@link WrCarousel}. Holds whatever content you
6
7
  * project — image, card, video, anything.
8
+ *
9
+ * **An off-screen slide is `inert`.** Only one slide is visible, but the track
10
+ * merely translates the others out of view: without this they stay in the tab
11
+ * order and in the accessibility tree, so a keyboard user tabs into a link they
12
+ * cannot see and a screen reader announces every slide as if they were all on
13
+ * screen. `inert` takes the whole subtree out of both at once, which is why it
14
+ * is preferred here over `tabindex="-1"` (which reaches only the host) — the
15
+ * same answer `wr-collapse` and `wr-marquee` use.
16
+ *
17
+ * `aria-hidden` rides along for the same reason it does on the marquee's
18
+ * duplicate copies: it states the intent for anything reading the attribute
19
+ * rather than honouring `inert`.
7
20
  */
8
21
  declare class WrCarouselSlide {
22
+ private readonly carousel;
23
+ /**
24
+ * Word a screen reader speaks IN PLACE OF the `group` role. Falls back to
25
+ * `carousel.slideRoledescription`, then `'slide'`.
26
+ */
27
+ readonly roledescription: _angular_core.InputSignal<string | null>;
28
+ protected readonly resolvedRoledescription: _angular_core.Signal<string>;
29
+ /**
30
+ * Whether this slide is one of the ones translated out of view.
31
+ *
32
+ * `false` while the index is `-1`: content children resolve after the first
33
+ * render, and a slide that hid itself in that window would make the carousel
34
+ * open with everything inert. `false` too when there is no parent — the
35
+ * component is exported, so it can be used on its own.
36
+ */
37
+ protected readonly offScreen: _angular_core.Signal<boolean>;
9
38
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrCarouselSlide, never>;
10
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrCarouselSlide, "wr-carousel-slide", never, {}, {}, never, ["*"], true, never>;
39
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrCarouselSlide, "wr-carousel-slide", never, { "roledescription": { "alias": "roledescription"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
40
+ }
41
+
42
+ /**
43
+ * @license
44
+ *
45
+ * Use of this source code is governed by an MIT-style license that can be
46
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
47
+ */
48
+
49
+ /**
50
+ * Contract a `<wr-carousel-slide>` uses to ask its parent whether it is the one
51
+ * on screen.
52
+ *
53
+ * A token rather than an input, because slides arrive through `<ng-content />`:
54
+ * nothing in `carousel.html` can bind to them, so the child has to reach up.
55
+ * Same shape as {@link WR_TABS}.
56
+ *
57
+ * @internal
58
+ */
59
+ interface WrCarouselContext {
60
+ /** Index of the slide currently on screen. */
61
+ readonly active: Signal<number>;
62
+ /**
63
+ * Position of a slide in projection order, or `-1` before it has registered.
64
+ *
65
+ * Reads the content-children signal, so a `computed()` calling this tracks
66
+ * both the active index and slides being added or removed.
67
+ */
68
+ indexOf(slide: object): number;
11
69
  }
70
+ /** Token a `<wr-carousel-slide>` injects to find its parent `<wr-carousel>`. */
71
+ declare const WR_CAROUSEL: InjectionToken<WrCarouselContext>;
12
72
 
13
73
  /**
14
74
  * Slide carousel. Project `<wr-carousel-slide>` children — the carousel
@@ -25,7 +85,7 @@ declare class WrCarouselSlide {
25
85
  *
26
86
  * @see https://ngwr.dev/reference/components/carousel
27
87
  */
28
- declare class WrCarousel {
88
+ declare class WrCarousel implements WrCarouselContext {
29
89
  /** Accessible name of the previous-slide button. Falls back to `carousel.prev`. */
30
90
  readonly prevLabel: _angular_core.InputSignal<string | null>;
31
91
  /** Accessible name of the next-slide button. Falls back to `carousel.next`. */
@@ -38,6 +98,12 @@ declare class WrCarousel {
38
98
  /** Accessible name of the carousel itself. Falls back to `carousel.label`. */
39
99
  readonly ariaLabel: _angular_core.InputSignal<string | null>;
40
100
  protected readonly resolvedAriaLabel: _angular_core.Signal<string>;
101
+ /**
102
+ * Word a screen reader speaks IN PLACE OF the `group` role. Falls back to
103
+ * `carousel.roledescription`, then `'carousel'`.
104
+ */
105
+ readonly roledescription: _angular_core.InputSignal<string | null>;
106
+ protected readonly resolvedRoledescription: _angular_core.Signal<string>;
41
107
  protected readonly slideLabel: (params?: ngwr_i18n.WrI18nParams) => string;
42
108
  /** Active slide index. Two-way bindable. @default 0 */
43
109
  readonly active: _angular_core.ModelSignal<number>;
@@ -53,6 +119,14 @@ declare class WrCarousel {
53
119
  readonly loop: _angular_core.InputSignalWithTransform<boolean, any>;
54
120
  protected readonly slides: _angular_core.Signal<readonly WrCarouselSlide[]>;
55
121
  protected readonly count: _angular_core.Signal<number>;
122
+ /**
123
+ * Where a slide sits in projection order — {@link WrCarouselContext}.
124
+ *
125
+ * Public only because the child injects the parent through `WR_CAROUSEL`;
126
+ * reading `slides()` here is what makes the child's `computed()` re-run when a
127
+ * slide is added or removed.
128
+ */
129
+ indexOf(slide: object): number;
56
130
  /** Live horizontal drag offset (px) during a touch swipe. */
57
131
  protected readonly dragX: _angular_core.WritableSignal<number>;
58
132
  protected readonly dragging: _angular_core.WritableSignal<boolean>;
@@ -69,12 +143,16 @@ declare class WrCarousel {
69
143
  /** CSS transform for the track — the per-slide offset plus any live drag. */
70
144
  protected readonly trackStyle: _angular_core.Signal<string>;
71
145
  private timer;
146
+ private readonly hovered;
147
+ private readonly focusWithin;
72
148
  private readonly paused;
73
149
  private readonly destroyRef;
74
150
  private readonly isBrowser;
75
151
  constructor();
76
- protected onPauseIn(): void;
77
- protected onPauseOut(): void;
152
+ protected onHoverIn(): void;
153
+ protected onHoverOut(): void;
154
+ protected onFocusIn(): void;
155
+ protected onFocusOut(): void;
78
156
  goTo(index: number): void;
79
157
  next(): void;
80
158
  prev(): void;
@@ -83,7 +161,8 @@ declare class WrCarousel {
83
161
  protected onSwipeMove(event: TouchEvent): void;
84
162
  protected onSwipeEnd(event: TouchEvent, viewport: HTMLElement): void;
85
163
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrCarousel, never>;
86
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrCarousel, "wr-carousel", never, { "prevLabel": { "alias": "prevLabel"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; "paginationLabel": { "alias": "paginationLabel"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "showArrows": { "alias": "showArrows"; "required": false; "isSignal": true; }; "showDots": { "alias": "showDots"; "required": false; "isSignal": true; }; "autoplay": { "alias": "autoplay"; "required": false; "isSignal": true; }; "intervalMs": { "alias": "intervalMs"; "required": false; "isSignal": true; }; "loop": { "alias": "loop"; "required": false; "isSignal": true; }; }, { "active": "activeChange"; }, ["slides"], ["*"], true, never>;
164
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrCarousel, "wr-carousel", never, { "prevLabel": { "alias": "prevLabel"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; "paginationLabel": { "alias": "paginationLabel"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "roledescription": { "alias": "roledescription"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "showArrows": { "alias": "showArrows"; "required": false; "isSignal": true; }; "showDots": { "alias": "showDots"; "required": false; "isSignal": true; }; "autoplay": { "alias": "autoplay"; "required": false; "isSignal": true; }; "intervalMs": { "alias": "intervalMs"; "required": false; "isSignal": true; }; "loop": { "alias": "loop"; "required": false; "isSignal": true; }; }, { "active": "activeChange"; }, ["slides"], ["*"], true, never>;
87
165
  }
88
166
 
89
- export { WrCarousel, WrCarouselSlide };
167
+ export { WR_CAROUSEL, WrCarousel, WrCarouselSlide };
168
+ export type { WrCarouselContext };
@@ -116,14 +116,31 @@ declare class WrCascader<T = string> implements FormValueControl<unknown> {
116
116
  private readonly vcr;
117
117
  private readonly scrollStrategies;
118
118
  private readonly destroyRef;
119
+ private readonly injector;
119
120
  private overlayRef;
120
121
  constructor();
121
122
  protected onTriggerClick(): void;
123
+ /**
124
+ * ArrowDown / ArrowUp open the panel, Alt+ArrowDown included — the combobox way in,
125
+ * and the shape `wr-dropdown`'s trigger uses. Enter and Space need no branch: the
126
+ * trigger is a real `<button>`, so the browser turns them into the click above.
127
+ *
128
+ * Only while closed. Once the panel is up the caret is inside it, and its options
129
+ * own their own keys.
130
+ */
131
+ protected onTriggerKeydown(event: KeyboardEvent): void;
122
132
  protected onOptionClick(colIndex: number, opt: WrCascaderOption<T>, event: Event): void;
123
133
  protected clearSelection(event: Event): void;
124
134
  protected isActiveAt(colIndex: number, value: T): boolean;
125
135
  private pathsEqual;
126
136
  private openOverlay;
137
+ /**
138
+ * The option the panel opens on: the selected one in the first column when there is
139
+ * a selection, otherwise the first enabled root. A disabled option is skipped — it
140
+ * still carries `tabindex="-1"`, so `focus()` would land on it and answer for a
141
+ * choice nobody can make.
142
+ */
143
+ private focusPanelOption;
127
144
  private closeOverlay;
128
145
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrCascader<any>, never>;
129
146
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrCascader<any>, "wr-cascader", never, { "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": true; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "changeOnSelect": { "alias": "changeOnSelect"; "required": false; "isSignal": true; }; "separator": { "alias": "separator"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
@@ -120,6 +120,17 @@ interface WrCheckboxGroupContext {
120
120
  isSelected(value: unknown): boolean;
121
121
  /** Toggle the given value in the group. */
122
122
  toggle(value: unknown): void;
123
+ /**
124
+ * A child lost focus.
125
+ *
126
+ * The group is the control a form binds to, so it is the group that has to
127
+ * report touched — and a child's own `touch` output goes nowhere, since the
128
+ * group never listens to it. Without this channel the only way to mark a
129
+ * group touched was to CHANGE it: tabbing through every box and picking none
130
+ * left the field pristine, so a `required` group showed no error until the
131
+ * user toggled something, which is the one thing they had decided not to do.
132
+ */
133
+ blurred(): void;
123
134
  /** Whether the entire group is disabled. */
124
135
  readonly isDisabled: Signal<boolean>;
125
136
  }
@@ -167,6 +178,8 @@ declare class WrCheckboxGroup implements FormValueControl<unknown[]>, WrCheckbox
167
178
  readonly isDisabled: _angular_core.Signal<boolean>;
168
179
  isSelected(value: unknown): boolean;
169
180
  toggle(value: unknown): void;
181
+ /** @internal A child checkbox lost focus — see {@link WrCheckboxGroupContext.blurred}. */
182
+ blurred(): void;
170
183
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrCheckboxGroup, never>;
171
184
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrCheckboxGroup, "wr-checkbox-group", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, ["*"], true, never>;
172
185
  }