ngwr 14.10.0 → 14.12.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 (722) hide show
  1. package/card/styles/_rules.scss +1 -1
  2. package/event-calendar/styles/_index.scss +14 -0
  3. package/fesm2022/ngwr-action-sheet-testing.mjs +111 -310
  4. package/fesm2022/ngwr-action-sheet-testing.mjs.map +1 -1
  5. package/fesm2022/ngwr-action-sheet.mjs +209 -89
  6. package/fesm2022/ngwr-action-sheet.mjs.map +1 -1
  7. package/fesm2022/ngwr-affix.mjs +122 -140
  8. package/fesm2022/ngwr-affix.mjs.map +1 -1
  9. package/fesm2022/ngwr-alert.mjs +204 -107
  10. package/fesm2022/ngwr-alert.mjs.map +1 -1
  11. package/fesm2022/ngwr-anchor.mjs +171 -113
  12. package/fesm2022/ngwr-anchor.mjs.map +1 -1
  13. package/fesm2022/ngwr-aurora.mjs +278 -198
  14. package/fesm2022/ngwr-aurora.mjs.map +1 -1
  15. package/fesm2022/ngwr-avatar.mjs +191 -190
  16. package/fesm2022/ngwr-avatar.mjs.map +1 -1
  17. package/fesm2022/ngwr-back-top.mjs +140 -95
  18. package/fesm2022/ngwr-back-top.mjs.map +1 -1
  19. package/fesm2022/ngwr-badge.mjs +339 -204
  20. package/fesm2022/ngwr-badge.mjs.map +1 -1
  21. package/fesm2022/ngwr-bar-chart-testing.mjs +56 -120
  22. package/fesm2022/ngwr-bar-chart-testing.mjs.map +1 -1
  23. package/fesm2022/ngwr-bar-chart.mjs +204 -113
  24. package/fesm2022/ngwr-bar-chart.mjs.map +1 -1
  25. package/fesm2022/ngwr-blur-text-testing.mjs +44 -198
  26. package/fesm2022/ngwr-blur-text-testing.mjs.map +1 -1
  27. package/fesm2022/ngwr-blur-text.mjs +322 -202
  28. package/fesm2022/ngwr-blur-text.mjs.map +1 -1
  29. package/fesm2022/ngwr-border-glow-testing.mjs +134 -318
  30. package/fesm2022/ngwr-border-glow-testing.mjs.map +1 -1
  31. package/fesm2022/ngwr-border-glow.mjs +440 -277
  32. package/fesm2022/ngwr-border-glow.mjs.map +1 -1
  33. package/fesm2022/ngwr-breadcrumbs.mjs +256 -120
  34. package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -1
  35. package/fesm2022/ngwr-burger.mjs +115 -63
  36. package/fesm2022/ngwr-burger.mjs.map +1 -1
  37. package/fesm2022/ngwr-button-testing.mjs +39 -94
  38. package/fesm2022/ngwr-button-testing.mjs.map +1 -1
  39. package/fesm2022/ngwr-button.mjs +404 -354
  40. package/fesm2022/ngwr-button.mjs.map +1 -1
  41. package/fesm2022/ngwr-calendar-heatmap-testing.mjs +50 -96
  42. package/fesm2022/ngwr-calendar-heatmap-testing.mjs.map +1 -1
  43. package/fesm2022/ngwr-calendar-heatmap.mjs +360 -264
  44. package/fesm2022/ngwr-calendar-heatmap.mjs.map +1 -1
  45. package/fesm2022/ngwr-calendar-testing.mjs +181 -378
  46. package/fesm2022/ngwr-calendar-testing.mjs.map +1 -1
  47. package/fesm2022/ngwr-calendar.mjs +612 -790
  48. package/fesm2022/ngwr-calendar.mjs.map +1 -1
  49. package/fesm2022/ngwr-card.mjs +216 -98
  50. package/fesm2022/ngwr-card.mjs.map +1 -1
  51. package/fesm2022/ngwr-carousel-testing.mjs +131 -374
  52. package/fesm2022/ngwr-carousel-testing.mjs.map +1 -1
  53. package/fesm2022/ngwr-carousel.mjs +459 -332
  54. package/fesm2022/ngwr-carousel.mjs.map +1 -1
  55. package/fesm2022/ngwr-cascader-testing.mjs +227 -600
  56. package/fesm2022/ngwr-cascader-testing.mjs.map +1 -1
  57. package/fesm2022/ngwr-cascader.mjs +482 -418
  58. package/fesm2022/ngwr-cascader.mjs.map +1 -1
  59. package/fesm2022/ngwr-checkbox-testing.mjs +45 -99
  60. package/fesm2022/ngwr-checkbox-testing.mjs.map +1 -1
  61. package/fesm2022/ngwr-checkbox.mjs +461 -354
  62. package/fesm2022/ngwr-checkbox.mjs.map +1 -1
  63. package/fesm2022/ngwr-circular-text-testing.mjs +56 -223
  64. package/fesm2022/ngwr-circular-text-testing.mjs.map +1 -1
  65. package/fesm2022/ngwr-circular-text.mjs +226 -186
  66. package/fesm2022/ngwr-circular-text.mjs.map +1 -1
  67. package/fesm2022/ngwr-click-spark.mjs +303 -199
  68. package/fesm2022/ngwr-click-spark.mjs.map +1 -1
  69. package/fesm2022/ngwr-clipboard.mjs +95 -163
  70. package/fesm2022/ngwr-clipboard.mjs.map +1 -1
  71. package/fesm2022/ngwr-collapse-testing.mjs +118 -365
  72. package/fesm2022/ngwr-collapse-testing.mjs.map +1 -1
  73. package/fesm2022/ngwr-collapse.mjs +287 -227
  74. package/fesm2022/ngwr-collapse.mjs.map +1 -1
  75. package/fesm2022/ngwr-color-picker-testing.mjs +223 -461
  76. package/fesm2022/ngwr-color-picker-testing.mjs.map +1 -1
  77. package/fesm2022/ngwr-color-picker.mjs +952 -976
  78. package/fesm2022/ngwr-color-picker.mjs.map +1 -1
  79. package/fesm2022/ngwr-command-palette-testing.mjs +236 -585
  80. package/fesm2022/ngwr-command-palette-testing.mjs.map +1 -1
  81. package/fesm2022/ngwr-command-palette.mjs +512 -443
  82. package/fesm2022/ngwr-command-palette.mjs.map +1 -1
  83. package/fesm2022/ngwr-compare.mjs +252 -225
  84. package/fesm2022/ngwr-compare.mjs.map +1 -1
  85. package/fesm2022/ngwr-confetti.mjs +163 -181
  86. package/fesm2022/ngwr-confetti.mjs.map +1 -1
  87. package/fesm2022/ngwr-config.mjs +31 -106
  88. package/fesm2022/ngwr-config.mjs.map +1 -1
  89. package/fesm2022/ngwr-context-menu-testing.mjs +233 -642
  90. package/fesm2022/ngwr-context-menu-testing.mjs.map +1 -1
  91. package/fesm2022/ngwr-context-menu.mjs +837 -1167
  92. package/fesm2022/ngwr-context-menu.mjs.map +1 -1
  93. package/fesm2022/ngwr-cookie.mjs +103 -140
  94. package/fesm2022/ngwr-cookie.mjs.map +1 -1
  95. package/fesm2022/ngwr-counter.mjs +646 -460
  96. package/fesm2022/ngwr-counter.mjs.map +1 -1
  97. package/fesm2022/ngwr-date-adapters-fns.mjs +173 -266
  98. package/fesm2022/ngwr-date-adapters-fns.mjs.map +1 -1
  99. package/fesm2022/ngwr-date-adapters-luxon.mjs +164 -236
  100. package/fesm2022/ngwr-date-adapters-luxon.mjs.map +1 -1
  101. package/fesm2022/ngwr-date-picker-testing.mjs +340 -700
  102. package/fesm2022/ngwr-date-picker-testing.mjs.map +1 -1
  103. package/fesm2022/ngwr-date-picker.mjs +2581 -2416
  104. package/fesm2022/ngwr-date-picker.mjs.map +1 -1
  105. package/fesm2022/ngwr-date.mjs +606 -861
  106. package/fesm2022/ngwr-date.mjs.map +1 -1
  107. package/fesm2022/ngwr-decrypt-text-testing.mjs +57 -256
  108. package/fesm2022/ngwr-decrypt-text-testing.mjs.map +1 -1
  109. package/fesm2022/ngwr-decrypt-text.mjs +489 -409
  110. package/fesm2022/ngwr-decrypt-text.mjs.map +1 -1
  111. package/fesm2022/ngwr-density.mjs +157 -154
  112. package/fesm2022/ngwr-density.mjs.map +1 -1
  113. package/fesm2022/ngwr-descriptions.mjs +188 -90
  114. package/fesm2022/ngwr-descriptions.mjs.map +1 -1
  115. package/fesm2022/ngwr-dialog-testing.mjs +44 -87
  116. package/fesm2022/ngwr-dialog-testing.mjs.map +1 -1
  117. package/fesm2022/ngwr-dialog.mjs +391 -522
  118. package/fesm2022/ngwr-dialog.mjs.map +1 -1
  119. package/fesm2022/ngwr-directives.mjs +354 -271
  120. package/fesm2022/ngwr-directives.mjs.map +1 -1
  121. package/fesm2022/ngwr-divider.mjs +151 -133
  122. package/fesm2022/ngwr-divider.mjs.map +1 -1
  123. package/fesm2022/ngwr-donut-chart-testing.mjs +48 -111
  124. package/fesm2022/ngwr-donut-chart-testing.mjs.map +1 -1
  125. package/fesm2022/ngwr-donut-chart.mjs +295 -190
  126. package/fesm2022/ngwr-donut-chart.mjs.map +1 -1
  127. package/fesm2022/ngwr-drag-drop.mjs +411 -301
  128. package/fesm2022/ngwr-drag-drop.mjs.map +1 -1
  129. package/fesm2022/ngwr-drawer-testing.mjs +97 -248
  130. package/fesm2022/ngwr-drawer-testing.mjs.map +1 -1
  131. package/fesm2022/ngwr-drawer.mjs +862 -889
  132. package/fesm2022/ngwr-drawer.mjs.map +1 -1
  133. package/fesm2022/ngwr-dropdown-testing.mjs +125 -288
  134. package/fesm2022/ngwr-dropdown-testing.mjs.map +1 -1
  135. package/fesm2022/ngwr-dropdown.mjs +613 -641
  136. package/fesm2022/ngwr-dropdown.mjs.map +1 -1
  137. package/fesm2022/ngwr-editor-testing.mjs +194 -640
  138. package/fesm2022/ngwr-editor-testing.mjs.map +1 -1
  139. package/fesm2022/ngwr-editor.mjs +2062 -2541
  140. package/fesm2022/ngwr-editor.mjs.map +1 -1
  141. package/fesm2022/ngwr-empty.mjs +117 -72
  142. package/fesm2022/ngwr-empty.mjs.map +1 -1
  143. package/fesm2022/ngwr-event-calendar-testing.mjs +217 -439
  144. package/fesm2022/ngwr-event-calendar-testing.mjs.map +1 -1
  145. package/fesm2022/ngwr-event-calendar.mjs +906 -822
  146. package/fesm2022/ngwr-event-calendar.mjs.map +1 -1
  147. package/fesm2022/ngwr-falling-text-testing.mjs +52 -216
  148. package/fesm2022/ngwr-falling-text-testing.mjs.map +1 -1
  149. package/fesm2022/ngwr-falling-text.mjs +375 -342
  150. package/fesm2022/ngwr-falling-text.mjs.map +1 -1
  151. package/fesm2022/ngwr-file-upload-testing.mjs +138 -320
  152. package/fesm2022/ngwr-file-upload-testing.mjs.map +1 -1
  153. package/fesm2022/ngwr-file-upload.mjs +475 -328
  154. package/fesm2022/ngwr-file-upload.mjs.map +1 -1
  155. package/fesm2022/ngwr-form-testing.mjs +145 -452
  156. package/fesm2022/ngwr-form-testing.mjs.map +1 -1
  157. package/fesm2022/ngwr-form.mjs +512 -590
  158. package/fesm2022/ngwr-form.mjs.map +1 -1
  159. package/fesm2022/ngwr-fuzzy-text-testing.mjs +36 -132
  160. package/fesm2022/ngwr-fuzzy-text-testing.mjs.map +1 -1
  161. package/fesm2022/ngwr-fuzzy-text.mjs +635 -421
  162. package/fesm2022/ngwr-fuzzy-text.mjs.map +1 -1
  163. package/fesm2022/ngwr-gauge-testing.mjs +49 -98
  164. package/fesm2022/ngwr-gauge-testing.mjs.map +1 -1
  165. package/fesm2022/ngwr-gauge.mjs +297 -129
  166. package/fesm2022/ngwr-gauge.mjs.map +1 -1
  167. package/fesm2022/ngwr-glitch-text-testing.mjs +61 -213
  168. package/fesm2022/ngwr-glitch-text-testing.mjs.map +1 -1
  169. package/fesm2022/ngwr-glitch-text.mjs +170 -73
  170. package/fesm2022/ngwr-glitch-text.mjs.map +1 -1
  171. package/fesm2022/ngwr-gradient-text-testing.mjs +82 -251
  172. package/fesm2022/ngwr-gradient-text-testing.mjs.map +1 -1
  173. package/fesm2022/ngwr-gradient-text.mjs +215 -114
  174. package/fesm2022/ngwr-gradient-text.mjs.map +1 -1
  175. package/fesm2022/ngwr-graph-testing.mjs +65 -233
  176. package/fesm2022/ngwr-graph-testing.mjs.map +1 -1
  177. package/fesm2022/ngwr-graph.mjs +882 -1046
  178. package/fesm2022/ngwr-graph.mjs.map +1 -1
  179. package/fesm2022/ngwr-hotkey.mjs +307 -285
  180. package/fesm2022/ngwr-hotkey.mjs.map +1 -1
  181. package/fesm2022/ngwr-i18n-ar.mjs +374 -464
  182. package/fesm2022/ngwr-i18n-ar.mjs.map +1 -1
  183. package/fesm2022/ngwr-i18n-cs.mjs +374 -434
  184. package/fesm2022/ngwr-i18n-cs.mjs.map +1 -1
  185. package/fesm2022/ngwr-i18n-de.mjs +374 -453
  186. package/fesm2022/ngwr-i18n-de.mjs.map +1 -1
  187. package/fesm2022/ngwr-i18n-en.mjs +374 -561
  188. package/fesm2022/ngwr-i18n-en.mjs.map +1 -1
  189. package/fesm2022/ngwr-i18n-es.mjs +374 -434
  190. package/fesm2022/ngwr-i18n-es.mjs.map +1 -1
  191. package/fesm2022/ngwr-i18n-fr.mjs +374 -458
  192. package/fesm2022/ngwr-i18n-fr.mjs.map +1 -1
  193. package/fesm2022/ngwr-i18n-he.mjs +374 -457
  194. package/fesm2022/ngwr-i18n-he.mjs.map +1 -1
  195. package/fesm2022/ngwr-i18n-hi.mjs +374 -434
  196. package/fesm2022/ngwr-i18n-hi.mjs.map +1 -1
  197. package/fesm2022/ngwr-i18n-id.mjs +374 -434
  198. package/fesm2022/ngwr-i18n-id.mjs.map +1 -1
  199. package/fesm2022/ngwr-i18n-it.mjs +374 -453
  200. package/fesm2022/ngwr-i18n-it.mjs.map +1 -1
  201. package/fesm2022/ngwr-i18n-ja.mjs +374 -438
  202. package/fesm2022/ngwr-i18n-ja.mjs.map +1 -1
  203. package/fesm2022/ngwr-i18n-ko.mjs +374 -446
  204. package/fesm2022/ngwr-i18n-ko.mjs.map +1 -1
  205. package/fesm2022/ngwr-i18n-nl.mjs +374 -450
  206. package/fesm2022/ngwr-i18n-nl.mjs.map +1 -1
  207. package/fesm2022/ngwr-i18n-pl.mjs +374 -460
  208. package/fesm2022/ngwr-i18n-pl.mjs.map +1 -1
  209. package/fesm2022/ngwr-i18n-pt.mjs +374 -443
  210. package/fesm2022/ngwr-i18n-pt.mjs.map +1 -1
  211. package/fesm2022/ngwr-i18n-ru.mjs +374 -447
  212. package/fesm2022/ngwr-i18n-ru.mjs.map +1 -1
  213. package/fesm2022/ngwr-i18n-sv.mjs +374 -434
  214. package/fesm2022/ngwr-i18n-sv.mjs.map +1 -1
  215. package/fesm2022/ngwr-i18n-tr.mjs +374 -458
  216. package/fesm2022/ngwr-i18n-tr.mjs.map +1 -1
  217. package/fesm2022/ngwr-i18n-uk.mjs +374 -455
  218. package/fesm2022/ngwr-i18n-uk.mjs.map +1 -1
  219. package/fesm2022/ngwr-i18n-vi.mjs +374 -451
  220. package/fesm2022/ngwr-i18n-vi.mjs.map +1 -1
  221. package/fesm2022/ngwr-i18n-zh-TW.mjs +374 -442
  222. package/fesm2022/ngwr-i18n-zh-TW.mjs.map +1 -1
  223. package/fesm2022/ngwr-i18n-zh.mjs +374 -433
  224. package/fesm2022/ngwr-i18n-zh.mjs.map +1 -1
  225. package/fesm2022/ngwr-i18n.mjs +415 -683
  226. package/fesm2022/ngwr-i18n.mjs.map +1 -1
  227. package/fesm2022/ngwr-icon-adapters-feather.mjs +28 -77
  228. package/fesm2022/ngwr-icon-adapters-feather.mjs.map +1 -1
  229. package/fesm2022/ngwr-icon-adapters-lucide.mjs +32 -94
  230. package/fesm2022/ngwr-icon-adapters-lucide.mjs.map +1 -1
  231. package/fesm2022/ngwr-icon.mjs +371 -690
  232. package/fesm2022/ngwr-icon.mjs.map +1 -1
  233. package/fesm2022/ngwr-image-cropper-testing.mjs +84 -227
  234. package/fesm2022/ngwr-image-cropper-testing.mjs.map +1 -1
  235. package/fesm2022/ngwr-image-cropper.mjs +577 -639
  236. package/fesm2022/ngwr-image-cropper.mjs.map +1 -1
  237. package/fesm2022/ngwr-input-number-testing.mjs +108 -305
  238. package/fesm2022/ngwr-input-number-testing.mjs.map +1 -1
  239. package/fesm2022/ngwr-input-number.mjs +511 -361
  240. package/fesm2022/ngwr-input-number.mjs.map +1 -1
  241. package/fesm2022/ngwr-input-otp-testing.mjs +172 -420
  242. package/fesm2022/ngwr-input-otp-testing.mjs.map +1 -1
  243. package/fesm2022/ngwr-input-otp.mjs +400 -352
  244. package/fesm2022/ngwr-input-otp.mjs.map +1 -1
  245. package/fesm2022/ngwr-input-testing.mjs +52 -100
  246. package/fesm2022/ngwr-input-testing.mjs.map +1 -1
  247. package/fesm2022/ngwr-input.mjs +356 -303
  248. package/fesm2022/ngwr-input.mjs.map +1 -1
  249. package/fesm2022/ngwr-keyboard.mjs +63 -45
  250. package/fesm2022/ngwr-keyboard.mjs.map +1 -1
  251. package/fesm2022/ngwr-knob-testing.mjs +101 -223
  252. package/fesm2022/ngwr-knob-testing.mjs.map +1 -1
  253. package/fesm2022/ngwr-knob.mjs +436 -303
  254. package/fesm2022/ngwr-knob.mjs.map +1 -1
  255. package/fesm2022/ngwr-layout.mjs +362 -207
  256. package/fesm2022/ngwr-layout.mjs.map +1 -1
  257. package/fesm2022/ngwr-lightbox-testing.mjs +100 -221
  258. package/fesm2022/ngwr-lightbox-testing.mjs.map +1 -1
  259. package/fesm2022/ngwr-lightbox.mjs +335 -268
  260. package/fesm2022/ngwr-lightbox.mjs.map +1 -1
  261. package/fesm2022/ngwr-line-chart-testing.mjs +65 -133
  262. package/fesm2022/ngwr-line-chart-testing.mjs.map +1 -1
  263. package/fesm2022/ngwr-line-chart.mjs +356 -281
  264. package/fesm2022/ngwr-line-chart.mjs.map +1 -1
  265. package/fesm2022/ngwr-list.mjs +251 -134
  266. package/fesm2022/ngwr-list.mjs.map +1 -1
  267. package/fesm2022/ngwr-loading-bar-router.mjs +26 -68
  268. package/fesm2022/ngwr-loading-bar-router.mjs.map +1 -1
  269. package/fesm2022/ngwr-loading-bar.mjs +173 -186
  270. package/fesm2022/ngwr-loading-bar.mjs.map +1 -1
  271. package/fesm2022/ngwr-markdown-testing.mjs +174 -505
  272. package/fesm2022/ngwr-markdown-testing.mjs.map +1 -1
  273. package/fesm2022/ngwr-markdown.mjs +1578 -2219
  274. package/fesm2022/ngwr-markdown.mjs.map +1 -1
  275. package/fesm2022/ngwr-marquee-testing.mjs +118 -331
  276. package/fesm2022/ngwr-marquee-testing.mjs.map +1 -1
  277. package/fesm2022/ngwr-marquee.mjs +411 -230
  278. package/fesm2022/ngwr-marquee.mjs.map +1 -1
  279. package/fesm2022/ngwr-media.mjs +100 -127
  280. package/fesm2022/ngwr-media.mjs.map +1 -1
  281. package/fesm2022/ngwr-mention-testing.mjs +179 -506
  282. package/fesm2022/ngwr-mention-testing.mjs.map +1 -1
  283. package/fesm2022/ngwr-mention.mjs +668 -732
  284. package/fesm2022/ngwr-mention.mjs.map +1 -1
  285. package/fesm2022/ngwr-meta.mjs +257 -329
  286. package/fesm2022/ngwr-meta.mjs.map +1 -1
  287. package/fesm2022/ngwr-meter-group-testing.mjs +56 -101
  288. package/fesm2022/ngwr-meter-group-testing.mjs.map +1 -1
  289. package/fesm2022/ngwr-meter-group.mjs +206 -114
  290. package/fesm2022/ngwr-meter-group.mjs.map +1 -1
  291. package/fesm2022/ngwr-overlay.mjs +264 -576
  292. package/fesm2022/ngwr-overlay.mjs.map +1 -1
  293. package/fesm2022/ngwr-page-header.mjs +107 -67
  294. package/fesm2022/ngwr-page-header.mjs.map +1 -1
  295. package/fesm2022/ngwr-pagination-testing.mjs +125 -388
  296. package/fesm2022/ngwr-pagination-testing.mjs.map +1 -1
  297. package/fesm2022/ngwr-pagination.mjs +505 -335
  298. package/fesm2022/ngwr-pagination.mjs.map +1 -1
  299. package/fesm2022/ngwr-pipes.mjs +343 -382
  300. package/fesm2022/ngwr-pipes.mjs.map +1 -1
  301. package/fesm2022/ngwr-platform.mjs +182 -221
  302. package/fesm2022/ngwr-platform.mjs.map +1 -1
  303. package/fesm2022/ngwr-popconfirm-testing.mjs +112 -307
  304. package/fesm2022/ngwr-popconfirm-testing.mjs.map +1 -1
  305. package/fesm2022/ngwr-popconfirm.mjs +474 -277
  306. package/fesm2022/ngwr-popconfirm.mjs.map +1 -1
  307. package/fesm2022/ngwr-popover-testing.mjs +114 -332
  308. package/fesm2022/ngwr-popover-testing.mjs.map +1 -1
  309. package/fesm2022/ngwr-popover.mjs +1106 -1311
  310. package/fesm2022/ngwr-popover.mjs.map +1 -1
  311. package/fesm2022/ngwr-progress.mjs +124 -68
  312. package/fesm2022/ngwr-progress.mjs.map +1 -1
  313. package/fesm2022/ngwr-pull-to-refresh.mjs +198 -185
  314. package/fesm2022/ngwr-pull-to-refresh.mjs.map +1 -1
  315. package/fesm2022/ngwr-qr.mjs +1179 -1100
  316. package/fesm2022/ngwr-qr.mjs.map +1 -1
  317. package/fesm2022/ngwr-radio-testing.mjs +138 -389
  318. package/fesm2022/ngwr-radio-testing.mjs.map +1 -1
  319. package/fesm2022/ngwr-radio.mjs +351 -239
  320. package/fesm2022/ngwr-radio.mjs.map +1 -1
  321. package/fesm2022/ngwr-rating-testing.mjs +153 -390
  322. package/fesm2022/ngwr-rating-testing.mjs.map +1 -1
  323. package/fesm2022/ngwr-rating.mjs +296 -247
  324. package/fesm2022/ngwr-rating.mjs.map +1 -1
  325. package/fesm2022/ngwr-result.mjs +359 -114
  326. package/fesm2022/ngwr-result.mjs.map +1 -1
  327. package/fesm2022/ngwr-rotating-text-testing.mjs +45 -215
  328. package/fesm2022/ngwr-rotating-text-testing.mjs.map +1 -1
  329. package/fesm2022/ngwr-rotating-text.mjs +402 -272
  330. package/fesm2022/ngwr-rotating-text.mjs.map +1 -1
  331. package/fesm2022/ngwr-schema-form.mjs +384 -213
  332. package/fesm2022/ngwr-schema-form.mjs.map +1 -1
  333. package/fesm2022/ngwr-scroll.mjs +95 -105
  334. package/fesm2022/ngwr-scroll.mjs.map +1 -1
  335. package/fesm2022/ngwr-segmented-testing.mjs +184 -593
  336. package/fesm2022/ngwr-segmented-testing.mjs.map +1 -1
  337. package/fesm2022/ngwr-segmented.mjs +238 -251
  338. package/fesm2022/ngwr-segmented.mjs.map +1 -1
  339. package/fesm2022/ngwr-select-testing.mjs +139 -284
  340. package/fesm2022/ngwr-select-testing.mjs.map +1 -1
  341. package/fesm2022/ngwr-select.mjs +1810 -2098
  342. package/fesm2022/ngwr-select.mjs.map +1 -1
  343. package/fesm2022/ngwr-shiny-text-testing.mjs +83 -228
  344. package/fesm2022/ngwr-shiny-text-testing.mjs.map +1 -1
  345. package/fesm2022/ngwr-shiny-text.mjs +304 -131
  346. package/fesm2022/ngwr-shiny-text.mjs.map +1 -1
  347. package/fesm2022/ngwr-sidebar.mjs +256 -205
  348. package/fesm2022/ngwr-sidebar.mjs.map +1 -1
  349. package/fesm2022/ngwr-skeleton.mjs +101 -72
  350. package/fesm2022/ngwr-skeleton.mjs.map +1 -1
  351. package/fesm2022/ngwr-slider-testing.mjs +191 -473
  352. package/fesm2022/ngwr-slider-testing.mjs.map +1 -1
  353. package/fesm2022/ngwr-slider.mjs +444 -443
  354. package/fesm2022/ngwr-slider.mjs.map +1 -1
  355. package/fesm2022/ngwr-sparkline-testing.mjs +37 -74
  356. package/fesm2022/ngwr-sparkline-testing.mjs.map +1 -1
  357. package/fesm2022/ngwr-sparkline.mjs +311 -196
  358. package/fesm2022/ngwr-sparkline.mjs.map +1 -1
  359. package/fesm2022/ngwr-speed-dial-testing.mjs +135 -278
  360. package/fesm2022/ngwr-speed-dial-testing.mjs.map +1 -1
  361. package/fesm2022/ngwr-speed-dial.mjs +242 -140
  362. package/fesm2022/ngwr-speed-dial.mjs.map +1 -1
  363. package/fesm2022/ngwr-spinner.mjs +97 -60
  364. package/fesm2022/ngwr-spinner.mjs.map +1 -1
  365. package/fesm2022/ngwr-splash-cursor-testing.mjs +23 -87
  366. package/fesm2022/ngwr-splash-cursor-testing.mjs.map +1 -1
  367. package/fesm2022/ngwr-splash-cursor.mjs +980 -725
  368. package/fesm2022/ngwr-splash-cursor.mjs.map +1 -1
  369. package/fesm2022/ngwr-split-text-testing.mjs +48 -218
  370. package/fesm2022/ngwr-split-text-testing.mjs.map +1 -1
  371. package/fesm2022/ngwr-split-text.mjs +365 -220
  372. package/fesm2022/ngwr-split-text.mjs.map +1 -1
  373. package/fesm2022/ngwr-splitter-testing.mjs +107 -241
  374. package/fesm2022/ngwr-splitter-testing.mjs.map +1 -1
  375. package/fesm2022/ngwr-splitter.mjs +222 -184
  376. package/fesm2022/ngwr-splitter.mjs.map +1 -1
  377. package/fesm2022/ngwr-spotlight-card-testing.mjs +105 -360
  378. package/fesm2022/ngwr-spotlight-card-testing.mjs.map +1 -1
  379. package/fesm2022/ngwr-spotlight-card.mjs +217 -135
  380. package/fesm2022/ngwr-spotlight-card.mjs.map +1 -1
  381. package/fesm2022/ngwr-squircle.mjs +410 -326
  382. package/fesm2022/ngwr-squircle.mjs.map +1 -1
  383. package/fesm2022/ngwr-star-border-testing.mjs +53 -168
  384. package/fesm2022/ngwr-star-border-testing.mjs.map +1 -1
  385. package/fesm2022/ngwr-star-border.mjs +160 -70
  386. package/fesm2022/ngwr-star-border.mjs.map +1 -1
  387. package/fesm2022/ngwr-statistic.mjs +570 -389
  388. package/fesm2022/ngwr-statistic.mjs.map +1 -1
  389. package/fesm2022/ngwr-stepper-testing.mjs +158 -471
  390. package/fesm2022/ngwr-stepper-testing.mjs.map +1 -1
  391. package/fesm2022/ngwr-stepper.mjs +336 -215
  392. package/fesm2022/ngwr-stepper.mjs.map +1 -1
  393. package/fesm2022/ngwr-storage.mjs +217 -330
  394. package/fesm2022/ngwr-storage.mjs.map +1 -1
  395. package/fesm2022/ngwr-switch-testing.mjs +42 -75
  396. package/fesm2022/ngwr-switch-testing.mjs.map +1 -1
  397. package/fesm2022/ngwr-switch.mjs +212 -114
  398. package/fesm2022/ngwr-switch.mjs.map +1 -1
  399. package/fesm2022/ngwr-table-testing.mjs +238 -572
  400. package/fesm2022/ngwr-table-testing.mjs.map +1 -1
  401. package/fesm2022/ngwr-table.mjs +1879 -1446
  402. package/fesm2022/ngwr-table.mjs.map +1 -1
  403. package/fesm2022/ngwr-tabs-router.mjs +84 -153
  404. package/fesm2022/ngwr-tabs-router.mjs.map +1 -1
  405. package/fesm2022/ngwr-tabs-testing.mjs +217 -617
  406. package/fesm2022/ngwr-tabs-testing.mjs.map +1 -1
  407. package/fesm2022/ngwr-tabs.mjs +402 -425
  408. package/fesm2022/ngwr-tabs.mjs.map +1 -1
  409. package/fesm2022/ngwr-textarea-testing.mjs +84 -236
  410. package/fesm2022/ngwr-textarea-testing.mjs.map +1 -1
  411. package/fesm2022/ngwr-textarea.mjs +388 -264
  412. package/fesm2022/ngwr-textarea.mjs.map +1 -1
  413. package/fesm2022/ngwr-theme.mjs +247 -443
  414. package/fesm2022/ngwr-theme.mjs.map +1 -1
  415. package/fesm2022/ngwr-tilt-card-testing.mjs +79 -186
  416. package/fesm2022/ngwr-tilt-card-testing.mjs.map +1 -1
  417. package/fesm2022/ngwr-tilt-card.mjs +257 -168
  418. package/fesm2022/ngwr-tilt-card.mjs.map +1 -1
  419. package/fesm2022/ngwr-timeline.mjs +157 -70
  420. package/fesm2022/ngwr-timeline.mjs.map +1 -1
  421. package/fesm2022/ngwr-toast-testing.mjs +59 -99
  422. package/fesm2022/ngwr-toast-testing.mjs.map +1 -1
  423. package/fesm2022/ngwr-toast.mjs +769 -691
  424. package/fesm2022/ngwr-toast.mjs.map +1 -1
  425. package/fesm2022/ngwr-toolbar.mjs +73 -58
  426. package/fesm2022/ngwr-toolbar.mjs.map +1 -1
  427. package/fesm2022/ngwr-tour-testing.mjs +75 -171
  428. package/fesm2022/ngwr-tour-testing.mjs.map +1 -1
  429. package/fesm2022/ngwr-tour.mjs +333 -347
  430. package/fesm2022/ngwr-tour.mjs.map +1 -1
  431. package/fesm2022/ngwr-transfer-testing.mjs +195 -534
  432. package/fesm2022/ngwr-transfer-testing.mjs.map +1 -1
  433. package/fesm2022/ngwr-transfer.mjs +444 -322
  434. package/fesm2022/ngwr-transfer.mjs.map +1 -1
  435. package/fesm2022/ngwr-tree-testing.mjs +277 -754
  436. package/fesm2022/ngwr-tree-testing.mjs.map +1 -1
  437. package/fesm2022/ngwr-tree.mjs +884 -906
  438. package/fesm2022/ngwr-tree.mjs.map +1 -1
  439. package/fesm2022/ngwr-typewriter-testing.mjs +50 -237
  440. package/fesm2022/ngwr-typewriter-testing.mjs.map +1 -1
  441. package/fesm2022/ngwr-typewriter.mjs +461 -242
  442. package/fesm2022/ngwr-typewriter.mjs.map +1 -1
  443. package/fesm2022/ngwr-typography.mjs +142 -81
  444. package/fesm2022/ngwr-typography.mjs.map +1 -1
  445. package/fesm2022/ngwr-utils.mjs +304 -613
  446. package/fesm2022/ngwr-utils.mjs.map +1 -1
  447. package/fesm2022/ngwr-validators.mjs +179 -361
  448. package/fesm2022/ngwr-validators.mjs.map +1 -1
  449. package/fesm2022/ngwr-version.mjs +17 -47
  450. package/fesm2022/ngwr-version.mjs.map +1 -1
  451. package/fesm2022/ngwr-virtual-scroll.mjs +259 -125
  452. package/fesm2022/ngwr-virtual-scroll.mjs.map +1 -1
  453. package/fesm2022/ngwr-waves-testing.mjs +34 -125
  454. package/fesm2022/ngwr-waves-testing.mjs.map +1 -1
  455. package/fesm2022/ngwr-waves.mjs +816 -373
  456. package/fesm2022/ngwr-waves.mjs.map +1 -1
  457. package/fesm2022/ngwr-window-testing.mjs +171 -366
  458. package/fesm2022/ngwr-window-testing.mjs.map +1 -1
  459. package/fesm2022/ngwr-window.mjs +1437 -1351
  460. package/fesm2022/ngwr-window.mjs.map +1 -1
  461. package/fesm2022/ngwr.mjs +0 -4
  462. package/i18n/ar.json +0 -1
  463. package/i18n/cs.json +0 -1
  464. package/i18n/de.json +0 -1
  465. package/i18n/en.json +0 -1
  466. package/i18n/es.json +0 -1
  467. package/i18n/fr.json +0 -1
  468. package/i18n/he.json +0 -1
  469. package/i18n/hi.json +0 -1
  470. package/i18n/id.json +0 -1
  471. package/i18n/it.json +0 -1
  472. package/i18n/ja.json +0 -1
  473. package/i18n/ko.json +0 -1
  474. package/i18n/nl.json +0 -1
  475. package/i18n/pl.json +0 -1
  476. package/i18n/pt.json +0 -1
  477. package/i18n/ru.json +0 -1
  478. package/i18n/sv.json +0 -1
  479. package/i18n/tr.json +0 -1
  480. package/i18n/uk.json +0 -1
  481. package/i18n/vi.json +0 -1
  482. package/i18n/zh-TW.json +0 -1
  483. package/i18n/zh.json +0 -1
  484. package/input-number/styles/_index.scss +33 -35
  485. package/llms-full.txt +3 -3
  486. package/loading-bar/styles/_rules.scss +1 -1
  487. package/package.json +2 -2
  488. package/segmented/styles/_index.scss +10 -3
  489. package/theme/_index.scss +84 -0
  490. package/theme/styles/_contrast.scss +1 -1
  491. package/theme/styles/_dark.scss +59 -3
  492. package/types/ngwr-action-sheet-testing.d.ts +174 -200
  493. package/types/ngwr-action-sheet.d.ts +83 -45
  494. package/types/ngwr-affix.d.ts +27 -22
  495. package/types/ngwr-alert.d.ts +93 -59
  496. package/types/ngwr-anchor.d.ts +52 -35
  497. package/types/ngwr-aurora.d.ts +53 -35
  498. package/types/ngwr-avatar.d.ts +97 -81
  499. package/types/ngwr-back-top.d.ts +36 -23
  500. package/types/ngwr-badge.d.ts +160 -105
  501. package/types/ngwr-bar-chart-testing.d.ts +40 -58
  502. package/types/ngwr-bar-chart.d.ts +86 -60
  503. package/types/ngwr-blur-text-testing.d.ts +103 -121
  504. package/types/ngwr-blur-text.d.ts +99 -60
  505. package/types/ngwr-border-glow-testing.d.ts +155 -173
  506. package/types/ngwr-border-glow.d.ts +93 -45
  507. package/types/ngwr-breadcrumbs.d.ts +60 -32
  508. package/types/ngwr-burger.d.ts +38 -23
  509. package/types/ngwr-button-testing.d.ts +41 -59
  510. package/types/ngwr-button.d.ts +213 -163
  511. package/types/ngwr-calendar-heatmap-testing.d.ts +38 -56
  512. package/types/ngwr-calendar-heatmap.d.ts +151 -105
  513. package/types/ngwr-calendar-testing.d.ts +198 -224
  514. package/types/ngwr-calendar.d.ts +285 -246
  515. package/types/ngwr-card.d.ts +41 -23
  516. package/types/ngwr-carousel-testing.d.ts +196 -214
  517. package/types/ngwr-carousel.d.ts +173 -122
  518. package/types/ngwr-cascader-testing.d.ts +338 -372
  519. package/types/ngwr-cascader.d.ts +235 -161
  520. package/types/ngwr-checkbox-testing.d.ts +45 -63
  521. package/types/ngwr-checkbox.d.ts +252 -183
  522. package/types/ngwr-circular-text-testing.d.ts +108 -126
  523. package/types/ngwr-circular-text.d.ts +53 -41
  524. package/types/ngwr-click-spark.d.ts +82 -50
  525. package/types/ngwr-clipboard.d.ts +40 -44
  526. package/types/ngwr-collapse-testing.d.ts +193 -219
  527. package/types/ngwr-collapse.d.ts +82 -71
  528. package/types/ngwr-color-picker-testing.d.ts +211 -237
  529. package/types/ngwr-color-picker.d.ts +353 -300
  530. package/types/ngwr-command-palette-testing.d.ts +311 -345
  531. package/types/ngwr-command-palette.d.ts +257 -197
  532. package/types/ngwr-compare.d.ts +102 -67
  533. package/types/ngwr-confetti.d.ts +51 -55
  534. package/types/ngwr-config.d.ts +44 -71
  535. package/types/ngwr-context-menu-testing.d.ts +301 -327
  536. package/types/ngwr-context-menu.d.ts +350 -310
  537. package/types/ngwr-cookie.d.ts +37 -41
  538. package/types/ngwr-counter.d.ts +223 -128
  539. package/types/ngwr-date-adapters-fns.d.ts +40 -59
  540. package/types/ngwr-date-adapters-luxon.d.ts +61 -72
  541. package/types/ngwr-date-picker-testing.d.ts +295 -339
  542. package/types/ngwr-date-picker.d.ts +771 -583
  543. package/types/ngwr-date.d.ts +229 -258
  544. package/types/ngwr-decrypt-text-testing.d.ts +140 -158
  545. package/types/ngwr-decrypt-text.d.ts +104 -62
  546. package/types/ngwr-density.d.ts +42 -57
  547. package/types/ngwr-descriptions.d.ts +50 -27
  548. package/types/ngwr-dialog-testing.d.ts +36 -54
  549. package/types/ngwr-dialog.d.ts +166 -190
  550. package/types/ngwr-directives.d.ts +82 -60
  551. package/types/ngwr-divider.d.ts +78 -62
  552. package/types/ngwr-donut-chart-testing.d.ts +36 -54
  553. package/types/ngwr-donut-chart.d.ts +102 -66
  554. package/types/ngwr-drag-drop.d.ts +139 -106
  555. package/types/ngwr-drawer-testing.d.ts +141 -159
  556. package/types/ngwr-drawer.d.ts +374 -316
  557. package/types/ngwr-dropdown-testing.d.ts +128 -154
  558. package/types/ngwr-dropdown.d.ts +260 -166
  559. package/types/ngwr-editor-testing.d.ts +312 -330
  560. package/types/ngwr-editor.d.ts +435 -344
  561. package/types/ngwr-empty.d.ts +41 -28
  562. package/types/ngwr-event-calendar-testing.d.ts +221 -243
  563. package/types/ngwr-event-calendar.d.ts +340 -298
  564. package/types/ngwr-falling-text-testing.d.ts +108 -126
  565. package/types/ngwr-falling-text.d.ts +57 -35
  566. package/types/ngwr-file-upload-testing.d.ts +134 -151
  567. package/types/ngwr-file-upload.d.ts +210 -128
  568. package/types/ngwr-form-testing.d.ts +255 -282
  569. package/types/ngwr-form.d.ts +324 -306
  570. package/types/ngwr-fuzzy-text-testing.d.ts +63 -81
  571. package/types/ngwr-fuzzy-text.d.ts +152 -65
  572. package/types/ngwr-gauge-testing.d.ts +43 -61
  573. package/types/ngwr-gauge.d.ts +113 -61
  574. package/types/ngwr-glitch-text-testing.d.ts +125 -143
  575. package/types/ngwr-glitch-text.d.ts +47 -24
  576. package/types/ngwr-gradient-text-testing.d.ts +114 -132
  577. package/types/ngwr-gradient-text.d.ts +51 -24
  578. package/types/ngwr-graph-testing.d.ts +89 -115
  579. package/types/ngwr-graph.d.ts +137 -124
  580. package/types/ngwr-hotkey.d.ts +85 -75
  581. package/types/ngwr-i18n-ar.d.ts +2 -5
  582. package/types/ngwr-i18n-cs.d.ts +2 -5
  583. package/types/ngwr-i18n-de.d.ts +2 -5
  584. package/types/ngwr-i18n-en.d.ts +2 -5
  585. package/types/ngwr-i18n-es.d.ts +2 -5
  586. package/types/ngwr-i18n-fr.d.ts +2 -5
  587. package/types/ngwr-i18n-he.d.ts +2 -5
  588. package/types/ngwr-i18n-hi.d.ts +2 -5
  589. package/types/ngwr-i18n-id.d.ts +2 -5
  590. package/types/ngwr-i18n-it.d.ts +2 -5
  591. package/types/ngwr-i18n-ja.d.ts +2 -5
  592. package/types/ngwr-i18n-ko.d.ts +2 -5
  593. package/types/ngwr-i18n-nl.d.ts +2 -5
  594. package/types/ngwr-i18n-pl.d.ts +2 -5
  595. package/types/ngwr-i18n-pt.d.ts +2 -5
  596. package/types/ngwr-i18n-ru.d.ts +2 -5
  597. package/types/ngwr-i18n-sv.d.ts +2 -5
  598. package/types/ngwr-i18n-tr.d.ts +2 -5
  599. package/types/ngwr-i18n-uk.d.ts +2 -5
  600. package/types/ngwr-i18n-vi.d.ts +2 -5
  601. package/types/ngwr-i18n-zh-TW.d.ts +2 -5
  602. package/types/ngwr-i18n-zh.d.ts +2 -5
  603. package/types/ngwr-i18n.d.ts +202 -246
  604. package/types/ngwr-icon-adapters-feather.d.ts +2 -11
  605. package/types/ngwr-icon-adapters-lucide.d.ts +2 -12
  606. package/types/ngwr-icon.d.ts +62 -84
  607. package/types/ngwr-image-cropper-testing.d.ts +116 -134
  608. package/types/ngwr-image-cropper.d.ts +287 -252
  609. package/types/ngwr-input-number-testing.d.ts +164 -182
  610. package/types/ngwr-input-number.d.ts +238 -150
  611. package/types/ngwr-input-otp-testing.d.ts +210 -244
  612. package/types/ngwr-input-otp.d.ts +175 -123
  613. package/types/ngwr-input-testing.d.ts +42 -60
  614. package/types/ngwr-input.d.ts +118 -94
  615. package/types/ngwr-keyboard.d.ts +14 -12
  616. package/types/ngwr-knob-testing.d.ts +106 -124
  617. package/types/ngwr-knob.d.ts +203 -129
  618. package/types/ngwr-layout.d.ts +57 -40
  619. package/types/ngwr-lightbox-testing.d.ts +101 -119
  620. package/types/ngwr-lightbox.d.ts +140 -87
  621. package/types/ngwr-line-chart-testing.d.ts +51 -69
  622. package/types/ngwr-line-chart.d.ts +171 -134
  623. package/types/ngwr-list.d.ts +55 -27
  624. package/types/ngwr-loading-bar-router.d.ts +2 -12
  625. package/types/ngwr-loading-bar.d.ts +45 -39
  626. package/types/ngwr-markdown-testing.d.ts +323 -350
  627. package/types/ngwr-markdown.d.ts +432 -318
  628. package/types/ngwr-marquee-testing.d.ts +190 -216
  629. package/types/ngwr-marquee.d.ts +127 -75
  630. package/types/ngwr-media.d.ts +25 -39
  631. package/types/ngwr-mention-testing.d.ts +274 -300
  632. package/types/ngwr-mention.d.ts +249 -164
  633. package/types/ngwr-meta.d.ts +93 -108
  634. package/types/ngwr-meter-group-testing.d.ts +33 -51
  635. package/types/ngwr-meter-group.d.ts +86 -60
  636. package/types/ngwr-overlay.d.ts +57 -132
  637. package/types/ngwr-page-header.d.ts +32 -19
  638. package/types/ngwr-pagination-testing.d.ts +215 -233
  639. package/types/ngwr-pagination.d.ts +213 -141
  640. package/types/ngwr-pipes.d.ts +67 -84
  641. package/types/ngwr-platform.d.ts +52 -57
  642. package/types/ngwr-popconfirm-testing.d.ts +181 -199
  643. package/types/ngwr-popconfirm.d.ts +151 -82
  644. package/types/ngwr-popover-testing.d.ts +183 -201
  645. package/types/ngwr-popover.d.ts +291 -207
  646. package/types/ngwr-progress.d.ts +38 -25
  647. package/types/ngwr-pull-to-refresh.d.ts +55 -40
  648. package/types/ngwr-qr.d.ts +79 -37
  649. package/types/ngwr-radio-testing.d.ts +208 -234
  650. package/types/ngwr-radio.d.ts +171 -125
  651. package/types/ngwr-rating-testing.d.ts +218 -244
  652. package/types/ngwr-rating.d.ts +154 -111
  653. package/types/ngwr-result.d.ts +85 -41
  654. package/types/ngwr-rotating-text-testing.d.ts +107 -125
  655. package/types/ngwr-rotating-text.d.ts +96 -52
  656. package/types/ngwr-schema-form.d.ts +57 -49
  657. package/types/ngwr-scroll.d.ts +27 -31
  658. package/types/ngwr-segmented-testing.d.ts +333 -359
  659. package/types/ngwr-segmented.d.ts +189 -165
  660. package/types/ngwr-select-testing.d.ts +128 -154
  661. package/types/ngwr-select.d.ts +1103 -906
  662. package/types/ngwr-shiny-text-testing.d.ts +82 -100
  663. package/types/ngwr-shiny-text.d.ts +83 -36
  664. package/types/ngwr-sidebar.d.ts +108 -93
  665. package/types/ngwr-skeleton.d.ts +34 -26
  666. package/types/ngwr-slider-testing.d.ts +228 -254
  667. package/types/ngwr-slider.d.ts +244 -186
  668. package/types/ngwr-sparkline-testing.d.ts +29 -47
  669. package/types/ngwr-sparkline.d.ts +130 -88
  670. package/types/ngwr-speed-dial-testing.d.ts +129 -155
  671. package/types/ngwr-speed-dial.d.ts +92 -57
  672. package/types/ngwr-spinner.d.ts +30 -23
  673. package/types/ngwr-splash-cursor-testing.d.ts +42 -60
  674. package/types/ngwr-splash-cursor.d.ts +129 -61
  675. package/types/ngwr-split-text-testing.d.ts +119 -137
  676. package/types/ngwr-split-text.d.ts +120 -71
  677. package/types/ngwr-splitter-testing.d.ts +114 -132
  678. package/types/ngwr-splitter.d.ts +85 -55
  679. package/types/ngwr-spotlight-card-testing.d.ts +177 -203
  680. package/types/ngwr-spotlight-card.d.ts +50 -32
  681. package/types/ngwr-squircle.d.ts +112 -70
  682. package/types/ngwr-star-border-testing.d.ts +74 -92
  683. package/types/ngwr-star-border.d.ts +42 -20
  684. package/types/ngwr-statistic.d.ts +210 -130
  685. package/types/ngwr-stepper-testing.d.ts +258 -284
  686. package/types/ngwr-stepper.d.ts +112 -75
  687. package/types/ngwr-storage.d.ts +96 -118
  688. package/types/ngwr-switch-testing.d.ts +26 -44
  689. package/types/ngwr-switch.d.ts +99 -62
  690. package/types/ngwr-table-testing.d.ts +291 -333
  691. package/types/ngwr-table.d.ts +930 -707
  692. package/types/ngwr-tabs-router.d.ts +21 -24
  693. package/types/ngwr-tabs-testing.d.ts +354 -380
  694. package/types/ngwr-tabs.d.ts +169 -155
  695. package/types/ngwr-textarea-testing.d.ts +123 -141
  696. package/types/ngwr-textarea.d.ts +166 -105
  697. package/types/ngwr-theme.d.ts +81 -163
  698. package/types/ngwr-tilt-card-testing.d.ts +94 -112
  699. package/types/ngwr-tilt-card.d.ts +64 -35
  700. package/types/ngwr-timeline.d.ts +36 -19
  701. package/types/ngwr-toast-testing.d.ts +37 -55
  702. package/types/ngwr-toast.d.ts +165 -209
  703. package/types/ngwr-toolbar.d.ts +17 -14
  704. package/types/ngwr-tour-testing.d.ts +84 -102
  705. package/types/ngwr-tour.d.ts +142 -144
  706. package/types/ngwr-transfer-testing.d.ts +293 -328
  707. package/types/ngwr-transfer.d.ts +228 -159
  708. package/types/ngwr-tree-testing.d.ts +428 -454
  709. package/types/ngwr-tree.d.ts +407 -296
  710. package/types/ngwr-typewriter-testing.d.ts +125 -143
  711. package/types/ngwr-typewriter.d.ts +137 -63
  712. package/types/ngwr-typography.d.ts +49 -27
  713. package/types/ngwr-utils.d.ts +100 -107
  714. package/types/ngwr-validators.d.ts +94 -104
  715. package/types/ngwr-version.d.ts +3 -14
  716. package/types/ngwr-virtual-scroll.d.ts +86 -58
  717. package/types/ngwr-waves-testing.d.ts +61 -79
  718. package/types/ngwr-waves.d.ts +116 -63
  719. package/types/ngwr-window-testing.d.ts +178 -204
  720. package/types/ngwr-window.d.ts +299 -325
  721. package/types/ngwr.d.ts +1 -2
  722. package/fesm2022/ngwr.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ngwr-slider-testing.mjs","sources":["../../../projects/lib/slider/testing/wr-slider-thumb-harness.ts","../../../projects/lib/slider/testing/wr-slider-harness.ts","../../../projects/lib/slider/testing/ngwr-slider-testing.ts"],"sourcesContent":["/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n */\n\nimport { ComponentHarness, HarnessPredicate, TestKey } from '@angular/cdk/testing';\n\nimport type { WrSliderThumbHarnessFilters, WrSliderThumbPosition } from './interfaces';\n\n/** How many key presses {@link WrSliderThumbHarness.setValue} spends before it gives up. */\nconst MAX_PRESSES = 1000;\n\n/**\n * Test harness for one thumb of a `<wr-slider>`.\n *\n * A single-thumb slider has exactly one; a `range` one has two, and each thumb\n * is the other's limit — the lower thumb's `aria-valuemax` is wherever the upper\n * thumb is standing, and vice versa. So {@link getMin} / {@link getMax} answer\n * the room THIS thumb has, not the slider's bounds, which is exactly what a\n * screen reader announces and exactly the window {@link setValue} can reach.\n *\n * Every write here is a KEY PRESS, because a drag is not something a unit test\n * can perform — see {@link setValue}.\n *\n * Every press is on the BLOCK axis — `ArrowUp` / `ArrowDown`, `PageUp` /\n * `PageDown`, `Home` / `End` — so the harness means the same thing in both\n * reading directions. That is not a detail: the component's ← / → follow the\n * VISUAL track, so under `dir=\"rtl\"` a right-arrow LOWERS the value, and a\n * harness that pressed it would have `stepUp()` stepping down while every LTR\n * spec stayed green. It cannot detect the direction to compensate either —\n * `Directionality` is injected, not published to the DOM — so it stays on the\n * axis `dir` does not govern.\n *\n * @example\n * ```ts\n * const upper = await slider.getHighThumb();\n *\n * await upper.setValue(90);\n * expect(await upper.getValue()).toBe(90);\n * ```\n *\n * @see https://ngwr.dev/guides/testing\n */\nexport class WrSliderThumbHarness extends ComponentHarness {\n /**\n * The thumb is a real `<button role=\"slider\">`, so it is focusable without a\n * `tabindex` and leaves the tab order by itself when disabled. Anchored on the\n * BEM class rather than on `[role=\"slider\"]`: the class also carries the\n * `--low` / `--high` modifier this harness reads.\n */\n static hostSelector = '.wr-slider__thumb';\n\n /** Build a predicate that narrows the query — pass to `getHarness` / `getAllHarnesses`. */\n static with(options: WrSliderThumbHarnessFilters = {}): HarnessPredicate<WrSliderThumbHarness> {\n return new HarnessPredicate(WrSliderThumbHarness, options)\n .addOption('position', options.position, async (harness, position) => (await harness.getPosition()) === position)\n .addOption('value', options.value, async (harness, value) => (await harness.getValue()) === value)\n .addOption('label', options.label, (harness, label) => HarnessPredicate.stringMatches(harness.getLabel(), label));\n }\n\n /** Which end this thumb is. A single-thumb slider's thumb is the `'low'` one. */\n async getPosition(): Promise<WrSliderThumbPosition> {\n return (await (await this.host()).hasClass('wr-slider__thumb--high')) ? 'high' : 'low';\n }\n\n /** Where the thumb is standing, from `aria-valuenow` — the number a screen reader reads out. */\n async getValue(): Promise<number> {\n return this.numeric('aria-valuenow');\n }\n\n /**\n * The lowest value THIS thumb can reach (`aria-valuemin`).\n *\n * On a range slider's upper thumb that is the lower thumb, not the slider's\n * `min` — the two cannot cross, so the neighbour is the real floor.\n */\n async getMin(): Promise<number> {\n return this.numeric('aria-valuemin');\n }\n\n /**\n * The highest value THIS thumb can reach (`aria-valuemax`).\n *\n * On a range slider's lower thumb that is the upper thumb, not the slider's\n * `max`.\n */\n async getMax(): Promise<number> {\n return this.numeric('aria-valuemax');\n }\n\n /** The thumb's accessible name — `'Value'`, or `'Lower value'` / `'Upper value'` in range mode. */\n async getLabel(): Promise<string | null> {\n return (await this.host()).getAttribute('aria-label');\n }\n\n /** What a screen reader is told this control is. The role is why the arrows mean anything here. */\n async getRole(): Promise<string | null> {\n return (await this.host()).getAttribute('role');\n }\n\n /** Whether the thumb refuses the keyboard. Read from the button's native `disabled`. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('disabled');\n }\n\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /**\n * One step up (`ArrowUp`). A disabled thumb does not move.\n *\n * `ArrowRight` is the same key press in an LTR slider and the OPPOSITE one in\n * an RTL slider, so the vertical arrow is the one that means \"up\" everywhere.\n */\n async stepUp(): Promise<void> {\n return this.press(TestKey.UP_ARROW);\n }\n\n /** One step down (`ArrowDown`; `ArrowLeft` only agrees in LTR — see {@link stepUp}). */\n async stepDown(): Promise<void> {\n return this.press(TestKey.DOWN_ARROW);\n }\n\n /** Ten steps up (`PageUp`; `Shift`+arrow is the same stride). */\n async largeStepUp(): Promise<void> {\n return this.press(TestKey.PAGE_UP);\n }\n\n /** Ten steps down (`PageDown`; `Shift`+arrow is the same stride). */\n async largeStepDown(): Promise<void> {\n return this.press(TestKey.PAGE_DOWN);\n }\n\n /**\n * `Home` — jump to the lowest value this thumb can reach.\n *\n * On a range slider's UPPER thumb that lands on the lower thumb, not on the\n * slider's `min`: the component asks for `min` and then refuses to let the\n * ends cross, so the range collapses instead of inverting.\n */\n async toMin(): Promise<void> {\n return this.press(TestKey.HOME);\n }\n\n /**\n * `End` — jump to the highest value this thumb can reach.\n *\n * On a range slider's LOWER thumb that lands on the upper thumb, not on the\n * slider's `max`, for the same reason as {@link toMin}.\n */\n async toMax(): Promise<void> {\n return this.press(TestKey.END);\n }\n\n /**\n * Walk the thumb to `value` FROM THE KEYBOARD — `PageUp` / `PageDown` for the\n * distance, arrows for the last stretch, `Home` / `End` for the bounds. That\n * is the accessible path, and the only one a unit test can trust.\n *\n * There is deliberately no drag. jsdom has no layout: the track measures 0×0\n * and `getBoundingClientRect()` answers all zeros, while the component turns a\n * pointer into a value by dividing the offset by the track width. Every\n * positive offset therefore divides by zero, clamps to a ratio of 1 and writes\n * the slider's MAX — quietly, with no error to notice. A coordinate cannot\n * mean anything here.\n *\n * It costs one press per stride, so the walk is not free: crossing most of a\n * 0–100 range costs ~19 presses at `step=\"1\"` and ~109 at `step=\"0.1\"`.\n * Landing exactly on a bound is one press, whatever the step. The walk gives\n * up after 1000 presses — a 0–100 range reaches that at `step=\"0.01\"` or finer\n * — and throws rather than spin.\n *\n * A bound the step grid misses is announced but not reachable: `aria-valuemax`\n * is the `max` input, while the component snaps every key press onto whole\n * steps from `min`, so `max=\"100\" step=\"3\"` stops at 99. That is the off-grid\n * throw, arriving for `setValue(100)`.\n *\n * Either the thumb ends up exactly on `value` or this throws: when `value` is\n * outside the thumb's window (the other thumb is one end of it in range mode),\n * when the thumb is disabled, and when `value` is not on the step grid — on\n * the last one the thumb is left at the nearest value it could reach.\n */\n async setValue(value: number): Promise<void> {\n if (await this.isDisabled()) {\n throw new Error('WrSliderThumbHarness.setValue(): the slider is disabled, so the keyboard cannot move it.');\n }\n\n const [min, max] = [await this.getMin(), await this.getMax()];\n if (value < min || value > max) {\n throw new Error(\n `WrSliderThumbHarness.setValue(): ${value} is outside the [${min}, ${max}] window this thumb can ` +\n 'reach. On a range slider the other thumb is one end of that window — move it first.'\n );\n }\n\n let current = await this.getValue();\n if (current === value) return;\n // The bounds are one key press, and on a range thumb `Home` / `End` stop at\n // the neighbour — which is precisely this window's end. The landing is still\n // checked: a `max` that is not a whole number of steps from `min` is\n // announced by `aria-valuemax` and refused by the component's snapping.\n if (value === min || value === max) {\n await (value === min ? this.toMin() : this.toMax());\n return this.assertSettled(await this.getValue(), value, min);\n }\n\n let presses = 0;\n // Start on the ten-step stride: neither stride is published to the DOM, so\n // the only way to learn one is to take it and look. One overshoot is pressed\n // back off and the rest of the walk goes a single step at a time.\n let striding = true;\n\n while (current !== value) {\n if (presses >= MAX_PRESSES) {\n throw new Error(\n `WrSliderThumbHarness.setValue(): gave up walking to ${value} after ${MAX_PRESSES} key presses ` +\n `(reached ${current}). A step this fine is not something a keyboard reaches — write the ` +\n 'slider through its `[(value)]` model instead.'\n );\n }\n\n // Re-derived every pass so the walk follows wherever the thumb actually\n // landed rather than where a stride aimed. It never has to reverse: the\n // window check above keeps the target inside [min, max], so pressing back\n // off an overshoot lands at or short of where the stride began — on the\n // same side of the target it started on.\n const direction: 1 | -1 = value > current ? 1 : -1;\n await this.press(this.strideKey(direction, striding));\n presses++;\n\n const next = await this.getValue();\n // Nothing moved: the thumb is pinned against a bound or its neighbour, and\n // pressing again would only spin. The final check below reports where.\n if (next === current) break;\n\n const overshot = direction === 1 ? next > value : next < value;\n current = next;\n if (!overshot) continue;\n\n await this.press(this.strideKey(direction === 1 ? -1 : 1, striding));\n presses++;\n current = await this.getValue();\n\n // Single steps straddling the target means it is not on the step grid.\n if (!striding) break;\n striding = false;\n }\n\n this.assertSettled(current, value, min);\n }\n\n /**\n * The landing check every path through {@link setValue} ends on: exactly the\n * value asked for, or an error naming where the thumb stopped instead.\n */\n private assertSettled(current: number, value: number, min: number): void {\n if (current === value) return;\n throw new Error(\n `WrSliderThumbHarness.setValue(): the keyboard settled on ${current} instead of ${value}. The thumb ` +\n `moves in whole steps from ${min}, so only values on that grid are reachable.`\n );\n }\n\n /** The key that moves the thumb one stride in `direction`. */\n private strideKey(direction: 1 | -1, striding: boolean): TestKey {\n if (striding) return direction === 1 ? TestKey.PAGE_UP : TestKey.PAGE_DOWN;\n // The vertical arrows, for the reason {@link stepUp} gives: the horizontal\n // pair swaps meaning under `dir=\"rtl\"`, which would send the fine stretch of\n // the walk away from its target.\n return direction === 1 ? TestKey.UP_ARROW : TestKey.DOWN_ARROW;\n }\n\n /**\n * Press a key on the thumb.\n *\n * `sendKeys` focuses the element first, so this is the whole gesture a user\n * makes — the component listens for `keydown` on the thumb itself.\n */\n private async press(key: TestKey): Promise<void> {\n return (await this.host()).sendKeys(key);\n }\n\n /**\n * One of the ARIA range attributes as a number.\n *\n * Throws instead of handing back `NaN`: a slider whose `aria-valuenow` is not\n * a number is broken in a way every later assertion would describe badly.\n */\n private async numeric(attribute: string): Promise<number> {\n const raw = await (await this.host()).getAttribute(attribute);\n const value = raw === null ? Number.NaN : Number.parseFloat(raw);\n\n if (Number.isNaN(value)) {\n throw new Error(`WrSliderThumbHarness: the thumb's ${attribute} is ${JSON.stringify(raw)}, not a number.`);\n }\n return value;\n }\n}\n","/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n */\n\nimport { ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';\n\nimport type { WrSliderValue } from 'ngwr/slider';\n\nimport type { WrSliderHarnessFilters, WrSliderThumbHarnessFilters } from './interfaces';\nimport { WrSliderThumbHarness } from './wr-slider-thumb-harness';\n\n/** Element-wise comparison for the `value` filter — a tuple never matches a plain number. */\nfunction sameValue(actual: WrSliderValue, expected: WrSliderValue): boolean {\n if (typeof actual === 'number') return actual === expected;\n if (typeof expected === 'number') return false;\n return actual[0] === expected[0] && actual[1] === expected[1];\n}\n\n/**\n * Test harness for `<wr-slider>` — single-thumb and `range`.\n *\n * Every NUMBER it reads comes off the thumbs' ARIA range trio (`aria-valuenow`,\n * `aria-valuemin`, `aria-valuemax`), which is what a screen reader is told and\n * the only place the slider publishes its value. The mode comes off the host's\n * `wr-slider--range` class and {@link getLabelText} off the rendered text.\n *\n * Everything it WRITES is a key press. A slider is a pointer control, but a\n * pointer control cannot be driven by coordinates in jsdom — there is no layout,\n * so the track measures 0×0 and the component divides every offset by that\n * width: a positive one writes the slider's MAX and `clientX: 0` writes `NaN`,\n * neither of them the value asked for. The keyboard is both the accessible path\n * and the only honest one here; {@link WrSliderThumbHarness.setValue} spells out\n * what the walk costs, and {@link WrSliderThumbHarness} why every one of those\n * presses is on the block axis, which `dir` does not turn around.\n *\n * The `step` is deliberately not readable: the component publishes it nowhere in\n * the DOM (ARIA has no attribute for it), so a spec that needs the number should\n * measure it — `stepUp()` moves by exactly one step.\n *\n * @example\n * ```ts\n * const volume = await loader.getHarness(WrSliderHarness);\n *\n * await volume.setValue(70);\n * expect(await volume.getValue()).toBe(70);\n *\n * const span = await loader.getHarness(WrSliderHarness.with({ range: true }));\n * await span.setRange(30, 60);\n * ```\n *\n * @see https://ngwr.dev/guides/testing\n */\nexport class WrSliderHarness extends ComponentHarness {\n static hostSelector = 'wr-slider';\n\n /** Build a predicate that narrows the query — pass to `getHarness` / `getAllHarnesses`. */\n static with(options: WrSliderHarnessFilters = {}): HarnessPredicate<WrSliderHarness> {\n return new HarnessPredicate(WrSliderHarness, options)\n .addOption('value', options.value, async (harness, value) => sameValue(await harness.getValue(), value))\n .addOption('range', options.range, async (harness, range) => (await harness.isRange()) === range)\n .addOption('disabled', options.disabled, async (harness, disabled) => (await harness.isDisabled()) === disabled)\n .addOption('labelText', options.labelText, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getLabelText(), text)\n );\n }\n\n /** Whether the slider has two thumbs and answers with a `[low, high]` tuple. */\n async isRange(): Promise<boolean> {\n return (await this.host()).hasClass('wr-slider--range');\n }\n\n /**\n * Whether the slider refuses interaction.\n *\n * Read from the thumb's native `disabled` rather than from the\n * `wr-slider--disabled` class: the class is paint, while `disabled` on the\n * button is what takes the thumb out of the tab order and what assistive tech\n * reports.\n */\n async isDisabled(): Promise<boolean> {\n return (await this.getLowThumb()).isDisabled();\n }\n\n /**\n * The current value, in the shape the model uses: a plain number for one\n * thumb, `[low, high]` for two.\n */\n async getValue(): Promise<WrSliderValue> {\n const values = await Promise.all((await this.getThumbs()).map(thumb => thumb.getValue()));\n return values.length > 1 ? ([values[0], values[1]] as const) : values[0];\n }\n\n /** The slider's lower bound. */\n async getMin(): Promise<number> {\n return (await this.getThumbs())[0].getMin();\n }\n\n /**\n * The slider's upper bound.\n *\n * Taken from the LAST thumb, because in range mode the thumbs bound each\n * other: the lower one's `aria-valuemax` is wherever the upper one is\n * standing, so only the upper thumb knows the real ceiling.\n */\n async getMax(): Promise<number> {\n const thumbs = await this.getThumbs();\n return thumbs[thumbs.length - 1].getMax();\n }\n\n /**\n * The text the slider prints under the track, or `null` when `showLabel` is\n * off.\n *\n * A range slider joins its ends with an EN DASH — `'20 – 80'`, U+2013 — so an\n * assertion typed with a hyphen will not match.\n */\n async getLabelText(): Promise<string | null> {\n const label = await this.locatorForOptional('.wr-slider__label')();\n return label ? label.text() : null;\n }\n\n /** The slider's thumbs in DOM order: the lower one first. */\n async getThumbs(filters: WrSliderThumbHarnessFilters = {}): Promise<WrSliderThumbHarness[]> {\n return this.locatorForAll(WrSliderThumbHarness.with(filters))();\n }\n\n /** The only thumb of a single-thumb slider, or the lower one of a range slider. */\n async getLowThumb(): Promise<WrSliderThumbHarness> {\n return this.locatorFor(WrSliderThumbHarness.with({ position: 'low' }))();\n }\n\n /** The upper thumb. Throws on a single-thumb slider, which has no such part. */\n async getHighThumb(): Promise<WrSliderThumbHarness> {\n const thumb = await this.locatorForOptional(WrSliderThumbHarness.with({ position: 'high' }))();\n if (!thumb) {\n throw new Error('WrSliderHarness.getHighThumb(): this slider has one thumb — only a `range` slider has two.');\n }\n return thumb;\n }\n\n /**\n * Walk the slider to `value` from the keyboard.\n *\n * Single-thumb only — {@link setRange} moves both ends. See\n * {@link WrSliderThumbHarness.setValue} for what the walk costs and when it\n * throws.\n */\n async setValue(value: number): Promise<void> {\n return (await this.single('setValue')).setValue(value);\n }\n\n /**\n * Walk both ends of a range slider to `[low, high]`.\n *\n * The far end moves FIRST. The thumbs bound each other, so writing `[90, 95]`\n * over `[20, 80]` lower-end-first would be refused outright — 90 is outside\n * the `[0, 80]` window the upper thumb leaves the lower one.\n */\n async setRange(low: number, high: number): Promise<void> {\n if (!(await this.isRange())) {\n throw new Error('WrSliderHarness.setRange(): this slider has one thumb — add `range` to it, or call setValue().');\n }\n if (low > high) {\n throw new Error(`WrSliderHarness.setRange(): ${low} is above ${high}, and the thumbs cannot cross.`);\n }\n\n const lowThumb = await this.getLowThumb();\n const highThumb = await this.getHighThumb();\n\n if (high >= (await highThumb.getValue())) {\n await highThumb.setValue(high);\n await lowThumb.setValue(low);\n return;\n }\n\n await lowThumb.setValue(low);\n await highThumb.setValue(high);\n }\n\n /** One step up (`ArrowUp`). Single-thumb only. A disabled slider does not move. */\n async stepUp(): Promise<void> {\n return (await this.single('stepUp')).stepUp();\n }\n\n /** One step down (`ArrowDown`). Single-thumb only. A disabled slider does not move. */\n async stepDown(): Promise<void> {\n return (await this.single('stepDown')).stepDown();\n }\n\n /** `Home` — jump to the slider's `min`. Single-thumb only. */\n async toMin(): Promise<void> {\n return (await this.single('toMin')).toMin();\n }\n\n /** `End` — jump to the slider's `max`. Single-thumb only. */\n async toMax(): Promise<void> {\n return (await this.single('toMax')).toMax();\n }\n\n /**\n * Move keyboard focus to the slider's first thumb. A range slider's thumbs are\n * two separate tab stops (both are plain buttons — there is no roving\n * `tabindex`), so reach the other one through {@link getHighThumb}.\n */\n async focus(): Promise<void> {\n return (await this.getLowThumb()).focus();\n }\n\n /** Whether any of the slider's thumbs holds focus. */\n async isFocused(): Promise<boolean> {\n const focused = await Promise.all((await this.getThumbs()).map(thumb => thumb.isFocused()));\n return focused.includes(true);\n }\n\n /**\n * The one thumb a single-thumb convenience call means.\n *\n * Range mode gets an error rather than a guess: \"step this slider up\" has two\n * possible answers there, and picking one silently is how a spec ends up\n * asserting against the end it did not move.\n */\n private async single(caller: string): Promise<WrSliderThumbHarness> {\n if (await this.isRange()) {\n throw new Error(\n `WrSliderHarness.${caller}(): this slider has two thumbs — use setRange(), or reach for one end ` +\n 'with getLowThumb() / getHighThumb().'\n );\n }\n return this.getLowThumb();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngwr-slider-testing.mjs","names":[],"sources":["../../../projects/lib/slider/testing/wr-slider-thumb-harness.ts","../../../projects/lib/slider/testing/wr-slider-harness.ts"],"sourcesContent":["/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n */\n\nimport { ComponentHarness, HarnessPredicate, TestKey } from '@angular/cdk/testing';\n\nimport type { WrSliderThumbHarnessFilters, WrSliderThumbPosition } from './interfaces';\n\n/** How many key presses {@link WrSliderThumbHarness.setValue} spends before it gives up. */\nconst MAX_PRESSES = 1000;\n\n/**\n * Test harness for one thumb of a `<wr-slider>`.\n *\n * A single-thumb slider has exactly one; a `range` one has two, and each thumb\n * is the other's limit — the lower thumb's `aria-valuemax` is wherever the upper\n * thumb is standing, and vice versa. So {@link getMin} / {@link getMax} answer\n * the room THIS thumb has, not the slider's bounds, which is exactly what a\n * screen reader announces and exactly the window {@link setValue} can reach.\n *\n * Every write here is a KEY PRESS, because a drag is not something a unit test\n * can perform — see {@link setValue}.\n *\n * Every press is on the BLOCK axis — `ArrowUp` / `ArrowDown`, `PageUp` /\n * `PageDown`, `Home` / `End` — so the harness means the same thing in both\n * reading directions. That is not a detail: the component's ← / → follow the\n * VISUAL track, so under `dir=\"rtl\"` a right-arrow LOWERS the value, and a\n * harness that pressed it would have `stepUp()` stepping down while every LTR\n * spec stayed green. It cannot detect the direction to compensate either —\n * `Directionality` is injected, not published to the DOM — so it stays on the\n * axis `dir` does not govern.\n *\n * @example\n * ```ts\n * const upper = await slider.getHighThumb();\n *\n * await upper.setValue(90);\n * expect(await upper.getValue()).toBe(90);\n * ```\n *\n * @see https://ngwr.dev/guides/testing\n */\nexport class WrSliderThumbHarness extends ComponentHarness {\n /**\n * The thumb is a real `<button role=\"slider\">`, so it is focusable without a\n * `tabindex` and leaves the tab order by itself when disabled. Anchored on the\n * BEM class rather than on `[role=\"slider\"]`: the class also carries the\n * `--low` / `--high` modifier this harness reads.\n */\n static hostSelector = '.wr-slider__thumb';\n\n /** Build a predicate that narrows the query — pass to `getHarness` / `getAllHarnesses`. */\n static with(options: WrSliderThumbHarnessFilters = {}): HarnessPredicate<WrSliderThumbHarness> {\n return new HarnessPredicate(WrSliderThumbHarness, options)\n .addOption('position', options.position, async (harness, position) => (await harness.getPosition()) === position)\n .addOption('value', options.value, async (harness, value) => (await harness.getValue()) === value)\n .addOption('label', options.label, (harness, label) => HarnessPredicate.stringMatches(harness.getLabel(), label));\n }\n\n /** Which end this thumb is. A single-thumb slider's thumb is the `'low'` one. */\n async getPosition(): Promise<WrSliderThumbPosition> {\n return (await (await this.host()).hasClass('wr-slider__thumb--high')) ? 'high' : 'low';\n }\n\n /** Where the thumb is standing, from `aria-valuenow` — the number a screen reader reads out. */\n async getValue(): Promise<number> {\n return this.numeric('aria-valuenow');\n }\n\n /**\n * The lowest value THIS thumb can reach (`aria-valuemin`).\n *\n * On a range slider's upper thumb that is the lower thumb, not the slider's\n * `min` — the two cannot cross, so the neighbour is the real floor.\n */\n async getMin(): Promise<number> {\n return this.numeric('aria-valuemin');\n }\n\n /**\n * The highest value THIS thumb can reach (`aria-valuemax`).\n *\n * On a range slider's lower thumb that is the upper thumb, not the slider's\n * `max`.\n */\n async getMax(): Promise<number> {\n return this.numeric('aria-valuemax');\n }\n\n /** The thumb's accessible name — `'Value'`, or `'Lower value'` / `'Upper value'` in range mode. */\n async getLabel(): Promise<string | null> {\n return (await this.host()).getAttribute('aria-label');\n }\n\n /** What a screen reader is told this control is. The role is why the arrows mean anything here. */\n async getRole(): Promise<string | null> {\n return (await this.host()).getAttribute('role');\n }\n\n /** Whether the thumb refuses the keyboard. Read from the button's native `disabled`. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('disabled');\n }\n\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /**\n * One step up (`ArrowUp`). A disabled thumb does not move.\n *\n * `ArrowRight` is the same key press in an LTR slider and the OPPOSITE one in\n * an RTL slider, so the vertical arrow is the one that means \"up\" everywhere.\n */\n async stepUp(): Promise<void> {\n return this.press(TestKey.UP_ARROW);\n }\n\n /** One step down (`ArrowDown`; `ArrowLeft` only agrees in LTR — see {@link stepUp}). */\n async stepDown(): Promise<void> {\n return this.press(TestKey.DOWN_ARROW);\n }\n\n /** Ten steps up (`PageUp`; `Shift`+arrow is the same stride). */\n async largeStepUp(): Promise<void> {\n return this.press(TestKey.PAGE_UP);\n }\n\n /** Ten steps down (`PageDown`; `Shift`+arrow is the same stride). */\n async largeStepDown(): Promise<void> {\n return this.press(TestKey.PAGE_DOWN);\n }\n\n /**\n * `Home` — jump to the lowest value this thumb can reach.\n *\n * On a range slider's UPPER thumb that lands on the lower thumb, not on the\n * slider's `min`: the component asks for `min` and then refuses to let the\n * ends cross, so the range collapses instead of inverting.\n */\n async toMin(): Promise<void> {\n return this.press(TestKey.HOME);\n }\n\n /**\n * `End` — jump to the highest value this thumb can reach.\n *\n * On a range slider's LOWER thumb that lands on the upper thumb, not on the\n * slider's `max`, for the same reason as {@link toMin}.\n */\n async toMax(): Promise<void> {\n return this.press(TestKey.END);\n }\n\n /**\n * Walk the thumb to `value` FROM THE KEYBOARD — `PageUp` / `PageDown` for the\n * distance, arrows for the last stretch, `Home` / `End` for the bounds. That\n * is the accessible path, and the only one a unit test can trust.\n *\n * There is deliberately no drag. jsdom has no layout: the track measures 0×0\n * and `getBoundingClientRect()` answers all zeros, while the component turns a\n * pointer into a value by dividing the offset by the track width. Every\n * positive offset therefore divides by zero, clamps to a ratio of 1 and writes\n * the slider's MAX — quietly, with no error to notice. A coordinate cannot\n * mean anything here.\n *\n * It costs one press per stride, so the walk is not free: crossing most of a\n * 0–100 range costs ~19 presses at `step=\"1\"` and ~109 at `step=\"0.1\"`.\n * Landing exactly on a bound is one press, whatever the step. The walk gives\n * up after 1000 presses — a 0–100 range reaches that at `step=\"0.01\"` or finer\n * — and throws rather than spin.\n *\n * A bound the step grid misses is announced but not reachable: `aria-valuemax`\n * is the `max` input, while the component snaps every key press onto whole\n * steps from `min`, so `max=\"100\" step=\"3\"` stops at 99. That is the off-grid\n * throw, arriving for `setValue(100)`.\n *\n * Either the thumb ends up exactly on `value` or this throws: when `value` is\n * outside the thumb's window (the other thumb is one end of it in range mode),\n * when the thumb is disabled, and when `value` is not on the step grid — on\n * the last one the thumb is left at the nearest value it could reach.\n */\n async setValue(value: number): Promise<void> {\n if (await this.isDisabled()) {\n throw new Error('WrSliderThumbHarness.setValue(): the slider is disabled, so the keyboard cannot move it.');\n }\n\n const [min, max] = [await this.getMin(), await this.getMax()];\n if (value < min || value > max) {\n throw new Error(\n `WrSliderThumbHarness.setValue(): ${value} is outside the [${min}, ${max}] window this thumb can ` +\n 'reach. On a range slider the other thumb is one end of that window — move it first.'\n );\n }\n\n let current = await this.getValue();\n if (current === value) return;\n // The bounds are one key press, and on a range thumb `Home` / `End` stop at\n // the neighbour — which is precisely this window's end. The landing is still\n // checked: a `max` that is not a whole number of steps from `min` is\n // announced by `aria-valuemax` and refused by the component's snapping.\n if (value === min || value === max) {\n await (value === min ? this.toMin() : this.toMax());\n return this.assertSettled(await this.getValue(), value, min);\n }\n\n let presses = 0;\n // Start on the ten-step stride: neither stride is published to the DOM, so\n // the only way to learn one is to take it and look. One overshoot is pressed\n // back off and the rest of the walk goes a single step at a time.\n let striding = true;\n\n while (current !== value) {\n if (presses >= MAX_PRESSES) {\n throw new Error(\n `WrSliderThumbHarness.setValue(): gave up walking to ${value} after ${MAX_PRESSES} key presses ` +\n `(reached ${current}). A step this fine is not something a keyboard reaches — write the ` +\n 'slider through its `[(value)]` model instead.'\n );\n }\n\n // Re-derived every pass so the walk follows wherever the thumb actually\n // landed rather than where a stride aimed. It never has to reverse: the\n // window check above keeps the target inside [min, max], so pressing back\n // off an overshoot lands at or short of where the stride began — on the\n // same side of the target it started on.\n const direction: 1 | -1 = value > current ? 1 : -1;\n await this.press(this.strideKey(direction, striding));\n presses++;\n\n const next = await this.getValue();\n // Nothing moved: the thumb is pinned against a bound or its neighbour, and\n // pressing again would only spin. The final check below reports where.\n if (next === current) break;\n\n const overshot = direction === 1 ? next > value : next < value;\n current = next;\n if (!overshot) continue;\n\n await this.press(this.strideKey(direction === 1 ? -1 : 1, striding));\n presses++;\n current = await this.getValue();\n\n // Single steps straddling the target means it is not on the step grid.\n if (!striding) break;\n striding = false;\n }\n\n this.assertSettled(current, value, min);\n }\n\n /**\n * The landing check every path through {@link setValue} ends on: exactly the\n * value asked for, or an error naming where the thumb stopped instead.\n */\n private assertSettled(current: number, value: number, min: number): void {\n if (current === value) return;\n throw new Error(\n `WrSliderThumbHarness.setValue(): the keyboard settled on ${current} instead of ${value}. The thumb ` +\n `moves in whole steps from ${min}, so only values on that grid are reachable.`\n );\n }\n\n /** The key that moves the thumb one stride in `direction`. */\n private strideKey(direction: 1 | -1, striding: boolean): TestKey {\n if (striding) return direction === 1 ? TestKey.PAGE_UP : TestKey.PAGE_DOWN;\n // The vertical arrows, for the reason {@link stepUp} gives: the horizontal\n // pair swaps meaning under `dir=\"rtl\"`, which would send the fine stretch of\n // the walk away from its target.\n return direction === 1 ? TestKey.UP_ARROW : TestKey.DOWN_ARROW;\n }\n\n /**\n * Press a key on the thumb.\n *\n * `sendKeys` focuses the element first, so this is the whole gesture a user\n * makes — the component listens for `keydown` on the thumb itself.\n */\n private async press(key: TestKey): Promise<void> {\n return (await this.host()).sendKeys(key);\n }\n\n /**\n * One of the ARIA range attributes as a number.\n *\n * Throws instead of handing back `NaN`: a slider whose `aria-valuenow` is not\n * a number is broken in a way every later assertion would describe badly.\n */\n private async numeric(attribute: string): Promise<number> {\n const raw = await (await this.host()).getAttribute(attribute);\n const value = raw === null ? Number.NaN : Number.parseFloat(raw);\n\n if (Number.isNaN(value)) {\n throw new Error(`WrSliderThumbHarness: the thumb's ${attribute} is ${JSON.stringify(raw)}, not a number.`);\n }\n return value;\n }\n}\n","/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n */\n\nimport { ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';\n\nimport type { WrSliderValue } from 'ngwr/slider';\n\nimport type { WrSliderHarnessFilters, WrSliderThumbHarnessFilters } from './interfaces';\nimport { WrSliderThumbHarness } from './wr-slider-thumb-harness';\n\n/** Element-wise comparison for the `value` filter — a tuple never matches a plain number. */\nfunction sameValue(actual: WrSliderValue, expected: WrSliderValue): boolean {\n if (typeof actual === 'number') return actual === expected;\n if (typeof expected === 'number') return false;\n return actual[0] === expected[0] && actual[1] === expected[1];\n}\n\n/**\n * Test harness for `<wr-slider>` — single-thumb and `range`.\n *\n * Every NUMBER it reads comes off the thumbs' ARIA range trio (`aria-valuenow`,\n * `aria-valuemin`, `aria-valuemax`), which is what a screen reader is told and\n * the only place the slider publishes its value. The mode comes off the host's\n * `wr-slider--range` class and {@link getLabelText} off the rendered text.\n *\n * Everything it WRITES is a key press. A slider is a pointer control, but a\n * pointer control cannot be driven by coordinates in jsdom — there is no layout,\n * so the track measures 0×0 and the component divides every offset by that\n * width: a positive one writes the slider's MAX and `clientX: 0` writes `NaN`,\n * neither of them the value asked for. The keyboard is both the accessible path\n * and the only honest one here; {@link WrSliderThumbHarness.setValue} spells out\n * what the walk costs, and {@link WrSliderThumbHarness} why every one of those\n * presses is on the block axis, which `dir` does not turn around.\n *\n * The `step` is deliberately not readable: the component publishes it nowhere in\n * the DOM (ARIA has no attribute for it), so a spec that needs the number should\n * measure it — `stepUp()` moves by exactly one step.\n *\n * @example\n * ```ts\n * const volume = await loader.getHarness(WrSliderHarness);\n *\n * await volume.setValue(70);\n * expect(await volume.getValue()).toBe(70);\n *\n * const span = await loader.getHarness(WrSliderHarness.with({ range: true }));\n * await span.setRange(30, 60);\n * ```\n *\n * @see https://ngwr.dev/guides/testing\n */\nexport class WrSliderHarness extends ComponentHarness {\n static hostSelector = 'wr-slider';\n\n /** Build a predicate that narrows the query — pass to `getHarness` / `getAllHarnesses`. */\n static with(options: WrSliderHarnessFilters = {}): HarnessPredicate<WrSliderHarness> {\n return new HarnessPredicate(WrSliderHarness, options)\n .addOption('value', options.value, async (harness, value) => sameValue(await harness.getValue(), value))\n .addOption('range', options.range, async (harness, range) => (await harness.isRange()) === range)\n .addOption('disabled', options.disabled, async (harness, disabled) => (await harness.isDisabled()) === disabled)\n .addOption('labelText', options.labelText, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getLabelText(), text)\n );\n }\n\n /** Whether the slider has two thumbs and answers with a `[low, high]` tuple. */\n async isRange(): Promise<boolean> {\n return (await this.host()).hasClass('wr-slider--range');\n }\n\n /**\n * Whether the slider refuses interaction.\n *\n * Read from the thumb's native `disabled` rather than from the\n * `wr-slider--disabled` class: the class is paint, while `disabled` on the\n * button is what takes the thumb out of the tab order and what assistive tech\n * reports.\n */\n async isDisabled(): Promise<boolean> {\n return (await this.getLowThumb()).isDisabled();\n }\n\n /**\n * The current value, in the shape the model uses: a plain number for one\n * thumb, `[low, high]` for two.\n */\n async getValue(): Promise<WrSliderValue> {\n const values = await Promise.all((await this.getThumbs()).map(thumb => thumb.getValue()));\n return values.length > 1 ? ([values[0], values[1]] as const) : values[0];\n }\n\n /** The slider's lower bound. */\n async getMin(): Promise<number> {\n return (await this.getThumbs())[0].getMin();\n }\n\n /**\n * The slider's upper bound.\n *\n * Taken from the LAST thumb, because in range mode the thumbs bound each\n * other: the lower one's `aria-valuemax` is wherever the upper one is\n * standing, so only the upper thumb knows the real ceiling.\n */\n async getMax(): Promise<number> {\n const thumbs = await this.getThumbs();\n return thumbs[thumbs.length - 1].getMax();\n }\n\n /**\n * The text the slider prints under the track, or `null` when `showLabel` is\n * off.\n *\n * A range slider joins its ends with an EN DASH — `'20 – 80'`, U+2013 — so an\n * assertion typed with a hyphen will not match.\n */\n async getLabelText(): Promise<string | null> {\n const label = await this.locatorForOptional('.wr-slider__label')();\n return label ? label.text() : null;\n }\n\n /** The slider's thumbs in DOM order: the lower one first. */\n async getThumbs(filters: WrSliderThumbHarnessFilters = {}): Promise<WrSliderThumbHarness[]> {\n return this.locatorForAll(WrSliderThumbHarness.with(filters))();\n }\n\n /** The only thumb of a single-thumb slider, or the lower one of a range slider. */\n async getLowThumb(): Promise<WrSliderThumbHarness> {\n return this.locatorFor(WrSliderThumbHarness.with({ position: 'low' }))();\n }\n\n /** The upper thumb. Throws on a single-thumb slider, which has no such part. */\n async getHighThumb(): Promise<WrSliderThumbHarness> {\n const thumb = await this.locatorForOptional(WrSliderThumbHarness.with({ position: 'high' }))();\n if (!thumb) {\n throw new Error('WrSliderHarness.getHighThumb(): this slider has one thumb — only a `range` slider has two.');\n }\n return thumb;\n }\n\n /**\n * Walk the slider to `value` from the keyboard.\n *\n * Single-thumb only — {@link setRange} moves both ends. See\n * {@link WrSliderThumbHarness.setValue} for what the walk costs and when it\n * throws.\n */\n async setValue(value: number): Promise<void> {\n return (await this.single('setValue')).setValue(value);\n }\n\n /**\n * Walk both ends of a range slider to `[low, high]`.\n *\n * The far end moves FIRST. The thumbs bound each other, so writing `[90, 95]`\n * over `[20, 80]` lower-end-first would be refused outright — 90 is outside\n * the `[0, 80]` window the upper thumb leaves the lower one.\n */\n async setRange(low: number, high: number): Promise<void> {\n if (!(await this.isRange())) {\n throw new Error('WrSliderHarness.setRange(): this slider has one thumb — add `range` to it, or call setValue().');\n }\n if (low > high) {\n throw new Error(`WrSliderHarness.setRange(): ${low} is above ${high}, and the thumbs cannot cross.`);\n }\n\n const lowThumb = await this.getLowThumb();\n const highThumb = await this.getHighThumb();\n\n if (high >= (await highThumb.getValue())) {\n await highThumb.setValue(high);\n await lowThumb.setValue(low);\n return;\n }\n\n await lowThumb.setValue(low);\n await highThumb.setValue(high);\n }\n\n /** One step up (`ArrowUp`). Single-thumb only. A disabled slider does not move. */\n async stepUp(): Promise<void> {\n return (await this.single('stepUp')).stepUp();\n }\n\n /** One step down (`ArrowDown`). Single-thumb only. A disabled slider does not move. */\n async stepDown(): Promise<void> {\n return (await this.single('stepDown')).stepDown();\n }\n\n /** `Home` — jump to the slider's `min`. Single-thumb only. */\n async toMin(): Promise<void> {\n return (await this.single('toMin')).toMin();\n }\n\n /** `End` — jump to the slider's `max`. Single-thumb only. */\n async toMax(): Promise<void> {\n return (await this.single('toMax')).toMax();\n }\n\n /**\n * Move keyboard focus to the slider's first thumb. A range slider's thumbs are\n * two separate tab stops (both are plain buttons — there is no roving\n * `tabindex`), so reach the other one through {@link getHighThumb}.\n */\n async focus(): Promise<void> {\n return (await this.getLowThumb()).focus();\n }\n\n /** Whether any of the slider's thumbs holds focus. */\n async isFocused(): Promise<boolean> {\n const focused = await Promise.all((await this.getThumbs()).map(thumb => thumb.isFocused()));\n return focused.includes(true);\n }\n\n /**\n * The one thumb a single-thumb convenience call means.\n *\n * Range mode gets an error rather than a guess: \"step this slider up\" has two\n * possible answers there, and picking one silently is how a spec ends up\n * asserting against the end it did not move.\n */\n private async single(caller: string): Promise<WrSliderThumbHarness> {\n if (await this.isRange()) {\n throw new Error(\n `WrSliderHarness.${caller}(): this slider has two thumbs — use setRange(), or reach for one end ` +\n 'with getLowThumb() / getHighThumb().'\n );\n }\n return this.getLowThumb();\n }\n}\n"],"mappings":"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"}