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,392 @@
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-cascader>` a harness query matches. */
11
+ interface WrCascaderHarnessFilters extends BaseHarnessFilters {
12
+ /**
13
+ * Match the trigger's displayed value — the selected labels joined by the
14
+ * `separator`, e.g. `'Europe / Germany / Berlin'`. A string is an exact match,
15
+ * a RegExp is tested. A cascader with nothing selected shows its placeholder
16
+ * and matches `''`.
17
+ */
18
+ readonly text?: string | RegExp;
19
+ /** Match the placeholder, which only shows while nothing is selected. */
20
+ readonly placeholder?: string | RegExp;
21
+ /** Match only enabled (`false`) or only disabled (`true`) cascaders. */
22
+ readonly disabled?: boolean;
23
+ /** Match only open (`true`) or only closed (`false`) cascaders. */
24
+ readonly open?: boolean;
25
+ }
26
+ /** Narrows which column of an open cascader panel a harness query matches. */
27
+ interface WrCascaderColumnHarnessFilters extends BaseHarnessFilters {
28
+ /**
29
+ * Match a column that offers an option with this label — the way to ask for
30
+ * "the level Germany lives in" without counting columns. A string is an exact
31
+ * match, a RegExp is tested.
32
+ */
33
+ readonly optionText?: string | RegExp;
34
+ }
35
+ /** Narrows which option inside a cascader column a harness query matches. */
36
+ interface WrCascaderOptionHarnessFilters extends BaseHarnessFilters {
37
+ /** Match the option's label — a string is an exact match, a RegExp is tested. */
38
+ readonly text?: string | RegExp;
39
+ /** Match only enabled (`false`) or only disabled (`true`) options. */
40
+ readonly disabled?: boolean;
41
+ /** Match only the expanded option of its column (`true`), or only the rest (`false`). */
42
+ readonly active?: boolean;
43
+ /** Match only branches (`true`) or only leaves (`false`). */
44
+ readonly hasChildren?: boolean;
45
+ }
46
+
47
+ /**
48
+ * @license
49
+ *
50
+ * Use of this source code is governed by an MIT-style license that can be
51
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
52
+ */
53
+
54
+ /**
55
+ * Test harness for one option inside a `<wr-cascader>` column.
56
+ *
57
+ * An option is either a BRANCH (it has children, so clicking it opens the next
58
+ * column) or a LEAF (clicking it commits the whole path and closes the panel).
59
+ * {@link hasChildren} is the only way to tell them apart, and it reads the
60
+ * chevron the template draws for branches — the option carries no
61
+ * `aria-haspopup` / `aria-expanded`, so a screen-reader user is told nothing
62
+ * about a branch either. Reported here rather than papered over.
63
+ *
64
+ * @see https://ngwr.dev/guides/testing
65
+ */
66
+ declare class WrCascaderOptionHarness extends ComponentHarness {
67
+ /** The `<li role="menuitem">` a column renders per option. */
68
+ static hostSelector: string;
69
+ /** Build a predicate that narrows the query. */
70
+ static with(options?: WrCascaderOptionHarnessFilters): HarnessPredicate<WrCascaderOptionHarness>;
71
+ /** The option's label, trimmed. The branch chevron contributes no text. */
72
+ getText(): Promise<string>;
73
+ /** The role the option announces — `menuitem`. */
74
+ getRole(): Promise<string | null>;
75
+ /** Whether the option refuses selection, from the state a screen reader is given. */
76
+ isDisabled(): Promise<boolean>;
77
+ /**
78
+ * Whether this is the option its column is currently drilled into — the one
79
+ * whose children the column to the right is showing, or the committed segment
80
+ * at this level.
81
+ *
82
+ * Read from the `--active` modifier because nothing else says it: the option
83
+ * has no `aria-selected` and no `aria-expanded`, so the class is both the
84
+ * whole visual answer and the only one available.
85
+ */
86
+ isActive(): Promise<boolean>;
87
+ /** Whether the option opens a deeper level rather than ending the path. */
88
+ hasChildren(): Promise<boolean>;
89
+ /**
90
+ * The option's tab index — `0` for every enabled option, `-1` for a disabled
91
+ * one.
92
+ *
93
+ * Worth asking: a cascader column is NOT a roving-cursor listbox. Every
94
+ * enabled option is its own tab stop, in every column, which is the documented
95
+ * reason virtual scrolling is deferred for this component — there is no
96
+ * container-owned arrow-nav model to hang a window off.
97
+ *
98
+ * Read as the element's `tabIndex` PROPERTY rather than the attribute, so an
99
+ * option that carried no `tabindex` at all answers `-1` — what the DOM says of a
100
+ * bare `<li>` — instead of a made-up `0` that would report an unfocusable option
101
+ * as a tab stop if this component ever moved to a roving cursor.
102
+ */
103
+ getTabIndex(): Promise<number>;
104
+ /**
105
+ * Click the option: a branch opens its children to the right, a leaf commits
106
+ * the path and closes the panel.
107
+ *
108
+ * A disabled option is clickable here on purpose — the component refuses it in
109
+ * its own handler rather than through `pointer-events`, so the click a spec
110
+ * dispatches is exactly as ineffective as one in a browser.
111
+ */
112
+ click(): Promise<void>;
113
+ /**
114
+ * Activate the option from the keyboard (Enter; Space is bound to the same
115
+ * handler).
116
+ *
117
+ * This is the component's entire keyboard model — the columns bind
118
+ * `keydown.enter` / `keydown.space` per option and nothing else, so there are
119
+ * no arrow keys to walk levels with. A keyboard user reaches the option they
120
+ * want with Tab and presses Enter — and Tab is a long way round: the panel is a
121
+ * portal in the overlay container at the end of the document, and nothing moves
122
+ * focus into it on open, so the first option is not the next stop after the
123
+ * trigger.
124
+ */
125
+ selectByKeyboard(): Promise<void>;
126
+ /**
127
+ * Move the pointer onto the option.
128
+ *
129
+ * Deliberately does NOT expand a branch: this cascader drills down on CLICK
130
+ * only, unlike the hover-to-expand cascaders elsewhere. Kept because a spec
131
+ * may want to pin that, and because the option's hover tint is styled.
132
+ */
133
+ hover(): Promise<void>;
134
+ /** Move keyboard focus to the option. */
135
+ focus(): Promise<void>;
136
+ /** Whether the option holds keyboard focus. */
137
+ isFocused(): Promise<boolean>;
138
+ }
139
+
140
+ /**
141
+ * @license
142
+ *
143
+ * Use of this source code is governed by an MIT-style license that can be
144
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
145
+ */
146
+
147
+ /**
148
+ * Test harness for one COLUMN of an open `<wr-cascader>` panel.
149
+ *
150
+ * A column is a level of the tree: column 0 holds the root options, and each
151
+ * further column holds the children of the active option in the column before
152
+ * it. Which columns exist is therefore a function of what is expanded — the
153
+ * relationship this harness exists to let a spec assert. Column 0 is always
154
+ * there; a column only appears once there are children to put in it, so a leaf
155
+ * adds none.
156
+ *
157
+ * @example
158
+ * ```ts
159
+ * const [countries, cities] = await cascader.getColumns();
160
+ *
161
+ * expect(await countries.getActiveOptionText()).toBe('Germany');
162
+ * expect(await cities.getOptionLabels()).toEqual(['Berlin']);
163
+ * ```
164
+ *
165
+ * @see https://ngwr.dev/guides/testing
166
+ */
167
+ declare class WrCascaderColumnHarness extends ComponentHarness {
168
+ /** The `<ul role="menu">` the panel renders per level. */
169
+ static hostSelector: string;
170
+ /** Build a predicate that narrows the query. */
171
+ static with(options?: WrCascaderColumnHarnessFilters): HarnessPredicate<WrCascaderColumnHarness>;
172
+ /** The role the column announces — `menu`. */
173
+ getRole(): Promise<string | null>;
174
+ /** The options this level offers, in order. */
175
+ getOptions(filters?: WrCascaderOptionHarnessFilters): Promise<WrCascaderOptionHarness[]>;
176
+ /** The labels this level offers, in order. */
177
+ getOptionLabels(): Promise<string[]>;
178
+ /**
179
+ * The first option matching the filters.
180
+ *
181
+ * Throws rather than answering `null`, and names what the column does offer:
182
+ * a missing option here almost always means the level is not the one the spec
183
+ * thought it was, and that is far easier to see with the alternatives listed.
184
+ */
185
+ getOption(filters: WrCascaderOptionHarnessFilters): Promise<WrCascaderOptionHarness>;
186
+ /** The option this level is drilled into, or `null` when nothing here is expanded. */
187
+ getActiveOption(): Promise<WrCascaderOptionHarness | null>;
188
+ /** The label of the option this level is drilled into, or `null`. */
189
+ getActiveOptionText(): Promise<string | null>;
190
+ }
191
+
192
+ /**
193
+ * @license
194
+ *
195
+ * Use of this source code is governed by an MIT-style license that can be
196
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
197
+ */
198
+
199
+ /**
200
+ * Test harness for `<wr-cascader>` — the trigger, and the panel of COLUMNS it
201
+ * opens. Root of a small family: {@link WrCascaderColumnHarness} for one level,
202
+ * `WrCascaderOptionHarness` for one option in it.
203
+ *
204
+ * A cascader is not a select with extra steps. Its value is the whole PATH from
205
+ * root to leaf (`['eu', 'de', 'ber']`, not `'ber'`), and the panel shows one
206
+ * column per level, so which columns exist depends on what is expanded — column
207
+ * 0 is the roots, and every further column holds the children of the active
208
+ * option in the column to its left. That relationship is the component, so it is
209
+ * what {@link getColumns} and {@link getColumnLabels} are for.
210
+ *
211
+ * The panel is NOT inside the cascader: it is a template portal in the overlay
212
+ * container, a sibling of the whole app. Every read of it goes through the
213
+ * document root scoped by the `aria-controls` id the trigger publishes, so two
214
+ * cascaders on one page can never answer with each other's columns.
215
+ *
216
+ * @example
217
+ * ```ts
218
+ * const cascader = await loader.getHarness(WrCascaderHarness);
219
+ *
220
+ * await cascader.selectPath(['Europe', 'Germany', 'Berlin']);
221
+ *
222
+ * expect(await cascader.getValueText()).toBe('Europe / Germany / Berlin');
223
+ * expect(await cascader.isOpen()).toBe(false);
224
+ * ```
225
+ *
226
+ * @see https://ngwr.dev/guides/testing
227
+ */
228
+ declare class WrCascaderHarness extends ComponentHarness {
229
+ static hostSelector: string;
230
+ /** Build a predicate that narrows the query. */
231
+ static with(options?: WrCascaderHarnessFilters): HarnessPredicate<WrCascaderHarness>;
232
+ private readonly trigger;
233
+ /**
234
+ * Whether the panel is showing.
235
+ *
236
+ * From the trigger's `aria-expanded` rather than the host's `--open` class:
237
+ * both exist, and the ARIA state is the one a screen-reader user is told.
238
+ */
239
+ isOpen(): Promise<boolean>;
240
+ /**
241
+ * Whether the cascader refuses interaction.
242
+ *
243
+ * From the trigger's native `disabled`, which is what actually stops a pointer
244
+ * and what assistive tech reports; the host's `--disabled` class only mirrors
245
+ * it for styling.
246
+ */
247
+ isDisabled(): Promise<boolean>;
248
+ /**
249
+ * What the trigger displays as the selection: the labels of the whole path
250
+ * joined by the `separator` (`'Europe / Germany / Berlin'` by default), or `''`
251
+ * while nothing is selected and the placeholder is showing.
252
+ *
253
+ * The joined string is all the DOM has — the separator is not published
254
+ * anywhere on its own, so the harness will not pretend it can split the path
255
+ * back apart. Assert against the bound value, or against
256
+ * {@link getActiveTrail} while the panel is open, when the segments matter.
257
+ */
258
+ getValueText(): Promise<string>;
259
+ /**
260
+ * The placeholder, or `null` when a selection is hiding it.
261
+ *
262
+ * `''` is a real answer, not an absence: a cascader with no `placeholder` still
263
+ * renders the element while unselected.
264
+ */
265
+ getPlaceholder(): Promise<string | null>;
266
+ /**
267
+ * The trigger's accessible name — the `ariaLabel` input, falling back to the
268
+ * placeholder and then to the i18n catalog, because a `role="combobox"` with
269
+ * nothing selected and no placeholder would otherwise have no name at all.
270
+ */
271
+ getAccessibleName(): Promise<string | null>;
272
+ /** The kind of popup the trigger promises via `aria-haspopup` — `menu`. */
273
+ getPopupRole(): Promise<string | null>;
274
+ /** The role the panel announces — `menu`, matching what the trigger promised. */
275
+ getPanelRole(): Promise<string | null>;
276
+ /**
277
+ * The id the trigger publishes as `aria-controls`.
278
+ *
279
+ * Published unconditionally, open or closed — so while the panel is closed this
280
+ * id resolves to nothing in the document. Exposed so a spec can pin that
281
+ * (dangling or not) rather than have the harness quietly decide for it; every
282
+ * panel read goes through the same id but refuses to run while closed.
283
+ */
284
+ getPanelId(): Promise<string | null>;
285
+ /**
286
+ * Whether the panel now in the overlay is the one this trigger claims to
287
+ * control — `aria-controls` resolving to a real element that carries that id.
288
+ *
289
+ * With several cascaders on a page it is also the check that the reference lands
290
+ * on THIS instance's panel rather than a neighbour's: the overlay container is
291
+ * shared, so panels sit side by side in it with nothing but their ids to tell
292
+ * them apart.
293
+ */
294
+ isPanelWiredToTrigger(): Promise<boolean>;
295
+ /**
296
+ * Open the panel.
297
+ *
298
+ * Clicks the trigger, because that is the only gesture the component binds. The
299
+ * trigger is a native `<button>`, so a browser turns Enter / Space on it into
300
+ * the same click — there is no separate keyboard route to model here, and jsdom
301
+ * does not synthesise button activation from a key, so an `openByKeyboard()`
302
+ * would only be able to lie.
303
+ */
304
+ open(): Promise<void>;
305
+ /**
306
+ * Close the panel with Escape. A closed cascader is left alone.
307
+ *
308
+ * Escape reaches the panel through the CDK's keyboard dispatcher rather than
309
+ * through the DOM tree, which is why sending it to the trigger works even
310
+ * though the panel is somewhere else entirely.
311
+ */
312
+ close(): Promise<void>;
313
+ /** Click the trigger once, whatever that does — opens a closed panel, closes an open one. */
314
+ clickTrigger(): Promise<void>;
315
+ /**
316
+ * The columns of the open panel, left to right: column 0 is the root options,
317
+ * and each further one holds the children of its neighbour's active option.
318
+ *
319
+ * Throws while the panel is closed. The columns do not exist anywhere until the
320
+ * portal is attached, and an empty array reads like a panel that rendered
321
+ * nothing — a confusing failure three lines later instead of here.
322
+ */
323
+ getColumns(filters?: WrCascaderColumnHarnessFilters): Promise<WrCascaderColumnHarness[]>;
324
+ /** How many levels the panel is currently showing. */
325
+ getColumnCount(): Promise<number>;
326
+ /**
327
+ * One column by its 0-based level. Throws when the level is not showing, which
328
+ * is the interesting failure: it means the option before it has no children, or
329
+ * has not been expanded yet.
330
+ */
331
+ getColumn(index: number): Promise<WrCascaderColumnHarness>;
332
+ /** The labels offered by every column, outer array left to right. */
333
+ getColumnLabels(): Promise<string[][]>;
334
+ /**
335
+ * The expanded trail — the label of the active option in each column, root
336
+ * first.
337
+ *
338
+ * This is the panel's own idea of where the user is, which is NOT always the
339
+ * committed value: drilling into a branch moves the trail without committing
340
+ * anything unless `changeOnSelect` is on. Once a leaf is picked the two agree,
341
+ * and this is the only place the path's segments exist separately in the DOM.
342
+ */
343
+ getActiveTrail(): Promise<string[]>;
344
+ /**
345
+ * The first option matching the filters, anywhere in the panel. Throws when
346
+ * nothing matches, naming what is on offer.
347
+ *
348
+ * Use {@link getColumn} when the level matters — the same label can legitimately
349
+ * appear at more than one level.
350
+ */
351
+ getOption(filters: WrCascaderOptionHarnessFilters): Promise<WrCascaderOptionHarness>;
352
+ /**
353
+ * Walk a path by label, opening the panel first if needed: each label is
354
+ * clicked in the column it belongs to, so `['Europe', 'Germany', 'Berlin']`
355
+ * drills two levels and commits the third.
356
+ *
357
+ * Clicking is the only way down — this cascader does not expand on hover, so
358
+ * neither does the harness. A path that ends on a BRANCH just leaves that
359
+ * branch expanded: the component commits nothing on the way down unless
360
+ * `changeOnSelect` is on, and only a leaf closes the panel.
361
+ */
362
+ selectPath(labels: readonly string[]): Promise<void>;
363
+ /**
364
+ * Click the clear (×) control on the trigger.
365
+ *
366
+ * Throws when there is none, and both reasons are worth failing on: the
367
+ * cascader is not `clearable`, or nothing is selected — the control is not
368
+ * rendered at all in either case (nor while disabled).
369
+ */
370
+ clear(): Promise<void>;
371
+ /** Move keyboard focus to the trigger. */
372
+ focus(): Promise<void>;
373
+ /** Take focus off the trigger, which is what makes a bound form field touched. */
374
+ blur(): Promise<void>;
375
+ /** Whether the trigger holds keyboard focus. */
376
+ isFocused(): Promise<boolean>;
377
+ /** This cascader's panel element in the overlay — the single-element scoped read. */
378
+ private panel;
379
+ /**
380
+ * A loader scoped to THIS cascader's panel — the list scoped read.
381
+ *
382
+ * Scoped by the published id rather than by `.wr-cascader-panel`: the overlay
383
+ * container is shared with every other overlay in the app, so a bare class
384
+ * query would answer with whichever panel happened to be open.
385
+ */
386
+ private panelLoader;
387
+ /** The panel id, refusing to hand it out while there is no panel to find. */
388
+ private panelId;
389
+ }
390
+
391
+ export { WrCascaderColumnHarness, WrCascaderHarness, WrCascaderOptionHarness };
392
+ export type { WrCascaderColumnHarnessFilters, WrCascaderHarnessFilters, WrCascaderOptionHarnessFilters };
@@ -0,0 +1,77 @@
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-checkbox>` a harness query matches. */
11
+ interface WrCheckboxHarnessFilters 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 ticked (`true`) or only unticked (`false`) boxes. */
15
+ readonly checked?: boolean;
16
+ /** Match only enabled (`false`) or only disabled (`true`) boxes. */
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-checkbox>`.
29
+ *
30
+ * The visible box is a `<span>` the stylesheet paints; the state lives on a real
31
+ * `<input type="checkbox">` inside the label, and that is what this harness reads
32
+ * and clicks. Toggling through the input rather than the painted box is what makes
33
+ * `check()` behave the way a user does — the label is what a click lands on.
34
+ *
35
+ * Note `checkboxValue` versus `value`: a checkbox's group identity is
36
+ * `checkboxValue`, because `FormCheckboxControl` reserves `value` for the form
37
+ * value. {@link getCheckboxValue} reads the identity.
38
+ *
39
+ * @example
40
+ * ```ts
41
+ * const terms = await loader.getHarness(WrCheckboxHarness.with({ label: 'I agree' }));
42
+ * await terms.check();
43
+ * expect(await terms.isChecked()).toBe(true);
44
+ * ```
45
+ *
46
+ * @see https://ngwr.dev/guides/testing
47
+ */
48
+ declare class WrCheckboxHarness extends ComponentHarness {
49
+ static hostSelector: string;
50
+ /** Build a predicate that narrows the query — pass to `getHarness` / `getAllHarnesses`. */
51
+ static with(options?: WrCheckboxHarnessFilters): HarnessPredicate<WrCheckboxHarness>;
52
+ private readonly input;
53
+ /** The projected label text, trimmed. */
54
+ getLabel(): Promise<string>;
55
+ isChecked(): Promise<boolean>;
56
+ /**
57
+ * Whether the box is in its third state.
58
+ *
59
+ * `indeterminate` is a DOM PROPERTY, not an attribute — reading the attribute
60
+ * would report `null` for a box that is visibly dashed.
61
+ */
62
+ isIndeterminate(): Promise<boolean>;
63
+ isDisabled(): Promise<boolean>;
64
+ /** The group identity — `checkboxValue`, not the form value. */
65
+ getCheckboxValue(): Promise<string | null>;
66
+ /** Flip the box. A disabled checkbox does not move; assert rather than assume. */
67
+ toggle(): Promise<void>;
68
+ /** Tick the box if it is not already ticked. */
69
+ check(): Promise<void>;
70
+ /** Untick the box if it is ticked. */
71
+ uncheck(): Promise<void>;
72
+ focus(): Promise<void>;
73
+ isFocused(): Promise<boolean>;
74
+ }
75
+
76
+ export { WrCheckboxHarness };
77
+ export type { WrCheckboxHarnessFilters };
@@ -70,8 +70,13 @@ declare class WrCheckbox implements FormCheckboxControl {
70
70
  * @default false
71
71
  */
72
72
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, any>;
73
- /** Control size — shares the `--wr-control-*` contract. @default 'md' */
74
- readonly size: _angular_core.InputSignal<WrCheckboxSize>;
73
+ /**
74
+ * Control size — shares the `--wr-control-*` contract. Unset falls back to the
75
+ * `checkbox.size` app default from `provideWrConfig()`. @default 'md'
76
+ */
77
+ readonly size: _angular_core.InputSignal<WrCheckboxSize | null>;
78
+ /** `size`, then the app config, then `md`. @internal */
79
+ protected readonly resolvedSize: _angular_core.Signal<"sm" | "md" | "lg">;
75
80
  /**
76
81
  * Optional icon name rendered inside the box when checked, in place of the
77
82
  * default checkmark. Use any registered NGWR icon.
@@ -54,7 +54,14 @@ declare class WrClipboard {
54
54
  * return `'unsupported'` when the capability genuinely isn't there.
55
55
  */
56
56
  permission(name: 'read' | 'write'): Promise<WrClipboardPermission>;
57
- /** Hidden-textarea + `execCommand('copy')` write. Synchronous, no permissions. */
57
+ /**
58
+ * Hidden-textarea + `execCommand('copy')` write. Synchronous, no permissions.
59
+ *
60
+ * `select()` takes focus, and the textarea is removed a moment later — so
61
+ * without putting focus back, every copy on a non-secure origin (plain
62
+ * `http://`, which is exactly where the async clipboard is missing) leaves
63
+ * focus on `<body>` and the user's next Tab restarts from the top of the page.
64
+ */
58
65
  private legacyWrite;
59
66
  static ɵfac: i0.ɵɵFactoryDeclaration<WrClipboard, never>;
60
67
  static ɵprov: i0.ɵɵInjectableDeclaration<WrClipboard>;