ngwr 10.2.1 → 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 (425) 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 +7 -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 +13 -3
  19. package/fesm2022/ngwr-action-sheet.mjs.map +1 -1
  20. package/fesm2022/ngwr-affix.mjs +40 -13
  21. package/fesm2022/ngwr-affix.mjs.map +1 -1
  22. package/fesm2022/ngwr-anchor.mjs +18 -6
  23. package/fesm2022/ngwr-anchor.mjs.map +1 -1
  24. package/fesm2022/ngwr-aurora.mjs +2 -2
  25. package/fesm2022/ngwr-aurora.mjs.map +1 -1
  26. package/fesm2022/ngwr-avatar.mjs +31 -7
  27. package/fesm2022/ngwr-avatar.mjs.map +1 -1
  28. package/fesm2022/ngwr-back-top.mjs +6 -2
  29. package/fesm2022/ngwr-back-top.mjs.map +1 -1
  30. package/fesm2022/ngwr-badge.mjs +1 -1
  31. package/fesm2022/ngwr-badge.mjs.map +1 -1
  32. package/fesm2022/ngwr-bar-chart.mjs +30 -9
  33. package/fesm2022/ngwr-bar-chart.mjs.map +1 -1
  34. package/fesm2022/ngwr-blur-text.mjs +2 -2
  35. package/fesm2022/ngwr-blur-text.mjs.map +1 -1
  36. package/fesm2022/ngwr-border-glow.mjs +2 -2
  37. package/fesm2022/ngwr-border-glow.mjs.map +1 -1
  38. package/fesm2022/ngwr-breadcrumbs.mjs +2 -2
  39. package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -1
  40. package/fesm2022/ngwr-burger.mjs +9 -4
  41. package/fesm2022/ngwr-burger.mjs.map +1 -1
  42. package/fesm2022/ngwr-button-testing.mjs +96 -0
  43. package/fesm2022/ngwr-button-testing.mjs.map +1 -0
  44. package/fesm2022/ngwr-button.mjs +31 -14
  45. package/fesm2022/ngwr-button.mjs.map +1 -1
  46. package/fesm2022/ngwr-calendar-heatmap.mjs +40 -8
  47. package/fesm2022/ngwr-calendar-heatmap.mjs.map +1 -1
  48. package/fesm2022/ngwr-calendar.mjs +20 -1
  49. package/fesm2022/ngwr-calendar.mjs.map +1 -1
  50. package/fesm2022/ngwr-card.mjs +2 -2
  51. package/fesm2022/ngwr-card.mjs.map +1 -1
  52. package/fesm2022/ngwr-carousel-testing.mjs +377 -0
  53. package/fesm2022/ngwr-carousel-testing.mjs.map +1 -0
  54. package/fesm2022/ngwr-carousel.mjs +67 -13
  55. package/fesm2022/ngwr-carousel.mjs.map +1 -1
  56. package/fesm2022/ngwr-cascader-testing.mjs +534 -0
  57. package/fesm2022/ngwr-cascader-testing.mjs.map +1 -0
  58. package/fesm2022/ngwr-cascader.mjs +2 -2
  59. package/fesm2022/ngwr-cascader.mjs.map +1 -1
  60. package/fesm2022/ngwr-checkbox-testing.mjs +90 -0
  61. package/fesm2022/ngwr-checkbox-testing.mjs.map +1 -0
  62. package/fesm2022/ngwr-checkbox.mjs +9 -3
  63. package/fesm2022/ngwr-checkbox.mjs.map +1 -1
  64. package/fesm2022/ngwr-circular-text.mjs +2 -2
  65. package/fesm2022/ngwr-circular-text.mjs.map +1 -1
  66. package/fesm2022/ngwr-click-spark.mjs +2 -2
  67. package/fesm2022/ngwr-click-spark.mjs.map +1 -1
  68. package/fesm2022/ngwr-collapse-testing.mjs +368 -0
  69. package/fesm2022/ngwr-collapse-testing.mjs.map +1 -0
  70. package/fesm2022/ngwr-color-picker.mjs +134 -14
  71. package/fesm2022/ngwr-color-picker.mjs.map +1 -1
  72. package/fesm2022/ngwr-command-palette-testing.mjs +589 -0
  73. package/fesm2022/ngwr-command-palette-testing.mjs.map +1 -0
  74. package/fesm2022/ngwr-command-palette.mjs +58 -8
  75. package/fesm2022/ngwr-command-palette.mjs.map +1 -1
  76. package/fesm2022/ngwr-compare.mjs +103 -13
  77. package/fesm2022/ngwr-compare.mjs.map +1 -1
  78. package/fesm2022/ngwr-config.mjs +106 -0
  79. package/fesm2022/ngwr-config.mjs.map +1 -0
  80. package/fesm2022/ngwr-context-menu-testing.mjs +631 -0
  81. package/fesm2022/ngwr-context-menu-testing.mjs.map +1 -0
  82. package/fesm2022/ngwr-context-menu.mjs +94 -8
  83. package/fesm2022/ngwr-context-menu.mjs.map +1 -1
  84. package/fesm2022/ngwr-cookie.mjs +5 -1
  85. package/fesm2022/ngwr-cookie.mjs.map +1 -1
  86. package/fesm2022/ngwr-counter.mjs +11 -3
  87. package/fesm2022/ngwr-counter.mjs.map +1 -1
  88. package/fesm2022/ngwr-date-adapter-luxon.mjs +52 -4
  89. package/fesm2022/ngwr-date-adapter-luxon.mjs.map +1 -1
  90. package/fesm2022/ngwr-date-adapter.mjs +54 -8
  91. package/fesm2022/ngwr-date-adapter.mjs.map +1 -1
  92. package/fesm2022/ngwr-date-picker-testing.mjs +766 -0
  93. package/fesm2022/ngwr-date-picker-testing.mjs.map +1 -0
  94. package/fesm2022/ngwr-date-picker.mjs +73 -3
  95. package/fesm2022/ngwr-date-picker.mjs.map +1 -1
  96. package/fesm2022/ngwr-decrypt-text.mjs +27 -9
  97. package/fesm2022/ngwr-decrypt-text.mjs.map +1 -1
  98. package/fesm2022/ngwr-dialog-testing.mjs +89 -0
  99. package/fesm2022/ngwr-dialog-testing.mjs.map +1 -0
  100. package/fesm2022/ngwr-directives.mjs +36 -12
  101. package/fesm2022/ngwr-directives.mjs.map +1 -1
  102. package/fesm2022/ngwr-donut-chart.mjs +22 -5
  103. package/fesm2022/ngwr-donut-chart.mjs.map +1 -1
  104. package/fesm2022/ngwr-drag-drop.mjs +2 -2
  105. package/fesm2022/ngwr-drag-drop.mjs.map +1 -1
  106. package/fesm2022/ngwr-drawer-testing.mjs +250 -0
  107. package/fesm2022/ngwr-drawer-testing.mjs.map +1 -0
  108. package/fesm2022/ngwr-dropdown-testing.mjs +291 -0
  109. package/fesm2022/ngwr-dropdown-testing.mjs.map +1 -0
  110. package/fesm2022/ngwr-dropdown.mjs +10 -2
  111. package/fesm2022/ngwr-dropdown.mjs.map +1 -1
  112. package/fesm2022/ngwr-empty.mjs +24 -7
  113. package/fesm2022/ngwr-empty.mjs.map +1 -1
  114. package/fesm2022/ngwr-event-calendar.mjs +57 -10
  115. package/fesm2022/ngwr-event-calendar.mjs.map +1 -1
  116. package/fesm2022/ngwr-falling-text.mjs +2 -2
  117. package/fesm2022/ngwr-falling-text.mjs.map +1 -1
  118. package/fesm2022/ngwr-file-upload-testing.mjs +332 -0
  119. package/fesm2022/ngwr-file-upload-testing.mjs.map +1 -0
  120. package/fesm2022/ngwr-form-testing.mjs +451 -0
  121. package/fesm2022/ngwr-form-testing.mjs.map +1 -0
  122. package/fesm2022/ngwr-form.mjs +19 -3
  123. package/fesm2022/ngwr-form.mjs.map +1 -1
  124. package/fesm2022/ngwr-fuzzy-text.mjs +9 -2
  125. package/fesm2022/ngwr-fuzzy-text.mjs.map +1 -1
  126. package/fesm2022/ngwr-gauge.mjs +19 -5
  127. package/fesm2022/ngwr-gauge.mjs.map +1 -1
  128. package/fesm2022/ngwr-glitch-text.mjs +2 -2
  129. package/fesm2022/ngwr-glitch-text.mjs.map +1 -1
  130. package/fesm2022/ngwr-gradient-text.mjs +2 -2
  131. package/fesm2022/ngwr-gradient-text.mjs.map +1 -1
  132. package/fesm2022/ngwr-i18n-en.mjs +50 -0
  133. package/fesm2022/ngwr-i18n-en.mjs.map +1 -1
  134. package/fesm2022/ngwr-i18n-ru.mjs +48 -0
  135. package/fesm2022/ngwr-i18n-ru.mjs.map +1 -1
  136. package/fesm2022/ngwr-image-cropper.mjs +23 -0
  137. package/fesm2022/ngwr-image-cropper.mjs.map +1 -1
  138. package/fesm2022/ngwr-input-number-testing.mjs +306 -0
  139. package/fesm2022/ngwr-input-number-testing.mjs.map +1 -0
  140. package/fesm2022/ngwr-input-number.mjs +35 -3
  141. package/fesm2022/ngwr-input-number.mjs.map +1 -1
  142. package/fesm2022/ngwr-input-otp-testing.mjs +419 -0
  143. package/fesm2022/ngwr-input-otp-testing.mjs.map +1 -0
  144. package/fesm2022/ngwr-input-otp.mjs +36 -5
  145. package/fesm2022/ngwr-input-otp.mjs.map +1 -1
  146. package/fesm2022/ngwr-input-testing.mjs +102 -0
  147. package/fesm2022/ngwr-input-testing.mjs.map +1 -0
  148. package/fesm2022/ngwr-input.mjs +47 -10
  149. package/fesm2022/ngwr-input.mjs.map +1 -1
  150. package/fesm2022/ngwr-knob.mjs +44 -8
  151. package/fesm2022/ngwr-knob.mjs.map +1 -1
  152. package/fesm2022/ngwr-layout.mjs +21 -5
  153. package/fesm2022/ngwr-layout.mjs.map +1 -1
  154. package/fesm2022/ngwr-lightbox.mjs +33 -6
  155. package/fesm2022/ngwr-lightbox.mjs.map +1 -1
  156. package/fesm2022/ngwr-line-chart.mjs +17 -4
  157. package/fesm2022/ngwr-line-chart.mjs.map +1 -1
  158. package/fesm2022/ngwr-list.mjs +2 -2
  159. package/fesm2022/ngwr-list.mjs.map +1 -1
  160. package/fesm2022/ngwr-loading-bar.mjs +2 -2
  161. package/fesm2022/ngwr-loading-bar.mjs.map +1 -1
  162. package/fesm2022/ngwr-markdown-testing.mjs +516 -0
  163. package/fesm2022/ngwr-markdown-testing.mjs.map +1 -0
  164. package/fesm2022/ngwr-markdown.mjs +1492 -0
  165. package/fesm2022/ngwr-markdown.mjs.map +1 -0
  166. package/fesm2022/ngwr-marquee.mjs +17 -6
  167. package/fesm2022/ngwr-marquee.mjs.map +1 -1
  168. package/fesm2022/ngwr-mention-testing.mjs +513 -0
  169. package/fesm2022/ngwr-mention-testing.mjs.map +1 -0
  170. package/fesm2022/ngwr-mention.mjs +10 -1
  171. package/fesm2022/ngwr-mention.mjs.map +1 -1
  172. package/fesm2022/ngwr-meta.mjs +22 -7
  173. package/fesm2022/ngwr-meta.mjs.map +1 -1
  174. package/fesm2022/ngwr-meter-group.mjs +19 -5
  175. package/fesm2022/ngwr-meter-group.mjs.map +1 -1
  176. package/fesm2022/ngwr-overlay.mjs +41 -1
  177. package/fesm2022/ngwr-overlay.mjs.map +1 -1
  178. package/fesm2022/ngwr-pagination-testing.mjs +389 -0
  179. package/fesm2022/ngwr-pagination-testing.mjs.map +1 -0
  180. package/fesm2022/ngwr-pagination.mjs +14 -2
  181. package/fesm2022/ngwr-pagination.mjs.map +1 -1
  182. package/fesm2022/ngwr-popconfirm-testing.mjs +309 -0
  183. package/fesm2022/ngwr-popconfirm-testing.mjs.map +1 -0
  184. package/fesm2022/ngwr-popconfirm.mjs +95 -17
  185. package/fesm2022/ngwr-popconfirm.mjs.map +1 -1
  186. package/fesm2022/ngwr-popover-testing.mjs +316 -0
  187. package/fesm2022/ngwr-popover-testing.mjs.map +1 -0
  188. package/fesm2022/ngwr-popover.mjs +21 -3
  189. package/fesm2022/ngwr-popover.mjs.map +1 -1
  190. package/fesm2022/ngwr-pull-to-refresh.mjs +17 -2
  191. package/fesm2022/ngwr-pull-to-refresh.mjs.map +1 -1
  192. package/fesm2022/ngwr-qr.mjs +13 -3
  193. package/fesm2022/ngwr-qr.mjs.map +1 -1
  194. package/fesm2022/ngwr-radio-testing.mjs +392 -0
  195. package/fesm2022/ngwr-radio-testing.mjs.map +1 -0
  196. package/fesm2022/ngwr-radio.mjs +10 -3
  197. package/fesm2022/ngwr-radio.mjs.map +1 -1
  198. package/fesm2022/ngwr-rating-testing.mjs +384 -0
  199. package/fesm2022/ngwr-rating-testing.mjs.map +1 -0
  200. package/fesm2022/ngwr-rating.mjs +37 -2
  201. package/fesm2022/ngwr-rating.mjs.map +1 -1
  202. package/fesm2022/ngwr-segmented-testing.mjs +512 -0
  203. package/fesm2022/ngwr-segmented-testing.mjs.map +1 -0
  204. package/fesm2022/ngwr-select-testing.mjs +268 -0
  205. package/fesm2022/ngwr-select-testing.mjs.map +1 -0
  206. package/fesm2022/ngwr-select.mjs +87 -16
  207. package/fesm2022/ngwr-select.mjs.map +1 -1
  208. package/fesm2022/ngwr-shiny-text.mjs +2 -2
  209. package/fesm2022/ngwr-shiny-text.mjs.map +1 -1
  210. package/fesm2022/ngwr-sidebar.mjs +65 -12
  211. package/fesm2022/ngwr-sidebar.mjs.map +1 -1
  212. package/fesm2022/ngwr-slider-testing.mjs +478 -0
  213. package/fesm2022/ngwr-slider-testing.mjs.map +1 -0
  214. package/fesm2022/ngwr-slider.mjs +57 -13
  215. package/fesm2022/ngwr-slider.mjs.map +1 -1
  216. package/fesm2022/ngwr-sparkline.mjs +26 -6
  217. package/fesm2022/ngwr-sparkline.mjs.map +1 -1
  218. package/fesm2022/ngwr-speed-dial.mjs +37 -4
  219. package/fesm2022/ngwr-speed-dial.mjs.map +1 -1
  220. package/fesm2022/ngwr-spinner.mjs +12 -3
  221. package/fesm2022/ngwr-spinner.mjs.map +1 -1
  222. package/fesm2022/ngwr-splash-cursor.mjs +2 -2
  223. package/fesm2022/ngwr-splash-cursor.mjs.map +1 -1
  224. package/fesm2022/ngwr-split-text.mjs +2 -2
  225. package/fesm2022/ngwr-split-text.mjs.map +1 -1
  226. package/fesm2022/ngwr-splitter.mjs +70 -9
  227. package/fesm2022/ngwr-splitter.mjs.map +1 -1
  228. package/fesm2022/ngwr-spotlight-card.mjs +2 -2
  229. package/fesm2022/ngwr-spotlight-card.mjs.map +1 -1
  230. package/fesm2022/ngwr-star-border.mjs +2 -2
  231. package/fesm2022/ngwr-star-border.mjs.map +1 -1
  232. package/fesm2022/ngwr-statistic.mjs +24 -7
  233. package/fesm2022/ngwr-statistic.mjs.map +1 -1
  234. package/fesm2022/ngwr-stepper-testing.mjs +477 -0
  235. package/fesm2022/ngwr-stepper-testing.mjs.map +1 -0
  236. package/fesm2022/ngwr-switch-testing.mjs +77 -0
  237. package/fesm2022/ngwr-switch-testing.mjs.map +1 -0
  238. package/fesm2022/ngwr-switch.mjs +9 -3
  239. package/fesm2022/ngwr-switch.mjs.map +1 -1
  240. package/fesm2022/ngwr-table-testing.mjs +580 -0
  241. package/fesm2022/ngwr-table-testing.mjs.map +1 -0
  242. package/fesm2022/ngwr-table.mjs +87 -14
  243. package/fesm2022/ngwr-table.mjs.map +1 -1
  244. package/fesm2022/ngwr-tabs-testing.mjs +617 -0
  245. package/fesm2022/ngwr-tabs-testing.mjs.map +1 -0
  246. package/fesm2022/ngwr-tabs.mjs +38 -6
  247. package/fesm2022/ngwr-tabs.mjs.map +1 -1
  248. package/fesm2022/ngwr-textarea-testing.mjs +238 -0
  249. package/fesm2022/ngwr-textarea-testing.mjs.map +1 -0
  250. package/fesm2022/ngwr-textarea.mjs +32 -4
  251. package/fesm2022/ngwr-textarea.mjs.map +1 -1
  252. package/fesm2022/ngwr-tilt-card.mjs +2 -2
  253. package/fesm2022/ngwr-tilt-card.mjs.map +1 -1
  254. package/fesm2022/ngwr-toast-testing.mjs +101 -0
  255. package/fesm2022/ngwr-toast-testing.mjs.map +1 -0
  256. package/fesm2022/ngwr-toast.mjs +2 -2
  257. package/fesm2022/ngwr-toast.mjs.map +1 -1
  258. package/fesm2022/ngwr-tour.mjs +61 -9
  259. package/fesm2022/ngwr-tour.mjs.map +1 -1
  260. package/fesm2022/ngwr-transfer-testing.mjs +538 -0
  261. package/fesm2022/ngwr-transfer-testing.mjs.map +1 -0
  262. package/fesm2022/ngwr-transfer.mjs +45 -14
  263. package/fesm2022/ngwr-transfer.mjs.map +1 -1
  264. package/fesm2022/ngwr-tree-testing.mjs +734 -0
  265. package/fesm2022/ngwr-tree-testing.mjs.map +1 -0
  266. package/fesm2022/ngwr-tree.mjs +73 -7
  267. package/fesm2022/ngwr-tree.mjs.map +1 -1
  268. package/fesm2022/ngwr-typewriter.mjs +5 -3
  269. package/fesm2022/ngwr-typewriter.mjs.map +1 -1
  270. package/fesm2022/ngwr-version.mjs +1 -1
  271. package/fesm2022/ngwr-version.mjs.map +1 -1
  272. package/fesm2022/ngwr-virtual-scroll.mjs +31 -5
  273. package/fesm2022/ngwr-virtual-scroll.mjs.map +1 -1
  274. package/fesm2022/ngwr-waves.mjs +3 -3
  275. package/fesm2022/ngwr-waves.mjs.map +1 -1
  276. package/fesm2022/ngwr-window.mjs +8 -0
  277. package/fesm2022/ngwr-window.mjs.map +1 -1
  278. package/gauge/styles/_index.scss +1 -1
  279. package/glitch-text/styles/_index.scss +4 -0
  280. package/i18n/en.json +48 -0
  281. package/i18n/ru.json +48 -0
  282. package/image-cropper/styles/_index.scss +13 -1
  283. package/input/styles/_index.scss +2 -2
  284. package/input-number/styles/_index.scss +7 -2
  285. package/knob/styles/_index.scss +8 -1
  286. package/layout/styles/_index.scss +3 -3
  287. package/lightbox/styles/_index.scss +10 -2
  288. package/line-chart/styles/_index.scss +6 -0
  289. package/llms-full.txt +151 -4
  290. package/llms.txt +57 -8
  291. package/loading-bar/styles/_index.scss +1 -2
  292. package/markdown/styles/_index.scss +296 -0
  293. package/marquee/styles/_index.scss +12 -0
  294. package/mcp/api.js +512 -0
  295. package/mcp/catalog.js +157 -0
  296. package/mcp/server.js +273 -0
  297. package/mcp/tools.js +366 -0
  298. package/meter-group/styles/_index.scss +1 -1
  299. package/package.json +186 -35
  300. package/pagination/styles/_index.scss +6 -6
  301. package/popover/styles/_index.scss +37 -5
  302. package/rating/styles/_index.scss +10 -0
  303. package/schematics/use/symbol-map.json +2 -0
  304. package/segmented/styles/_index.scss +7 -0
  305. package/select/styles/_index.scss +29 -9
  306. package/sidebar/styles/_index.scss +30 -5
  307. package/slider/styles/_index.scss +15 -0
  308. package/speed-dial/styles/_index.scss +20 -0
  309. package/split-text/styles/_index.scss +13 -0
  310. package/star-border/styles/_index.scss +2 -0
  311. package/stepper/styles/_index.scss +1 -1
  312. package/styles/_grid.scss +4 -4
  313. package/styles.scss +1 -0
  314. package/switch/styles/_index.scss +5 -3
  315. package/table/styles/_index.scss +22 -11
  316. package/tabs/styles/_index.scss +11 -1
  317. package/textarea/styles/_index.scss +5 -0
  318. package/theme/styles/_colors.scss +29 -13
  319. package/theme/styles/_dark.scss +11 -3
  320. package/theme/styles/_mixins.scss +3 -0
  321. package/timeline/styles/_index.scss +2 -2
  322. package/toast/styles/_index.scss +17 -8
  323. package/toolbar/styles/_index.scss +3 -3
  324. package/tour/styles/_index.scss +7 -1
  325. package/tree/styles/_index.scss +5 -3
  326. package/types/ngwr-action-sheet.d.ts +9 -1
  327. package/types/ngwr-affix.d.ts +7 -1
  328. package/types/ngwr-anchor.d.ts +8 -1
  329. package/types/ngwr-avatar.d.ts +13 -3
  330. package/types/ngwr-bar-chart.d.ts +16 -0
  331. package/types/ngwr-burger.d.ts +6 -2
  332. package/types/ngwr-button-testing.d.ts +85 -0
  333. package/types/ngwr-button.d.ts +26 -10
  334. package/types/ngwr-calendar-heatmap.d.ts +16 -2
  335. package/types/ngwr-calendar.d.ts +10 -0
  336. package/types/ngwr-carousel-testing.d.ts +257 -0
  337. package/types/ngwr-carousel.d.ts +20 -4
  338. package/types/ngwr-cascader-testing.d.ts +392 -0
  339. package/types/ngwr-checkbox-testing.d.ts +77 -0
  340. package/types/ngwr-checkbox.d.ts +7 -2
  341. package/types/ngwr-collapse-testing.d.ts +290 -0
  342. package/types/ngwr-color-picker.d.ts +20 -11
  343. package/types/ngwr-command-palette-testing.d.ts +437 -0
  344. package/types/ngwr-command-palette.d.ts +25 -2
  345. package/types/ngwr-compare.d.ts +50 -2
  346. package/types/ngwr-config.d.ts +176 -0
  347. package/types/ngwr-context-menu-testing.d.ts +401 -0
  348. package/types/ngwr-context-menu.d.ts +65 -17
  349. package/types/ngwr-counter.d.ts +6 -1
  350. package/types/ngwr-date-adapter-luxon.d.ts +26 -0
  351. package/types/ngwr-date-picker-testing.d.ts +518 -0
  352. package/types/ngwr-date-picker.d.ts +4 -0
  353. package/types/ngwr-dialog-testing.d.ts +79 -0
  354. package/types/ngwr-directives.d.ts +10 -1
  355. package/types/ngwr-donut-chart.d.ts +8 -1
  356. package/types/ngwr-drawer-testing.d.ts +196 -0
  357. package/types/ngwr-dropdown-testing.d.ts +202 -0
  358. package/types/ngwr-dropdown.d.ts +7 -1
  359. package/types/ngwr-empty.d.ts +19 -4
  360. package/types/ngwr-event-calendar.d.ts +26 -1
  361. package/types/ngwr-file-upload-testing.d.ts +194 -0
  362. package/types/ngwr-form-testing.d.ts +379 -0
  363. package/types/ngwr-form.d.ts +17 -0
  364. package/types/ngwr-gauge.d.ts +13 -1
  365. package/types/ngwr-image-cropper.d.ts +10 -0
  366. package/types/ngwr-input-number-testing.d.ts +226 -0
  367. package/types/ngwr-input-number.d.ts +29 -1
  368. package/types/ngwr-input-otp-testing.d.ts +299 -0
  369. package/types/ngwr-input-otp.d.ts +23 -2
  370. package/types/ngwr-input-testing.d.ts +84 -0
  371. package/types/ngwr-input.d.ts +20 -6
  372. package/types/ngwr-knob.d.ts +18 -0
  373. package/types/ngwr-layout.d.ts +1 -0
  374. package/types/ngwr-lightbox.d.ts +17 -3
  375. package/types/ngwr-line-chart.d.ts +9 -2
  376. package/types/ngwr-markdown-testing.d.ts +462 -0
  377. package/types/ngwr-markdown.d.ts +534 -0
  378. package/types/ngwr-marquee.d.ts +12 -2
  379. package/types/ngwr-mention-testing.d.ts +359 -0
  380. package/types/ngwr-meta.d.ts +4 -2
  381. package/types/ngwr-meter-group.d.ts +11 -1
  382. package/types/ngwr-overlay.d.ts +33 -2
  383. package/types/ngwr-pagination-testing.d.ts +291 -0
  384. package/types/ngwr-pagination.d.ts +1 -0
  385. package/types/ngwr-popconfirm-testing.d.ts +235 -0
  386. package/types/ngwr-popconfirm.d.ts +31 -21
  387. package/types/ngwr-popover-testing.d.ts +221 -0
  388. package/types/ngwr-popover.d.ts +9 -0
  389. package/types/ngwr-pull-to-refresh.d.ts +7 -0
  390. package/types/ngwr-qr.d.ts +9 -1
  391. package/types/ngwr-radio-testing.d.ts +296 -0
  392. package/types/ngwr-radio.d.ts +8 -2
  393. package/types/ngwr-rating-testing.d.ts +291 -0
  394. package/types/ngwr-rating.d.ts +23 -0
  395. package/types/ngwr-segmented-testing.d.ts +401 -0
  396. package/types/ngwr-select-testing.d.ts +175 -0
  397. package/types/ngwr-select.d.ts +45 -4
  398. package/types/ngwr-sidebar.d.ts +17 -2
  399. package/types/ngwr-slider-testing.d.ts +329 -0
  400. package/types/ngwr-slider.d.ts +35 -1
  401. package/types/ngwr-sparkline.d.ts +12 -2
  402. package/types/ngwr-speed-dial.d.ts +17 -18
  403. package/types/ngwr-spinner.d.ts +8 -1
  404. package/types/ngwr-splitter.d.ts +24 -1
  405. package/types/ngwr-statistic.d.ts +12 -2
  406. package/types/ngwr-stepper-testing.d.ts +346 -0
  407. package/types/ngwr-switch-testing.d.ts +66 -0
  408. package/types/ngwr-switch.d.ts +7 -2
  409. package/types/ngwr-table-testing.d.ts +423 -0
  410. package/types/ngwr-table.d.ts +42 -0
  411. package/types/ngwr-tabs-testing.d.ts +470 -0
  412. package/types/ngwr-tabs.d.ts +9 -0
  413. package/types/ngwr-textarea-testing.d.ts +184 -0
  414. package/types/ngwr-textarea.d.ts +7 -2
  415. package/types/ngwr-toast-testing.d.ts +80 -0
  416. package/types/ngwr-tour.d.ts +27 -0
  417. package/types/ngwr-transfer-testing.d.ts +444 -0
  418. package/types/ngwr-transfer.d.ts +16 -1
  419. package/types/ngwr-tree-testing.d.ts +501 -0
  420. package/types/ngwr-tree.d.ts +33 -0
  421. package/types/ngwr-version.d.ts +1 -1
  422. package/types/ngwr-virtual-scroll.d.ts +13 -1
  423. package/typewriter/styles/_index.scss +1 -1
  424. package/typography/styles/_index.scss +1 -1
  425. package/window/styles/_index.scss +32 -9
@@ -0,0 +1,196 @@
1
+ import { BaseHarnessFilters, ContentContainerComponentHarness, HarnessPredicate } from '@angular/cdk/testing';
2
+ import { WrDrawerPosition } from 'ngwr/drawer';
3
+
4
+ /**
5
+ * @license
6
+ *
7
+ * Use of this source code is governed by an MIT-style license that can be
8
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
9
+ */
10
+
11
+ /** Narrows which open drawer a harness query matches. */
12
+ interface WrDrawerHarnessFilters extends BaseHarnessFilters {
13
+ /**
14
+ * Match the `[wrDrawerTitle]` text — a string is an exact match, a RegExp is
15
+ * tested. A drawer with no title never matches.
16
+ */
17
+ readonly title?: string | RegExp;
18
+ /**
19
+ * Match the `[wrDrawerContent]` text. A drawer whose content is not wrapped in
20
+ * that directive never matches.
21
+ */
22
+ readonly content?: string | RegExp;
23
+ /** Match the edge the drawer slid in from: `left`, `right`, `top` or `bottom`. */
24
+ readonly position?: WrDrawerPosition;
25
+ }
26
+
27
+ /**
28
+ * @license
29
+ *
30
+ * Use of this source code is governed by an MIT-style license that can be
31
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
32
+ */
33
+
34
+ /**
35
+ * Test harness for an open drawer — both flavours.
36
+ *
37
+ * A drawer ships as an element (`<wr-drawer [(open)]="…">`) AND as a service call
38
+ * (`WrDrawerManager.open(Cmp)`), but neither puts the panel where a consumer's
39
+ * spec can see it: both render into the NGWR overlay container, a sibling of the
40
+ * whole app. So this is loaded from `TestbedHarnessEnvironment.documentRootLoader()`
41
+ * in BOTH cases — a fixture-scoped loader finds nothing, including for the element
42
+ * form, whose `<wr-drawer>` host is `display: none` and holds no content.
43
+ *
44
+ * The harness is anchored on the overlay pane, which is the one element the two
45
+ * flavours share: for `<wr-drawer>` it wraps the panel div, for the manager it IS
46
+ * the panel (the caller's component is attached straight into it). It is also the
47
+ * only per-instance anchor there is — `<wr-drawer>` publishes no `aria-controls` /
48
+ * `aria-owns` link to the overlay it opened — which is why every query here starts
49
+ * from the pane rather than from a class in the shared container.
50
+ *
51
+ * The harness is a CONTENT CONTAINER: the fields and buttons in the panel are the
52
+ * consumer's own components, so `drawer.getHarness(WrButtonHarness…)` reads them
53
+ * without the spec ever touching the overlay.
54
+ *
55
+ * @example
56
+ * ```ts
57
+ * const rootLoader = TestbedHarnessEnvironment.documentRootLoader(fixture);
58
+ * const drawer = await rootLoader.getHarness(WrDrawerHarness.with({ title: 'Filters' }));
59
+ *
60
+ * expect(await drawer.getPosition()).toBe('bottom');
61
+ * expect(await drawer.isSheet()).toBe(true);
62
+ * await drawer.close();
63
+ * ```
64
+ *
65
+ * @see https://ngwr.dev/guides/testing
66
+ */
67
+ declare class WrDrawerHarness extends ContentContainerComponentHarness {
68
+ /** The overlay pane both flavours create. A closed drawer has none. */
69
+ static hostSelector: string;
70
+ /** Build a predicate that narrows the query — drawers can be stacked. */
71
+ static with(options?: WrDrawerHarnessFilters): HarnessPredicate<WrDrawerHarness>;
72
+ /**
73
+ * Whether this drawer is still open.
74
+ *
75
+ * A harness can only be obtained while a drawer is open — closing disposes the
76
+ * overlay, panel and all — so this is the answer for a harness you are already
77
+ * HOLDING: it flips to `false` after a dismissal, where a fresh
78
+ * `getHarnessOrNull()` comes back `null`.
79
+ *
80
+ * Attachment is the test, not a class: disposal takes the pane out of the
81
+ * document along with its wrapper, so the `body` ancestor in the selector is what
82
+ * distinguishes a live panel from the detached element a stale harness holds.
83
+ */
84
+ isOpen(): Promise<boolean>;
85
+ /** The `[wrDrawerTitle]` text, or `null` when the drawer has no title. */
86
+ getTitleText(): Promise<string | null>;
87
+ /** The `[wrDrawerContent]` text, or `null` when the body is not wrapped in it. */
88
+ getContentText(): Promise<string | null>;
89
+ /**
90
+ * The edge the drawer is attached to.
91
+ *
92
+ * Read from the overlay's own side modifier, which both flavours set and consumer
93
+ * CSS targets. It is a real mode axis rather than a style flag: left/right size
94
+ * themselves from `width` and stretch full-height, top/bottom span the viewport
95
+ * and size themselves from `height` / `maxHeight`.
96
+ */
97
+ getPosition(): Promise<WrDrawerPosition>;
98
+ /**
99
+ * Whether the drawer presents as a SHEET rather than a side panel — the top and
100
+ * bottom edges, where it spans the full viewport width and takes its size from
101
+ * `height` / `maxHeight`.
102
+ *
103
+ * This answers the axis only. The bottom-sheet look is that plus `rounded` and
104
+ * `showHandle`, which {@link isRounded} and {@link hasHandle} answer separately.
105
+ */
106
+ isSheet(): Promise<boolean>;
107
+ /** Whether the leading corners are rounded (`rounded`). */
108
+ isRounded(): Promise<boolean>;
109
+ /** Whether the trailing edge is padded for the device's safe area (`safeArea`). */
110
+ hasSafeArea(): Promise<boolean>;
111
+ /**
112
+ * Whether the drawer draws a grab handle (`showHandle`), which is also what
113
+ * enables swipe-to-dismiss.
114
+ *
115
+ * Always `false` for a `WrDrawerManager.open()` drawer, and not a defect: the
116
+ * handle lives in the component's own wrapper markup, which the service path
117
+ * replaces with the caller's component.
118
+ */
119
+ hasHandle(): Promise<boolean>;
120
+ /**
121
+ * The role the drawer announces.
122
+ *
123
+ * Worth asserting rather than assuming: both flavours write it onto the OVERLAY
124
+ * element, not onto the markup the consumer wrote, so a spec looking for it on
125
+ * its own host would not find it.
126
+ */
127
+ getRole(): Promise<string | null>;
128
+ /** Whether the drawer is marked `aria-modal` — the promise the backdrop and focus trap make. */
129
+ isModal(): Promise<boolean>;
130
+ /**
131
+ * Whether the panel takes its accessible name from the drawer's own title.
132
+ *
133
+ * Both flavours point `aria-labelledby` at `[wrDrawerTitle]`'s generated id, but
134
+ * only once the content is in the DOM — deferred either way — so a spec has to
135
+ * let the fixture settle (`await fixture.whenStable()`) before asking.
136
+ */
137
+ isLabelledByTitle(): Promise<boolean>;
138
+ /** Whether the built-in dismiss (✕) button is present (`closable`, the default). */
139
+ isClosable(): Promise<boolean>;
140
+ /** The dismiss button's accessible name — the string a screen reader reads out. */
141
+ getCloseLabel(): Promise<string | null>;
142
+ /**
143
+ * Click the built-in dismiss button.
144
+ *
145
+ * Throws on a drawer opened `closable: false`. That is a deliberate shape — the
146
+ * projected content owns the close affordance, typically a `[wrDrawerClose]`
147
+ * button — and a quiet no-op here would read as "closed" three assertions later.
148
+ */
149
+ close(): Promise<void>;
150
+ /**
151
+ * Press Escape. A drawer opened `closeOnEscape: false` ignores it — assert, do
152
+ * not assume.
153
+ *
154
+ * The key reaches a drawer through the CDK's keyboard dispatcher, which hands it
155
+ * to the TOP-MOST listening overlay, so with drawers stacked this dismisses the
156
+ * top one whichever harness it is called on.
157
+ */
158
+ sendEscape(): Promise<void>;
159
+ /** Whether the drawer dims the page behind it (`hasBackdrop`, the default). */
160
+ hasBackdrop(): Promise<boolean>;
161
+ /**
162
+ * Click the backdrop — the third way a drawer is dismissed, next to the dismiss
163
+ * button and Escape, and the one a `closeOnBackdropClick: false` drawer is meant
164
+ * to survive.
165
+ */
166
+ clickBackdrop(): Promise<void>;
167
+ /** Whether focus is currently inside the drawer, where the trap should hold it. */
168
+ isFocusTrapped(): Promise<boolean>;
169
+ /**
170
+ * The element carrying the `.wr-drawer__panel` classes.
171
+ *
172
+ * `WrDrawerManager` flattens the panel onto the overlay pane itself, while
173
+ * `<wr-drawer>` renders it as a div inside the pane — same classes, one level
174
+ * apart, so the modifiers have to be read from whichever element has them.
175
+ */
176
+ private panel;
177
+ /**
178
+ * THIS drawer's backdrop, or `null` when it has none.
179
+ *
180
+ * Scoped by the overlay pane's own id, not by a bare `.wr-drawer-backdrop` query:
181
+ * the container is shared, so a class query answers with whichever drawer opened
182
+ * first — and two drawers open at once can disagree about `hasBackdrop`.
183
+ *
184
+ * Two queries, because the CDK puts the backdrop in one of two places. With the
185
+ * popover API — its default wherever `showPopover` exists, so in every real
186
+ * browser — the backdrop is PREPENDED INSIDE the host, next to the pane, which is
187
+ * what the first query's `+` pins down. Without it (jsdom, or `usePopover: false`)
188
+ * it goes immediately BEFORE the host wrapper that holds the pane, which is what
189
+ * the second query matches — so under vitest the second one does the work and the
190
+ * first is the production path.
191
+ */
192
+ private backdrop;
193
+ }
194
+
195
+ export { WrDrawerHarness };
196
+ export type { WrDrawerHarnessFilters };
@@ -0,0 +1,202 @@
1
+ import { BaseHarnessFilters, ComponentHarness, HarnessPredicate, ContentContainerComponentHarness, HarnessLoader } 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 `[wrDropdown]` trigger a harness query matches. */
11
+ interface WrDropdownHarnessFilters extends BaseHarnessFilters {
12
+ /**
13
+ * Match the trigger's visible text — the label of whatever element the
14
+ * consumer put `[wrDropdown]` on. A string is an exact match, a RegExp is
15
+ * tested.
16
+ */
17
+ readonly text?: string | RegExp;
18
+ /** Match only open (`true`) or only closed (`false`) dropdowns. */
19
+ readonly open?: boolean;
20
+ }
21
+ /** Narrows which item inside a dropdown's menu a harness query matches. */
22
+ interface WrDropdownItemHarnessFilters extends BaseHarnessFilters {
23
+ /** Match the item's label — a string is an exact match, a RegExp is tested. */
24
+ readonly text?: string | RegExp;
25
+ /** Match only enabled (`false`) or only disabled (`true`) items. */
26
+ readonly disabled?: boolean;
27
+ }
28
+
29
+ /**
30
+ * @license
31
+ *
32
+ * Use of this source code is governed by an MIT-style license that can be
33
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
34
+ */
35
+
36
+ /**
37
+ * Test harness for one `<wr-dropdown-item>` inside a dropdown menu.
38
+ *
39
+ * The selector is the CLASS rather than the element: `.wr-dropdown-item` is what
40
+ * the directive's own keyboard navigation queries, so it is the contract both
41
+ * sides already rely on. Only the class, though — the directive narrows its query
42
+ * to `:not(.wr-dropdown-item--disabled)` because it is looking for focus stops,
43
+ * while a spec still has to be able to see a disabled item and assert that it is
44
+ * one.
45
+ *
46
+ * @see https://ngwr.dev/guides/testing
47
+ */
48
+ declare class WrDropdownItemHarness extends ComponentHarness {
49
+ /** The class the item paints on its host, and the one arrow-key navigation looks for. */
50
+ static hostSelector: string;
51
+ /** Build a predicate that narrows the query. */
52
+ static with(options?: WrDropdownItemHarnessFilters): HarnessPredicate<WrDropdownItemHarness>;
53
+ /** The item's label, trimmed. A leading icon is not part of it. */
54
+ getText(): Promise<string>;
55
+ /** The role the item announces — `menuitem`. */
56
+ getRole(): Promise<string | null>;
57
+ /** Whether the item refuses activation. */
58
+ isDisabled(): Promise<boolean>;
59
+ /** Whether the item shows a leading icon. */
60
+ hasIcon(): Promise<boolean>;
61
+ /** The leading icon's registered name, or `null` when the item has no icon. */
62
+ getIconName(): Promise<string | null>;
63
+ /** Whether the item holds the menu's roving focus. */
64
+ isFocused(): Promise<boolean>;
65
+ /**
66
+ * Click the item. A disabled item throws instead.
67
+ *
68
+ * Refusing is the only honest answer: the item's own `disabled` guards the
69
+ * KEYBOARD path only, and a pointer is stopped by `pointer-events: none` in the
70
+ * stylesheet. jsdom loads no stylesheets, so a click dispatched here would land
71
+ * on the host — exactly where the consumer bound `(click)` — and the spec would
72
+ * record an activation that cannot happen in a browser. Assert `isDisabled()`
73
+ * instead.
74
+ */
75
+ click(): Promise<void>;
76
+ }
77
+
78
+ /**
79
+ * @license
80
+ *
81
+ * Use of this source code is governed by an MIT-style license that can be
82
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
83
+ */
84
+
85
+ /**
86
+ * Test harness for `[wrDropdown]` — the trigger, and the menu it opens.
87
+ *
88
+ * The harness matches the TRIGGER, because that is the only part of the dropdown
89
+ * in the fixture: `<wr-dropdown-menu>` renders nothing of its own (it hands over
90
+ * an `<ng-template>`), and the menu is portalled into the overlay container, a
91
+ * sibling of the whole app. So every item is read through the document root,
92
+ * scoped by the `aria-controls` id the trigger publishes while it is open — which
93
+ * is what keeps two dropdowns on one page from answering with each other's items.
94
+ *
95
+ * That scoped loader is also this harness's CONTENT loader, so
96
+ * `dropdown.getHarness(…)` resolves inside THIS dropdown's menu: the consumer's
97
+ * own components in the menu are reachable without the spec ever touching the
98
+ * overlay, and so is a nested `[wrDropdown]`, which is how a submenu is built
99
+ * here (the component ships no submenu API of its own).
100
+ *
101
+ * @example
102
+ * ```ts
103
+ * const dropdown = await loader.getHarness(WrDropdownHarness.with({ text: 'Actions' }));
104
+ *
105
+ * await dropdown.open();
106
+ * expect(await dropdown.getItemTexts()).toEqual(['Copy', 'Delete']);
107
+ *
108
+ * await dropdown.clickItem({ text: 'Copy' });
109
+ * ```
110
+ *
111
+ * @see https://ngwr.dev/guides/testing
112
+ */
113
+ declare class WrDropdownHarness extends ContentContainerComponentHarness {
114
+ /** The directive's host — whatever element the consumer put `[wrDropdown]` on. */
115
+ static hostSelector: string;
116
+ /** Build a predicate that narrows the query. */
117
+ static with(options?: WrDropdownHarnessFilters): HarnessPredicate<WrDropdownHarness>;
118
+ /** The trigger's visible text. */
119
+ getTriggerText(): Promise<string>;
120
+ /** Whether the menu is showing. */
121
+ isOpen(): Promise<boolean>;
122
+ /** The role the menu announces — `menu`. Throws while the menu is closed. */
123
+ getMenuRole(): Promise<string | null>;
124
+ /**
125
+ * Whether the menu takes its accessible name from this trigger.
126
+ *
127
+ * The menu carries no label of its own, so that reference IS its name — and the
128
+ * id it points at is generated unless the consumer named the trigger
129
+ * themselves, which is why a spec cannot simply hard-code one.
130
+ */
131
+ isMenuLabelledByTrigger(): Promise<boolean>;
132
+ /**
133
+ * Open the menu, whichever gesture this dropdown listens for.
134
+ *
135
+ * `trigger` is not reflected in the DOM, so the harness cannot ask which mode it
136
+ * is in: it moves the pointer on first and falls back to a click. Hover leads
137
+ * because a click is an outside pointer event for every OTHER open overlay — so
138
+ * leading with it would shut someone else's menu on the way to opening this one
139
+ * — and a `trigger="click"` dropdown ignores the hover outright.
140
+ */
141
+ open(): Promise<void>;
142
+ /**
143
+ * Open the menu from the keyboard — ArrowDown on the trigger, the APG
144
+ * menu-button path (ArrowUp / Enter / Space do the same).
145
+ *
146
+ * Worth its own method rather than an argument to `open()`: it is the only way
147
+ * to get TWO dropdowns open at once, because clicking a second trigger is an
148
+ * outside pointer event for the first and closes it.
149
+ */
150
+ openByKeyboard(): Promise<void>;
151
+ /** Close the menu. A closed dropdown is left alone. */
152
+ close(): Promise<void>;
153
+ /** Click the trigger. A `trigger="hover"` dropdown deliberately ignores this. */
154
+ clickTrigger(): Promise<void>;
155
+ /** Move the pointer onto the trigger. Opens a `trigger="hover"` dropdown. */
156
+ hoverTrigger(): Promise<void>;
157
+ /** Move the pointer off the trigger. Closes a `trigger="hover"` dropdown. */
158
+ mouseAwayFromTrigger(): Promise<void>;
159
+ /**
160
+ * The items in this dropdown's menu, in DOM order.
161
+ *
162
+ * Throws while the menu is closed: the items do not exist anywhere until the
163
+ * portal is attached, and an empty array reads like a menu that rendered
164
+ * nothing — a failure three lines later instead of here.
165
+ */
166
+ getItems(filters?: WrDropdownItemHarnessFilters): Promise<WrDropdownItemHarness[]>;
167
+ /** The labels of the items in this dropdown's menu, in DOM order. */
168
+ getItemTexts(): Promise<string[]>;
169
+ /**
170
+ * Open the menu if it is closed, then click the first item matching the filters.
171
+ *
172
+ * Picking does NOT close the menu — there is no close-on-select in the item or
173
+ * the menu, so a consumer who wants one calls `close()` themselves.
174
+ */
175
+ clickItem(filters: WrDropdownItemHarnessFilters): Promise<void>;
176
+ /**
177
+ * The label of the item that currently holds focus, or `null` when focus is
178
+ * elsewhere.
179
+ *
180
+ * The menu roves focus rather than moving a visual cursor — it lands on the
181
+ * first ENABLED item as the menu renders, and the arrow keys walk it from there
182
+ * over the enabled items only (a disabled one is not a stop) — so this is the
183
+ * only way to ask where the keyboard is.
184
+ */
185
+ getFocusedItemText(): Promise<string | null>;
186
+ /**
187
+ * A loader scoped to THIS dropdown's menu — the content loader every
188
+ * `HarnessLoader` method on this class runs through, `getItems()` included.
189
+ *
190
+ * Scoped by the published id rather than by `.wr-dropdown-menu`: the overlay
191
+ * container is shared, so a bare class query would answer with whichever
192
+ * dropdown happened to open first.
193
+ */
194
+ protected getRootHarnessLoader(): Promise<HarnessLoader>;
195
+ /** This dropdown's menu element in the overlay. */
196
+ private menu;
197
+ /** The id the trigger publishes as `aria-controls`, which its menu carries. */
198
+ private menuId;
199
+ }
200
+
201
+ export { WrDropdownHarness, WrDropdownItemHarness };
202
+ export type { WrDropdownHarnessFilters, WrDropdownItemHarnessFilters };
@@ -80,7 +80,13 @@ declare class WrDropdown {
80
80
  private readonly destroyRef;
81
81
  /** @internal Public so host bindings can read it. */
82
82
  readonly isOpen: _angular_core.WritableSignal<boolean>;
83
- /** Auto-generated id for `aria-labelledby` wiring on the menu. */
83
+ /**
84
+ * Id the menu names itself after. The trigger is the CONSUMER's own element, so
85
+ * an `id` they already put there wins: overwriting it broke `<label for>`,
86
+ * `document.getElementById` and any `aria-labelledby` aimed at that button from
87
+ * elsewhere in their app. The generated one is only a fallback so the menu has
88
+ * something to reference.
89
+ */
84
90
  protected readonly triggerId: string;
85
91
  private overlayRef;
86
92
  constructor();
@@ -15,7 +15,7 @@ import * as _angular_core from '@angular/core';
15
15
  *
16
16
  * @example
17
17
  * ```html
18
- * <wr-empty icon="search" title="No results">
18
+ * <wr-empty iconName="search" title="No results">
19
19
  * Try a different query or clear filters.
20
20
  * <ng-container wrEmptyActions>
21
21
  * <wr-btn (click)="reset()">Reset filters</wr-btn>
@@ -26,13 +26,28 @@ import * as _angular_core from '@angular/core';
26
26
  * @see https://ngwr.dev/reference/components/empty
27
27
  */
28
28
  declare class WrEmpty {
29
- /** Icon name shown above the title. @default 'folder' */
30
- readonly icon: _angular_core.InputSignal<string | null>;
29
+ /**
30
+ * Render the built-in folder glyph. Pass `false` to show no icon at all.
31
+ * Ignored when `iconName` is set — the same contract as `<wr-alert>`.
32
+ *
33
+ * This used to be typed as an icon NAME, which it never was: whatever name
34
+ * you passed, the template drew the folder. Any truthy value still shows it,
35
+ * so nothing that compiled before behaves differently.
36
+ *
37
+ * @default true
38
+ */
39
+ readonly icon: _angular_core.InputSignalWithTransform<boolean, any>;
40
+ /**
41
+ * Show any registered ngwr icon instead of the built-in glyph.
42
+ *
43
+ * @default null
44
+ */
45
+ readonly iconName: _angular_core.InputSignal<string | null>;
31
46
  /** Headline. Falls back to `empty.noData` from WrI18n, then `'No data'`. */
32
47
  readonly title: _angular_core.InputSignal<string | null>;
33
48
  protected readonly resolvedTitle: _angular_core.Signal<string>;
34
49
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrEmpty, never>;
35
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrEmpty, "wr-empty", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; }, {}, never, ["*", "[wrEmptyActions]"], true, never>;
50
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrEmpty, "wr-empty", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconName": { "alias": "iconName"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; }, {}, never, ["*", "[wrEmptyActions]"], true, never>;
36
51
  }
37
52
 
38
53
  export { WrEmpty };
@@ -218,6 +218,7 @@ declare class WrEventCalendar {
218
218
  readonly eventChange: _angular_core.OutputEmitterRef<WrCalendarEventChange>;
219
219
  private readonly adapter;
220
220
  private readonly document;
221
+ private readonly dir;
221
222
  private readonly chipTpl;
222
223
  protected readonly todayLabel: string;
223
224
  protected readonly previousLabel: string;
@@ -254,7 +255,13 @@ declare class WrEventCalendar {
254
255
  /** Only what overlaps the window — everything downstream works off this. */
255
256
  private readonly visible;
256
257
  protected readonly title: _angular_core.Signal<string>;
257
- protected readonly weekdayNames: _angular_core.Signal<string[]>;
258
+ /**
259
+ * The adapter contract is "names ordered from `getFirstDayOfWeek()` onwards",
260
+ * so the list is ALREADY rotated. Rotating it again here put every column one
261
+ * day out for every locale whose week does not start on Sunday — invisible in
262
+ * en-US, wrong everywhere else. `wr-calendar` consumes the same call directly.
263
+ */
264
+ protected readonly weekdayNames: _angular_core.Signal<readonly string[]>;
258
265
  protected readonly switcher: _angular_core.Signal<{
259
266
  view: WrCalendarView;
260
267
  label: string;
@@ -282,6 +289,15 @@ declare class WrEventCalendar {
282
289
  protected onCellClick(date: Date, minutes: number): void;
283
290
  protected onChipKeyDown(event: KeyboardEvent, chipEvent: WrCalendarEvent): void;
284
291
  protected onGridKeyDown(event: KeyboardEvent): void;
292
+ /**
293
+ * Keep the roving cursor on the cell that actually has focus.
294
+ *
295
+ * The cursor was only ever written by an arrow key, while focus moves for three
296
+ * other reasons — a click, a Tab onto a chip, Escape out of one — so the next
297
+ * arrow read a coordinate nobody was standing on and threw focus back to it,
298
+ * usually the top-left of the grid.
299
+ */
300
+ protected onCellFocus(day: number, minutes: number): void;
285
301
  protected isCursor(day: number, minutes: number): boolean;
286
302
  /**
287
303
  * Greedy lane packing for day-spanning chips. Sorted by start then by length,
@@ -323,6 +339,15 @@ declare class WrEventCalendar {
323
339
  private spansWholeDay;
324
340
  private clock;
325
341
  private iso;
342
+ /**
343
+ * The key as the grid SEES it.
344
+ *
345
+ * A day step follows visual order, so under `dir="rtl"` ArrowRight goes back a
346
+ * day. Up/Down move by week or by row and never flip; Home/End are semantic.
347
+ * Both key handlers route through here — the grid nav and the `Alt`+arrow drag,
348
+ * which moves an event and would otherwise reschedule it the wrong way.
349
+ */
350
+ private inlineKey;
326
351
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrEventCalendar, never>;
327
352
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrEventCalendar, "wr-event-calendar", never, { "events": { "alias": "events"; "required": false; "isSignal": true; }; "view": { "alias": "view"; "required": false; "isSignal": true; }; "date": { "alias": "date"; "required": false; "isSignal": true; }; "views": { "alias": "views"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "slotMinutes": { "alias": "slotMinutes"; "required": false; "isSignal": true; }; "dayStartHour": { "alias": "dayStartHour"; "required": false; "isSignal": true; }; "dayEndHour": { "alias": "dayEndHour"; "required": false; "isSignal": true; }; "maxLanes": { "alias": "maxLanes"; "required": false; "isSignal": true; }; "hideHeader": { "alias": "hideHeader"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "view": "viewChange"; "date": "dateChange"; "eventClick": "eventClick"; "slotClick": "slotClick"; "eventChange": "eventChange"; }, ["chipTpl"], never, true, never>;
328
353
  }