ngwr 14.7.0 → 14.9.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 (482) hide show
  1. package/README.md +66 -332
  2. package/alert/styles/_index.scss +10 -0
  3. package/avatar/styles/_index.scss +18 -7
  4. package/badge/styles/_index.scss +7 -0
  5. package/badge/styles/_tag.scss +7 -1
  6. package/bar-chart/styles/_index.scss +1 -0
  7. package/button/styles/_index.scss +6 -0
  8. package/calendar-heatmap/styles/_index.scss +1 -0
  9. package/cascader/styles/_rules.scss +87 -15
  10. package/checkbox/styles/_index.scss +4 -0
  11. package/command-palette/styles/_index.scss +1 -1
  12. package/date-picker/styles/_index.scss +30 -0
  13. package/density/styles/_index.scss +4 -2
  14. package/divider/styles/_index.scss +2 -0
  15. package/donut-chart/styles/_index.scss +10 -0
  16. package/dropdown/styles/_index.scss +67 -5
  17. package/editor/styles/_index.scss +441 -0
  18. package/event-calendar/styles/_index.scss +209 -35
  19. package/fesm2022/ngwr-action-sheet-testing.mjs.map +1 -1
  20. package/fesm2022/ngwr-action-sheet.mjs +3 -3
  21. package/fesm2022/ngwr-action-sheet.mjs.map +1 -1
  22. package/fesm2022/ngwr-affix.mjs +3 -3
  23. package/fesm2022/ngwr-affix.mjs.map +1 -1
  24. package/fesm2022/ngwr-alert.mjs +3 -3
  25. package/fesm2022/ngwr-alert.mjs.map +1 -1
  26. package/fesm2022/ngwr-anchor.mjs +3 -3
  27. package/fesm2022/ngwr-anchor.mjs.map +1 -1
  28. package/fesm2022/ngwr-aurora.mjs +3 -3
  29. package/fesm2022/ngwr-aurora.mjs.map +1 -1
  30. package/fesm2022/ngwr-avatar.mjs +3 -3
  31. package/fesm2022/ngwr-avatar.mjs.map +1 -1
  32. package/fesm2022/ngwr-back-top.mjs +3 -3
  33. package/fesm2022/ngwr-back-top.mjs.map +1 -1
  34. package/fesm2022/ngwr-badge.mjs +28 -13
  35. package/fesm2022/ngwr-badge.mjs.map +1 -1
  36. package/fesm2022/ngwr-bar-chart-testing.mjs.map +1 -1
  37. package/fesm2022/ngwr-bar-chart.mjs +31 -6
  38. package/fesm2022/ngwr-bar-chart.mjs.map +1 -1
  39. package/fesm2022/ngwr-blur-text-testing.mjs.map +1 -1
  40. package/fesm2022/ngwr-blur-text.mjs +3 -3
  41. package/fesm2022/ngwr-blur-text.mjs.map +1 -1
  42. package/fesm2022/ngwr-border-glow-testing.mjs.map +1 -1
  43. package/fesm2022/ngwr-border-glow.mjs +3 -3
  44. package/fesm2022/ngwr-border-glow.mjs.map +1 -1
  45. package/fesm2022/ngwr-breadcrumbs.mjs +6 -6
  46. package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -1
  47. package/fesm2022/ngwr-burger.mjs +3 -3
  48. package/fesm2022/ngwr-burger.mjs.map +1 -1
  49. package/fesm2022/ngwr-button-testing.mjs.map +1 -1
  50. package/fesm2022/ngwr-button.mjs +6 -6
  51. package/fesm2022/ngwr-button.mjs.map +1 -1
  52. package/fesm2022/ngwr-calendar-heatmap-testing.mjs.map +1 -1
  53. package/fesm2022/ngwr-calendar-heatmap.mjs +61 -6
  54. package/fesm2022/ngwr-calendar-heatmap.mjs.map +1 -1
  55. package/fesm2022/ngwr-calendar-testing.mjs.map +1 -1
  56. package/fesm2022/ngwr-calendar.mjs +3 -3
  57. package/fesm2022/ngwr-calendar.mjs.map +1 -1
  58. package/fesm2022/ngwr-card.mjs +9 -9
  59. package/fesm2022/ngwr-card.mjs.map +1 -1
  60. package/fesm2022/ngwr-carousel-testing.mjs.map +1 -1
  61. package/fesm2022/ngwr-carousel.mjs +6 -6
  62. package/fesm2022/ngwr-carousel.mjs.map +1 -1
  63. package/fesm2022/ngwr-cascader-testing.mjs.map +1 -1
  64. package/fesm2022/ngwr-cascader.mjs +4 -4
  65. package/fesm2022/ngwr-cascader.mjs.map +1 -1
  66. package/fesm2022/ngwr-checkbox-testing.mjs.map +1 -1
  67. package/fesm2022/ngwr-checkbox.mjs +18 -8
  68. package/fesm2022/ngwr-checkbox.mjs.map +1 -1
  69. package/fesm2022/ngwr-circular-text-testing.mjs.map +1 -1
  70. package/fesm2022/ngwr-circular-text.mjs +3 -3
  71. package/fesm2022/ngwr-circular-text.mjs.map +1 -1
  72. package/fesm2022/ngwr-click-spark.mjs +3 -3
  73. package/fesm2022/ngwr-click-spark.mjs.map +1 -1
  74. package/fesm2022/ngwr-clipboard.mjs +3 -3
  75. package/fesm2022/ngwr-clipboard.mjs.map +1 -1
  76. package/fesm2022/ngwr-collapse-testing.mjs.map +1 -1
  77. package/fesm2022/ngwr-collapse.mjs +9 -9
  78. package/fesm2022/ngwr-collapse.mjs.map +1 -1
  79. package/fesm2022/ngwr-color-picker-testing.mjs.map +1 -1
  80. package/fesm2022/ngwr-color-picker.mjs +6 -6
  81. package/fesm2022/ngwr-color-picker.mjs.map +1 -1
  82. package/fesm2022/ngwr-command-palette-testing.mjs.map +1 -1
  83. package/fesm2022/ngwr-command-palette.mjs +3 -3
  84. package/fesm2022/ngwr-command-palette.mjs.map +1 -1
  85. package/fesm2022/ngwr-compare.mjs +3 -3
  86. package/fesm2022/ngwr-compare.mjs.map +1 -1
  87. package/fesm2022/ngwr-confetti.mjs +3 -3
  88. package/fesm2022/ngwr-confetti.mjs.map +1 -1
  89. package/fesm2022/ngwr-config.mjs.map +1 -1
  90. package/fesm2022/ngwr-context-menu-testing.mjs.map +1 -1
  91. package/fesm2022/ngwr-context-menu.mjs +12 -12
  92. package/fesm2022/ngwr-context-menu.mjs.map +1 -1
  93. package/fesm2022/ngwr-cookie.mjs +3 -3
  94. package/fesm2022/ngwr-cookie.mjs.map +1 -1
  95. package/fesm2022/ngwr-counter.mjs +6 -6
  96. package/fesm2022/ngwr-counter.mjs.map +1 -1
  97. package/fesm2022/ngwr-date-adapters-fns.mjs +3 -3
  98. package/fesm2022/ngwr-date-adapters-fns.mjs.map +1 -1
  99. package/fesm2022/ngwr-date-adapters-luxon.mjs +3 -3
  100. package/fesm2022/ngwr-date-adapters-luxon.mjs.map +1 -1
  101. package/fesm2022/ngwr-date-picker-testing.mjs.map +1 -1
  102. package/fesm2022/ngwr-date-picker.mjs +721 -62
  103. package/fesm2022/ngwr-date-picker.mjs.map +1 -1
  104. package/fesm2022/ngwr-date.mjs +3 -3
  105. package/fesm2022/ngwr-date.mjs.map +1 -1
  106. package/fesm2022/ngwr-decrypt-text-testing.mjs.map +1 -1
  107. package/fesm2022/ngwr-decrypt-text.mjs +3 -3
  108. package/fesm2022/ngwr-decrypt-text.mjs.map +1 -1
  109. package/fesm2022/ngwr-density.mjs +6 -6
  110. package/fesm2022/ngwr-density.mjs.map +1 -1
  111. package/fesm2022/ngwr-descriptions.mjs +6 -6
  112. package/fesm2022/ngwr-descriptions.mjs.map +1 -1
  113. package/fesm2022/ngwr-dialog-testing.mjs.map +1 -1
  114. package/fesm2022/ngwr-dialog.mjs +15 -15
  115. package/fesm2022/ngwr-dialog.mjs.map +1 -1
  116. package/fesm2022/ngwr-directives.mjs +12 -12
  117. package/fesm2022/ngwr-directives.mjs.map +1 -1
  118. package/fesm2022/ngwr-divider.mjs +3 -3
  119. package/fesm2022/ngwr-divider.mjs.map +1 -1
  120. package/fesm2022/ngwr-donut-chart-testing.mjs.map +1 -1
  121. package/fesm2022/ngwr-donut-chart.mjs +48 -6
  122. package/fesm2022/ngwr-donut-chart.mjs.map +1 -1
  123. package/fesm2022/ngwr-drag-drop.mjs +6 -6
  124. package/fesm2022/ngwr-drag-drop.mjs.map +1 -1
  125. package/fesm2022/ngwr-drawer-testing.mjs.map +1 -1
  126. package/fesm2022/ngwr-drawer.mjs +18 -18
  127. package/fesm2022/ngwr-drawer.mjs.map +1 -1
  128. package/fesm2022/ngwr-dropdown-testing.mjs.map +1 -1
  129. package/fesm2022/ngwr-dropdown.mjs +174 -25
  130. package/fesm2022/ngwr-dropdown.mjs.map +1 -1
  131. package/fesm2022/ngwr-editor-testing.mjs +568 -0
  132. package/fesm2022/ngwr-editor-testing.mjs.map +1 -0
  133. package/fesm2022/ngwr-editor.mjs +2601 -0
  134. package/fesm2022/ngwr-editor.mjs.map +1 -0
  135. package/fesm2022/ngwr-empty.mjs +3 -3
  136. package/fesm2022/ngwr-empty.mjs.map +1 -1
  137. package/fesm2022/ngwr-event-calendar-testing.mjs.map +1 -1
  138. package/fesm2022/ngwr-event-calendar.mjs +14 -7
  139. package/fesm2022/ngwr-event-calendar.mjs.map +1 -1
  140. package/fesm2022/ngwr-falling-text-testing.mjs.map +1 -1
  141. package/fesm2022/ngwr-falling-text.mjs +3 -3
  142. package/fesm2022/ngwr-falling-text.mjs.map +1 -1
  143. package/fesm2022/ngwr-file-upload-testing.mjs.map +1 -1
  144. package/fesm2022/ngwr-file-upload.mjs +3 -3
  145. package/fesm2022/ngwr-file-upload.mjs.map +1 -1
  146. package/fesm2022/ngwr-form-testing.mjs.map +1 -1
  147. package/fesm2022/ngwr-form.mjs +61 -10
  148. package/fesm2022/ngwr-form.mjs.map +1 -1
  149. package/fesm2022/ngwr-fuzzy-text-testing.mjs.map +1 -1
  150. package/fesm2022/ngwr-fuzzy-text.mjs +3 -3
  151. package/fesm2022/ngwr-fuzzy-text.mjs.map +1 -1
  152. package/fesm2022/ngwr-gauge-testing.mjs.map +1 -1
  153. package/fesm2022/ngwr-gauge.mjs +35 -6
  154. package/fesm2022/ngwr-gauge.mjs.map +1 -1
  155. package/fesm2022/ngwr-glitch-text-testing.mjs.map +1 -1
  156. package/fesm2022/ngwr-glitch-text.mjs +3 -3
  157. package/fesm2022/ngwr-glitch-text.mjs.map +1 -1
  158. package/fesm2022/ngwr-gradient-text-testing.mjs.map +1 -1
  159. package/fesm2022/ngwr-gradient-text.mjs +3 -3
  160. package/fesm2022/ngwr-gradient-text.mjs.map +1 -1
  161. package/fesm2022/ngwr-graph-testing.mjs.map +1 -1
  162. package/fesm2022/ngwr-graph.mjs +6 -6
  163. package/fesm2022/ngwr-graph.mjs.map +1 -1
  164. package/fesm2022/ngwr-hotkey.mjs +6 -6
  165. package/fesm2022/ngwr-hotkey.mjs.map +1 -1
  166. package/fesm2022/ngwr-i18n-ar.mjs +31 -0
  167. package/fesm2022/ngwr-i18n-ar.mjs.map +1 -1
  168. package/fesm2022/ngwr-i18n-cs.mjs +31 -0
  169. package/fesm2022/ngwr-i18n-cs.mjs.map +1 -1
  170. package/fesm2022/ngwr-i18n-de.mjs +31 -0
  171. package/fesm2022/ngwr-i18n-de.mjs.map +1 -1
  172. package/fesm2022/ngwr-i18n-en.mjs +39 -0
  173. package/fesm2022/ngwr-i18n-en.mjs.map +1 -1
  174. package/fesm2022/ngwr-i18n-es.mjs +31 -0
  175. package/fesm2022/ngwr-i18n-es.mjs.map +1 -1
  176. package/fesm2022/ngwr-i18n-fr.mjs +31 -0
  177. package/fesm2022/ngwr-i18n-fr.mjs.map +1 -1
  178. package/fesm2022/ngwr-i18n-he.mjs +31 -0
  179. package/fesm2022/ngwr-i18n-he.mjs.map +1 -1
  180. package/fesm2022/ngwr-i18n-hi.mjs +31 -0
  181. package/fesm2022/ngwr-i18n-hi.mjs.map +1 -1
  182. package/fesm2022/ngwr-i18n-id.mjs +31 -0
  183. package/fesm2022/ngwr-i18n-id.mjs.map +1 -1
  184. package/fesm2022/ngwr-i18n-it.mjs +31 -0
  185. package/fesm2022/ngwr-i18n-it.mjs.map +1 -1
  186. package/fesm2022/ngwr-i18n-ja.mjs +31 -0
  187. package/fesm2022/ngwr-i18n-ja.mjs.map +1 -1
  188. package/fesm2022/ngwr-i18n-ko.mjs +31 -0
  189. package/fesm2022/ngwr-i18n-ko.mjs.map +1 -1
  190. package/fesm2022/ngwr-i18n-nl.mjs +31 -0
  191. package/fesm2022/ngwr-i18n-nl.mjs.map +1 -1
  192. package/fesm2022/ngwr-i18n-pl.mjs +31 -0
  193. package/fesm2022/ngwr-i18n-pl.mjs.map +1 -1
  194. package/fesm2022/ngwr-i18n-pt.mjs +31 -0
  195. package/fesm2022/ngwr-i18n-pt.mjs.map +1 -1
  196. package/fesm2022/ngwr-i18n-ru.mjs +31 -0
  197. package/fesm2022/ngwr-i18n-ru.mjs.map +1 -1
  198. package/fesm2022/ngwr-i18n-sv.mjs +31 -0
  199. package/fesm2022/ngwr-i18n-sv.mjs.map +1 -1
  200. package/fesm2022/ngwr-i18n-tr.mjs +31 -0
  201. package/fesm2022/ngwr-i18n-tr.mjs.map +1 -1
  202. package/fesm2022/ngwr-i18n-uk.mjs +31 -0
  203. package/fesm2022/ngwr-i18n-uk.mjs.map +1 -1
  204. package/fesm2022/ngwr-i18n-vi.mjs +31 -0
  205. package/fesm2022/ngwr-i18n-vi.mjs.map +1 -1
  206. package/fesm2022/ngwr-i18n-zh-TW.mjs +31 -0
  207. package/fesm2022/ngwr-i18n-zh-TW.mjs.map +1 -1
  208. package/fesm2022/ngwr-i18n-zh.mjs +31 -0
  209. package/fesm2022/ngwr-i18n-zh.mjs.map +1 -1
  210. package/fesm2022/ngwr-i18n.mjs +9 -9
  211. package/fesm2022/ngwr-i18n.mjs.map +1 -1
  212. package/fesm2022/ngwr-icon-adapters-feather.mjs.map +1 -1
  213. package/fesm2022/ngwr-icon-adapters-lucide.mjs.map +1 -1
  214. package/fesm2022/ngwr-icon.mjs +6 -6
  215. package/fesm2022/ngwr-icon.mjs.map +1 -1
  216. package/fesm2022/ngwr-image-cropper-testing.mjs.map +1 -1
  217. package/fesm2022/ngwr-image-cropper.mjs +3 -3
  218. package/fesm2022/ngwr-image-cropper.mjs.map +1 -1
  219. package/fesm2022/ngwr-input-number-testing.mjs.map +1 -1
  220. package/fesm2022/ngwr-input-number.mjs +15 -3
  221. package/fesm2022/ngwr-input-number.mjs.map +1 -1
  222. package/fesm2022/ngwr-input-otp-testing.mjs.map +1 -1
  223. package/fesm2022/ngwr-input-otp.mjs +3 -3
  224. package/fesm2022/ngwr-input-otp.mjs.map +1 -1
  225. package/fesm2022/ngwr-input-testing.mjs.map +1 -1
  226. package/fesm2022/ngwr-input.mjs +15 -15
  227. package/fesm2022/ngwr-input.mjs.map +1 -1
  228. package/fesm2022/ngwr-keyboard.mjs +3 -3
  229. package/fesm2022/ngwr-keyboard.mjs.map +1 -1
  230. package/fesm2022/ngwr-knob-testing.mjs.map +1 -1
  231. package/fesm2022/ngwr-knob.mjs +3 -3
  232. package/fesm2022/ngwr-knob.mjs.map +1 -1
  233. package/fesm2022/ngwr-layout.mjs +15 -15
  234. package/fesm2022/ngwr-layout.mjs.map +1 -1
  235. package/fesm2022/ngwr-lightbox-testing.mjs.map +1 -1
  236. package/fesm2022/ngwr-lightbox.mjs +3 -3
  237. package/fesm2022/ngwr-lightbox.mjs.map +1 -1
  238. package/fesm2022/ngwr-line-chart-testing.mjs.map +1 -1
  239. package/fesm2022/ngwr-line-chart.mjs +18 -7
  240. package/fesm2022/ngwr-line-chart.mjs.map +1 -1
  241. package/fesm2022/ngwr-list.mjs +6 -6
  242. package/fesm2022/ngwr-list.mjs.map +1 -1
  243. package/fesm2022/ngwr-loading-bar-router.mjs.map +1 -1
  244. package/fesm2022/ngwr-loading-bar.mjs +6 -6
  245. package/fesm2022/ngwr-loading-bar.mjs.map +1 -1
  246. package/fesm2022/ngwr-markdown-testing.mjs.map +1 -1
  247. package/fesm2022/ngwr-markdown.mjs +798 -17
  248. package/fesm2022/ngwr-markdown.mjs.map +1 -1
  249. package/fesm2022/ngwr-marquee-testing.mjs.map +1 -1
  250. package/fesm2022/ngwr-marquee.mjs +3 -3
  251. package/fesm2022/ngwr-marquee.mjs.map +1 -1
  252. package/fesm2022/ngwr-media.mjs +3 -3
  253. package/fesm2022/ngwr-media.mjs.map +1 -1
  254. package/fesm2022/ngwr-mention-testing.mjs.map +1 -1
  255. package/fesm2022/ngwr-mention.mjs +6 -6
  256. package/fesm2022/ngwr-mention.mjs.map +1 -1
  257. package/fesm2022/ngwr-meta.mjs +6 -6
  258. package/fesm2022/ngwr-meta.mjs.map +1 -1
  259. package/fesm2022/ngwr-meter-group-testing.mjs +7 -3
  260. package/fesm2022/ngwr-meter-group-testing.mjs.map +1 -1
  261. package/fesm2022/ngwr-meter-group.mjs +26 -6
  262. package/fesm2022/ngwr-meter-group.mjs.map +1 -1
  263. package/fesm2022/ngwr-overlay.mjs +6 -6
  264. package/fesm2022/ngwr-overlay.mjs.map +1 -1
  265. package/fesm2022/ngwr-page-header.mjs +13 -5
  266. package/fesm2022/ngwr-page-header.mjs.map +1 -1
  267. package/fesm2022/ngwr-pagination-testing.mjs.map +1 -1
  268. package/fesm2022/ngwr-pagination.mjs +3 -3
  269. package/fesm2022/ngwr-pagination.mjs.map +1 -1
  270. package/fesm2022/ngwr-pipes.mjs +21 -21
  271. package/fesm2022/ngwr-pipes.mjs.map +1 -1
  272. package/fesm2022/ngwr-platform.mjs +9 -9
  273. package/fesm2022/ngwr-platform.mjs.map +1 -1
  274. package/fesm2022/ngwr-popconfirm-testing.mjs.map +1 -1
  275. package/fesm2022/ngwr-popconfirm.mjs +6 -6
  276. package/fesm2022/ngwr-popconfirm.mjs.map +1 -1
  277. package/fesm2022/ngwr-popover-testing.mjs.map +1 -1
  278. package/fesm2022/ngwr-popover.mjs +578 -16
  279. package/fesm2022/ngwr-popover.mjs.map +1 -1
  280. package/fesm2022/ngwr-progress.mjs +3 -3
  281. package/fesm2022/ngwr-progress.mjs.map +1 -1
  282. package/fesm2022/ngwr-pull-to-refresh.mjs +3 -3
  283. package/fesm2022/ngwr-pull-to-refresh.mjs.map +1 -1
  284. package/fesm2022/ngwr-qr.mjs +3 -3
  285. package/fesm2022/ngwr-qr.mjs.map +1 -1
  286. package/fesm2022/ngwr-radio-testing.mjs.map +1 -1
  287. package/fesm2022/ngwr-radio.mjs +6 -6
  288. package/fesm2022/ngwr-radio.mjs.map +1 -1
  289. package/fesm2022/ngwr-rating-testing.mjs.map +1 -1
  290. package/fesm2022/ngwr-rating.mjs +3 -3
  291. package/fesm2022/ngwr-rating.mjs.map +1 -1
  292. package/fesm2022/ngwr-result.mjs +12 -12
  293. package/fesm2022/ngwr-result.mjs.map +1 -1
  294. package/fesm2022/ngwr-rotating-text-testing.mjs.map +1 -1
  295. package/fesm2022/ngwr-rotating-text.mjs +3 -3
  296. package/fesm2022/ngwr-rotating-text.mjs.map +1 -1
  297. package/fesm2022/ngwr-schema-form.mjs +3 -3
  298. package/fesm2022/ngwr-schema-form.mjs.map +1 -1
  299. package/fesm2022/ngwr-scroll.mjs +3 -3
  300. package/fesm2022/ngwr-scroll.mjs.map +1 -1
  301. package/fesm2022/ngwr-segmented-testing.mjs.map +1 -1
  302. package/fesm2022/ngwr-segmented.mjs +3 -3
  303. package/fesm2022/ngwr-segmented.mjs.map +1 -1
  304. package/fesm2022/ngwr-select-testing.mjs.map +1 -1
  305. package/fesm2022/ngwr-select.mjs +12 -12
  306. package/fesm2022/ngwr-select.mjs.map +1 -1
  307. package/fesm2022/ngwr-shiny-text-testing.mjs.map +1 -1
  308. package/fesm2022/ngwr-shiny-text.mjs +6 -6
  309. package/fesm2022/ngwr-shiny-text.mjs.map +1 -1
  310. package/fesm2022/ngwr-sidebar.mjs +10 -3
  311. package/fesm2022/ngwr-sidebar.mjs.map +1 -1
  312. package/fesm2022/ngwr-skeleton.mjs +3 -3
  313. package/fesm2022/ngwr-skeleton.mjs.map +1 -1
  314. package/fesm2022/ngwr-slider-testing.mjs.map +1 -1
  315. package/fesm2022/ngwr-slider.mjs +3 -3
  316. package/fesm2022/ngwr-slider.mjs.map +1 -1
  317. package/fesm2022/ngwr-sparkline-testing.mjs.map +1 -1
  318. package/fesm2022/ngwr-sparkline.mjs +84 -10
  319. package/fesm2022/ngwr-sparkline.mjs.map +1 -1
  320. package/fesm2022/ngwr-speed-dial-testing.mjs.map +1 -1
  321. package/fesm2022/ngwr-speed-dial.mjs +3 -3
  322. package/fesm2022/ngwr-speed-dial.mjs.map +1 -1
  323. package/fesm2022/ngwr-spinner.mjs +3 -3
  324. package/fesm2022/ngwr-spinner.mjs.map +1 -1
  325. package/fesm2022/ngwr-splash-cursor-testing.mjs.map +1 -1
  326. package/fesm2022/ngwr-splash-cursor.mjs +3 -3
  327. package/fesm2022/ngwr-splash-cursor.mjs.map +1 -1
  328. package/fesm2022/ngwr-split-text-testing.mjs.map +1 -1
  329. package/fesm2022/ngwr-split-text.mjs +3 -3
  330. package/fesm2022/ngwr-split-text.mjs.map +1 -1
  331. package/fesm2022/ngwr-splitter-testing.mjs.map +1 -1
  332. package/fesm2022/ngwr-splitter.mjs +3 -3
  333. package/fesm2022/ngwr-splitter.mjs.map +1 -1
  334. package/fesm2022/ngwr-spotlight-card-testing.mjs.map +1 -1
  335. package/fesm2022/ngwr-spotlight-card.mjs +6 -6
  336. package/fesm2022/ngwr-spotlight-card.mjs.map +1 -1
  337. package/fesm2022/ngwr-squircle.mjs +6 -6
  338. package/fesm2022/ngwr-squircle.mjs.map +1 -1
  339. package/fesm2022/ngwr-star-border-testing.mjs.map +1 -1
  340. package/fesm2022/ngwr-star-border.mjs +3 -3
  341. package/fesm2022/ngwr-star-border.mjs.map +1 -1
  342. package/fesm2022/ngwr-statistic.mjs +9 -9
  343. package/fesm2022/ngwr-statistic.mjs.map +1 -1
  344. package/fesm2022/ngwr-stepper-testing.mjs.map +1 -1
  345. package/fesm2022/ngwr-stepper.mjs +6 -6
  346. package/fesm2022/ngwr-stepper.mjs.map +1 -1
  347. package/fesm2022/ngwr-storage.mjs +3 -3
  348. package/fesm2022/ngwr-storage.mjs.map +1 -1
  349. package/fesm2022/ngwr-switch-testing.mjs.map +1 -1
  350. package/fesm2022/ngwr-switch.mjs +3 -3
  351. package/fesm2022/ngwr-switch.mjs.map +1 -1
  352. package/fesm2022/ngwr-table-testing.mjs.map +1 -1
  353. package/fesm2022/ngwr-table.mjs +18 -18
  354. package/fesm2022/ngwr-table.mjs.map +1 -1
  355. package/fesm2022/ngwr-tabs-router.mjs +3 -3
  356. package/fesm2022/ngwr-tabs-router.mjs.map +1 -1
  357. package/fesm2022/ngwr-tabs-testing.mjs.map +1 -1
  358. package/fesm2022/ngwr-tabs.mjs +6 -6
  359. package/fesm2022/ngwr-tabs.mjs.map +1 -1
  360. package/fesm2022/ngwr-textarea-testing.mjs.map +1 -1
  361. package/fesm2022/ngwr-textarea.mjs +3 -3
  362. package/fesm2022/ngwr-textarea.mjs.map +1 -1
  363. package/fesm2022/ngwr-theme.mjs +3 -3
  364. package/fesm2022/ngwr-theme.mjs.map +1 -1
  365. package/fesm2022/ngwr-tilt-card-testing.mjs.map +1 -1
  366. package/fesm2022/ngwr-tilt-card.mjs +6 -6
  367. package/fesm2022/ngwr-tilt-card.mjs.map +1 -1
  368. package/fesm2022/ngwr-timeline.mjs +6 -6
  369. package/fesm2022/ngwr-timeline.mjs.map +1 -1
  370. package/fesm2022/ngwr-toast-testing.mjs.map +1 -1
  371. package/fesm2022/ngwr-toast.mjs +9 -9
  372. package/fesm2022/ngwr-toast.mjs.map +1 -1
  373. package/fesm2022/ngwr-toolbar.mjs +10 -3
  374. package/fesm2022/ngwr-toolbar.mjs.map +1 -1
  375. package/fesm2022/ngwr-tour-testing.mjs.map +1 -1
  376. package/fesm2022/ngwr-tour.mjs +6 -6
  377. package/fesm2022/ngwr-tour.mjs.map +1 -1
  378. package/fesm2022/ngwr-transfer-testing.mjs.map +1 -1
  379. package/fesm2022/ngwr-transfer.mjs +3 -3
  380. package/fesm2022/ngwr-transfer.mjs.map +1 -1
  381. package/fesm2022/ngwr-tree-testing.mjs.map +1 -1
  382. package/fesm2022/ngwr-tree.mjs +3 -3
  383. package/fesm2022/ngwr-tree.mjs.map +1 -1
  384. package/fesm2022/ngwr-typewriter-testing.mjs.map +1 -1
  385. package/fesm2022/ngwr-typewriter.mjs +3 -3
  386. package/fesm2022/ngwr-typewriter.mjs.map +1 -1
  387. package/fesm2022/ngwr-typography.mjs +7 -3
  388. package/fesm2022/ngwr-typography.mjs.map +1 -1
  389. package/fesm2022/ngwr-utils.mjs.map +1 -1
  390. package/fesm2022/ngwr-validators.mjs.map +1 -1
  391. package/fesm2022/ngwr-version.mjs +1 -1
  392. package/fesm2022/ngwr-version.mjs.map +1 -1
  393. package/fesm2022/ngwr-virtual-scroll.mjs +3 -3
  394. package/fesm2022/ngwr-virtual-scroll.mjs.map +1 -1
  395. package/fesm2022/ngwr-waves-testing.mjs.map +1 -1
  396. package/fesm2022/ngwr-waves.mjs +3 -3
  397. package/fesm2022/ngwr-waves.mjs.map +1 -1
  398. package/fesm2022/ngwr-window-testing.mjs.map +1 -1
  399. package/fesm2022/ngwr-window.mjs +12 -12
  400. package/fesm2022/ngwr-window.mjs.map +1 -1
  401. package/form/styles/_index.scss +16 -1
  402. package/gauge/styles/_index.scss +1 -0
  403. package/i18n/ar.json +32 -1
  404. package/i18n/cs.json +32 -1
  405. package/i18n/de.json +32 -1
  406. package/i18n/en.json +32 -1
  407. package/i18n/es.json +32 -1
  408. package/i18n/fr.json +32 -1
  409. package/i18n/he.json +32 -1
  410. package/i18n/hi.json +32 -1
  411. package/i18n/id.json +32 -1
  412. package/i18n/it.json +32 -1
  413. package/i18n/ja.json +32 -1
  414. package/i18n/ko.json +32 -1
  415. package/i18n/nl.json +32 -1
  416. package/i18n/pl.json +32 -1
  417. package/i18n/pt.json +32 -1
  418. package/i18n/ru.json +32 -1
  419. package/i18n/sv.json +32 -1
  420. package/i18n/tr.json +32 -1
  421. package/i18n/uk.json +32 -1
  422. package/i18n/vi.json +32 -1
  423. package/i18n/zh-TW.json +32 -1
  424. package/i18n/zh.json +32 -1
  425. package/input/styles/_index.scss +24 -1
  426. package/input-number/styles/_index.scss +69 -0
  427. package/input-otp/styles/_index.scss +5 -5
  428. package/line-chart/styles/_index.scss +30 -2
  429. package/llms-full.txt +14 -4
  430. package/llms.txt +188 -132
  431. package/mcp/providers.js +2 -2
  432. package/mcp/server.js +1 -1
  433. package/meter-group/styles/_index.scss +1 -0
  434. package/overlay/styles/_arrow.scss +30 -2
  435. package/package.json +43 -2
  436. package/page-header/styles/_index.scss +37 -1
  437. package/pagination/styles/_index.scss +9 -5
  438. package/popover/styles/_index.scss +73 -5
  439. package/progress/styles/_index.scss +4 -0
  440. package/radio/styles/_index.scss +4 -1
  441. package/schematics/use/symbol-map.json +1 -0
  442. package/select/styles/_index.scss +51 -12
  443. package/sidebar/styles/_index.scss +44 -2
  444. package/skeleton/styles/_index.scss +3 -0
  445. package/skills/ngwr/SKILL.md +5 -5
  446. package/skills/ngwr/references/catalog.md +2 -0
  447. package/skills/ngwr/references/setup.md +3 -3
  448. package/sparkline/styles/_index.scss +19 -0
  449. package/styles.scss +1 -0
  450. package/table/styles/_index.scss +7 -0
  451. package/textarea/styles/_index.scss +12 -3
  452. package/theme/styles/_colors.scss +39 -13
  453. package/theme/styles/_contrast.scss +9 -7
  454. package/toast/styles/_index.scss +4 -0
  455. package/toolbar/styles/_index.scss +35 -1
  456. package/tree/styles/_index.scss +46 -7
  457. package/types/ngwr-badge.d.ts +22 -7
  458. package/types/ngwr-bar-chart.d.ts +19 -1
  459. package/types/ngwr-calendar-heatmap.d.ts +29 -1
  460. package/types/ngwr-checkbox.d.ts +2 -0
  461. package/types/ngwr-config.d.ts +12 -0
  462. package/types/ngwr-date-picker.d.ts +308 -43
  463. package/types/ngwr-donut-chart.d.ts +24 -1
  464. package/types/ngwr-dropdown.d.ts +22 -2
  465. package/types/ngwr-editor-testing.d.ts +378 -0
  466. package/types/ngwr-editor.d.ts +449 -0
  467. package/types/ngwr-event-calendar.d.ts +8 -0
  468. package/types/ngwr-form.d.ts +35 -5
  469. package/types/ngwr-gauge.d.ts +20 -1
  470. package/types/ngwr-input-number.d.ts +7 -0
  471. package/types/ngwr-line-chart.d.ts +9 -1
  472. package/types/ngwr-markdown.d.ts +61 -2
  473. package/types/ngwr-meter-group-testing.d.ts +3 -2
  474. package/types/ngwr-meter-group.d.ts +14 -1
  475. package/types/ngwr-page-header.d.ts +10 -2
  476. package/types/ngwr-popover.d.ts +154 -3
  477. package/types/ngwr-sidebar.d.ts +7 -0
  478. package/types/ngwr-sparkline.d.ts +43 -1
  479. package/types/ngwr-toolbar.d.ts +7 -0
  480. package/types/ngwr-typography.d.ts +4 -0
  481. package/types/ngwr-version.d.ts +1 -1
  482. package/typography/styles/_index.scss +16 -0
@@ -0,0 +1,449 @@
1
+ import * as ngwr_form from 'ngwr/form';
2
+ import { WrFormFieldContext } from 'ngwr/form';
3
+ import * as _angular_core from '@angular/core';
4
+ import { Signal } from '@angular/core';
5
+ import { FormValueControl } from '@angular/forms/signals';
6
+
7
+ /**
8
+ * @license
9
+ *
10
+ * Use of this source code is governed by an MIT-style license that can be
11
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
12
+ */
13
+ /**
14
+ * What `<wr-editor>` reads from and writes into its `value` model.
15
+ *
16
+ * - `html` — an HTML string, parsed without executing anything and rebuilt from
17
+ * the editor's own schema on the way out, so only what the schema allows comes
18
+ * back. `''` for an empty document.
19
+ * - `markdown` — the dialect `ngwr/markdown` reads and `<wr-markdown>` renders,
20
+ * written back by `serializeMarkdown`. Markdown has no underline, so the
21
+ * underline tool and its shortcut are absent in this format. `''` for an empty
22
+ * document.
23
+ * - `json` — the document as a {@link WrEditorJson} tree. `null` for an empty
24
+ * document.
25
+ */
26
+ type WrEditorFormat = 'html' | 'markdown' | 'json';
27
+
28
+ /**
29
+ * @license
30
+ *
31
+ * Use of this source code is governed by an MIT-style license that can be
32
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
33
+ */
34
+ /**
35
+ * One mark on a {@link WrEditorJson} node — `strong`, `em`, `underline`,
36
+ * `strike`, `code`, or `link` with `{ href, title }`.
37
+ */
38
+ interface WrEditorMarkJson {
39
+ readonly type: string;
40
+ readonly attrs?: Readonly<Record<string, unknown>>;
41
+ }
42
+ /**
43
+ * The editor's document as plain data — the shape ProseMirror's `toJSON()`
44
+ * writes, declared here so no ProseMirror type reaches the public API.
45
+ *
46
+ * Nodes: `doc`, `paragraph`, `heading` (`level` 1–3), `blockquote`,
47
+ * `code_block` (`language`), `horizontal_rule`, `bullet_list` (`tight`),
48
+ * `ordered_list` (`order`, `tight`), `list_item` (`checked`: `true`, `false`
49
+ * or `null` for an ordinary item), `hard_break`, `image` (`src`, `alt`,
50
+ * `title`), `table`, `table_row`, `table_header` / `table_cell` (`align`) and
51
+ * `text`.
52
+ *
53
+ * A value bound in `json` format is VALIDATED, not trusted: an unknown node or
54
+ * mark, an attribute outside its allowed set, a content rule broken, or a link
55
+ * or image whose URL `safeMarkdownUrl` refuses, and the whole value is refused —
56
+ * the editor keeps what it had and warns in dev mode.
57
+ */
58
+ interface WrEditorJson {
59
+ readonly type: string;
60
+ readonly attrs?: Readonly<Record<string, unknown>>;
61
+ readonly content?: readonly WrEditorJson[];
62
+ readonly marks?: readonly WrEditorMarkJson[];
63
+ readonly text?: string;
64
+ }
65
+
66
+ /**
67
+ * @license
68
+ *
69
+ * Use of this source code is governed by an MIT-style license that can be
70
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
71
+ */
72
+ /**
73
+ * One entry of `<wr-editor>`'s `toolbar` input.
74
+ *
75
+ * - Marks: `bold`, `italic`, `underline` (absent in `markdown` format, which
76
+ * cannot express it), `strike`, `code`.
77
+ * - Blocks: `paragraph`, `heading1`, `heading2`, `heading3`, `bulletList`,
78
+ * `orderedList`, `blockquote`, `codeBlock`.
79
+ * - Inserts: `link` (opens the link panel), `horizontalRule`.
80
+ * - History: `undo`, `redo`.
81
+ * - `'|'` draws a separator between two groups.
82
+ */
83
+ type WrEditorTool = 'bold' | 'italic' | 'underline' | 'strike' | 'code' | 'paragraph' | 'heading1' | 'heading2' | 'heading3' | 'bulletList' | 'orderedList' | 'blockquote' | 'codeBlock' | 'link' | 'horizontalRule' | 'undo' | 'redo' | '|';
84
+
85
+ /**
86
+ * @license
87
+ *
88
+ * Use of this source code is governed by an MIT-style license that can be
89
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
90
+ */
91
+
92
+ /**
93
+ * The `value` model of `<wr-editor>`: a string in `html` and `markdown` format,
94
+ * a {@link WrEditorJson} tree in `json` format.
95
+ *
96
+ * An empty document is written as `''` in the two string formats and as `null`
97
+ * in `json`, so a Signal Forms `required()` rule reports an empty editor as
98
+ * empty — `'<p></p>'` would be a non-empty string. `null` and `''` are both
99
+ * read as an empty document in every format.
100
+ */
101
+ type WrEditorValue = string | WrEditorJson | null;
102
+
103
+ /**
104
+ * @license
105
+ *
106
+ * Use of this source code is governed by an MIT-style license that can be
107
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
108
+ */
109
+
110
+ /** Every tool but the separator. */
111
+ type WrEditorCommandTool = Exclude<WrEditorTool, '|'>;
112
+
113
+ /**
114
+ * The field the link panel's URL input belongs to — provided as `WR_FORM_FIELD`
115
+ * for the editor's whole subtree.
116
+ *
117
+ * It does two jobs at once. It is the SHIELD every composite control needs: the
118
+ * editor is the control a `<wr-form-field>` wraps, and without a nearer provider
119
+ * the `[wrInput]` in its link panel would adopt the outer field's id, take over
120
+ * its label and announce its error as its own. And it is the input's own field:
121
+ * `[wrInput]` binds `id`, `aria-invalid` and `aria-describedby` from whatever
122
+ * field it finds, so answering here is how a refused URL reaches a screen reader
123
+ * without binding attributes the directive already owns.
124
+ *
125
+ * @internal
126
+ */
127
+ declare class WrEditorLinkField implements WrFormFieldContext {
128
+ private readonly id;
129
+ /** The URL just submitted was refused by the link policy. */
130
+ readonly invalid: _angular_core.WritableSignal<boolean>;
131
+ readonly controlId: _angular_core.Signal<string>;
132
+ readonly errorId: string;
133
+ readonly panelId: string;
134
+ readonly errorKeys: _angular_core.Signal<readonly string[]>;
135
+ readonly describedBy: _angular_core.Signal<string | null>;
136
+ readonly labelId: _angular_core.Signal<string | null>;
137
+ adoptControlId(): void;
138
+ }
139
+
140
+ /** One toolbar button's state at the current selection. */
141
+ interface WrToolState {
142
+ readonly tool: WrEditorCommandTool;
143
+ readonly active: boolean;
144
+ readonly available: boolean;
145
+ }
146
+ /**
147
+ * Rich-text editor on ProseMirror, with a toolbar, a link panel, keyboard
148
+ * shortcuts and markdown-style block shortcuts (`# `, `> `, `- `, `1. `,
149
+ * ` ``` `).
150
+ *
151
+ * A signal-forms native control: it implements `FormValueControl<WrEditorValue>`,
152
+ * so `[formField]` binds straight to its `value` model — no
153
+ * `ControlValueAccessor` in between. `[(value)]` works standalone.
154
+ *
155
+ * The value is an HTML string, a markdown string or the document as JSON, chosen
156
+ * by `format`. Whatever arrives is treated as untrusted and rebuilt from the
157
+ * editor's schema, so only what the schema allows survives, and links and images
158
+ * go through `safeMarkdownUrl` in all three. A value the editor cannot read is
159
+ * refused — the document it already shows is kept, a warning names the reason in
160
+ * dev mode, and nothing is written back. Until a value it CAN read arrives the
161
+ * editor is read-only and carries `wr-editor--refused`: the model still holds the
162
+ * refused value, and an edit would write the document on screen over it.
163
+ *
164
+ * Headings stop at three levels: an h4–h6 read from HTML or markdown becomes an
165
+ * h3 rather than a paragraph. Underline exists in `html` and `json` only —
166
+ * markdown cannot spell it, so in that format the tool, the shortcut and the mark
167
+ * itself are absent.
168
+ *
169
+ * ProseMirror is an OPTIONAL peer dependency: only an app that imports
170
+ * `ngwr/editor` installs `prosemirror-model`, `-state`, `-view`, `-commands`,
171
+ * `-keymap`, `-history`, `-schema-list` and `-inputrules`.
172
+ *
173
+ * @example
174
+ * ```html
175
+ * <!-- signal forms -->
176
+ * <wr-editor format="markdown" placeholder="Describe the change" [formField]="form.body" />
177
+ *
178
+ * <!-- standalone two-way binding -->
179
+ * <wr-editor [(value)]="html" />
180
+ * ```
181
+ *
182
+ * @see https://ngwr.dev/reference/components/editor
183
+ */
184
+ declare class WrEditor implements FormValueControl<WrEditorValue> {
185
+ /**
186
+ * The document. A string in `html` and `markdown` format, a
187
+ * {@link WrEditorJson} tree in `json`; `''` / `null` when nothing is written.
188
+ * Bound by `[formField]`, or two-way via `[(value)]`.
189
+ */
190
+ readonly value: _angular_core.ModelSignal<WrEditorValue>;
191
+ /** Emitted on blur so a bound field can mark itself touched. */
192
+ readonly touch: _angular_core.OutputEmitterRef<void>;
193
+ /**
194
+ * Disable the editor and its toolbar. Bound automatically from the field's
195
+ * disabled state when used with `[formField]`.
196
+ *
197
+ * @default false
198
+ */
199
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, any>;
200
+ /**
201
+ * Refuse edits while the text stays focusable, selectable and announced.
202
+ * Bound automatically from the field's readonly state when used with
203
+ * `[formField]`.
204
+ *
205
+ * The surface keeps its tab stop and reports `aria-readonly`; typing, paste,
206
+ * drop, the shortcuts and every toolbar command are refused. The toolbar goes
207
+ * inert, since none of its tools can apply.
208
+ *
209
+ * @default false
210
+ */
211
+ readonly readonly: _angular_core.InputSignalWithTransform<boolean, any>;
212
+ /**
213
+ * Hint shown while the document is empty, and exposed as `aria-placeholder`.
214
+ *
215
+ * @default ''
216
+ */
217
+ readonly placeholder: _angular_core.InputSignal<string>;
218
+ /**
219
+ * Accessible name of the text surface. Falls back to the surrounding
220
+ * `<wr-form-field>`'s label, then to `editor.label`.
221
+ */
222
+ readonly ariaLabel: _angular_core.InputSignal<string | null>;
223
+ /**
224
+ * What `value` holds — see {@link WrEditorFormat}. Unset, it falls back to
225
+ * `provideWrConfig({ editor: { format } })`. Changing it re-reads `value` in
226
+ * the new format.
227
+ *
228
+ * @default 'html'
229
+ */
230
+ readonly format: _angular_core.InputSignal<WrEditorFormat | null>;
231
+ protected readonly resolvedFormat: Signal<"html" | "markdown" | "json">;
232
+ /**
233
+ * The toolbar's tools, in order, with `'|'` between groups; `false` hides it.
234
+ * `underline` is left out in `markdown` format, which cannot store it.
235
+ *
236
+ * @default WR_EDITOR_TOOLBAR
237
+ */
238
+ readonly toolbar: _angular_core.InputSignal<false | readonly WrEditorTool[]>;
239
+ private readonly document;
240
+ private readonly injector;
241
+ private readonly destroyRef;
242
+ private readonly host;
243
+ private readonly platform;
244
+ private readonly isBrowser;
245
+ /**
246
+ * Ambient reading direction, read by the toolbar's arrow keys. Optional so a
247
+ * bare `TestBed` needs no provider; `null` means LTR.
248
+ */
249
+ private readonly dir;
250
+ /** @internal */
251
+ protected readonly linkField: WrEditorLinkField;
252
+ /** The surrounding `<wr-form-field>`'s error state, read past the editor's own shield. @internal */
253
+ protected readonly fieldAria: ngwr_form.WrFormFieldAria;
254
+ protected readonly resolvedAriaLabel: Signal<string>;
255
+ /**
256
+ * The field's label names the surface, when there is one — a
257
+ * `contenteditable` is not labelable, so the field's `<label for>` cannot
258
+ * reach it. An explicit `ariaLabel` still wins over both.
259
+ */
260
+ protected readonly labelledBy: Signal<string | null>;
261
+ /** `null` while the field's label carries the name. */
262
+ protected readonly accessibleName: Signal<string | null>;
263
+ protected readonly surfaceId: string;
264
+ /** ProseMirror owns the surface from here on; until then the preview stands in. */
265
+ protected readonly mounted: _angular_core.WritableSignal<boolean>;
266
+ protected readonly focused: _angular_core.WritableSignal<boolean>;
267
+ private readonly editorState;
268
+ /**
269
+ * Whether `value` holds something the editor could not read, so the document
270
+ * on screen is not the one the model holds — empty at mount, or the previous
271
+ * record after a write. Edits are refused until a readable value arrives:
272
+ * the first keystroke would otherwise replace the stored value with whatever
273
+ * is on screen, and the only sign of it was a dev-mode warning.
274
+ */
275
+ private readonly refused;
276
+ /** Read-only by the input, or because the value was refused. @internal */
277
+ protected readonly locked: Signal<boolean>;
278
+ /** Apple keyboards name the modifier ⌘. Read in the browser only — see `mount()`. */
279
+ private readonly apple;
280
+ private readonly surface;
281
+ private readonly toolButtons;
282
+ private readonly linkPopover;
283
+ private view;
284
+ /** The format the live document was read in, which is the format it is written in. */
285
+ private viewFormat;
286
+ /**
287
+ * The value the live document was last read from or written as. A write from
288
+ * outside that equals it is the document already on screen — an echo of the
289
+ * editor's own emit, or a consumer writing back what it was handed — and must
290
+ * neither re-parse nor reset the selection.
291
+ */
292
+ private lastSerialized;
293
+ private linkToSurface;
294
+ protected readonly toolbarLabel: Signal<string>;
295
+ protected readonly linkUrlLabel: Signal<string>;
296
+ protected readonly linkApplyLabel: Signal<string>;
297
+ protected readonly linkRemoveLabel: Signal<string>;
298
+ protected readonly linkInvalidLabel: Signal<string>;
299
+ protected readonly taskDoneLabel: Signal<string>;
300
+ protected readonly taskTodoLabel: Signal<string>;
301
+ private readonly keyCtrl;
302
+ private readonly keyShift;
303
+ private readonly keyAlt;
304
+ private readonly headingLabel;
305
+ private readonly shortcutLabel;
306
+ private readonly toolLabels;
307
+ /**
308
+ * The bound tools as drawn: underline dropped where the format cannot store
309
+ * it, and separators only BETWEEN two groups — a leading, trailing or doubled
310
+ * one would be left behind by that filter or by a hand-built list.
311
+ */
312
+ protected readonly tools: Signal<readonly WrEditorTool[]>;
313
+ /** The tools that are buttons, in order — what the roving tab stop moves over. */
314
+ private readonly buttons;
315
+ /** Each drawn entry's index among the buttons, `-1` for a separator. @internal */
316
+ protected readonly buttonIndex: Signal<number[]>;
317
+ private readonly commands;
318
+ /** Every button's pressed and available state at the current selection. @internal */
319
+ protected readonly toolStates: Signal<ReadonlyMap<WrEditorCommandTool, WrToolState>>;
320
+ private readonly rovingIndex;
321
+ /**
322
+ * The one button in the tab order. It follows the user, and moves off a tool
323
+ * that stopped applying so the toolbar never loses its tab stop — unless NO
324
+ * tool applies (read-only, disabled), where it stays put, because there is
325
+ * nothing to reach.
326
+ */
327
+ private readonly tabStop;
328
+ /** Whether the live document is empty — pre-mount, whether the value is. */
329
+ private readonly empty;
330
+ /** The task-item words, handed to ProseMirror through its node views. */
331
+ private readonly nodeViews;
332
+ protected readonly ariaPlaceholder: Signal<string | null>;
333
+ protected readonly linkDraft: _angular_core.WritableSignal<string>;
334
+ /** Whether the selection is in a link — what the panel's remove button needs. */
335
+ protected readonly linkActive: Signal<boolean>;
336
+ /**
337
+ * The value rendered by Angular until ProseMirror takes over: on the server,
338
+ * and for the first browser frame. Read from the doc JSON, so it shows exactly
339
+ * what the schema kept — the same sanitised document the editor will mount.
340
+ */
341
+ protected readonly preview: Signal<WrEditorJson | null>;
342
+ protected readonly classes: Signal<string>;
343
+ constructor();
344
+ /** Focus the text surface — what Signal Forms calls to focus this control. */
345
+ focus(options?: FocusOptions): void;
346
+ protected label(tool: WrEditorCommandTool): string;
347
+ protected icon(tool: WrEditorCommandTool): readonly string[];
348
+ protected isToggle(tool: WrEditorCommandTool): boolean;
349
+ /** The tooltip: the label, with the shortcut when the tool has one. */
350
+ protected tooltip(tool: WrEditorCommandTool): string;
351
+ /** `aria-keyshortcuts` — key names from the ARIA spec, never localised. */
352
+ protected keyShortcuts(tool: WrEditorCommandTool): string | null;
353
+ protected state(tool: WrEditorCommandTool): WrToolState | undefined;
354
+ /**
355
+ * A toolbar button was activated.
356
+ *
357
+ * By pointer, focus never left the text (`mousedown` is cancelled), so the
358
+ * caret is put back where the command left it. By keyboard, focus stays on the
359
+ * button, as the toolbar pattern asks — unless the tool no longer applies,
360
+ * which disables it: a disabled button drops its focus on `<body>`, so the text
361
+ * takes it first.
362
+ */
363
+ protected onToolClick(tool: WrEditorCommandTool, event: MouseEvent): void;
364
+ protected onToolFocus(index: number): void;
365
+ /** The APG toolbar keys: the arrows rove and wrap, Home and End jump. */
366
+ protected onToolbarKeydown(event: KeyboardEvent): void;
367
+ /** `touch` once focus leaves the whole control — not when it moves between its own parts. */
368
+ protected onFocusOut(event: FocusEvent): void;
369
+ protected onLinkOpened(): void;
370
+ protected onLinkClosed(): void;
371
+ protected onLinkInput(event: Event): void;
372
+ protected applyLink(event: Event): void;
373
+ protected removeLink(): void;
374
+ protected nodesOf(raw: unknown): readonly WrEditorJson[];
375
+ protected nodeOf(raw: unknown): WrEditorJson;
376
+ protected markAt(node: WrEditorJson, depth: number): WrEditorMarkJson | null;
377
+ protected attr(node: WrEditorJson | WrEditorMarkJson, name: string): unknown;
378
+ protected text(node: WrEditorJson | WrEditorMarkJson, name: string): string | null;
379
+ protected textOf(node: WrEditorJson): string;
380
+ /** Whether an edit may happen at all — not while read-only, disabled or refused. */
381
+ private canEdit;
382
+ private mount;
383
+ private createState;
384
+ private dispatch;
385
+ private emit;
386
+ /**
387
+ * Bring an outside write into the view.
388
+ *
389
+ * Compared as DOCUMENTS, never as strings: `<b>` comes back as `<strong>`, so a
390
+ * normalised string differs from what the consumer wrote while the documents
391
+ * are equal — and an equal document is left alone, selection and history
392
+ * included. A different one replaces the state wholesale, history with it,
393
+ * which is right for a form reset or a server load: undo back into content the
394
+ * app replaced would be wrong. The normalised form is never written back —
395
+ * that would mark the field dirty on load. A write that arrives mid-composition
396
+ * (IME) replaces the composition too: the model is the source of truth.
397
+ */
398
+ private sync;
399
+ /**
400
+ * A new format whose value could not be read: keep the document, moved into
401
+ * the new format's schema — markdown's lacks underline, so that mark is
402
+ * dropped on the way. What is written from here on is in the new format.
403
+ */
404
+ private switchFormat;
405
+ private replaceState;
406
+ private placeholderDecorations;
407
+ /**
408
+ * Mod-K opens the link panel. Its propagation stops here: `<wr-command-palette>`
409
+ * binds the same chord on the document, and `WrHotkey` deliberately does not
410
+ * skip an event another listener already handled.
411
+ */
412
+ private onSurfaceKeydown;
413
+ private focusLinkInput;
414
+ /**
415
+ * Focus left the link panel for somewhere outside the control — Tab, Shift+Tab,
416
+ * a click elsewhere. The panel is not a focus trap, and left open it stays
417
+ * anchored to a control the user has left, whose next close would then pull
418
+ * focus back into the text. Closed with focus left where it went.
419
+ */
420
+ private leaveLinkPanel;
421
+ /** Whether a node is part of this control: the host, or its link panel. */
422
+ private withinControl;
423
+ private inLinkPanel;
424
+ private warnRefused;
425
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrEditor, never>;
426
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrEditor, "wr-editor", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "toolbar": { "alias": "toolbar"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
427
+ }
428
+
429
+ /**
430
+ * @license
431
+ *
432
+ * Use of this source code is governed by an MIT-style license that can be
433
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
434
+ */
435
+
436
+ /**
437
+ * The toolbar `<wr-editor>` draws when `toolbar` is not bound — every tool, in
438
+ * five groups. Exported so a toolbar can be built from it rather than retyped:
439
+ *
440
+ * ```ts
441
+ * readonly tools = WR_EDITOR_TOOLBAR.filter(tool => tool !== 'code');
442
+ * ```
443
+ *
444
+ * `underline` is dropped in `markdown` format whether it is listed or not.
445
+ */
446
+ declare const WR_EDITOR_TOOLBAR: readonly WrEditorTool[];
447
+
448
+ export { WR_EDITOR_TOOLBAR, WrEditor };
449
+ export type { WrEditorFormat, WrEditorJson, WrEditorMarkJson, WrEditorTool, WrEditorValue };
@@ -126,6 +126,11 @@ interface DayCell {
126
126
  interface MonthWeek {
127
127
  readonly key: string;
128
128
  readonly days: readonly DayCell[];
129
+ /**
130
+ * How many lanes the row's chips fill. The chips are absolutely positioned,
131
+ * so this is the only way the row's height can know about them.
132
+ */
133
+ readonly lanes: number;
129
134
  }
130
135
  interface TimeCell {
131
136
  readonly key: string;
@@ -291,6 +296,8 @@ declare class WrEventCalendar {
291
296
  bands: readonly BandChip[];
292
297
  }[]>;
293
298
  protected readonly hasAllDay: _angular_core.Signal<boolean>;
299
+ /** Lanes the all-day band fills — it has no `maxLanes` cap, so its row has to grow instead. */
300
+ protected readonly allDayLanes: _angular_core.Signal<number>;
294
301
  protected readonly rows: _angular_core.Signal<readonly TimeRow[]>;
295
302
  protected step(direction: -1 | 1): void;
296
303
  protected goToday(): void;
@@ -323,6 +330,7 @@ declare class WrEventCalendar {
323
330
  * the cell can say how much it is hiding.
324
331
  */
325
332
  private bandLayout;
333
+ private laneCount;
326
334
  /**
327
335
  * Column layout inside one day: events that overlap in time share the width.
328
336
  * Clusters are built by a running high-water mark — a new cluster starts the
@@ -1,7 +1,6 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { InjectionToken, Signal, EnvironmentProviders } from '@angular/core';
3
- import * as _angular_forms from '@angular/forms';
4
- import { NgControl } from '@angular/forms';
2
+ import { InjectionToken, Signal, AfterContentChecked, EnvironmentProviders } from '@angular/core';
3
+ import { NgControl, ValidationErrors } from '@angular/forms';
5
4
  import * as _angular_forms_signals from '@angular/forms/signals';
6
5
 
7
6
  /**
@@ -153,7 +152,7 @@ declare class WrFormError {
153
152
  *
154
153
  * @see https://ngwr.dev/reference/components/form-field
155
154
  */
156
- declare class WrFormField implements WrFormFieldContext {
155
+ declare class WrFormField implements WrFormFieldContext, AfterContentChecked {
157
156
  /** Label text shown above the control. */
158
157
  readonly label: _angular_core.InputSignal<string>;
159
158
  /** Hint text shown below the control. Hidden when an error is visible. */
@@ -205,10 +204,41 @@ declare class WrFormField implements WrFormFieldContext {
205
204
  * Angular does expose, so the computed depends on this counter instead.
206
205
  * Signal Forms needs none of this — its interop getters read live signals —
207
206
  * and harmlessly contributes no events.
207
+ *
208
+ * Events are not the whole story, which is what {@link ngAfterContentChecked} is for.
208
209
  */
209
210
  private readonly revision;
211
+ /** What the last check saw on a reactive control — see {@link ngAfterContentChecked}. */
212
+ private seen;
213
+ /**
214
+ * Catch the changes a reactive control makes WITHOUT an event.
215
+ *
216
+ * `updateValueAndValidity({ emitEvent: false })`, `markAsTouched({ emitEvent: false })`
217
+ * and their siblings change `errors`, `touched` and `dirty` and emit nothing, so the
218
+ * subscription above never hears them and the message stays whatever it was. That is
219
+ * not only an app's own silent write: Angular reports a custom control's PARSE errors
220
+ * to a `FormControl` exactly that way — a validator re-run with `emitEvent: false` —
221
+ * so a `wr-date-picker` refusing typed text made its control invalid while the field
222
+ * went on showing the message from before, or nothing — and a later pass of change
223
+ * detection did not help, because the message was memoised on a revision only events
224
+ * move.
225
+ *
226
+ * This runs whenever the view holding the field is checked, which is when the page
227
+ * around the control changes — for the date picker, the moment its refusal turns
228
+ * visible. It is `ngAfterContentChecked` and not `ngDoCheck` for an ordering reason
229
+ * read out of Angular's `refreshView`: check hooks run BEFORE the view's effects, and
230
+ * Angular's parse-error validator is re-run from an effect in that same view, so a
231
+ * `DoCheck` saw the errors one pass late and lost the message whenever nothing
232
+ * refreshed the view again. Content-checked hooks run after those effects and before
233
+ * the field's own bindings. Only a change moves the revision.
234
+ *
235
+ * Signal Forms' interop control is skipped: it is reactive already, and its `errors`
236
+ * getter builds a fresh object on every read, which a reference check would call a
237
+ * change on every pass — and re-resolve every message with it.
238
+ */
239
+ ngAfterContentChecked(): void;
210
240
  constructor();
211
- protected readonly errors: _angular_core.Signal<_angular_forms.ValidationErrors | null>;
241
+ protected readonly errors: _angular_core.Signal<ValidationErrors | null>;
212
242
  protected readonly hasError: _angular_core.Signal<boolean>;
213
243
  /** @internal Read by the projected `<wr-form-error>` children to decide which of them renders. */
214
244
  readonly errorKeys: _angular_core.Signal<readonly string[]>;
@@ -1,3 +1,4 @@
1
+ import * as ngwr_popover from 'ngwr/popover';
1
2
  import * as _angular_core from '@angular/core';
2
3
 
3
4
  /**
@@ -33,6 +34,12 @@ declare class WrGauge {
33
34
  /** Show the value text in the center. @default true */
34
35
  readonly showValue: _angular_core.InputSignalWithTransform<boolean, any>;
35
36
  readonly suffix: _angular_core.InputSignal<string>;
37
+ /**
38
+ * Show a tooltip with the reading on hover, named by `ariaLabel` when one is
39
+ * given. Pointer only — the meter announces the same reading. @default true
40
+ */
41
+ readonly tooltip: _angular_core.InputSignalWithTransform<boolean, any>;
42
+ private readonly surface;
36
43
  protected readonly cx = 50;
37
44
  protected readonly cy = 50;
38
45
  protected readonly radius: _angular_core.Signal<number>;
@@ -47,8 +54,20 @@ declare class WrGauge {
47
54
  protected readonly trackPath: _angular_core.Signal<string>;
48
55
  protected readonly valuePath: _angular_core.Signal<string>;
49
56
  protected readonly viewBox = "0 0 100 56";
57
+ /**
58
+ * The reading as the meter announces it — `aria-valuetext`, the number plus the
59
+ * suffix — so the tooltip, the printed value and a screen reader all say one
60
+ * thing.
61
+ */
62
+ protected readonly valueText: _angular_core.Signal<string>;
63
+ /**
64
+ * One tooltip, pointing at the top of the dial. The whole gauge is one section.
65
+ * The label is the `ariaLabel` input and not the catalog fallback, which names
66
+ * the kind of widget rather than the reading.
67
+ */
68
+ protected readonly tip: ngwr_popover.WrChartTooltip;
50
69
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrGauge, never>;
51
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrGauge, "wr-gauge", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "trackColor": { "alias": "trackColor"; "required": false; "isSignal": true; }; "valueColor": { "alias": "valueColor"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "suffix": { "alias": "suffix"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
70
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrGauge, "wr-gauge", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "trackColor": { "alias": "trackColor"; "required": false; "isSignal": true; }; "valueColor": { "alias": "valueColor"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "suffix": { "alias": "suffix"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
52
71
  }
53
72
 
54
73
  export { WrGauge };
@@ -124,6 +124,13 @@ declare class WrInputNumber implements FormValueControl<number | null> {
124
124
  protected readonly interactive: _angular_core.Signal<boolean>;
125
125
  protected readonly atMin: _angular_core.Signal<boolean>;
126
126
  protected readonly atMax: _angular_core.Signal<boolean>;
127
+ /**
128
+ * The size and pill modifiers mirror what is bound down to the chrome, because
129
+ * the stepper column belongs to neither half of it: the field carries
130
+ * `wr-input--<size>`, the column is its SIBLING, and the group carries no size
131
+ * at all. Without a modifier of its own the column drew one 10x6 chevron at
132
+ * every size and ran its dividers into a pill's rounded end.
133
+ */
127
134
  protected readonly classes: _angular_core.Signal<string>;
128
135
  /**
129
136
  * Fraction digits the stepper rounds its arithmetic to when `decimals` says
@@ -44,6 +44,12 @@ declare class WrLineChart {
44
44
  readonly showLegend: _angular_core.InputSignalWithTransform<boolean, any>;
45
45
  /** Show dots at each data point. @default true */
46
46
  readonly showDots: _angular_core.InputSignalWithTransform<boolean, any>;
47
+ /**
48
+ * Show the hover readout: the crosshair, the point markers and the tooltip. Off
49
+ * drops all three, since a crosshair with no values beside it points at nothing.
50
+ * @default true
51
+ */
52
+ readonly tooltip: _angular_core.InputSignalWithTransform<boolean, any>;
47
53
  protected readonly vbW = 600;
48
54
  protected readonly vbH = 300;
49
55
  protected readonly padding: {
@@ -55,6 +61,8 @@ declare class WrLineChart {
55
61
  private readonly host;
56
62
  /** Hovered point index (across all series) — null when no hover. */
57
63
  protected readonly hoveredIndex: _angular_core.WritableSignal<number | null>;
64
+ /** The hovered index while the readout is on, so turning `tooltip` off mid-hover clears it. */
65
+ protected readonly activeIndex: _angular_core.Signal<number | null>;
58
66
  /**
59
67
  * A dash pattern per series, so the lines are told apart by SHAPE and not
60
68
  * only by hue.
@@ -140,7 +148,7 @@ declare class WrLineChart {
140
148
  protected readonly viewBox: _angular_core.Signal<string>;
141
149
  protected readonly hostEl: HTMLElement;
142
150
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrLineChart, never>;
143
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrLineChart, "wr-line-chart", never, { "series": { "alias": "series"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "xLabels": { "alias": "xLabels"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "showDots": { "alias": "showDots"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
151
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrLineChart, "wr-line-chart", never, { "series": { "alias": "series"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "xLabels": { "alias": "xLabels"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "showDots": { "alias": "showDots"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
144
152
  }
145
153
 
146
154
  export { WrLineChart };