ngwr 10.2.0 → 11.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 (471) hide show
  1. package/README.md +39 -19
  2. package/anchor/styles/_index.scss +4 -4
  3. package/back-top/styles/_index.scss +6 -1
  4. package/blur-text/styles/_index.scss +13 -0
  5. package/button/styles/_index.scss +11 -6
  6. package/carousel/styles/_index.scss +13 -2
  7. package/cascader/styles/_index.scss +2 -2
  8. package/circular-text/styles/_index.scss +2 -0
  9. package/collapse/styles/_index.scss +1 -1
  10. package/color-picker/styles/_index.scss +6 -1
  11. package/compare/styles/_index.scss +1 -2
  12. package/context-menu/styles/_index.scss +6 -1
  13. package/descriptions/styles/_index.scss +2 -2
  14. package/dialog/styles/_index.scss +38 -0
  15. package/drawer/styles/_index.scss +20 -1
  16. package/dropdown/styles/_index.scss +19 -5
  17. package/empty/styles/_index.scss +10 -0
  18. package/fesm2022/ngwr-action-sheet.mjs +15 -5
  19. package/fesm2022/ngwr-action-sheet.mjs.map +1 -1
  20. package/fesm2022/ngwr-affix.mjs +43 -16
  21. package/fesm2022/ngwr-affix.mjs.map +1 -1
  22. package/fesm2022/ngwr-alert.mjs +3 -3
  23. package/fesm2022/ngwr-anchor.mjs +20 -8
  24. package/fesm2022/ngwr-anchor.mjs.map +1 -1
  25. package/fesm2022/ngwr-aurora.mjs +4 -4
  26. package/fesm2022/ngwr-aurora.mjs.map +1 -1
  27. package/fesm2022/ngwr-avatar.mjs +33 -9
  28. package/fesm2022/ngwr-avatar.mjs.map +1 -1
  29. package/fesm2022/ngwr-back-top.mjs +8 -4
  30. package/fesm2022/ngwr-back-top.mjs.map +1 -1
  31. package/fesm2022/ngwr-badge.mjs +6 -6
  32. package/fesm2022/ngwr-badge.mjs.map +1 -1
  33. package/fesm2022/ngwr-bar-chart.mjs +32 -11
  34. package/fesm2022/ngwr-bar-chart.mjs.map +1 -1
  35. package/fesm2022/ngwr-blur-text.mjs +4 -4
  36. package/fesm2022/ngwr-blur-text.mjs.map +1 -1
  37. package/fesm2022/ngwr-border-glow.mjs +4 -4
  38. package/fesm2022/ngwr-border-glow.mjs.map +1 -1
  39. package/fesm2022/ngwr-breadcrumbs.mjs +9 -8
  40. package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -1
  41. package/fesm2022/ngwr-burger.mjs +11 -6
  42. package/fesm2022/ngwr-burger.mjs.map +1 -1
  43. package/fesm2022/ngwr-button-testing.mjs +96 -0
  44. package/fesm2022/ngwr-button-testing.mjs.map +1 -0
  45. package/fesm2022/ngwr-button.mjs +89 -24
  46. package/fesm2022/ngwr-button.mjs.map +1 -1
  47. package/fesm2022/ngwr-calendar-heatmap.mjs +42 -10
  48. package/fesm2022/ngwr-calendar-heatmap.mjs.map +1 -1
  49. package/fesm2022/ngwr-calendar.mjs +108 -9
  50. package/fesm2022/ngwr-calendar.mjs.map +1 -1
  51. package/fesm2022/ngwr-card.mjs +10 -10
  52. package/fesm2022/ngwr-card.mjs.map +1 -1
  53. package/fesm2022/ngwr-carousel-testing.mjs +377 -0
  54. package/fesm2022/ngwr-carousel-testing.mjs.map +1 -0
  55. package/fesm2022/ngwr-carousel.mjs +72 -18
  56. package/fesm2022/ngwr-carousel.mjs.map +1 -1
  57. package/fesm2022/ngwr-cascader-testing.mjs +534 -0
  58. package/fesm2022/ngwr-cascader-testing.mjs.map +1 -0
  59. package/fesm2022/ngwr-cascader.mjs +4 -4
  60. package/fesm2022/ngwr-cascader.mjs.map +1 -1
  61. package/fesm2022/ngwr-checkbox-testing.mjs +90 -0
  62. package/fesm2022/ngwr-checkbox-testing.mjs.map +1 -0
  63. package/fesm2022/ngwr-checkbox.mjs +15 -9
  64. package/fesm2022/ngwr-checkbox.mjs.map +1 -1
  65. package/fesm2022/ngwr-circular-text.mjs +4 -4
  66. package/fesm2022/ngwr-circular-text.mjs.map +1 -1
  67. package/fesm2022/ngwr-click-spark.mjs +4 -4
  68. package/fesm2022/ngwr-click-spark.mjs.map +1 -1
  69. package/fesm2022/ngwr-clipboard.mjs +18 -4
  70. package/fesm2022/ngwr-clipboard.mjs.map +1 -1
  71. package/fesm2022/ngwr-collapse-testing.mjs +368 -0
  72. package/fesm2022/ngwr-collapse-testing.mjs.map +1 -0
  73. package/fesm2022/ngwr-collapse.mjs +9 -9
  74. package/fesm2022/ngwr-color-picker.mjs +139 -19
  75. package/fesm2022/ngwr-color-picker.mjs.map +1 -1
  76. package/fesm2022/ngwr-command-palette-testing.mjs +589 -0
  77. package/fesm2022/ngwr-command-palette-testing.mjs.map +1 -0
  78. package/fesm2022/ngwr-command-palette.mjs +60 -10
  79. package/fesm2022/ngwr-command-palette.mjs.map +1 -1
  80. package/fesm2022/ngwr-compare.mjs +105 -15
  81. package/fesm2022/ngwr-compare.mjs.map +1 -1
  82. package/fesm2022/ngwr-confetti.mjs +3 -3
  83. package/fesm2022/ngwr-config.mjs +106 -0
  84. package/fesm2022/ngwr-config.mjs.map +1 -0
  85. package/fesm2022/ngwr-context-menu-testing.mjs +631 -0
  86. package/fesm2022/ngwr-context-menu-testing.mjs.map +1 -0
  87. package/fesm2022/ngwr-context-menu.mjs +104 -18
  88. package/fesm2022/ngwr-context-menu.mjs.map +1 -1
  89. package/fesm2022/ngwr-cookie.mjs +8 -4
  90. package/fesm2022/ngwr-cookie.mjs.map +1 -1
  91. package/fesm2022/ngwr-counter.mjs +17 -9
  92. package/fesm2022/ngwr-counter.mjs.map +1 -1
  93. package/fesm2022/ngwr-date-adapter-fns.mjs +3 -3
  94. package/fesm2022/ngwr-date-adapter-luxon.mjs +55 -7
  95. package/fesm2022/ngwr-date-adapter-luxon.mjs.map +1 -1
  96. package/fesm2022/ngwr-date-adapter.mjs +57 -11
  97. package/fesm2022/ngwr-date-adapter.mjs.map +1 -1
  98. package/fesm2022/ngwr-date-picker-testing.mjs +766 -0
  99. package/fesm2022/ngwr-date-picker-testing.mjs.map +1 -0
  100. package/fesm2022/ngwr-date-picker.mjs +409 -57
  101. package/fesm2022/ngwr-date-picker.mjs.map +1 -1
  102. package/fesm2022/ngwr-decrypt-text.mjs +30 -12
  103. package/fesm2022/ngwr-decrypt-text.mjs.map +1 -1
  104. package/fesm2022/ngwr-density.mjs +6 -6
  105. package/fesm2022/ngwr-descriptions.mjs +6 -6
  106. package/fesm2022/ngwr-dialog-testing.mjs +89 -0
  107. package/fesm2022/ngwr-dialog-testing.mjs.map +1 -0
  108. package/fesm2022/ngwr-dialog.mjs +33 -17
  109. package/fesm2022/ngwr-dialog.mjs.map +1 -1
  110. package/fesm2022/ngwr-directives.mjs +48 -24
  111. package/fesm2022/ngwr-directives.mjs.map +1 -1
  112. package/fesm2022/ngwr-divider.mjs +3 -3
  113. package/fesm2022/ngwr-donut-chart.mjs +24 -7
  114. package/fesm2022/ngwr-donut-chart.mjs.map +1 -1
  115. package/fesm2022/ngwr-drag-drop.mjs +7 -7
  116. package/fesm2022/ngwr-drag-drop.mjs.map +1 -1
  117. package/fesm2022/ngwr-drawer-testing.mjs +250 -0
  118. package/fesm2022/ngwr-drawer-testing.mjs.map +1 -0
  119. package/fesm2022/ngwr-drawer.mjs +37 -19
  120. package/fesm2022/ngwr-drawer.mjs.map +1 -1
  121. package/fesm2022/ngwr-dropdown-testing.mjs +291 -0
  122. package/fesm2022/ngwr-dropdown-testing.mjs.map +1 -0
  123. package/fesm2022/ngwr-dropdown.mjs +19 -11
  124. package/fesm2022/ngwr-dropdown.mjs.map +1 -1
  125. package/fesm2022/ngwr-empty.mjs +26 -9
  126. package/fesm2022/ngwr-empty.mjs.map +1 -1
  127. package/fesm2022/ngwr-event-calendar.mjs +62 -15
  128. package/fesm2022/ngwr-event-calendar.mjs.map +1 -1
  129. package/fesm2022/ngwr-falling-text.mjs +4 -4
  130. package/fesm2022/ngwr-falling-text.mjs.map +1 -1
  131. package/fesm2022/ngwr-file-upload-testing.mjs +332 -0
  132. package/fesm2022/ngwr-file-upload-testing.mjs.map +1 -0
  133. package/fesm2022/ngwr-file-upload.mjs +3 -3
  134. package/fesm2022/ngwr-form-testing.mjs +451 -0
  135. package/fesm2022/ngwr-form-testing.mjs.map +1 -0
  136. package/fesm2022/ngwr-form.mjs +28 -12
  137. package/fesm2022/ngwr-form.mjs.map +1 -1
  138. package/fesm2022/ngwr-fuzzy-text.mjs +11 -4
  139. package/fesm2022/ngwr-fuzzy-text.mjs.map +1 -1
  140. package/fesm2022/ngwr-gauge.mjs +21 -7
  141. package/fesm2022/ngwr-gauge.mjs.map +1 -1
  142. package/fesm2022/ngwr-glitch-text.mjs +4 -4
  143. package/fesm2022/ngwr-glitch-text.mjs.map +1 -1
  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 +31 -10
  147. package/fesm2022/ngwr-hotkey.mjs.map +1 -1
  148. package/fesm2022/ngwr-i18n-en.mjs +61 -0
  149. package/fesm2022/ngwr-i18n-en.mjs.map +1 -1
  150. package/fesm2022/ngwr-i18n-ru.mjs +59 -0
  151. package/fesm2022/ngwr-i18n-ru.mjs.map +1 -1
  152. package/fesm2022/ngwr-i18n.mjs +9 -9
  153. package/fesm2022/ngwr-icon.mjs +6 -6
  154. package/fesm2022/ngwr-image-cropper.mjs +26 -3
  155. package/fesm2022/ngwr-image-cropper.mjs.map +1 -1
  156. package/fesm2022/ngwr-input-number-testing.mjs +306 -0
  157. package/fesm2022/ngwr-input-number-testing.mjs.map +1 -0
  158. package/fesm2022/ngwr-input-number.mjs +37 -5
  159. package/fesm2022/ngwr-input-number.mjs.map +1 -1
  160. package/fesm2022/ngwr-input-otp-testing.mjs +419 -0
  161. package/fesm2022/ngwr-input-otp-testing.mjs.map +1 -0
  162. package/fesm2022/ngwr-input-otp.mjs +39 -8
  163. package/fesm2022/ngwr-input-otp.mjs.map +1 -1
  164. package/fesm2022/ngwr-input-testing.mjs +102 -0
  165. package/fesm2022/ngwr-input-testing.mjs.map +1 -0
  166. package/fesm2022/ngwr-input.mjs +62 -25
  167. package/fesm2022/ngwr-input.mjs.map +1 -1
  168. package/fesm2022/ngwr-keyboard.mjs +3 -3
  169. package/fesm2022/ngwr-knob.mjs +46 -10
  170. package/fesm2022/ngwr-knob.mjs.map +1 -1
  171. package/fesm2022/ngwr-layout.mjs +36 -20
  172. package/fesm2022/ngwr-layout.mjs.map +1 -1
  173. package/fesm2022/ngwr-lightbox.mjs +35 -8
  174. package/fesm2022/ngwr-lightbox.mjs.map +1 -1
  175. package/fesm2022/ngwr-line-chart.mjs +19 -6
  176. package/fesm2022/ngwr-line-chart.mjs.map +1 -1
  177. package/fesm2022/ngwr-list.mjs +14 -9
  178. package/fesm2022/ngwr-list.mjs.map +1 -1
  179. package/fesm2022/ngwr-loading-bar.mjs +71 -31
  180. package/fesm2022/ngwr-loading-bar.mjs.map +1 -1
  181. package/fesm2022/ngwr-markdown-testing.mjs +516 -0
  182. package/fesm2022/ngwr-markdown-testing.mjs.map +1 -0
  183. package/fesm2022/ngwr-markdown.mjs +1492 -0
  184. package/fesm2022/ngwr-markdown.mjs.map +1 -0
  185. package/fesm2022/ngwr-marquee.mjs +19 -8
  186. package/fesm2022/ngwr-marquee.mjs.map +1 -1
  187. package/fesm2022/ngwr-media.mjs +3 -3
  188. package/fesm2022/ngwr-mention-testing.mjs +513 -0
  189. package/fesm2022/ngwr-mention-testing.mjs.map +1 -0
  190. package/fesm2022/ngwr-mention.mjs +16 -7
  191. package/fesm2022/ngwr-mention.mjs.map +1 -1
  192. package/fesm2022/ngwr-meta.mjs +28 -13
  193. package/fesm2022/ngwr-meta.mjs.map +1 -1
  194. package/fesm2022/ngwr-meter-group.mjs +22 -8
  195. package/fesm2022/ngwr-meter-group.mjs.map +1 -1
  196. package/fesm2022/ngwr-overlay.mjs +57 -8
  197. package/fesm2022/ngwr-overlay.mjs.map +1 -1
  198. package/fesm2022/ngwr-page-header.mjs +3 -3
  199. package/fesm2022/ngwr-pagination-testing.mjs +389 -0
  200. package/fesm2022/ngwr-pagination-testing.mjs.map +1 -0
  201. package/fesm2022/ngwr-pagination.mjs +27 -11
  202. package/fesm2022/ngwr-pagination.mjs.map +1 -1
  203. package/fesm2022/ngwr-pipes.mjs +21 -21
  204. package/fesm2022/ngwr-platform.mjs +9 -9
  205. package/fesm2022/ngwr-popconfirm-testing.mjs +309 -0
  206. package/fesm2022/ngwr-popconfirm-testing.mjs.map +1 -0
  207. package/fesm2022/ngwr-popconfirm.mjs +99 -21
  208. package/fesm2022/ngwr-popconfirm.mjs.map +1 -1
  209. package/fesm2022/ngwr-popover-testing.mjs +316 -0
  210. package/fesm2022/ngwr-popover-testing.mjs.map +1 -0
  211. package/fesm2022/ngwr-popover.mjs +48 -10
  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 +19 -4
  215. package/fesm2022/ngwr-pull-to-refresh.mjs.map +1 -1
  216. package/fesm2022/ngwr-qr.mjs +15 -5
  217. package/fesm2022/ngwr-qr.mjs.map +1 -1
  218. package/fesm2022/ngwr-radio-testing.mjs +392 -0
  219. package/fesm2022/ngwr-radio-testing.mjs.map +1 -0
  220. package/fesm2022/ngwr-radio.mjs +16 -9
  221. package/fesm2022/ngwr-radio.mjs.map +1 -1
  222. package/fesm2022/ngwr-rating-testing.mjs +384 -0
  223. package/fesm2022/ngwr-rating-testing.mjs.map +1 -0
  224. package/fesm2022/ngwr-rating.mjs +40 -5
  225. package/fesm2022/ngwr-rating.mjs.map +1 -1
  226. package/fesm2022/ngwr-result.mjs +12 -12
  227. package/fesm2022/ngwr-rotating-text.mjs +3 -3
  228. package/fesm2022/ngwr-scroll.mjs +3 -3
  229. package/fesm2022/ngwr-segmented-testing.mjs +512 -0
  230. package/fesm2022/ngwr-segmented-testing.mjs.map +1 -0
  231. package/fesm2022/ngwr-segmented.mjs +3 -3
  232. package/fesm2022/ngwr-select-testing.mjs +268 -0
  233. package/fesm2022/ngwr-select-testing.mjs.map +1 -0
  234. package/fesm2022/ngwr-select.mjs +96 -25
  235. package/fesm2022/ngwr-select.mjs.map +1 -1
  236. package/fesm2022/ngwr-shiny-text.mjs +7 -7
  237. package/fesm2022/ngwr-shiny-text.mjs.map +1 -1
  238. package/fesm2022/ngwr-sidebar.mjs +67 -14
  239. package/fesm2022/ngwr-sidebar.mjs.map +1 -1
  240. package/fesm2022/ngwr-skeleton.mjs +3 -3
  241. package/fesm2022/ngwr-slider-testing.mjs +478 -0
  242. package/fesm2022/ngwr-slider-testing.mjs.map +1 -0
  243. package/fesm2022/ngwr-slider.mjs +59 -15
  244. package/fesm2022/ngwr-slider.mjs.map +1 -1
  245. package/fesm2022/ngwr-sparkline.mjs +28 -8
  246. package/fesm2022/ngwr-sparkline.mjs.map +1 -1
  247. package/fesm2022/ngwr-speed-dial.mjs +39 -6
  248. package/fesm2022/ngwr-speed-dial.mjs.map +1 -1
  249. package/fesm2022/ngwr-spinner.mjs +14 -5
  250. package/fesm2022/ngwr-spinner.mjs.map +1 -1
  251. package/fesm2022/ngwr-splash-cursor.mjs +4 -4
  252. package/fesm2022/ngwr-splash-cursor.mjs.map +1 -1
  253. package/fesm2022/ngwr-split-text.mjs +4 -4
  254. package/fesm2022/ngwr-split-text.mjs.map +1 -1
  255. package/fesm2022/ngwr-splitter.mjs +72 -11
  256. package/fesm2022/ngwr-splitter.mjs.map +1 -1
  257. package/fesm2022/ngwr-spotlight-card.mjs +7 -7
  258. package/fesm2022/ngwr-spotlight-card.mjs.map +1 -1
  259. package/fesm2022/ngwr-squircle.mjs +6 -6
  260. package/fesm2022/ngwr-star-border.mjs +4 -4
  261. package/fesm2022/ngwr-star-border.mjs.map +1 -1
  262. package/fesm2022/ngwr-statistic.mjs +33 -16
  263. package/fesm2022/ngwr-statistic.mjs.map +1 -1
  264. package/fesm2022/ngwr-stepper-testing.mjs +477 -0
  265. package/fesm2022/ngwr-stepper-testing.mjs.map +1 -0
  266. package/fesm2022/ngwr-stepper.mjs +6 -6
  267. package/fesm2022/ngwr-storage.mjs +27 -17
  268. package/fesm2022/ngwr-storage.mjs.map +1 -1
  269. package/fesm2022/ngwr-switch-testing.mjs +77 -0
  270. package/fesm2022/ngwr-switch-testing.mjs.map +1 -0
  271. package/fesm2022/ngwr-switch.mjs +12 -6
  272. package/fesm2022/ngwr-switch.mjs.map +1 -1
  273. package/fesm2022/ngwr-table-testing.mjs +580 -0
  274. package/fesm2022/ngwr-table-testing.mjs.map +1 -0
  275. package/fesm2022/ngwr-table.mjs +105 -44
  276. package/fesm2022/ngwr-table.mjs.map +1 -1
  277. package/fesm2022/ngwr-tabs-testing.mjs +617 -0
  278. package/fesm2022/ngwr-tabs-testing.mjs.map +1 -0
  279. package/fesm2022/ngwr-tabs.mjs +44 -12
  280. package/fesm2022/ngwr-tabs.mjs.map +1 -1
  281. package/fesm2022/ngwr-textarea-testing.mjs +238 -0
  282. package/fesm2022/ngwr-textarea-testing.mjs.map +1 -0
  283. package/fesm2022/ngwr-textarea.mjs +35 -7
  284. package/fesm2022/ngwr-textarea.mjs.map +1 -1
  285. package/fesm2022/ngwr-theme.mjs +3 -3
  286. package/fesm2022/ngwr-tilt-card.mjs +7 -7
  287. package/fesm2022/ngwr-tilt-card.mjs.map +1 -1
  288. package/fesm2022/ngwr-timeline.mjs +6 -6
  289. package/fesm2022/ngwr-toast-testing.mjs +101 -0
  290. package/fesm2022/ngwr-toast-testing.mjs.map +1 -0
  291. package/fesm2022/ngwr-toast.mjs +55 -21
  292. package/fesm2022/ngwr-toast.mjs.map +1 -1
  293. package/fesm2022/ngwr-toolbar.mjs +3 -3
  294. package/fesm2022/ngwr-tour.mjs +67 -15
  295. package/fesm2022/ngwr-tour.mjs.map +1 -1
  296. package/fesm2022/ngwr-transfer-testing.mjs +538 -0
  297. package/fesm2022/ngwr-transfer-testing.mjs.map +1 -0
  298. package/fesm2022/ngwr-transfer.mjs +47 -16
  299. package/fesm2022/ngwr-transfer.mjs.map +1 -1
  300. package/fesm2022/ngwr-tree-testing.mjs +734 -0
  301. package/fesm2022/ngwr-tree-testing.mjs.map +1 -0
  302. package/fesm2022/ngwr-tree.mjs +75 -9
  303. package/fesm2022/ngwr-tree.mjs.map +1 -1
  304. package/fesm2022/ngwr-typewriter.mjs +7 -5
  305. package/fesm2022/ngwr-typewriter.mjs.map +1 -1
  306. package/fesm2022/ngwr-typography.mjs +3 -3
  307. package/fesm2022/ngwr-version.mjs +1 -1
  308. package/fesm2022/ngwr-version.mjs.map +1 -1
  309. package/fesm2022/ngwr-virtual-scroll.mjs +33 -7
  310. package/fesm2022/ngwr-virtual-scroll.mjs.map +1 -1
  311. package/fesm2022/ngwr-waves.mjs +5 -5
  312. package/fesm2022/ngwr-waves.mjs.map +1 -1
  313. package/fesm2022/ngwr-window.mjs +88 -18
  314. package/fesm2022/ngwr-window.mjs.map +1 -1
  315. package/gauge/styles/_index.scss +1 -1
  316. package/glitch-text/styles/_index.scss +4 -0
  317. package/i18n/en.json +56 -0
  318. package/i18n/ru.json +56 -0
  319. package/image-cropper/styles/_index.scss +13 -1
  320. package/input/styles/_index.scss +2 -2
  321. package/input-number/styles/_index.scss +7 -2
  322. package/knob/styles/_index.scss +8 -1
  323. package/layout/styles/_index.scss +3 -3
  324. package/lightbox/styles/_index.scss +10 -2
  325. package/line-chart/styles/_index.scss +6 -0
  326. package/llms-full.txt +151 -4
  327. package/llms.txt +57 -8
  328. package/loading-bar/styles/_index.scss +1 -2
  329. package/markdown/styles/_index.scss +296 -0
  330. package/marquee/styles/_index.scss +12 -0
  331. package/mcp/api.js +512 -0
  332. package/mcp/catalog.js +157 -0
  333. package/mcp/server.js +273 -0
  334. package/mcp/tools.js +366 -0
  335. package/meter-group/styles/_index.scss +1 -1
  336. package/package.json +186 -35
  337. package/pagination/styles/_index.scss +6 -6
  338. package/popover/styles/_index.scss +37 -5
  339. package/rating/styles/_index.scss +10 -0
  340. package/schematics/use/symbol-map.json +2 -0
  341. package/segmented/styles/_index.scss +7 -0
  342. package/select/styles/_index.scss +29 -9
  343. package/sidebar/styles/_index.scss +30 -5
  344. package/slider/styles/_index.scss +15 -0
  345. package/speed-dial/styles/_index.scss +20 -0
  346. package/split-text/styles/_index.scss +13 -0
  347. package/star-border/styles/_index.scss +2 -0
  348. package/stepper/styles/_index.scss +1 -1
  349. package/styles/_grid.scss +4 -4
  350. package/styles.scss +1 -0
  351. package/switch/styles/_index.scss +5 -3
  352. package/table/styles/_index.scss +22 -11
  353. package/tabs/styles/_index.scss +11 -1
  354. package/textarea/styles/_index.scss +5 -0
  355. package/theme/styles/_colors.scss +29 -13
  356. package/theme/styles/_dark.scss +11 -3
  357. package/theme/styles/_mixins.scss +3 -0
  358. package/timeline/styles/_index.scss +2 -2
  359. package/toast/styles/_index.scss +17 -8
  360. package/toolbar/styles/_index.scss +3 -3
  361. package/tour/styles/_index.scss +7 -1
  362. package/tree/styles/_index.scss +5 -3
  363. package/types/ngwr-action-sheet.d.ts +9 -1
  364. package/types/ngwr-affix.d.ts +7 -1
  365. package/types/ngwr-anchor.d.ts +8 -1
  366. package/types/ngwr-avatar.d.ts +13 -3
  367. package/types/ngwr-bar-chart.d.ts +16 -0
  368. package/types/ngwr-burger.d.ts +6 -2
  369. package/types/ngwr-button-testing.d.ts +85 -0
  370. package/types/ngwr-button.d.ts +58 -10
  371. package/types/ngwr-calendar-heatmap.d.ts +16 -2
  372. package/types/ngwr-calendar.d.ts +37 -1
  373. package/types/ngwr-carousel-testing.d.ts +257 -0
  374. package/types/ngwr-carousel.d.ts +20 -4
  375. package/types/ngwr-cascader-testing.d.ts +392 -0
  376. package/types/ngwr-checkbox-testing.d.ts +77 -0
  377. package/types/ngwr-checkbox.d.ts +7 -2
  378. package/types/ngwr-clipboard.d.ts +8 -1
  379. package/types/ngwr-collapse-testing.d.ts +290 -0
  380. package/types/ngwr-color-picker.d.ts +20 -11
  381. package/types/ngwr-command-palette-testing.d.ts +437 -0
  382. package/types/ngwr-command-palette.d.ts +25 -2
  383. package/types/ngwr-compare.d.ts +50 -2
  384. package/types/ngwr-config.d.ts +176 -0
  385. package/types/ngwr-context-menu-testing.d.ts +401 -0
  386. package/types/ngwr-context-menu.d.ts +65 -17
  387. package/types/ngwr-counter.d.ts +6 -1
  388. package/types/ngwr-date-adapter-luxon.d.ts +26 -0
  389. package/types/ngwr-date-picker-testing.d.ts +518 -0
  390. package/types/ngwr-date-picker.d.ts +128 -8
  391. package/types/ngwr-dialog-testing.d.ts +79 -0
  392. package/types/ngwr-dialog.d.ts +13 -0
  393. package/types/ngwr-directives.d.ts +10 -1
  394. package/types/ngwr-donut-chart.d.ts +8 -1
  395. package/types/ngwr-drawer-testing.d.ts +196 -0
  396. package/types/ngwr-drawer.d.ts +15 -0
  397. package/types/ngwr-dropdown-testing.d.ts +202 -0
  398. package/types/ngwr-dropdown.d.ts +7 -1
  399. package/types/ngwr-empty.d.ts +19 -4
  400. package/types/ngwr-event-calendar.d.ts +26 -1
  401. package/types/ngwr-file-upload-testing.d.ts +194 -0
  402. package/types/ngwr-form-testing.d.ts +379 -0
  403. package/types/ngwr-form.d.ts +17 -0
  404. package/types/ngwr-gauge.d.ts +13 -1
  405. package/types/ngwr-hotkey.d.ts +2 -0
  406. package/types/ngwr-image-cropper.d.ts +10 -0
  407. package/types/ngwr-input-number-testing.d.ts +226 -0
  408. package/types/ngwr-input-number.d.ts +29 -1
  409. package/types/ngwr-input-otp-testing.d.ts +299 -0
  410. package/types/ngwr-input-otp.d.ts +23 -2
  411. package/types/ngwr-input-testing.d.ts +84 -0
  412. package/types/ngwr-input.d.ts +20 -6
  413. package/types/ngwr-knob.d.ts +18 -0
  414. package/types/ngwr-layout.d.ts +1 -0
  415. package/types/ngwr-lightbox.d.ts +17 -3
  416. package/types/ngwr-line-chart.d.ts +9 -2
  417. package/types/ngwr-list.d.ts +7 -2
  418. package/types/ngwr-loading-bar.d.ts +4 -7
  419. package/types/ngwr-markdown-testing.d.ts +462 -0
  420. package/types/ngwr-markdown.d.ts +534 -0
  421. package/types/ngwr-marquee.d.ts +12 -2
  422. package/types/ngwr-mention-testing.d.ts +359 -0
  423. package/types/ngwr-meta.d.ts +4 -2
  424. package/types/ngwr-meter-group.d.ts +11 -1
  425. package/types/ngwr-overlay.d.ts +33 -2
  426. package/types/ngwr-pagination-testing.d.ts +291 -0
  427. package/types/ngwr-pagination.d.ts +7 -1
  428. package/types/ngwr-popconfirm-testing.d.ts +235 -0
  429. package/types/ngwr-popconfirm.d.ts +31 -21
  430. package/types/ngwr-popover-testing.d.ts +221 -0
  431. package/types/ngwr-popover.d.ts +19 -2
  432. package/types/ngwr-pull-to-refresh.d.ts +7 -0
  433. package/types/ngwr-qr.d.ts +9 -1
  434. package/types/ngwr-radio-testing.d.ts +296 -0
  435. package/types/ngwr-radio.d.ts +8 -2
  436. package/types/ngwr-rating-testing.d.ts +291 -0
  437. package/types/ngwr-rating.d.ts +23 -0
  438. package/types/ngwr-segmented-testing.d.ts +401 -0
  439. package/types/ngwr-select-testing.d.ts +175 -0
  440. package/types/ngwr-select.d.ts +45 -4
  441. package/types/ngwr-sidebar.d.ts +17 -2
  442. package/types/ngwr-slider-testing.d.ts +329 -0
  443. package/types/ngwr-slider.d.ts +35 -1
  444. package/types/ngwr-sparkline.d.ts +12 -2
  445. package/types/ngwr-speed-dial.d.ts +17 -18
  446. package/types/ngwr-spinner.d.ts +8 -1
  447. package/types/ngwr-splitter.d.ts +24 -1
  448. package/types/ngwr-statistic.d.ts +12 -2
  449. package/types/ngwr-stepper-testing.d.ts +346 -0
  450. package/types/ngwr-storage.d.ts +10 -1
  451. package/types/ngwr-switch-testing.d.ts +66 -0
  452. package/types/ngwr-switch.d.ts +7 -2
  453. package/types/ngwr-table-testing.d.ts +423 -0
  454. package/types/ngwr-table.d.ts +42 -0
  455. package/types/ngwr-tabs-testing.d.ts +470 -0
  456. package/types/ngwr-tabs.d.ts +9 -0
  457. package/types/ngwr-textarea-testing.d.ts +184 -0
  458. package/types/ngwr-textarea.d.ts +7 -2
  459. package/types/ngwr-toast-testing.d.ts +80 -0
  460. package/types/ngwr-toast.d.ts +19 -4
  461. package/types/ngwr-tour.d.ts +27 -0
  462. package/types/ngwr-transfer-testing.d.ts +444 -0
  463. package/types/ngwr-transfer.d.ts +16 -1
  464. package/types/ngwr-tree-testing.d.ts +501 -0
  465. package/types/ngwr-tree.d.ts +33 -0
  466. package/types/ngwr-version.d.ts +1 -1
  467. package/types/ngwr-virtual-scroll.d.ts +13 -1
  468. package/types/ngwr-window.d.ts +23 -2
  469. package/typewriter/styles/_index.scss +1 -1
  470. package/typography/styles/_index.scss +1 -1
  471. package/window/styles/_index.scss +32 -9
@@ -0,0 +1,346 @@
1
+ import { BaseHarnessFilters, ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';
2
+
3
+ /**
4
+ * @license
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
8
+ */
9
+
10
+ /** Narrows which `<wr-stepper>` a harness query matches. */
11
+ interface WrStepperHarnessFilters extends BaseHarnessFilters {
12
+ /**
13
+ * Match a stepper that renders a step with this label — the readable way to tell
14
+ * two wizards on one page apart. A string is an exact match, a RegExp is tested.
15
+ */
16
+ readonly stepLabel?: string | RegExp;
17
+ /**
18
+ * Match the layout direction the stepper was ASKED for. A `responsive` horizontal
19
+ * stepper still matches `'horizontal'` while it lays itself out vertically — see
20
+ * `WrStepperHarness.getOrientation()`.
21
+ */
22
+ readonly orientation?: 'horizontal' | 'vertical';
23
+ /** Match only linear (`true`) or only freely navigable (`false`) steppers. */
24
+ readonly linear?: boolean;
25
+ }
26
+ /** Narrows which step of a `<wr-stepper>` a harness query matches. */
27
+ interface WrStepHarnessFilters extends BaseHarnessFilters {
28
+ /** Match the step's label — a string is an exact match, a RegExp is tested. */
29
+ readonly label?: string | RegExp;
30
+ /** Match the step the wizard is showing — the one header announcing `aria-current="step"`. */
31
+ readonly active?: boolean;
32
+ /**
33
+ * Match steps shown as done. Completion is normally derived (everything before the
34
+ * active step), but a step's own `completed` input overrides it, so a step AFTER
35
+ * the active one can match too.
36
+ */
37
+ readonly completed?: boolean;
38
+ /**
39
+ * Match steps switched off by their own `disabled` input. A step merely locked by
40
+ * `linear` is not disabled — it is unreachable, which is `reachable: false`.
41
+ */
42
+ readonly disabled?: boolean;
43
+ /**
44
+ * Match steps whose header accepts a click right now, which is also exactly the
45
+ * set of headers a Tab press can reach.
46
+ */
47
+ readonly reachable?: boolean;
48
+ /** Match steps flagged `optional` in the header. */
49
+ readonly optional?: 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 step of a `<wr-stepper>` — the step as the HEADER STRIP
61
+ * publishes it: its label, its state, and the one control that navigates to it.
62
+ *
63
+ * A step is two pieces of DOM in two different places. The `<wr-step>` the consumer
64
+ * wrote is projected into the stepper's body region; the header this harness hosts on
65
+ * is generated next to it, in the `<ol>` above. Nothing links the two — no
66
+ * `aria-controls`, no id on the body — so `WrStepperHarness.getActiveStepText()` is
67
+ * where the body is read, and this answers what the wizard says about the step.
68
+ *
69
+ * Two states that look alike here are deliberately separate, because the component
70
+ * treats them separately: {@link isDisabled} is the step's own `disabled` input
71
+ * (switched off, whatever else happens), and {@link isReachable} is whether a click
72
+ * would land right now — which a `linear` stepper takes away from every step ahead of
73
+ * the gate without disabling any of them.
74
+ *
75
+ * @example
76
+ * ```ts
77
+ * const [review] = await stepper.getSteps({ label: 'Review' });
78
+ *
79
+ * expect(await review.isOptional()).toBe(true);
80
+ * expect(await review.isReachable()).toBe(false);
81
+ * ```
82
+ *
83
+ * @see https://ngwr.dev/guides/testing
84
+ */
85
+ declare class WrStepHarness extends ComponentHarness {
86
+ /**
87
+ * The header `<li>`, which is the whole step as far as the strip is concerned.
88
+ *
89
+ * Not `.wr-stepper__header-button`: the state modifiers (`--active`, `--completed`,
90
+ * `--disabled`) land on the `<li>`, and the button is a child of it.
91
+ */
92
+ static hostSelector: string;
93
+ /** Build a predicate that narrows the query — pass to `getHarness` / `getAllHarnesses`. */
94
+ static with(options?: WrStepHarnessFilters): HarnessPredicate<WrStepHarness>;
95
+ private readonly button;
96
+ /**
97
+ * The step's label, and only the label.
98
+ *
99
+ * The "optional" badge and the description are siblings of the label text inside
100
+ * the same span, so both are excluded — a step addressed by label should be
101
+ * addressable whether or not it also carries a description.
102
+ */
103
+ getLabel(): Promise<string>;
104
+ /** The secondary line under the label, or `null` when the step defines none. */
105
+ getDescription(): Promise<string | null>;
106
+ /** Whether the header flags the step as optional. */
107
+ isOptional(): Promise<boolean>;
108
+ /**
109
+ * What a screen reader announces for the header button.
110
+ *
111
+ * The indicator is excluded because it is `aria-hidden`: the step number and the
112
+ * completed tick are decoration, deliberately, since the label and
113
+ * `aria-current="step"` already carry what they would repeat. What IS announced is
114
+ * the label plus the "optional" badge and the description — so this is the method
115
+ * that notices when one of those stops being part of the name.
116
+ */
117
+ getAccessibleName(): Promise<string>;
118
+ /**
119
+ * Whether this is the step the wizard is showing.
120
+ *
121
+ * From `aria-current="step"` rather than the `--active` class, because that is the
122
+ * only place the wizard's position is published to a screen reader, and the two can
123
+ * only ever disagree by way of a bug.
124
+ */
125
+ isActive(): Promise<boolean>;
126
+ /**
127
+ * Whether the step is shown as done.
128
+ *
129
+ * Read from the `--completed` class, and there is no ARIA alternative to prefer:
130
+ * completion reaches the page as that class plus a tick glyph that is
131
+ * `aria-hidden`, so a screen-reader user hears the label and nothing else. The
132
+ * class is the whole of what exists.
133
+ *
134
+ * Completion is derived from the active index — every step before it — unless a
135
+ * step's own `completed` input overrides it, which is how a `linear` wizard opens
136
+ * its gate. So a step after the active one can be completed too.
137
+ */
138
+ isCompleted(): Promise<boolean>;
139
+ /**
140
+ * Whether the step is switched off by its own `disabled` input.
141
+ *
142
+ * The `--disabled` class is exactly that input, which is why it is read here rather
143
+ * than the button's `disabled`: the button is also disabled for a step that is
144
+ * merely behind a `linear` gate, and those are different facts about the wizard.
145
+ * See {@link isReachable} for the one about right now.
146
+ */
147
+ isDisabled(): Promise<boolean>;
148
+ /**
149
+ * Whether a click on this header would move the wizard here.
150
+ *
151
+ * Read from the button's `disabled` PROPERTY, because that is the enforcement and
152
+ * not the paint: the component disables the header for a step its own input
153
+ * switched off AND for one a `linear` gate has not opened yet. It is also what puts
154
+ * the header in or out of the tab order — a `disabled` button cannot be focused at
155
+ * all, so an unreachable step is off the keyboard entirely rather than focusable and
156
+ * inert the way `aria-disabled` would leave it.
157
+ */
158
+ isReachable(): Promise<boolean>;
159
+ /**
160
+ * Navigate to this step by clicking its header, the way a user does.
161
+ *
162
+ * A click, not a keypress: the header is a real `<button>`, so Enter and Space
163
+ * activate it through the browser's native activation — behaviour jsdom does not
164
+ * implement, leaving nothing for a key to drive. A no-arg CDK click needs no
165
+ * coordinate and no hit test, so the absent layout costs nothing here.
166
+ *
167
+ * Throws when the header refuses, rather than clicking and resolving quietly: the
168
+ * component's guard would drop the click and the wizard would still be showing the
169
+ * old step three assertions later. Reach for `WrStepperHarness.goTo()` when you
170
+ * want the failure to name WHICH earlier step is holding the gate shut.
171
+ */
172
+ select(): Promise<void>;
173
+ /** Move keyboard focus to the header. A header that is not reachable cannot take it. */
174
+ focus(): Promise<void>;
175
+ /** Whether the header currently has focus. */
176
+ isFocused(): Promise<boolean>;
177
+ }
178
+
179
+ /**
180
+ * @license
181
+ *
182
+ * Use of this source code is governed by an MIT-style license that can be
183
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
184
+ */
185
+
186
+ /**
187
+ * Test harness for `<wr-stepper>` — the root of a two-part family with
188
+ * {@link WrStepHarness}, which is one step of it.
189
+ *
190
+ * Steps are addressed by their index or their LABEL, the two things a consumer can
191
+ * see; there is no key or id on a `<wr-step>` to address it by.
192
+ *
193
+ * Navigation here always goes through the HEADER STRIP, because that is the only
194
+ * control the component renders — a wizard's Next and Back buttons are the
195
+ * consumer's own, and they call `WrStepper.next()` / `prev()`. That distinction is
196
+ * not cosmetic: the imperative API does NOT consult `linear`, so it walks straight
197
+ * past a gate that refuses the equivalent header click. {@link next} and
198
+ * {@link goTo} therefore refuse exactly where a user would be refused, and a spec
199
+ * covering the wizard's own buttons should drive those buttons (through their own
200
+ * harness) instead of these.
201
+ *
202
+ * @example
203
+ * ```ts
204
+ * const wizard = await loader.getHarness(WrStepperHarness);
205
+ *
206
+ * expect(await wizard.getStepLabels()).toEqual(['Account', 'Address', 'Review']);
207
+ * expect(await wizard.canGoTo(2)).toBe(false);
208
+ * await wizard.goToLabel('Address');
209
+ * expect(await wizard.getActiveStepText()).toBe('Address body');
210
+ * ```
211
+ *
212
+ * @see https://ngwr.dev/guides/testing
213
+ */
214
+ declare class WrStepperHarness extends ComponentHarness {
215
+ static hostSelector: string;
216
+ /** Build a predicate that narrows the query — pass to `getHarness` / `getAllHarnesses`. */
217
+ static with(options?: WrStepperHarnessFilters): HarnessPredicate<WrStepperHarness>;
218
+ private readonly headerList;
219
+ /**
220
+ * The layout direction the stepper was ASKED for.
221
+ *
222
+ * Unusually for this library both values carry a class, so neither is read as the
223
+ * absence of the other. What the class cannot tell you is how the strip actually
224
+ * laid itself out: a `responsive` horizontal stepper drops to the vertical layout
225
+ * when its own box is too narrow, and that reflow is a container query — the class
226
+ * never changes. No unit test can see the difference in any case, jsdom having no
227
+ * layout at all; assert the opt-in with {@link isResponsive} instead.
228
+ */
229
+ getOrientation(): Promise<'horizontal' | 'vertical'>;
230
+ /** Whether the stepper locks the steps after the last completed one. */
231
+ isLinear(): Promise<boolean>;
232
+ /** Whether the stepper may reflow to the vertical layout in a narrow container. */
233
+ isResponsive(): Promise<boolean>;
234
+ /**
235
+ * The role the header strip announces — `list`.
236
+ *
237
+ * An `<ol>` is a list already, so the explicit role looks redundant and is not: the
238
+ * stylesheet removes the markers, and Safari drops list semantics from a list with
239
+ * `list-style: none`. Losing it costs the "list, 3 items" a VoiceOver user hears,
240
+ * which is how they learn how long the wizard is before starting it.
241
+ */
242
+ getListRole(): Promise<string | null>;
243
+ /** The wizard's steps, in order. */
244
+ getSteps(filters?: WrStepHarnessFilters): Promise<WrStepHarness[]>;
245
+ /** The label of every step, in order. */
246
+ getStepLabels(): Promise<string[]>;
247
+ /**
248
+ * The index of the step the wizard is showing, from the header announcing
249
+ * `aria-current="step"`.
250
+ *
251
+ * Throws when no header does, which is a state a stepper can genuinely be in: the
252
+ * `active` model is two-way, `WrStepper.goTo()` clamps an out-of-range index but a
253
+ * host writing `active` directly does not, and an index past the last step leaves
254
+ * every header un-current and every step body hidden. A `-1` here would be read as
255
+ * "the first step" by the next line of a spec.
256
+ */
257
+ getActiveIndex(): Promise<number>;
258
+ /** The label of the step the wizard is showing. Throws when there is no current step. */
259
+ getActiveLabel(): Promise<string>;
260
+ /** The labels of the steps shown as done, in order. Derived completion and overrides both. */
261
+ getCompletedLabels(): Promise<string[]>;
262
+ /**
263
+ * The labels of the headers a Tab press can reach, in order.
264
+ *
265
+ * A stepper does NOT rove focus: unlike a tab strip, the header list is not one tab
266
+ * stop with arrow keys inside it — every reachable header is its own stop, and the
267
+ * component authors no `tabindex` at all. So the question "which step is active" has
268
+ * two different answers, and this is the other one: the current step is not
269
+ * necessarily in this list. A step disabled by its own input keeps
270
+ * `aria-current="step"` while its button drops out of the tab order entirely, and a
271
+ * `linear` stepper takes every locked header off the keyboard the same way.
272
+ */
273
+ getTabStopLabels(): Promise<string[]>;
274
+ /** The label of the header that currently has focus, or `null` when focus is elsewhere. */
275
+ getFocusedLabel(): Promise<string | null>;
276
+ /**
277
+ * Whether the wizard would let a user navigate to this step right now — the question
278
+ * a `linear` stepper exists to answer `false` to.
279
+ *
280
+ * Throws for an index that is not a step, rather than answering `false`: "you cannot
281
+ * go there" and "there is no there" are different findings.
282
+ */
283
+ canGoTo(index: number): Promise<boolean>;
284
+ /**
285
+ * Navigate to the step at `index` by clicking its header.
286
+ *
287
+ * Throws when the wizard refuses, naming the cause — the step's own `disabled`, or
288
+ * the `linear` gate and which earlier step is holding it shut. Silence would be
289
+ * worse than a failure here: the component drops a click on a locked header without
290
+ * a sound, so a spec would go on to assert against the step it was already showing.
291
+ */
292
+ goTo(index: number): Promise<void>;
293
+ /**
294
+ * Navigate to the step with this label — a string matches exactly, a RegExp is
295
+ * tested. Throws naming the labels that do exist when nothing matches.
296
+ */
297
+ goToLabel(label: string | RegExp): Promise<void>;
298
+ /**
299
+ * Move to the next step through its header — subject to the same gate a user is.
300
+ *
301
+ * In a `linear` wizard that gate is shut until the CURRENT step reports itself
302
+ * complete (its own `completed` input; derived completion only ever covers steps
303
+ * before the active one), so this throws there. That is not the harness being
304
+ * strict: it is the header a user has, and the reason a linear wizard needs its own
305
+ * Next button, which calls `WrStepper.next()` and is not gated at all.
306
+ *
307
+ * Throws on the last step, where the component's own `next()` clamps in silence.
308
+ */
309
+ next(): Promise<void>;
310
+ /**
311
+ * Move to the previous step through its header. Throws on the first step, where
312
+ * `WrStepper.prev()` clamps in silence.
313
+ *
314
+ * Going back is normally allowed even in a `linear` wizard — every step at or before
315
+ * the active one is reachable — but a step its own input disabled stays out of
316
+ * reach in both directions.
317
+ */
318
+ previous(): Promise<void>;
319
+ /**
320
+ * The text of the step body the wizard is showing.
321
+ *
322
+ * Which body shows is CSS-only: every `<wr-step>` renders, and the stepper hides all
323
+ * but one with `display: none` through the `--active` class. So this reads the class,
324
+ * and in a unit test it has to — jsdom loads no stylesheet, which makes
325
+ * `fixture.nativeElement.textContent` the text of ALL the steps at once and any
326
+ * "is the body showing" assertion built on it meaningless.
327
+ */
328
+ getActiveStepText(): Promise<string>;
329
+ /**
330
+ * The text of EVERY step body, in order, showing or not.
331
+ *
332
+ * The list being complete is the point: a step is hidden by a class rather than
333
+ * dropped by an `@if`, so it mounts once and keeps its state — a half-filled form on
334
+ * step 1 is still filled after a trip to step 3. Anything that turned the body into
335
+ * a conditional block would keep every other assertion in a spec passing and quietly
336
+ * reset the wizard.
337
+ */
338
+ getStepTexts(): Promise<string[]>;
339
+ /** The step at `index`, or a failure that says how long the wizard is. */
340
+ private stepAt;
341
+ /** Why the header at `index` is refusing a click, in the component's own order of causes. */
342
+ private refusal;
343
+ }
344
+
345
+ export { WrStepHarness, WrStepperHarness };
346
+ export type { WrStepHarnessFilters, WrStepperHarnessFilters };
@@ -37,7 +37,16 @@ declare class WrStorage {
37
37
  private readonly engine;
38
38
  private readonly config;
39
39
  private readonly isBrowser;
40
- /** Per-key watchers. Shared so multiple `watch(k)` calls reuse one signal. */
40
+ /**
41
+ * Per-key watchers. Shared so multiple `watch(k)` calls reuse one signal.
42
+ *
43
+ * The fallback is kept alongside the signal because every refresh has to read
44
+ * the key the same way `watch` first did. Refreshing without it made `get` and
45
+ * `watch` disagree about what an ABSENT key means: after a `remove()` the
46
+ * signal went to `null` while `get(key, fallback)` still answered with the
47
+ * default, so a consumer watching `'theme'` with a `'light'` fallback got no
48
+ * theme at all rather than the light one.
49
+ */
41
50
  private readonly watchers;
42
51
  private listenerInstalled;
43
52
  /** Is `key` present (regardless of value / expiry)? */
@@ -0,0 +1,66 @@
1
+ import { BaseHarnessFilters, ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';
2
+
3
+ /**
4
+ * @license
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
8
+ */
9
+
10
+ /** Narrows which `<wr-switch>` a harness query matches. */
11
+ interface WrSwitchHarnessFilters extends BaseHarnessFilters {
12
+ /** Match the projected label — a string is an exact match, a RegExp is tested. */
13
+ readonly label?: string | RegExp;
14
+ /** Match only switches that are on (`true`) or off (`false`). */
15
+ readonly on?: boolean;
16
+ /** Match only enabled (`false`) or only disabled (`true`) switches. */
17
+ readonly disabled?: boolean;
18
+ }
19
+
20
+ /**
21
+ * @license
22
+ *
23
+ * Use of this source code is governed by an MIT-style license that can be
24
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
25
+ */
26
+
27
+ /**
28
+ * Test harness for `<wr-switch>`.
29
+ *
30
+ * The track and thumb are painted `<span>`s; the state lives on a real
31
+ * `<input type="checkbox" role="switch">` inside the label, and that is what this
32
+ * reads and clicks. The role is why a switch is not a checkbox to a screen reader,
33
+ * and {@link isOn} is named after it rather than after `checked` for the same
34
+ * reason — a spec that reads "the switch is on" says what the user sees.
35
+ *
36
+ * @example
37
+ * ```ts
38
+ * const dark = await loader.getHarness(WrSwitchHarness.with({ label: 'Dark mode' }));
39
+ * await dark.turnOn();
40
+ * expect(await dark.isOn()).toBe(true);
41
+ * ```
42
+ *
43
+ * @see https://ngwr.dev/guides/testing
44
+ */
45
+ declare class WrSwitchHarness extends ComponentHarness {
46
+ static hostSelector: string;
47
+ /** Build a predicate that narrows the query — pass to `getHarness` / `getAllHarnesses`. */
48
+ static with(options?: WrSwitchHarnessFilters): HarnessPredicate<WrSwitchHarness>;
49
+ private readonly input;
50
+ /** The projected label text, trimmed. */
51
+ getLabel(): Promise<string>;
52
+ /** Whether the switch is on. */
53
+ isOn(): Promise<boolean>;
54
+ isDisabled(): Promise<boolean>;
55
+ /** What a screen reader is told this control is — `switch`, not `checkbox`. */
56
+ getRole(): Promise<string | null>;
57
+ /** Flip the switch. A disabled switch does not move; assert rather than assume. */
58
+ toggle(): Promise<void>;
59
+ turnOn(): Promise<void>;
60
+ turnOff(): Promise<void>;
61
+ focus(): Promise<void>;
62
+ isFocused(): Promise<boolean>;
63
+ }
64
+
65
+ export { WrSwitchHarness };
66
+ export type { WrSwitchHarnessFilters };
@@ -36,8 +36,13 @@ declare class WrSwitch implements FormCheckboxControl {
36
36
  * @default false
37
37
  */
38
38
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, any>;
39
- /** Control size — shares the `--wr-control-*` contract. @default 'md' */
40
- readonly size: _angular_core.InputSignal<WrSwitchSize>;
39
+ /**
40
+ * Control size — shares the `--wr-control-*` contract. Unset falls back to the
41
+ * `switch.size` app default from `provideWrConfig()`. @default 'md'
42
+ */
43
+ readonly size: _angular_core.InputSignal<WrSwitchSize | null>;
44
+ /** `size`, then the app config, then `md`. @internal */
45
+ protected readonly resolvedSize: _angular_core.Signal<"sm" | "md" | "lg">;
41
46
  /** On / off state. Bound by `[formField]`, or two-way via `[(checked)]`. */
42
47
  readonly checked: _angular_core.ModelSignal<boolean>;
43
48
  /** Emitted on blur so a bound field can mark itself touched. */