ngwr 14.3.0 → 14.4.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 (330) hide show
  1. package/README.md +1 -1
  2. package/avatar/styles/_index.scss +4 -2
  3. package/badge/styles/_index.scss +4 -1
  4. package/badge/styles/_tag.scss +3 -0
  5. package/cascader/styles/_rules.scss +3 -0
  6. package/command-palette/styles/_index.scss +23 -0
  7. package/context-menu/styles/_index.scss +13 -1
  8. package/fesm2022/ngwr-action-sheet.mjs +3 -3
  9. package/fesm2022/ngwr-affix.mjs +17 -4
  10. package/fesm2022/ngwr-affix.mjs.map +1 -1
  11. package/fesm2022/ngwr-alert.mjs +4 -4
  12. package/fesm2022/ngwr-alert.mjs.map +1 -1
  13. package/fesm2022/ngwr-anchor.mjs +3 -3
  14. package/fesm2022/ngwr-aurora.mjs +3 -3
  15. package/fesm2022/ngwr-avatar.mjs +3 -3
  16. package/fesm2022/ngwr-back-top.mjs +3 -3
  17. package/fesm2022/ngwr-badge.mjs +6 -6
  18. package/fesm2022/ngwr-bar-chart-testing.mjs +18 -2
  19. package/fesm2022/ngwr-bar-chart-testing.mjs.map +1 -1
  20. package/fesm2022/ngwr-bar-chart.mjs +3 -3
  21. package/fesm2022/ngwr-blur-text.mjs +3 -3
  22. package/fesm2022/ngwr-border-glow.mjs +3 -3
  23. package/fesm2022/ngwr-breadcrumbs.mjs +6 -6
  24. package/fesm2022/ngwr-burger.mjs +3 -3
  25. package/fesm2022/ngwr-button.mjs +6 -6
  26. package/fesm2022/ngwr-calendar-heatmap-testing.mjs +12 -9
  27. package/fesm2022/ngwr-calendar-heatmap-testing.mjs.map +1 -1
  28. package/fesm2022/ngwr-calendar-heatmap.mjs +35 -7
  29. package/fesm2022/ngwr-calendar-heatmap.mjs.map +1 -1
  30. package/fesm2022/ngwr-calendar.mjs +32 -4
  31. package/fesm2022/ngwr-calendar.mjs.map +1 -1
  32. package/fesm2022/ngwr-card.mjs +9 -9
  33. package/fesm2022/ngwr-carousel.mjs +6 -6
  34. package/fesm2022/ngwr-cascader-testing.mjs +87 -17
  35. package/fesm2022/ngwr-cascader-testing.mjs.map +1 -1
  36. package/fesm2022/ngwr-cascader.mjs +63 -4
  37. package/fesm2022/ngwr-cascader.mjs.map +1 -1
  38. package/fesm2022/ngwr-checkbox-testing.mjs +13 -2
  39. package/fesm2022/ngwr-checkbox-testing.mjs.map +1 -1
  40. package/fesm2022/ngwr-checkbox.mjs +42 -7
  41. package/fesm2022/ngwr-checkbox.mjs.map +1 -1
  42. package/fesm2022/ngwr-circular-text.mjs +3 -3
  43. package/fesm2022/ngwr-click-spark.mjs +3 -3
  44. package/fesm2022/ngwr-clipboard.mjs +3 -3
  45. package/fesm2022/ngwr-collapse.mjs +9 -9
  46. package/fesm2022/ngwr-color-picker.mjs +6 -6
  47. package/fesm2022/ngwr-command-palette.mjs +16 -3
  48. package/fesm2022/ngwr-command-palette.mjs.map +1 -1
  49. package/fesm2022/ngwr-compare.mjs +3 -3
  50. package/fesm2022/ngwr-confetti.mjs +3 -3
  51. package/fesm2022/ngwr-context-menu.mjs +12 -12
  52. package/fesm2022/ngwr-cookie.mjs +3 -3
  53. package/fesm2022/ngwr-counter.mjs +6 -6
  54. package/fesm2022/ngwr-date-adapters-fns.mjs +3 -3
  55. package/fesm2022/ngwr-date-adapters-luxon.mjs +3 -3
  56. package/fesm2022/ngwr-date-picker.mjs +81 -26
  57. package/fesm2022/ngwr-date-picker.mjs.map +1 -1
  58. package/fesm2022/ngwr-date.mjs +3 -3
  59. package/fesm2022/ngwr-decrypt-text.mjs +3 -3
  60. package/fesm2022/ngwr-density.mjs +6 -6
  61. package/fesm2022/ngwr-descriptions.mjs +6 -6
  62. package/fesm2022/ngwr-dialog.mjs +15 -15
  63. package/fesm2022/ngwr-directives.mjs +12 -12
  64. package/fesm2022/ngwr-divider.mjs +3 -3
  65. package/fesm2022/ngwr-donut-chart-testing.mjs +18 -2
  66. package/fesm2022/ngwr-donut-chart-testing.mjs.map +1 -1
  67. package/fesm2022/ngwr-donut-chart.mjs +4 -4
  68. package/fesm2022/ngwr-donut-chart.mjs.map +1 -1
  69. package/fesm2022/ngwr-drag-drop.mjs +6 -6
  70. package/fesm2022/ngwr-drawer.mjs +18 -18
  71. package/fesm2022/ngwr-dropdown.mjs +32 -14
  72. package/fesm2022/ngwr-dropdown.mjs.map +1 -1
  73. package/fesm2022/ngwr-empty.mjs +3 -3
  74. package/fesm2022/ngwr-event-calendar.mjs +6 -6
  75. package/fesm2022/ngwr-falling-text.mjs +3 -3
  76. package/fesm2022/ngwr-file-upload.mjs +18 -5
  77. package/fesm2022/ngwr-file-upload.mjs.map +1 -1
  78. package/fesm2022/ngwr-form.mjs +66 -14
  79. package/fesm2022/ngwr-form.mjs.map +1 -1
  80. package/fesm2022/ngwr-fuzzy-text.mjs +3 -3
  81. package/fesm2022/ngwr-gauge-testing.mjs +16 -2
  82. package/fesm2022/ngwr-gauge-testing.mjs.map +1 -1
  83. package/fesm2022/ngwr-gauge.mjs +3 -3
  84. package/fesm2022/ngwr-glitch-text.mjs +3 -3
  85. package/fesm2022/ngwr-gradient-text.mjs +3 -3
  86. package/fesm2022/ngwr-hotkey.mjs +6 -6
  87. package/fesm2022/ngwr-i18n-ar.mjs +2 -0
  88. package/fesm2022/ngwr-i18n-ar.mjs.map +1 -1
  89. package/fesm2022/ngwr-i18n-cs.mjs +2 -0
  90. package/fesm2022/ngwr-i18n-cs.mjs.map +1 -1
  91. package/fesm2022/ngwr-i18n-de.mjs +2 -0
  92. package/fesm2022/ngwr-i18n-de.mjs.map +1 -1
  93. package/fesm2022/ngwr-i18n-en.mjs +14 -2
  94. package/fesm2022/ngwr-i18n-en.mjs.map +1 -1
  95. package/fesm2022/ngwr-i18n-es.mjs +2 -0
  96. package/fesm2022/ngwr-i18n-es.mjs.map +1 -1
  97. package/fesm2022/ngwr-i18n-fr.mjs +2 -0
  98. package/fesm2022/ngwr-i18n-fr.mjs.map +1 -1
  99. package/fesm2022/ngwr-i18n-he.mjs +2 -0
  100. package/fesm2022/ngwr-i18n-he.mjs.map +1 -1
  101. package/fesm2022/ngwr-i18n-hi.mjs +2 -0
  102. package/fesm2022/ngwr-i18n-hi.mjs.map +1 -1
  103. package/fesm2022/ngwr-i18n-id.mjs +2 -0
  104. package/fesm2022/ngwr-i18n-id.mjs.map +1 -1
  105. package/fesm2022/ngwr-i18n-it.mjs +2 -0
  106. package/fesm2022/ngwr-i18n-it.mjs.map +1 -1
  107. package/fesm2022/ngwr-i18n-ja.mjs +2 -0
  108. package/fesm2022/ngwr-i18n-ja.mjs.map +1 -1
  109. package/fesm2022/ngwr-i18n-ko.mjs +2 -0
  110. package/fesm2022/ngwr-i18n-ko.mjs.map +1 -1
  111. package/fesm2022/ngwr-i18n-nl.mjs +2 -0
  112. package/fesm2022/ngwr-i18n-nl.mjs.map +1 -1
  113. package/fesm2022/ngwr-i18n-pl.mjs +2 -0
  114. package/fesm2022/ngwr-i18n-pl.mjs.map +1 -1
  115. package/fesm2022/ngwr-i18n-pt.mjs +2 -0
  116. package/fesm2022/ngwr-i18n-pt.mjs.map +1 -1
  117. package/fesm2022/ngwr-i18n-ru.mjs +2 -0
  118. package/fesm2022/ngwr-i18n-ru.mjs.map +1 -1
  119. package/fesm2022/ngwr-i18n-sv.mjs +2 -0
  120. package/fesm2022/ngwr-i18n-sv.mjs.map +1 -1
  121. package/fesm2022/ngwr-i18n-tr.mjs +2 -0
  122. package/fesm2022/ngwr-i18n-tr.mjs.map +1 -1
  123. package/fesm2022/ngwr-i18n-uk.mjs +2 -0
  124. package/fesm2022/ngwr-i18n-uk.mjs.map +1 -1
  125. package/fesm2022/ngwr-i18n-vi.mjs +2 -0
  126. package/fesm2022/ngwr-i18n-vi.mjs.map +1 -1
  127. package/fesm2022/ngwr-i18n-zh-TW.mjs +2 -0
  128. package/fesm2022/ngwr-i18n-zh-TW.mjs.map +1 -1
  129. package/fesm2022/ngwr-i18n-zh.mjs +2 -0
  130. package/fesm2022/ngwr-i18n-zh.mjs.map +1 -1
  131. package/fesm2022/ngwr-i18n.mjs +9 -9
  132. package/fesm2022/ngwr-icon.mjs +6 -6
  133. package/fesm2022/ngwr-image-cropper.mjs +3 -3
  134. package/fesm2022/ngwr-input-number.mjs +15 -6
  135. package/fesm2022/ngwr-input-number.mjs.map +1 -1
  136. package/fesm2022/ngwr-input-otp.mjs +38 -6
  137. package/fesm2022/ngwr-input-otp.mjs.map +1 -1
  138. package/fesm2022/ngwr-input.mjs +15 -15
  139. package/fesm2022/ngwr-keyboard.mjs +3 -3
  140. package/fesm2022/ngwr-knob-testing.mjs +11 -3
  141. package/fesm2022/ngwr-knob-testing.mjs.map +1 -1
  142. package/fesm2022/ngwr-knob.mjs +19 -4
  143. package/fesm2022/ngwr-knob.mjs.map +1 -1
  144. package/fesm2022/ngwr-layout.mjs +15 -15
  145. package/fesm2022/ngwr-lightbox.mjs +3 -3
  146. package/fesm2022/ngwr-line-chart-testing.mjs +18 -2
  147. package/fesm2022/ngwr-line-chart-testing.mjs.map +1 -1
  148. package/fesm2022/ngwr-line-chart.mjs +22 -4
  149. package/fesm2022/ngwr-line-chart.mjs.map +1 -1
  150. package/fesm2022/ngwr-list.mjs +6 -6
  151. package/fesm2022/ngwr-loading-bar.mjs +6 -6
  152. package/fesm2022/ngwr-markdown.mjs +6 -6
  153. package/fesm2022/ngwr-marquee.mjs +3 -3
  154. package/fesm2022/ngwr-media.mjs +3 -3
  155. package/fesm2022/ngwr-mention.mjs +6 -6
  156. package/fesm2022/ngwr-meta.mjs +6 -6
  157. package/fesm2022/ngwr-meter-group.mjs +3 -3
  158. package/fesm2022/ngwr-overlay.mjs +6 -6
  159. package/fesm2022/ngwr-page-header.mjs +3 -3
  160. package/fesm2022/ngwr-pagination.mjs +33 -6
  161. package/fesm2022/ngwr-pagination.mjs.map +1 -1
  162. package/fesm2022/ngwr-pipes.mjs +21 -21
  163. package/fesm2022/ngwr-platform.mjs +9 -9
  164. package/fesm2022/ngwr-popconfirm.mjs +6 -6
  165. package/fesm2022/ngwr-popover.mjs +29 -11
  166. package/fesm2022/ngwr-popover.mjs.map +1 -1
  167. package/fesm2022/ngwr-progress.mjs +3 -3
  168. package/fesm2022/ngwr-pull-to-refresh.mjs +3 -3
  169. package/fesm2022/ngwr-qr.mjs +3 -3
  170. package/fesm2022/ngwr-radio.mjs +6 -6
  171. package/fesm2022/ngwr-rating-testing.mjs +12 -3
  172. package/fesm2022/ngwr-rating-testing.mjs.map +1 -1
  173. package/fesm2022/ngwr-rating.mjs +19 -4
  174. package/fesm2022/ngwr-rating.mjs.map +1 -1
  175. package/fesm2022/ngwr-result.mjs +13 -13
  176. package/fesm2022/ngwr-result.mjs.map +1 -1
  177. package/fesm2022/ngwr-rotating-text.mjs +3 -3
  178. package/fesm2022/ngwr-schema-form.mjs +40 -4
  179. package/fesm2022/ngwr-schema-form.mjs.map +1 -1
  180. package/fesm2022/ngwr-scroll.mjs +3 -3
  181. package/fesm2022/ngwr-segmented.mjs +3 -3
  182. package/fesm2022/ngwr-select.mjs +9 -9
  183. package/fesm2022/ngwr-shiny-text.mjs +6 -6
  184. package/fesm2022/ngwr-sidebar.mjs +3 -3
  185. package/fesm2022/ngwr-skeleton.mjs +3 -3
  186. package/fesm2022/ngwr-slider.mjs +18 -5
  187. package/fesm2022/ngwr-slider.mjs.map +1 -1
  188. package/fesm2022/ngwr-sparkline.mjs +3 -3
  189. package/fesm2022/ngwr-speed-dial.mjs +3 -3
  190. package/fesm2022/ngwr-spinner.mjs +3 -3
  191. package/fesm2022/ngwr-splash-cursor.mjs +3 -3
  192. package/fesm2022/ngwr-split-text.mjs +3 -3
  193. package/fesm2022/ngwr-splitter.mjs +3 -3
  194. package/fesm2022/ngwr-spotlight-card.mjs +6 -6
  195. package/fesm2022/ngwr-squircle.mjs +28 -9
  196. package/fesm2022/ngwr-squircle.mjs.map +1 -1
  197. package/fesm2022/ngwr-star-border.mjs +3 -3
  198. package/fesm2022/ngwr-statistic.mjs +20 -13
  199. package/fesm2022/ngwr-statistic.mjs.map +1 -1
  200. package/fesm2022/ngwr-stepper.mjs +6 -6
  201. package/fesm2022/ngwr-storage.mjs +3 -3
  202. package/fesm2022/ngwr-switch.mjs +3 -3
  203. package/fesm2022/ngwr-table.mjs +18 -18
  204. package/fesm2022/ngwr-tabs-router.mjs +3 -3
  205. package/fesm2022/ngwr-tabs.mjs +6 -6
  206. package/fesm2022/ngwr-textarea.mjs +3 -3
  207. package/fesm2022/ngwr-theme.mjs +3 -3
  208. package/fesm2022/ngwr-tilt-card.mjs +6 -6
  209. package/fesm2022/ngwr-timeline.mjs +6 -6
  210. package/fesm2022/ngwr-toast.mjs +10 -10
  211. package/fesm2022/ngwr-toast.mjs.map +1 -1
  212. package/fesm2022/ngwr-toolbar.mjs +3 -3
  213. package/fesm2022/ngwr-tour.mjs +6 -6
  214. package/fesm2022/ngwr-transfer.mjs +88 -11
  215. package/fesm2022/ngwr-transfer.mjs.map +1 -1
  216. package/fesm2022/ngwr-tree-testing.mjs +24 -0
  217. package/fesm2022/ngwr-tree-testing.mjs.map +1 -1
  218. package/fesm2022/ngwr-tree.mjs +72 -7
  219. package/fesm2022/ngwr-tree.mjs.map +1 -1
  220. package/fesm2022/ngwr-typewriter.mjs +3 -3
  221. package/fesm2022/ngwr-typography.mjs +3 -3
  222. package/fesm2022/ngwr-version.mjs +1 -1
  223. package/fesm2022/ngwr-version.mjs.map +1 -1
  224. package/fesm2022/ngwr-virtual-scroll.mjs +3 -3
  225. package/fesm2022/ngwr-waves.mjs +3 -3
  226. package/fesm2022/ngwr-window.mjs +12 -12
  227. package/form/styles/_index.scss +63 -0
  228. package/i18n/ar.json +4 -2
  229. package/i18n/cs.json +4 -2
  230. package/i18n/de.json +4 -2
  231. package/i18n/en.json +6 -4
  232. package/i18n/es.json +4 -2
  233. package/i18n/fr.json +4 -2
  234. package/i18n/he.json +4 -2
  235. package/i18n/hi.json +4 -2
  236. package/i18n/id.json +4 -2
  237. package/i18n/it.json +4 -2
  238. package/i18n/ja.json +4 -2
  239. package/i18n/ko.json +4 -2
  240. package/i18n/nl.json +4 -2
  241. package/i18n/pl.json +4 -2
  242. package/i18n/pt.json +4 -2
  243. package/i18n/ru.json +4 -2
  244. package/i18n/sv.json +4 -2
  245. package/i18n/tr.json +4 -2
  246. package/i18n/uk.json +4 -2
  247. package/i18n/vi.json +4 -2
  248. package/i18n/zh-TW.json +4 -2
  249. package/i18n/zh.json +4 -2
  250. package/input-otp/styles/_index.scss +5 -1
  251. package/line-chart/styles/_index.scss +5 -3
  252. package/llms-full.txt +1 -1
  253. package/markdown/styles/_index.scss +4 -1
  254. package/mention/styles/_index.scss +22 -1
  255. package/package.json +1 -1
  256. package/radio/styles/_index.scss +3 -0
  257. package/result/styles/_index.scss +12 -0
  258. package/schematics/migrations/v14/index.js +6 -3
  259. package/schematics/migrations.json +1 -1
  260. package/schematics/ng-add/index.js +34 -5
  261. package/segmented/styles/_index.scss +4 -1
  262. package/select/styles/_index.scss +20 -1
  263. package/statistic/styles/_index.scss +4 -0
  264. package/stepper/styles/_index.scss +36 -0
  265. package/switch/styles/_index.scss +3 -0
  266. package/table/styles/_index.scss +12 -0
  267. package/tabs/styles/_index.scss +4 -1
  268. package/textarea/styles/_index.scss +6 -1
  269. package/theme/styles/_colors.scss +11 -0
  270. package/theme/styles/_contrast.scss +136 -0
  271. package/theme/styles/_index.scss +1 -0
  272. package/theme/styles/_mixins.scss +15 -8
  273. package/timeline/styles/_index.scss +28 -1
  274. package/toast/styles/_index.scss +11 -0
  275. package/tree/styles/_index.scss +27 -1
  276. package/types/ngwr-badge.d.ts +1 -1
  277. package/types/ngwr-bar-chart-testing.d.ts +11 -1
  278. package/types/ngwr-button.d.ts +1 -1
  279. package/types/ngwr-calendar-heatmap-testing.d.ts +10 -5
  280. package/types/ngwr-calendar-heatmap.d.ts +22 -0
  281. package/types/ngwr-calendar.d.ts +21 -0
  282. package/types/ngwr-cascader-testing.d.ts +74 -17
  283. package/types/ngwr-cascader.d.ts +28 -0
  284. package/types/ngwr-checkbox-testing.d.ts +12 -1
  285. package/types/ngwr-checkbox.d.ts +10 -0
  286. package/types/ngwr-clipboard.d.ts +1 -1
  287. package/types/ngwr-confetti.d.ts +1 -1
  288. package/types/ngwr-cookie.d.ts +1 -1
  289. package/types/ngwr-date-adapters-fns.d.ts +1 -1
  290. package/types/ngwr-date-adapters-luxon.d.ts +1 -1
  291. package/types/ngwr-date.d.ts +9 -3
  292. package/types/ngwr-density.d.ts +1 -1
  293. package/types/ngwr-dialog.d.ts +1 -1
  294. package/types/ngwr-donut-chart-testing.d.ts +11 -1
  295. package/types/ngwr-drawer.d.ts +1 -1
  296. package/types/ngwr-dropdown.d.ts +16 -0
  297. package/types/ngwr-file-upload.d.ts +11 -0
  298. package/types/ngwr-form.d.ts +25 -0
  299. package/types/ngwr-gauge-testing.d.ts +9 -1
  300. package/types/ngwr-hotkey.d.ts +1 -1
  301. package/types/ngwr-i18n.d.ts +1 -1
  302. package/types/ngwr-input-number.d.ts +12 -2
  303. package/types/ngwr-input-otp.d.ts +12 -0
  304. package/types/ngwr-knob-testing.d.ts +11 -3
  305. package/types/ngwr-knob.d.ts +13 -0
  306. package/types/ngwr-line-chart-testing.d.ts +11 -1
  307. package/types/ngwr-line-chart.d.ts +18 -0
  308. package/types/ngwr-loading-bar.d.ts +1 -1
  309. package/types/ngwr-markdown.d.ts +1 -1
  310. package/types/ngwr-media.d.ts +1 -1
  311. package/types/ngwr-meta.d.ts +1 -1
  312. package/types/ngwr-overlay.d.ts +2 -2
  313. package/types/ngwr-pagination.d.ts +16 -0
  314. package/types/ngwr-platform.d.ts +3 -3
  315. package/types/ngwr-popover.d.ts +16 -0
  316. package/types/ngwr-rating-testing.d.ts +12 -3
  317. package/types/ngwr-rating.d.ts +13 -0
  318. package/types/ngwr-scroll.d.ts +1 -1
  319. package/types/ngwr-squircle.d.ts +22 -3
  320. package/types/ngwr-statistic.d.ts +0 -1
  321. package/types/ngwr-storage.d.ts +1 -1
  322. package/types/ngwr-theme.d.ts +1 -1
  323. package/types/ngwr-toast.d.ts +1 -1
  324. package/types/ngwr-tour.d.ts +1 -1
  325. package/types/ngwr-transfer.d.ts +52 -0
  326. package/types/ngwr-tree-testing.d.ts +20 -0
  327. package/types/ngwr-tree.d.ts +41 -0
  328. package/types/ngwr-version.d.ts +1 -1
  329. package/types/ngwr-window.d.ts +1 -1
  330. package/typography/styles/_index.scss +26 -4
@@ -49,6 +49,16 @@ declare class WrCheckbox implements FormCheckboxControl {
49
49
  * `value`.)
50
50
  */
51
51
  readonly checkboxValue: _angular_core.InputSignal<unknown>;
52
+ /**
53
+ * `checkboxValue` as an attribute, when it can be one.
54
+ *
55
+ * A primitive round-trips through the DOM and is what a group identity is in
56
+ * practice. Anything else — an object, an array — has no honest attribute
57
+ * form, so the attribute is ABSENT rather than `[object Object]`: a harness
58
+ * reading it then gets `null`, which is true, instead of a string that looks
59
+ * like data and identifies nothing.
60
+ */
61
+ protected readonly reflectedValue: _angular_core.Signal<string | null>;
52
62
  /**
53
63
  * Accessible name for a checkbox used WITHOUT projected text — a selection
54
64
  * cell in a table, say. The wrapping `<label>` names the control whenever
@@ -64,7 +64,7 @@ declare class WrClipboard {
64
64
  */
65
65
  private legacyWrite;
66
66
  static ɵfac: i0.ɵɵFactoryDeclaration<WrClipboard, never>;
67
- static ɵprov: i0.ɵɵInjectableDeclaration<WrClipboard>;
67
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
68
68
  }
69
69
 
70
70
  export { WrClipboard };
@@ -71,7 +71,7 @@ declare class WrConfetti {
71
71
  private spawn;
72
72
  private tick;
73
73
  static ɵfac: i0.ɵɵFactoryDeclaration<WrConfetti, never>;
74
- static ɵprov: i0.ɵɵInjectableDeclaration<WrConfetti>;
74
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
75
75
  }
76
76
 
77
77
  export { WrConfetti };
@@ -59,7 +59,7 @@ declare class WrCookie {
59
59
  /** Remove every cookie visible to this document. Uses `path: '/'`. */
60
60
  clear(): void;
61
61
  static ɵfac: i0.ɵɵFactoryDeclaration<WrCookie, never>;
62
- static ɵprov: i0.ɵɵInjectableDeclaration<WrCookie>;
62
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
63
63
  }
64
64
 
65
65
  export { WrCookie };
@@ -67,7 +67,7 @@ declare class WrDateFnsAdapter extends WrDateAdapter<Date> {
67
67
  getDayOfWeekNames(style: 'narrow' | 'short' | 'long'): readonly string[];
68
68
  getMonthNames(style: 'narrow' | 'short' | 'long'): readonly string[];
69
69
  static ɵfac: i0.ɵɵFactoryDeclaration<WrDateFnsAdapter, never>;
70
- static ɵprov: i0.ɵɵInjectableDeclaration<WrDateFnsAdapter>;
70
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
71
71
  }
72
72
 
73
73
  /**
@@ -70,7 +70,7 @@ declare class WrLuxonAdapter extends WrDateAdapter<DateTime> {
70
70
  getDayOfWeekNames(style: 'narrow' | 'short' | 'long'): readonly string[];
71
71
  getMonthNames(style: 'narrow' | 'short' | 'long'): readonly string[];
72
72
  static ɵfac: i0.ɵɵFactoryDeclaration<WrLuxonAdapter, never>;
73
- static ɵprov: i0.ɵɵInjectableDeclaration<WrLuxonAdapter>;
73
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
74
74
  }
75
75
 
76
76
  /**
@@ -29,8 +29,14 @@ interface WrDateAdapterOptions {
29
29
  */
30
30
  readonly adapter?: Type<WrDateAdapter<unknown>>;
31
31
  /**
32
- * BCP 47 locale tag (`'en-US'`, `'ru-RU'`, …). Default: `navigator.language`
33
- * in the browser, `'en-US'` on the server.
32
+ * BCP 47 locale tag (`'en-US'`, `'ru-RU'`, …).
33
+ *
34
+ * Default: Angular's own `LOCALE_ID`, which is what {@link WR_DATE_LOCALE}
35
+ * resolves to. This line used to say `navigator.language` in the browser and
36
+ * `'en-US'` on the server, which was true before v14 and has been wrong since
37
+ * — v14 made `LOCALE_ID` the single locale source precisely so an app that
38
+ * sets it correctly stops formatting dates in whatever language the visitor's
39
+ * browser happens to be.
34
40
  */
35
41
  readonly locale?: string;
36
42
  }
@@ -272,7 +278,7 @@ declare class WrNativeDateAdapter extends WrDateAdapter<Date> {
272
278
  */
273
279
  private compose;
274
280
  static ɵfac: i0.ɵɵFactoryDeclaration<WrNativeDateAdapter, never>;
275
- static ɵprov: i0.ɵɵInjectableDeclaration<WrNativeDateAdapter>;
281
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
276
282
  }
277
283
 
278
284
  /**
@@ -57,7 +57,7 @@ declare class WrDensity {
57
57
  private readPersisted;
58
58
  private persist;
59
59
  static ɵfac: i0.ɵɵFactoryDeclaration<WrDensity, never>;
60
- static ɵprov: i0.ɵɵInjectableDeclaration<WrDensity>;
60
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
61
61
  }
62
62
 
63
63
  /**
@@ -181,7 +181,7 @@ declare class WrDialog {
181
181
  */
182
182
  private closeLabel;
183
183
  static ɵfac: i0.ɵɵFactoryDeclaration<WrDialog, never>;
184
- static ɵprov: i0.ɵɵInjectableDeclaration<WrDialog>;
184
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
185
185
  }
186
186
 
187
187
  /**
@@ -75,7 +75,17 @@ declare class WrDonutChartHarness extends ComponentHarness {
75
75
  getCenterValue(): Promise<string | null>;
76
76
  /** The caption under the centre value, or `null`. */
77
77
  getCenterLabel(): Promise<string | null>;
78
- /** The ring's diameter in pixels, as the component writes it inline. */
78
+ /**
79
+ * The chart's outer size in pixels, read off the `style` ATTRIBUTE.
80
+ *
81
+ * NOT `getCssValue()`, which is `getComputedStyle()` — the same rule this
82
+ * file's class note already states and this method alone broke. A computed
83
+ * read answers from the LAID-OUT box, so it agrees with the inline value in
84
+ * jsdom (which lays nothing out and echoes the declaration) and disagrees in a
85
+ * browser, where sub-pixel rounding turns a declared 240 into 239.5. A harness
86
+ * that answers differently in the two places it runs is worse than one that
87
+ * refuses.
88
+ */
79
89
  getSize(): Promise<number>;
80
90
  }
81
91
 
@@ -333,7 +333,7 @@ declare class WrDrawerManager {
333
333
  */
334
334
  private closeLabel;
335
335
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrDrawerManager, never>;
336
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<WrDrawerManager>;
336
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
337
337
  }
338
338
 
339
339
  /**
@@ -128,6 +128,22 @@ declare class WrDropdown {
128
128
  /** @internal */
129
129
  protected onMouseLeave(event: MouseEvent): void;
130
130
  private openOverlay;
131
+ /**
132
+ * Tear the overlay down, and tell the host — unless the host is going away
133
+ * with it.
134
+ *
135
+ * `notify: false` is the DESTROY path, and it is not a nicety. An `output()`
136
+ * belongs to the view that declares it, so emitting from `onDestroy` is
137
+ * refused: Angular logs `NG0953: Unexpected emit for destroyed OutputRef` and
138
+ * the listener never runs. Measured — a `(closed)` handler on a dropdown whose
139
+ * host view is removed while the menu is open fired zero times and left a
140
+ * console error behind. There is nobody to notify at that point, because the
141
+ * consumer's own view is being torn down in the same pass; `wr-popconfirm`
142
+ * already disposes without emitting, and this brings the other two into line.
143
+ *
144
+ * The focus hand-back is skipped for the same reason — the host element is on
145
+ * its way out of the document.
146
+ */
131
147
  private closeOverlay;
132
148
  /** @internal Trigger keydown — ArrowDown/Up/Enter/Space open the menu. */
133
149
  protected onKeydown(event: KeyboardEvent): void;
@@ -72,6 +72,17 @@ declare class WrFileUpload implements FormValueControl<File | readonly File[] |
72
72
  readonly readonly: _angular_core.InputSignalWithTransform<boolean, any>;
73
73
  /** The surrounding `<wr-form-field>`'s error state. @internal */
74
74
  protected readonly fieldAria: ngwr_form.WrFormFieldAria;
75
+ /**
76
+ * The field's label names the drop zone, when there is one.
77
+ *
78
+ * The zone is a `div[role="button"]`, so `<wr-form-field>`'s `<label for>`
79
+ * cannot reach it and named nothing at all — the zone announced only its own
80
+ * generic "drop files here" copy. `aria-labelledby` is the direction that
81
+ * works for a role. The zone copy stays as the label when no field wraps it.
82
+ */
83
+ protected readonly labelledBy: _angular_core.Signal<string | null>;
84
+ /** `null` while the field's label carries the name, or both are announced. */
85
+ protected readonly zoneName: _angular_core.Signal<string | null>;
75
86
  /** Primary call-to-action label. Falls back to `fileUpload.browse`. */
76
87
  readonly pickLabel: _angular_core.InputSignal<string | null>;
77
88
  /** Secondary instruction below the CTA. Falls back to `fileUpload.dropZone`. */
@@ -67,6 +67,18 @@ interface WrFormFieldContext {
67
67
  readonly errorKeys: Signal<readonly string[]>;
68
68
  /** Id of the element listing the visible messages, or `null` when there are none. */
69
69
  readonly describedBy: Signal<string | null>;
70
+ /**
71
+ * Id of the field's own `<label>`, or `null` when it renders none.
72
+ *
73
+ * For the controls `<label for>` cannot reach. `for` only binds to a LABELABLE
74
+ * element — button, input, meter, output, progress, select, textarea — so a
75
+ * control whose focusable part is a `div[role="slider"]`, a `role="button"`
76
+ * drop zone or a radiogroup got a label pointing at nothing: measured, five of
77
+ * the eighteen value controls resolved `for` to no element in the document at
78
+ * all. Those point `aria-labelledby` back at this instead, which is the
79
+ * direction that works for a role.
80
+ */
81
+ readonly labelId?: Signal<string | null>;
70
82
  /**
71
83
  * Id of the field's hint, or `null` when it is showing none — including while
72
84
  * an error has replaced it, since the two never render together and an
@@ -216,6 +228,8 @@ declare class WrFormField implements WrFormFieldContext {
216
228
  * that had just left the document.
217
229
  */
218
230
  readonly hintId: _angular_core.Signal<string | null>;
231
+ /** @internal `WrFormFieldContext` — the id a role-based control points `aria-labelledby` at. */
232
+ readonly labelId: _angular_core.Signal<string | null>;
219
233
  /**
220
234
  * Render a catalog message for any error the markup does not already answer.
221
235
  *
@@ -259,6 +273,17 @@ interface WrFormFieldAria {
259
273
  readonly describedBy: Signal<string | null>;
260
274
  /** `'true'` while the field has a validation error, `null` otherwise. */
261
275
  readonly ariaInvalid: Signal<'true' | null>;
276
+ /**
277
+ * Id of the field's `<label>`, for a control `<label for>` cannot reach.
278
+ *
279
+ * `for` binds only to a LABELABLE element, so a control whose focusable part
280
+ * is a `div` with a role gets nothing from it — measured, `wr-rating`,
281
+ * `wr-knob` and `wr-file-upload` all rendered a field label whose `for` named
282
+ * no element in the document. Point `aria-labelledby` at this instead; a
283
+ * control that IS labelable should ignore it and let `for` do the work, or the
284
+ * name is announced twice.
285
+ */
286
+ readonly labelledBy: Signal<string | null>;
262
287
  }
263
288
  /**
264
289
  * The two attributes that make a `<wr-form-field>`'s visible text — its error
@@ -63,7 +63,15 @@ declare class WrGaugeHarness extends ComponentHarness {
63
63
  getDisplayValue(): Promise<string | null>;
64
64
  /** The suffix alone, or `null` when there is none — or nothing is printed. */
65
65
  getSuffix(): Promise<string | null>;
66
- /** The dial's width in pixels, as the component writes it inline. */
66
+ /**
67
+ * The dial's width in pixels, read off the `style` ATTRIBUTE.
68
+ *
69
+ * NOT `getCssValue()`, which is `getComputedStyle()`: a computed read answers
70
+ * from the LAID-OUT box, so it agrees with the inline value in jsdom — which
71
+ * lays nothing out and echoes the declaration — and disagrees in a browser,
72
+ * where sub-pixel rounding turns a declared 240 into 239.5. A harness that
73
+ * answers differently in the two places it runs is worse than one that refuses.
74
+ */
67
75
  getSize(): Promise<number>;
68
76
  }
69
77
 
@@ -80,7 +80,7 @@ declare class WrHotkey {
80
80
  private detach;
81
81
  private dispatch;
82
82
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrHotkey, never>;
83
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<WrHotkey>;
83
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
84
84
  }
85
85
 
86
86
  /**
@@ -202,7 +202,7 @@ declare class WrI18n {
202
202
  private warnOnLocaleIdDrift;
203
203
  private loadCatalog;
204
204
  static ɵfac: i0.ɵɵFactoryDeclaration<WrI18n, never>;
205
- static ɵprov: i0.ɵɵInjectableDeclaration<WrI18n>;
205
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
206
206
  }
207
207
 
208
208
  /**
@@ -36,8 +36,18 @@ declare class WrInputNumber implements FormValueControl<number | null> {
36
36
  private readonly maxValue;
37
37
  /** Step used by stepper buttons + arrow keys. @default 1 */
38
38
  readonly step: _angular_core.InputSignalWithTransform<number, unknown>;
39
- /** Fixed number of decimals shown on blur. `null` keeps the entered precision. @default null */
40
- readonly decimals: _angular_core.InputSignal<number | null>;
39
+ /**
40
+ * Fixed number of decimals shown on blur. `null` keeps the entered precision.
41
+ *
42
+ * Clamped to what `toFixed` accepts — 0 to 100 — because it is the one numeric
43
+ * input on this component that had no transform, and the value goes straight
44
+ * into `toFixed`, which THROWS a `RangeError` outside that range rather than
45
+ * degrading. A `[decimals]="-1"` bound from a config object took the whole
46
+ * component down on blur.
47
+ *
48
+ * @default null
49
+ */
50
+ readonly decimals: _angular_core.InputSignalWithTransform<number | null, unknown>;
41
51
  /** Render the ▲▼ stepper column. @default true */
42
52
  readonly showSteppers: _angular_core.InputSignalWithTransform<boolean, any>;
43
53
  /**
@@ -43,6 +43,7 @@ type WrInputOtpSize = 'sm' | 'md' | 'lg';
43
43
  */
44
44
  declare class WrInputOtp implements FormValueControl<string> {
45
45
  private readonly dir;
46
+ private readonly injector;
46
47
  /** Accessible name of the whole strip. Falls back to `inputOtp.label`. */
47
48
  readonly ariaLabel: _angular_core.InputSignal<string | null>;
48
49
  protected readonly resolvedAriaLabel: _angular_core.Signal<string>;
@@ -94,6 +95,17 @@ declare class WrInputOtp implements FormValueControl<string> {
94
95
  * @internal
95
96
  */
96
97
  protected readonly fieldAria: ngwr_form.WrFormFieldAria;
98
+ /**
99
+ * The field's label names the strip, when there is one.
100
+ *
101
+ * The host is a `role="group"`, which `<wr-form-field>`'s `<label for>` cannot
102
+ * reach — `for` binds only to a labelable element — so a field wrapping this
103
+ * rendered a label that named nothing and the strip announced its own generic
104
+ * default instead. An explicit `ariaLabel` still wins over both.
105
+ */
106
+ protected readonly labelledBy: _angular_core.Signal<string | null>;
107
+ /** `null` while the field's label carries the name, or the two are announced together. */
108
+ protected readonly groupName: _angular_core.Signal<string | null>;
97
109
  /** Character shown in empty cells. @default '•' */
98
110
  readonly placeholder: _angular_core.InputSignal<string>;
99
111
  /** The entered code. Bound by `[formField]`, or two-way via `[(value)]`. */
@@ -91,9 +91,17 @@ declare class WrKnobHarness extends ComponentHarness {
91
91
  /**
92
92
  * Whether the dial is a tab stop.
93
93
  *
94
- * The component drops it out of the tab order for BOTH disabled and read-only,
95
- * which is worth knowing: a read-only slider that a keyboard user cannot reach is
96
- * also one they cannot read, and this is the method that says so.
94
+ * `disabled` only, never `readonly` — and the distinction is deliberate, not
95
+ * incidental. A disabled control leaves the tab order; a READ-ONLY one stays
96
+ * in it, keeps announcing its value, and still submits, which is the whole
97
+ * difference between "you may not" and "there is nothing here". The component
98
+ * records that driving this off an `interactive()` that folded the two
99
+ * together made `readonly` unreachable, with an `aria-describedby` pointing
100
+ * at an element nobody could focus.
101
+ *
102
+ * This docblock used to describe exactly that fixed bug — "false while
103
+ * readonly or disabled" — so a reader trusting it would have asserted the
104
+ * behaviour the component was changed to stop having.
97
105
  */
98
106
  isFocusable(): Promise<boolean>;
99
107
  /** Move keyboard focus to the dial. */
@@ -68,6 +68,19 @@ declare class WrKnob implements FormValueControl<number> {
68
68
  protected readonly focusable: _angular_core.Signal<boolean>;
69
69
  /** The surrounding `<wr-form-field>`'s error state. @internal */
70
70
  protected readonly fieldAria: ngwr_form.WrFormFieldAria;
71
+ /**
72
+ * The field's label wins over the built-in default, and an explicit
73
+ * `ariaLabel` wins over both.
74
+ *
75
+ * `<wr-form-field label="…">` renders a `<label for>` that cannot reach this
76
+ * control — `for` binds only to a LABELABLE element and the focusable part
77
+ * here carries a role instead — so the field's label named nothing and this
78
+ * announced its own generic default. A consumer who wrote
79
+ * `<wr-form-field label="Overall satisfaction">` heard "Value".
80
+ */
81
+ protected readonly labelledBy: _angular_core.Signal<string | null>;
82
+ /** `null` once `aria-labelledby` is carrying the name, or the two are announced together. */
83
+ protected readonly nameLabel: _angular_core.Signal<string | null>;
71
84
  protected readonly classes: _angular_core.Signal<string>;
72
85
  protected readonly cx = 50;
73
86
  protected readonly cy = 50;
@@ -85,7 +85,17 @@ declare class WrLineChartHarness extends ComponentHarness {
85
85
  getTooltipLabel(): Promise<string | null>;
86
86
  /** The tooltip's rows, one per series, or `[]` while it is closed. */
87
87
  getTooltipRows(): Promise<WrLineChartTooltipRow[]>;
88
- /** The plot's height in pixels, as the component writes it inline. */
88
+ /**
89
+ * The plot's height in pixels, read off the `style` ATTRIBUTE.
90
+ *
91
+ * NOT `getCssValue()`, which is `getComputedStyle()` — the same rule this
92
+ * file's class note already states and this method alone broke. A computed
93
+ * read answers from the LAID-OUT box, so it agrees with the inline value in
94
+ * jsdom (which lays nothing out and echoes the declaration) and disagrees in a
95
+ * browser, where sub-pixel rounding turns a declared 240 into 239.5. A harness
96
+ * that answers differently in the two places it runs is worse than one that
97
+ * refuses.
98
+ */
89
99
  getPlotHeight(): Promise<number>;
90
100
  }
91
101
 
@@ -55,8 +55,26 @@ declare class WrLineChart {
55
55
  private readonly host;
56
56
  /** Hovered point index (across all series) — null when no hover. */
57
57
  protected readonly hoveredIndex: _angular_core.WritableSignal<number | null>;
58
+ /**
59
+ * A dash pattern per series, so the lines are told apart by SHAPE and not
60
+ * only by hue.
61
+ *
62
+ * The default palette's colours sit within about 1.06:1 of each other in
63
+ * relative luminance — that is the whole nine-intent scale's constraint, and
64
+ * it means a reader with red-green colour blindness sees several of these
65
+ * strokes as one grey. A legend that pairs a coloured square with a name does
66
+ * not rescue it: matching the square to the line is exactly the step that
67
+ * needs hue. Distinguishing series by dash is the standard remedy and the
68
+ * only one that survives greyscale, printing and a monochrome display.
69
+ *
70
+ * The FIRST entry is solid on purpose. A single-series chart is the common
71
+ * case and there is nothing to tell apart in it, so it is left exactly as it
72
+ * was; the patterns only appear once a second series does.
73
+ */
74
+ private static readonly DASHES;
58
75
  protected readonly resolvedSeries: _angular_core.Signal<{
59
76
  label: string;
77
+ dash: "" | "7 4" | "2 3" | "10 4 2 4" | "1 4" | "6 3 2 3";
60
78
  data: (number | null)[];
61
79
  color: string;
62
80
  }[]>;
@@ -49,7 +49,7 @@ declare class WrLoadingBar {
49
49
  private clearHold;
50
50
  private finish;
51
51
  static ɵfac: i0.ɵɵFactoryDeclaration<WrLoadingBar, never>;
52
- static ɵprov: i0.ɵɵInjectableDeclaration<WrLoadingBar>;
52
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
53
53
  }
54
54
 
55
55
  /**
@@ -399,7 +399,7 @@ declare class WrMarkdownHighlight {
399
399
  */
400
400
  private evictLanguage;
401
401
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrMarkdownHighlight, never>;
402
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<WrMarkdownHighlight>;
402
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
403
403
  }
404
404
 
405
405
  /**
@@ -46,7 +46,7 @@ declare class WrMedia {
46
46
  private resolveQuery;
47
47
  private createSignal;
48
48
  static ɵfac: i0.ɵɵFactoryDeclaration<WrMedia, never>;
49
- static ɵprov: i0.ɵɵInjectableDeclaration<WrMedia>;
49
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
50
50
  }
51
51
 
52
52
  /**
@@ -123,7 +123,7 @@ declare class WrMeta {
123
123
  private updateProp;
124
124
  private diffLink;
125
125
  static ɵfac: i0.ɵɵFactoryDeclaration<WrMeta, never>;
126
- static ɵprov: i0.ɵɵInjectableDeclaration<WrMeta>;
126
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
127
127
  }
128
128
 
129
129
  /**
@@ -126,7 +126,7 @@ declare class WrOutsideClick {
126
126
  private listen;
127
127
  private unlisten;
128
128
  static ɵfac: i0.ɵɵFactoryDeclaration<WrOutsideClick, never>;
129
- static ɵprov: i0.ɵɵInjectableDeclaration<WrOutsideClick>;
129
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
130
130
  }
131
131
 
132
132
  /**
@@ -155,7 +155,7 @@ declare class WrOutsideClick {
155
155
  declare class WrOverlayContainer extends OverlayContainer {
156
156
  protected _createContainer(): void;
157
157
  static ɵfac: i0.ɵɵFactoryDeclaration<WrOverlayContainer, never>;
158
- static ɵprov: i0.ɵɵInjectableDeclaration<WrOverlayContainer>;
158
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
159
159
  }
160
160
 
161
161
  /**
@@ -115,6 +115,22 @@ declare class WrPagination {
115
115
  /** The nav landmark's own accessible name — was a hardcoded English literal. */
116
116
  protected readonly navLabel: _angular_core.Signal<string>;
117
117
  /** Internal: total page count. */
118
+ /**
119
+ * A page size that is not a positive number yields ONE page, not `Infinity`.
120
+ *
121
+ * `pageSize` is a `model()`, so Angular offers no `transform` to coerce it and
122
+ * whatever the host writes arrives raw. At 0 the division is `Infinity`,
123
+ * `Math.max(1, …)` keeps it, and the item list below pushes `total` as the
124
+ * last page — so the strip rendered a clickable cell reading "Infinity", and
125
+ * clicking it locked the tab. `NaN` (a `pageSize` bound to an emptied number
126
+ * field) came through untouched for the same reason.
127
+ *
128
+ * One page is the honest answer: a size of zero describes no paging at all.
129
+ * Note this is about `pageSize` and does NOT touch the recorded contract
130
+ * about `total` — pagination still refuses to pull the page DOWN while
131
+ * `total` is at or below zero, because 0 is ambiguous with "still loading".
132
+ */
133
+ private readonly usablePageSize;
118
134
  protected readonly totalPages: _angular_core.Signal<number>;
119
135
  /**
120
136
  * Internal: where the previous arrow goes. Clamped to the end of the valid
@@ -32,7 +32,7 @@ declare class WrPlatform {
32
32
  readonly prefersReducedMotion: Signal<boolean>;
33
33
  private mediaSignal;
34
34
  static ɵfac: i0.ɵɵFactoryDeclaration<WrPlatform, never>;
35
- static ɵprov: i0.ɵɵInjectableDeclaration<WrPlatform>;
35
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
36
36
  }
37
37
 
38
38
  /**
@@ -63,7 +63,7 @@ declare class WrVisualViewport {
63
63
  readonly offsetTop: Signal<number>;
64
64
  constructor();
65
65
  static ɵfac: i0.ɵɵFactoryDeclaration<WrVisualViewport, never>;
66
- static ɵprov: i0.ɵɵInjectableDeclaration<WrVisualViewport>;
66
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
67
67
  }
68
68
 
69
69
  /** Impact weight for {@link WrHaptics.impact}. */
@@ -122,7 +122,7 @@ declare class WrHaptics {
122
122
  /** Cancel any in-progress vibration. */
123
123
  stop(): void;
124
124
  static ɵfac: i0.ɵɵFactoryDeclaration<WrHaptics, never>;
125
- static ɵprov: i0.ɵɵInjectableDeclaration<WrHaptics>;
125
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
126
126
  }
127
127
 
128
128
  export { WrHaptics, WrPlatform, WrVisualViewport };
@@ -97,6 +97,22 @@ declare class WrPopover {
97
97
  private scheduleHide;
98
98
  private clearTimers;
99
99
  private openOverlay;
100
+ /**
101
+ * Tear the overlay down, and tell the host — unless the host is going away
102
+ * with it.
103
+ *
104
+ * `notify: false` is the DESTROY path, and it is not a nicety. An `output()`
105
+ * belongs to the view that declares it, so emitting from `onDestroy` is
106
+ * refused: Angular logs `NG0953: Unexpected emit for destroyed OutputRef` and
107
+ * the listener never runs. Measured — a `(closed)` handler on a dropdown whose
108
+ * host view is removed while the menu is open fired zero times and left a
109
+ * console error behind. There is nobody to notify at that point, because the
110
+ * consumer's own view is being torn down in the same pass; `wr-popconfirm`
111
+ * already disposes without emitting, and this brings the other two into line.
112
+ *
113
+ * The focus hand-back is skipped for the same reason — the host element is on
114
+ * its way out of the document.
115
+ */
100
116
  private closeOverlay;
101
117
  private readonly onOverlayLeave;
102
118
  private readonly onOverlayEnter;
@@ -225,10 +225,19 @@ declare class WrRatingHarness extends ComponentHarness {
225
225
  /** Whether the rating refuses interaction — `aria-disabled`, for the same reason. */
226
226
  isDisabled(): Promise<boolean>;
227
227
  /**
228
- * Whether the rating is in the tab order.
228
+ * Whether the rating is a tab stop.
229
229
  *
230
- * A rating that takes no input takes itself out of it (`tabindex="-1"`), so this
231
- * is `false` while readonly or disabled.
230
+ * `disabled` only, never `readonly` — and the distinction is deliberate, not
231
+ * incidental. A disabled control leaves the tab order; a READ-ONLY one stays
232
+ * in it, keeps announcing its value, and still submits, which is the whole
233
+ * difference between "you may not" and "there is nothing here". The component
234
+ * records that driving this off an `interactive()` that folded the two
235
+ * together made `readonly` unreachable, with an `aria-describedby` pointing
236
+ * at an element nobody could focus.
237
+ *
238
+ * This docblock used to describe exactly that fixed bug — "false while
239
+ * readonly or disabled" — so a reader trusting it would have asserted the
240
+ * behaviour the component was changed to stop having.
232
241
  */
233
242
  isFocusable(): Promise<boolean>;
234
243
  /**
@@ -105,6 +105,19 @@ declare class WrRating implements FormValueControl<number | null> {
105
105
  private readonly directionality;
106
106
  /** The surrounding `<wr-form-field>`'s error state. @internal */
107
107
  protected readonly fieldAria: ngwr_form.WrFormFieldAria;
108
+ /**
109
+ * The field's label wins over the built-in default, and an explicit
110
+ * `ariaLabel` wins over both.
111
+ *
112
+ * `<wr-form-field label="…">` renders a `<label for>` that cannot reach this
113
+ * control — `for` binds only to a LABELABLE element and the focusable part
114
+ * here carries a role instead — so the field's label named nothing and this
115
+ * announced its own generic default. A consumer who wrote
116
+ * `<wr-form-field label="Overall satisfaction">` heard "Rating".
117
+ */
118
+ protected readonly labelledBy: _angular_core.Signal<string | null>;
119
+ /** `null` once `aria-labelledby` is carrying the name, or the two are announced together. */
120
+ protected readonly nameLabel: _angular_core.Signal<string | null>;
108
121
  protected readonly classes: _angular_core.Signal<string>;
109
122
  /** Fill ratio for slot `i` in `[0, 1]` — drives the CSS clip width. */
110
123
  protected fillFor(i: number): number;
@@ -58,7 +58,7 @@ declare class WrScroll {
58
58
  private behavior;
59
59
  private scroll;
60
60
  static ɵfac: i0.ɵɵFactoryDeclaration<WrScroll, never>;
61
- static ɵprov: i0.ɵɵInjectableDeclaration<WrScroll>;
61
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
62
62
  }
63
63
 
64
64
  export { WrScroll };