ngwr 10.2.0 → 11.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (471) hide show
  1. package/README.md +39 -19
  2. package/anchor/styles/_index.scss +4 -4
  3. package/back-top/styles/_index.scss +6 -1
  4. package/blur-text/styles/_index.scss +13 -0
  5. package/button/styles/_index.scss +11 -6
  6. package/carousel/styles/_index.scss +13 -2
  7. package/cascader/styles/_index.scss +2 -2
  8. package/circular-text/styles/_index.scss +2 -0
  9. package/collapse/styles/_index.scss +1 -1
  10. package/color-picker/styles/_index.scss +6 -1
  11. package/compare/styles/_index.scss +1 -2
  12. package/context-menu/styles/_index.scss +6 -1
  13. package/descriptions/styles/_index.scss +2 -2
  14. package/dialog/styles/_index.scss +38 -0
  15. package/drawer/styles/_index.scss +20 -1
  16. package/dropdown/styles/_index.scss +19 -5
  17. package/empty/styles/_index.scss +10 -0
  18. package/fesm2022/ngwr-action-sheet.mjs +15 -5
  19. package/fesm2022/ngwr-action-sheet.mjs.map +1 -1
  20. package/fesm2022/ngwr-affix.mjs +43 -16
  21. package/fesm2022/ngwr-affix.mjs.map +1 -1
  22. package/fesm2022/ngwr-alert.mjs +3 -3
  23. package/fesm2022/ngwr-anchor.mjs +20 -8
  24. package/fesm2022/ngwr-anchor.mjs.map +1 -1
  25. package/fesm2022/ngwr-aurora.mjs +4 -4
  26. package/fesm2022/ngwr-aurora.mjs.map +1 -1
  27. package/fesm2022/ngwr-avatar.mjs +33 -9
  28. package/fesm2022/ngwr-avatar.mjs.map +1 -1
  29. package/fesm2022/ngwr-back-top.mjs +8 -4
  30. package/fesm2022/ngwr-back-top.mjs.map +1 -1
  31. package/fesm2022/ngwr-badge.mjs +6 -6
  32. package/fesm2022/ngwr-badge.mjs.map +1 -1
  33. package/fesm2022/ngwr-bar-chart.mjs +32 -11
  34. package/fesm2022/ngwr-bar-chart.mjs.map +1 -1
  35. package/fesm2022/ngwr-blur-text.mjs +4 -4
  36. package/fesm2022/ngwr-blur-text.mjs.map +1 -1
  37. package/fesm2022/ngwr-border-glow.mjs +4 -4
  38. package/fesm2022/ngwr-border-glow.mjs.map +1 -1
  39. package/fesm2022/ngwr-breadcrumbs.mjs +9 -8
  40. package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -1
  41. package/fesm2022/ngwr-burger.mjs +11 -6
  42. package/fesm2022/ngwr-burger.mjs.map +1 -1
  43. package/fesm2022/ngwr-button-testing.mjs +96 -0
  44. package/fesm2022/ngwr-button-testing.mjs.map +1 -0
  45. package/fesm2022/ngwr-button.mjs +89 -24
  46. package/fesm2022/ngwr-button.mjs.map +1 -1
  47. package/fesm2022/ngwr-calendar-heatmap.mjs +42 -10
  48. package/fesm2022/ngwr-calendar-heatmap.mjs.map +1 -1
  49. package/fesm2022/ngwr-calendar.mjs +108 -9
  50. package/fesm2022/ngwr-calendar.mjs.map +1 -1
  51. package/fesm2022/ngwr-card.mjs +10 -10
  52. package/fesm2022/ngwr-card.mjs.map +1 -1
  53. package/fesm2022/ngwr-carousel-testing.mjs +377 -0
  54. package/fesm2022/ngwr-carousel-testing.mjs.map +1 -0
  55. package/fesm2022/ngwr-carousel.mjs +72 -18
  56. package/fesm2022/ngwr-carousel.mjs.map +1 -1
  57. package/fesm2022/ngwr-cascader-testing.mjs +534 -0
  58. package/fesm2022/ngwr-cascader-testing.mjs.map +1 -0
  59. package/fesm2022/ngwr-cascader.mjs +4 -4
  60. package/fesm2022/ngwr-cascader.mjs.map +1 -1
  61. package/fesm2022/ngwr-checkbox-testing.mjs +90 -0
  62. package/fesm2022/ngwr-checkbox-testing.mjs.map +1 -0
  63. package/fesm2022/ngwr-checkbox.mjs +15 -9
  64. package/fesm2022/ngwr-checkbox.mjs.map +1 -1
  65. package/fesm2022/ngwr-circular-text.mjs +4 -4
  66. package/fesm2022/ngwr-circular-text.mjs.map +1 -1
  67. package/fesm2022/ngwr-click-spark.mjs +4 -4
  68. package/fesm2022/ngwr-click-spark.mjs.map +1 -1
  69. package/fesm2022/ngwr-clipboard.mjs +18 -4
  70. package/fesm2022/ngwr-clipboard.mjs.map +1 -1
  71. package/fesm2022/ngwr-collapse-testing.mjs +368 -0
  72. package/fesm2022/ngwr-collapse-testing.mjs.map +1 -0
  73. package/fesm2022/ngwr-collapse.mjs +9 -9
  74. package/fesm2022/ngwr-color-picker.mjs +139 -19
  75. package/fesm2022/ngwr-color-picker.mjs.map +1 -1
  76. package/fesm2022/ngwr-command-palette-testing.mjs +589 -0
  77. package/fesm2022/ngwr-command-palette-testing.mjs.map +1 -0
  78. package/fesm2022/ngwr-command-palette.mjs +60 -10
  79. package/fesm2022/ngwr-command-palette.mjs.map +1 -1
  80. package/fesm2022/ngwr-compare.mjs +105 -15
  81. package/fesm2022/ngwr-compare.mjs.map +1 -1
  82. package/fesm2022/ngwr-confetti.mjs +3 -3
  83. package/fesm2022/ngwr-config.mjs +106 -0
  84. package/fesm2022/ngwr-config.mjs.map +1 -0
  85. package/fesm2022/ngwr-context-menu-testing.mjs +631 -0
  86. package/fesm2022/ngwr-context-menu-testing.mjs.map +1 -0
  87. package/fesm2022/ngwr-context-menu.mjs +104 -18
  88. package/fesm2022/ngwr-context-menu.mjs.map +1 -1
  89. package/fesm2022/ngwr-cookie.mjs +8 -4
  90. package/fesm2022/ngwr-cookie.mjs.map +1 -1
  91. package/fesm2022/ngwr-counter.mjs +17 -9
  92. package/fesm2022/ngwr-counter.mjs.map +1 -1
  93. package/fesm2022/ngwr-date-adapter-fns.mjs +3 -3
  94. package/fesm2022/ngwr-date-adapter-luxon.mjs +55 -7
  95. package/fesm2022/ngwr-date-adapter-luxon.mjs.map +1 -1
  96. package/fesm2022/ngwr-date-adapter.mjs +57 -11
  97. package/fesm2022/ngwr-date-adapter.mjs.map +1 -1
  98. package/fesm2022/ngwr-date-picker-testing.mjs +766 -0
  99. package/fesm2022/ngwr-date-picker-testing.mjs.map +1 -0
  100. package/fesm2022/ngwr-date-picker.mjs +409 -57
  101. package/fesm2022/ngwr-date-picker.mjs.map +1 -1
  102. package/fesm2022/ngwr-decrypt-text.mjs +30 -12
  103. package/fesm2022/ngwr-decrypt-text.mjs.map +1 -1
  104. package/fesm2022/ngwr-density.mjs +6 -6
  105. package/fesm2022/ngwr-descriptions.mjs +6 -6
  106. package/fesm2022/ngwr-dialog-testing.mjs +89 -0
  107. package/fesm2022/ngwr-dialog-testing.mjs.map +1 -0
  108. package/fesm2022/ngwr-dialog.mjs +33 -17
  109. package/fesm2022/ngwr-dialog.mjs.map +1 -1
  110. package/fesm2022/ngwr-directives.mjs +48 -24
  111. package/fesm2022/ngwr-directives.mjs.map +1 -1
  112. package/fesm2022/ngwr-divider.mjs +3 -3
  113. package/fesm2022/ngwr-donut-chart.mjs +24 -7
  114. package/fesm2022/ngwr-donut-chart.mjs.map +1 -1
  115. package/fesm2022/ngwr-drag-drop.mjs +7 -7
  116. package/fesm2022/ngwr-drag-drop.mjs.map +1 -1
  117. package/fesm2022/ngwr-drawer-testing.mjs +250 -0
  118. package/fesm2022/ngwr-drawer-testing.mjs.map +1 -0
  119. package/fesm2022/ngwr-drawer.mjs +37 -19
  120. package/fesm2022/ngwr-drawer.mjs.map +1 -1
  121. package/fesm2022/ngwr-dropdown-testing.mjs +291 -0
  122. package/fesm2022/ngwr-dropdown-testing.mjs.map +1 -0
  123. package/fesm2022/ngwr-dropdown.mjs +19 -11
  124. package/fesm2022/ngwr-dropdown.mjs.map +1 -1
  125. package/fesm2022/ngwr-empty.mjs +26 -9
  126. package/fesm2022/ngwr-empty.mjs.map +1 -1
  127. package/fesm2022/ngwr-event-calendar.mjs +62 -15
  128. package/fesm2022/ngwr-event-calendar.mjs.map +1 -1
  129. package/fesm2022/ngwr-falling-text.mjs +4 -4
  130. package/fesm2022/ngwr-falling-text.mjs.map +1 -1
  131. package/fesm2022/ngwr-file-upload-testing.mjs +332 -0
  132. package/fesm2022/ngwr-file-upload-testing.mjs.map +1 -0
  133. package/fesm2022/ngwr-file-upload.mjs +3 -3
  134. package/fesm2022/ngwr-form-testing.mjs +451 -0
  135. package/fesm2022/ngwr-form-testing.mjs.map +1 -0
  136. package/fesm2022/ngwr-form.mjs +28 -12
  137. package/fesm2022/ngwr-form.mjs.map +1 -1
  138. package/fesm2022/ngwr-fuzzy-text.mjs +11 -4
  139. package/fesm2022/ngwr-fuzzy-text.mjs.map +1 -1
  140. package/fesm2022/ngwr-gauge.mjs +21 -7
  141. package/fesm2022/ngwr-gauge.mjs.map +1 -1
  142. package/fesm2022/ngwr-glitch-text.mjs +4 -4
  143. package/fesm2022/ngwr-glitch-text.mjs.map +1 -1
  144. package/fesm2022/ngwr-gradient-text.mjs +4 -4
  145. package/fesm2022/ngwr-gradient-text.mjs.map +1 -1
  146. package/fesm2022/ngwr-hotkey.mjs +31 -10
  147. package/fesm2022/ngwr-hotkey.mjs.map +1 -1
  148. package/fesm2022/ngwr-i18n-en.mjs +61 -0
  149. package/fesm2022/ngwr-i18n-en.mjs.map +1 -1
  150. package/fesm2022/ngwr-i18n-ru.mjs +59 -0
  151. package/fesm2022/ngwr-i18n-ru.mjs.map +1 -1
  152. package/fesm2022/ngwr-i18n.mjs +9 -9
  153. package/fesm2022/ngwr-icon.mjs +6 -6
  154. package/fesm2022/ngwr-image-cropper.mjs +26 -3
  155. package/fesm2022/ngwr-image-cropper.mjs.map +1 -1
  156. package/fesm2022/ngwr-input-number-testing.mjs +306 -0
  157. package/fesm2022/ngwr-input-number-testing.mjs.map +1 -0
  158. package/fesm2022/ngwr-input-number.mjs +37 -5
  159. package/fesm2022/ngwr-input-number.mjs.map +1 -1
  160. package/fesm2022/ngwr-input-otp-testing.mjs +419 -0
  161. package/fesm2022/ngwr-input-otp-testing.mjs.map +1 -0
  162. package/fesm2022/ngwr-input-otp.mjs +39 -8
  163. package/fesm2022/ngwr-input-otp.mjs.map +1 -1
  164. package/fesm2022/ngwr-input-testing.mjs +102 -0
  165. package/fesm2022/ngwr-input-testing.mjs.map +1 -0
  166. package/fesm2022/ngwr-input.mjs +62 -25
  167. package/fesm2022/ngwr-input.mjs.map +1 -1
  168. package/fesm2022/ngwr-keyboard.mjs +3 -3
  169. package/fesm2022/ngwr-knob.mjs +46 -10
  170. package/fesm2022/ngwr-knob.mjs.map +1 -1
  171. package/fesm2022/ngwr-layout.mjs +36 -20
  172. package/fesm2022/ngwr-layout.mjs.map +1 -1
  173. package/fesm2022/ngwr-lightbox.mjs +35 -8
  174. package/fesm2022/ngwr-lightbox.mjs.map +1 -1
  175. package/fesm2022/ngwr-line-chart.mjs +19 -6
  176. package/fesm2022/ngwr-line-chart.mjs.map +1 -1
  177. package/fesm2022/ngwr-list.mjs +14 -9
  178. package/fesm2022/ngwr-list.mjs.map +1 -1
  179. package/fesm2022/ngwr-loading-bar.mjs +71 -31
  180. package/fesm2022/ngwr-loading-bar.mjs.map +1 -1
  181. package/fesm2022/ngwr-markdown-testing.mjs +516 -0
  182. package/fesm2022/ngwr-markdown-testing.mjs.map +1 -0
  183. package/fesm2022/ngwr-markdown.mjs +1492 -0
  184. package/fesm2022/ngwr-markdown.mjs.map +1 -0
  185. package/fesm2022/ngwr-marquee.mjs +19 -8
  186. package/fesm2022/ngwr-marquee.mjs.map +1 -1
  187. package/fesm2022/ngwr-media.mjs +3 -3
  188. package/fesm2022/ngwr-mention-testing.mjs +513 -0
  189. package/fesm2022/ngwr-mention-testing.mjs.map +1 -0
  190. package/fesm2022/ngwr-mention.mjs +16 -7
  191. package/fesm2022/ngwr-mention.mjs.map +1 -1
  192. package/fesm2022/ngwr-meta.mjs +28 -13
  193. package/fesm2022/ngwr-meta.mjs.map +1 -1
  194. package/fesm2022/ngwr-meter-group.mjs +22 -8
  195. package/fesm2022/ngwr-meter-group.mjs.map +1 -1
  196. package/fesm2022/ngwr-overlay.mjs +57 -8
  197. package/fesm2022/ngwr-overlay.mjs.map +1 -1
  198. package/fesm2022/ngwr-page-header.mjs +3 -3
  199. package/fesm2022/ngwr-pagination-testing.mjs +389 -0
  200. package/fesm2022/ngwr-pagination-testing.mjs.map +1 -0
  201. package/fesm2022/ngwr-pagination.mjs +27 -11
  202. package/fesm2022/ngwr-pagination.mjs.map +1 -1
  203. package/fesm2022/ngwr-pipes.mjs +21 -21
  204. package/fesm2022/ngwr-platform.mjs +9 -9
  205. package/fesm2022/ngwr-popconfirm-testing.mjs +309 -0
  206. package/fesm2022/ngwr-popconfirm-testing.mjs.map +1 -0
  207. package/fesm2022/ngwr-popconfirm.mjs +99 -21
  208. package/fesm2022/ngwr-popconfirm.mjs.map +1 -1
  209. package/fesm2022/ngwr-popover-testing.mjs +316 -0
  210. package/fesm2022/ngwr-popover-testing.mjs.map +1 -0
  211. package/fesm2022/ngwr-popover.mjs +48 -10
  212. package/fesm2022/ngwr-popover.mjs.map +1 -1
  213. package/fesm2022/ngwr-progress.mjs +3 -3
  214. package/fesm2022/ngwr-pull-to-refresh.mjs +19 -4
  215. package/fesm2022/ngwr-pull-to-refresh.mjs.map +1 -1
  216. package/fesm2022/ngwr-qr.mjs +15 -5
  217. package/fesm2022/ngwr-qr.mjs.map +1 -1
  218. package/fesm2022/ngwr-radio-testing.mjs +392 -0
  219. package/fesm2022/ngwr-radio-testing.mjs.map +1 -0
  220. package/fesm2022/ngwr-radio.mjs +16 -9
  221. package/fesm2022/ngwr-radio.mjs.map +1 -1
  222. package/fesm2022/ngwr-rating-testing.mjs +384 -0
  223. package/fesm2022/ngwr-rating-testing.mjs.map +1 -0
  224. package/fesm2022/ngwr-rating.mjs +40 -5
  225. package/fesm2022/ngwr-rating.mjs.map +1 -1
  226. package/fesm2022/ngwr-result.mjs +12 -12
  227. package/fesm2022/ngwr-rotating-text.mjs +3 -3
  228. package/fesm2022/ngwr-scroll.mjs +3 -3
  229. package/fesm2022/ngwr-segmented-testing.mjs +512 -0
  230. package/fesm2022/ngwr-segmented-testing.mjs.map +1 -0
  231. package/fesm2022/ngwr-segmented.mjs +3 -3
  232. package/fesm2022/ngwr-select-testing.mjs +268 -0
  233. package/fesm2022/ngwr-select-testing.mjs.map +1 -0
  234. package/fesm2022/ngwr-select.mjs +96 -25
  235. package/fesm2022/ngwr-select.mjs.map +1 -1
  236. package/fesm2022/ngwr-shiny-text.mjs +7 -7
  237. package/fesm2022/ngwr-shiny-text.mjs.map +1 -1
  238. package/fesm2022/ngwr-sidebar.mjs +67 -14
  239. package/fesm2022/ngwr-sidebar.mjs.map +1 -1
  240. package/fesm2022/ngwr-skeleton.mjs +3 -3
  241. package/fesm2022/ngwr-slider-testing.mjs +478 -0
  242. package/fesm2022/ngwr-slider-testing.mjs.map +1 -0
  243. package/fesm2022/ngwr-slider.mjs +59 -15
  244. package/fesm2022/ngwr-slider.mjs.map +1 -1
  245. package/fesm2022/ngwr-sparkline.mjs +28 -8
  246. package/fesm2022/ngwr-sparkline.mjs.map +1 -1
  247. package/fesm2022/ngwr-speed-dial.mjs +39 -6
  248. package/fesm2022/ngwr-speed-dial.mjs.map +1 -1
  249. package/fesm2022/ngwr-spinner.mjs +14 -5
  250. package/fesm2022/ngwr-spinner.mjs.map +1 -1
  251. package/fesm2022/ngwr-splash-cursor.mjs +4 -4
  252. package/fesm2022/ngwr-splash-cursor.mjs.map +1 -1
  253. package/fesm2022/ngwr-split-text.mjs +4 -4
  254. package/fesm2022/ngwr-split-text.mjs.map +1 -1
  255. package/fesm2022/ngwr-splitter.mjs +72 -11
  256. package/fesm2022/ngwr-splitter.mjs.map +1 -1
  257. package/fesm2022/ngwr-spotlight-card.mjs +7 -7
  258. package/fesm2022/ngwr-spotlight-card.mjs.map +1 -1
  259. package/fesm2022/ngwr-squircle.mjs +6 -6
  260. package/fesm2022/ngwr-star-border.mjs +4 -4
  261. package/fesm2022/ngwr-star-border.mjs.map +1 -1
  262. package/fesm2022/ngwr-statistic.mjs +33 -16
  263. package/fesm2022/ngwr-statistic.mjs.map +1 -1
  264. package/fesm2022/ngwr-stepper-testing.mjs +477 -0
  265. package/fesm2022/ngwr-stepper-testing.mjs.map +1 -0
  266. package/fesm2022/ngwr-stepper.mjs +6 -6
  267. package/fesm2022/ngwr-storage.mjs +27 -17
  268. package/fesm2022/ngwr-storage.mjs.map +1 -1
  269. package/fesm2022/ngwr-switch-testing.mjs +77 -0
  270. package/fesm2022/ngwr-switch-testing.mjs.map +1 -0
  271. package/fesm2022/ngwr-switch.mjs +12 -6
  272. package/fesm2022/ngwr-switch.mjs.map +1 -1
  273. package/fesm2022/ngwr-table-testing.mjs +580 -0
  274. package/fesm2022/ngwr-table-testing.mjs.map +1 -0
  275. package/fesm2022/ngwr-table.mjs +105 -44
  276. package/fesm2022/ngwr-table.mjs.map +1 -1
  277. package/fesm2022/ngwr-tabs-testing.mjs +617 -0
  278. package/fesm2022/ngwr-tabs-testing.mjs.map +1 -0
  279. package/fesm2022/ngwr-tabs.mjs +44 -12
  280. package/fesm2022/ngwr-tabs.mjs.map +1 -1
  281. package/fesm2022/ngwr-textarea-testing.mjs +238 -0
  282. package/fesm2022/ngwr-textarea-testing.mjs.map +1 -0
  283. package/fesm2022/ngwr-textarea.mjs +35 -7
  284. package/fesm2022/ngwr-textarea.mjs.map +1 -1
  285. package/fesm2022/ngwr-theme.mjs +3 -3
  286. package/fesm2022/ngwr-tilt-card.mjs +7 -7
  287. package/fesm2022/ngwr-tilt-card.mjs.map +1 -1
  288. package/fesm2022/ngwr-timeline.mjs +6 -6
  289. package/fesm2022/ngwr-toast-testing.mjs +101 -0
  290. package/fesm2022/ngwr-toast-testing.mjs.map +1 -0
  291. package/fesm2022/ngwr-toast.mjs +55 -21
  292. package/fesm2022/ngwr-toast.mjs.map +1 -1
  293. package/fesm2022/ngwr-toolbar.mjs +3 -3
  294. package/fesm2022/ngwr-tour.mjs +67 -15
  295. package/fesm2022/ngwr-tour.mjs.map +1 -1
  296. package/fesm2022/ngwr-transfer-testing.mjs +538 -0
  297. package/fesm2022/ngwr-transfer-testing.mjs.map +1 -0
  298. package/fesm2022/ngwr-transfer.mjs +47 -16
  299. package/fesm2022/ngwr-transfer.mjs.map +1 -1
  300. package/fesm2022/ngwr-tree-testing.mjs +734 -0
  301. package/fesm2022/ngwr-tree-testing.mjs.map +1 -0
  302. package/fesm2022/ngwr-tree.mjs +75 -9
  303. package/fesm2022/ngwr-tree.mjs.map +1 -1
  304. package/fesm2022/ngwr-typewriter.mjs +7 -5
  305. package/fesm2022/ngwr-typewriter.mjs.map +1 -1
  306. package/fesm2022/ngwr-typography.mjs +3 -3
  307. package/fesm2022/ngwr-version.mjs +1 -1
  308. package/fesm2022/ngwr-version.mjs.map +1 -1
  309. package/fesm2022/ngwr-virtual-scroll.mjs +33 -7
  310. package/fesm2022/ngwr-virtual-scroll.mjs.map +1 -1
  311. package/fesm2022/ngwr-waves.mjs +5 -5
  312. package/fesm2022/ngwr-waves.mjs.map +1 -1
  313. package/fesm2022/ngwr-window.mjs +88 -18
  314. package/fesm2022/ngwr-window.mjs.map +1 -1
  315. package/gauge/styles/_index.scss +1 -1
  316. package/glitch-text/styles/_index.scss +4 -0
  317. package/i18n/en.json +56 -0
  318. package/i18n/ru.json +56 -0
  319. package/image-cropper/styles/_index.scss +13 -1
  320. package/input/styles/_index.scss +2 -2
  321. package/input-number/styles/_index.scss +7 -2
  322. package/knob/styles/_index.scss +8 -1
  323. package/layout/styles/_index.scss +3 -3
  324. package/lightbox/styles/_index.scss +10 -2
  325. package/line-chart/styles/_index.scss +6 -0
  326. package/llms-full.txt +151 -4
  327. package/llms.txt +57 -8
  328. package/loading-bar/styles/_index.scss +1 -2
  329. package/markdown/styles/_index.scss +296 -0
  330. package/marquee/styles/_index.scss +12 -0
  331. package/mcp/api.js +512 -0
  332. package/mcp/catalog.js +157 -0
  333. package/mcp/server.js +273 -0
  334. package/mcp/tools.js +366 -0
  335. package/meter-group/styles/_index.scss +1 -1
  336. package/package.json +186 -35
  337. package/pagination/styles/_index.scss +6 -6
  338. package/popover/styles/_index.scss +37 -5
  339. package/rating/styles/_index.scss +10 -0
  340. package/schematics/use/symbol-map.json +2 -0
  341. package/segmented/styles/_index.scss +7 -0
  342. package/select/styles/_index.scss +29 -9
  343. package/sidebar/styles/_index.scss +30 -5
  344. package/slider/styles/_index.scss +15 -0
  345. package/speed-dial/styles/_index.scss +20 -0
  346. package/split-text/styles/_index.scss +13 -0
  347. package/star-border/styles/_index.scss +2 -0
  348. package/stepper/styles/_index.scss +1 -1
  349. package/styles/_grid.scss +4 -4
  350. package/styles.scss +1 -0
  351. package/switch/styles/_index.scss +5 -3
  352. package/table/styles/_index.scss +22 -11
  353. package/tabs/styles/_index.scss +11 -1
  354. package/textarea/styles/_index.scss +5 -0
  355. package/theme/styles/_colors.scss +29 -13
  356. package/theme/styles/_dark.scss +11 -3
  357. package/theme/styles/_mixins.scss +3 -0
  358. package/timeline/styles/_index.scss +2 -2
  359. package/toast/styles/_index.scss +17 -8
  360. package/toolbar/styles/_index.scss +3 -3
  361. package/tour/styles/_index.scss +7 -1
  362. package/tree/styles/_index.scss +5 -3
  363. package/types/ngwr-action-sheet.d.ts +9 -1
  364. package/types/ngwr-affix.d.ts +7 -1
  365. package/types/ngwr-anchor.d.ts +8 -1
  366. package/types/ngwr-avatar.d.ts +13 -3
  367. package/types/ngwr-bar-chart.d.ts +16 -0
  368. package/types/ngwr-burger.d.ts +6 -2
  369. package/types/ngwr-button-testing.d.ts +85 -0
  370. package/types/ngwr-button.d.ts +58 -10
  371. package/types/ngwr-calendar-heatmap.d.ts +16 -2
  372. package/types/ngwr-calendar.d.ts +37 -1
  373. package/types/ngwr-carousel-testing.d.ts +257 -0
  374. package/types/ngwr-carousel.d.ts +20 -4
  375. package/types/ngwr-cascader-testing.d.ts +392 -0
  376. package/types/ngwr-checkbox-testing.d.ts +77 -0
  377. package/types/ngwr-checkbox.d.ts +7 -2
  378. package/types/ngwr-clipboard.d.ts +8 -1
  379. package/types/ngwr-collapse-testing.d.ts +290 -0
  380. package/types/ngwr-color-picker.d.ts +20 -11
  381. package/types/ngwr-command-palette-testing.d.ts +437 -0
  382. package/types/ngwr-command-palette.d.ts +25 -2
  383. package/types/ngwr-compare.d.ts +50 -2
  384. package/types/ngwr-config.d.ts +176 -0
  385. package/types/ngwr-context-menu-testing.d.ts +401 -0
  386. package/types/ngwr-context-menu.d.ts +65 -17
  387. package/types/ngwr-counter.d.ts +6 -1
  388. package/types/ngwr-date-adapter-luxon.d.ts +26 -0
  389. package/types/ngwr-date-picker-testing.d.ts +518 -0
  390. package/types/ngwr-date-picker.d.ts +128 -8
  391. package/types/ngwr-dialog-testing.d.ts +79 -0
  392. package/types/ngwr-dialog.d.ts +13 -0
  393. package/types/ngwr-directives.d.ts +10 -1
  394. package/types/ngwr-donut-chart.d.ts +8 -1
  395. package/types/ngwr-drawer-testing.d.ts +196 -0
  396. package/types/ngwr-drawer.d.ts +15 -0
  397. package/types/ngwr-dropdown-testing.d.ts +202 -0
  398. package/types/ngwr-dropdown.d.ts +7 -1
  399. package/types/ngwr-empty.d.ts +19 -4
  400. package/types/ngwr-event-calendar.d.ts +26 -1
  401. package/types/ngwr-file-upload-testing.d.ts +194 -0
  402. package/types/ngwr-form-testing.d.ts +379 -0
  403. package/types/ngwr-form.d.ts +17 -0
  404. package/types/ngwr-gauge.d.ts +13 -1
  405. package/types/ngwr-hotkey.d.ts +2 -0
  406. package/types/ngwr-image-cropper.d.ts +10 -0
  407. package/types/ngwr-input-number-testing.d.ts +226 -0
  408. package/types/ngwr-input-number.d.ts +29 -1
  409. package/types/ngwr-input-otp-testing.d.ts +299 -0
  410. package/types/ngwr-input-otp.d.ts +23 -2
  411. package/types/ngwr-input-testing.d.ts +84 -0
  412. package/types/ngwr-input.d.ts +20 -6
  413. package/types/ngwr-knob.d.ts +18 -0
  414. package/types/ngwr-layout.d.ts +1 -0
  415. package/types/ngwr-lightbox.d.ts +17 -3
  416. package/types/ngwr-line-chart.d.ts +9 -2
  417. package/types/ngwr-list.d.ts +7 -2
  418. package/types/ngwr-loading-bar.d.ts +4 -7
  419. package/types/ngwr-markdown-testing.d.ts +462 -0
  420. package/types/ngwr-markdown.d.ts +534 -0
  421. package/types/ngwr-marquee.d.ts +12 -2
  422. package/types/ngwr-mention-testing.d.ts +359 -0
  423. package/types/ngwr-meta.d.ts +4 -2
  424. package/types/ngwr-meter-group.d.ts +11 -1
  425. package/types/ngwr-overlay.d.ts +33 -2
  426. package/types/ngwr-pagination-testing.d.ts +291 -0
  427. package/types/ngwr-pagination.d.ts +7 -1
  428. package/types/ngwr-popconfirm-testing.d.ts +235 -0
  429. package/types/ngwr-popconfirm.d.ts +31 -21
  430. package/types/ngwr-popover-testing.d.ts +221 -0
  431. package/types/ngwr-popover.d.ts +19 -2
  432. package/types/ngwr-pull-to-refresh.d.ts +7 -0
  433. package/types/ngwr-qr.d.ts +9 -1
  434. package/types/ngwr-radio-testing.d.ts +296 -0
  435. package/types/ngwr-radio.d.ts +8 -2
  436. package/types/ngwr-rating-testing.d.ts +291 -0
  437. package/types/ngwr-rating.d.ts +23 -0
  438. package/types/ngwr-segmented-testing.d.ts +401 -0
  439. package/types/ngwr-select-testing.d.ts +175 -0
  440. package/types/ngwr-select.d.ts +45 -4
  441. package/types/ngwr-sidebar.d.ts +17 -2
  442. package/types/ngwr-slider-testing.d.ts +329 -0
  443. package/types/ngwr-slider.d.ts +35 -1
  444. package/types/ngwr-sparkline.d.ts +12 -2
  445. package/types/ngwr-speed-dial.d.ts +17 -18
  446. package/types/ngwr-spinner.d.ts +8 -1
  447. package/types/ngwr-splitter.d.ts +24 -1
  448. package/types/ngwr-statistic.d.ts +12 -2
  449. package/types/ngwr-stepper-testing.d.ts +346 -0
  450. package/types/ngwr-storage.d.ts +10 -1
  451. package/types/ngwr-switch-testing.d.ts +66 -0
  452. package/types/ngwr-switch.d.ts +7 -2
  453. package/types/ngwr-table-testing.d.ts +423 -0
  454. package/types/ngwr-table.d.ts +42 -0
  455. package/types/ngwr-tabs-testing.d.ts +470 -0
  456. package/types/ngwr-tabs.d.ts +9 -0
  457. package/types/ngwr-textarea-testing.d.ts +184 -0
  458. package/types/ngwr-textarea.d.ts +7 -2
  459. package/types/ngwr-toast-testing.d.ts +80 -0
  460. package/types/ngwr-toast.d.ts +19 -4
  461. package/types/ngwr-tour.d.ts +27 -0
  462. package/types/ngwr-transfer-testing.d.ts +444 -0
  463. package/types/ngwr-transfer.d.ts +16 -1
  464. package/types/ngwr-tree-testing.d.ts +501 -0
  465. package/types/ngwr-tree.d.ts +33 -0
  466. package/types/ngwr-version.d.ts +1 -1
  467. package/types/ngwr-virtual-scroll.d.ts +13 -1
  468. package/types/ngwr-window.d.ts +23 -2
  469. package/typewriter/styles/_index.scss +1 -1
  470. package/typography/styles/_index.scss +1 -1
  471. package/window/styles/_index.scss +32 -9
@@ -0,0 +1,423 @@
1
+ import { BaseHarnessFilters, ContentContainerComponentHarness, HarnessPredicate, ComponentHarness } from '@angular/cdk/testing';
2
+
3
+ /**
4
+ * @license
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
8
+ */
9
+
10
+ /** Narrows which `<wr-table>` a harness query matches. */
11
+ interface WrTableHarnessFilters extends BaseHarnessFilters {
12
+ /**
13
+ * Match a table that renders a column with this header title — the readable way
14
+ * to tell two tables on one page apart. A string is an exact match, a RegExp is
15
+ * tested.
16
+ */
17
+ readonly columnTitle?: string | RegExp;
18
+ /** Match only hierarchies (`true` — a `treegrid`) or only flat tables (`false`). */
19
+ readonly tree?: boolean;
20
+ }
21
+ /** Narrows which body row a harness query matches. */
22
+ interface WrTableRowHarnessFilters extends BaseHarnessFilters {
23
+ /** Match a row where ANY data cell's text matches. A string is exact, a RegExp is tested. */
24
+ readonly cellText?: string | RegExp;
25
+ /** Match only selected (`true`) or only unselected (`false`) rows. */
26
+ readonly selected?: boolean;
27
+ /** Match only open (`true`) or only closed (`false`) rows — a detail row or a tree branch. */
28
+ readonly expanded?: boolean;
29
+ /**
30
+ * Match the row's 1-based `aria-level`, i.e. its depth in a tree. Rows of a flat
31
+ * table announce no level and never match.
32
+ */
33
+ readonly level?: number;
34
+ }
35
+ /** Narrows which data cell a harness query matches. */
36
+ interface WrTableCellHarnessFilters extends BaseHarnessFilters {
37
+ /** Match the cell's text — a string is an exact match, a RegExp is tested. */
38
+ readonly text?: string | RegExp;
39
+ /** Match the title of the column the cell sits in. */
40
+ readonly columnTitle?: string | RegExp;
41
+ }
42
+ /** Narrows which column header a harness query matches. */
43
+ interface WrTableHeaderCellHarnessFilters extends BaseHarnessFilters {
44
+ /** Match the column title — a string is an exact match, a RegExp is tested. */
45
+ readonly text?: string | RegExp;
46
+ /** Match only sortable (`true`) or only plain (`false`) columns. */
47
+ readonly sortable?: boolean;
48
+ }
49
+
50
+ /**
51
+ * @license
52
+ *
53
+ * Use of this source code is governed by an MIT-style license that can be
54
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
55
+ */
56
+
57
+ /**
58
+ * Test harness for one data cell of a `<wr-table>` row.
59
+ *
60
+ * A CONTENT CONTAINER, because a cell is where a consumer's own components end
61
+ * up: a `[wrTableCell]` template can render a `<wr-tag>`, a button, an input, and
62
+ * `cell.getHarness(WrButtonHarness…)` resolves those INSIDE this cell — so the
63
+ * "Delete" button of row 3 cannot be mistaken for the one in row 1.
64
+ *
65
+ * @example
66
+ * ```ts
67
+ * const [row] = await table.getRows({ cellText: 'Ada' });
68
+ * const [status] = await row.getCells({ columnTitle: 'Status' });
69
+ *
70
+ * expect(await status.getText()).toBe('active');
71
+ * ```
72
+ *
73
+ * @see https://ngwr.dev/guides/testing
74
+ */
75
+ declare class WrTableCellHarness extends ContentContainerComponentHarness {
76
+ /**
77
+ * Data cells only. The lead selection and expand cells carry the same
78
+ * `.wr-table__td` class — they hold the row's controls, not its data — so a cell
79
+ * list that swept them in would no longer line up with the header list.
80
+ */
81
+ static hostSelector: string;
82
+ /** Build a predicate that narrows the query. */
83
+ static with(options?: WrTableCellHarnessFilters): HarnessPredicate<WrTableCellHarness>;
84
+ /** The cell's text, with the template's indentation collapsed to single spaces. */
85
+ getText(): Promise<string>;
86
+ /**
87
+ * The title of the column this cell belongs to.
88
+ *
89
+ * Read from `data-label` — the attribute responsive card mode prints in front of
90
+ * each value — because it is the only place a cell says which column it is in.
91
+ * The column KEY is never in the DOM at all.
92
+ */
93
+ getColumnTitle(): Promise<string | null>;
94
+ /** Which edge the cell's column is frozen against, or `null` when it scrolls. */
95
+ getPin(): Promise<'left' | 'right' | null>;
96
+ }
97
+
98
+ /**
99
+ * @license
100
+ *
101
+ * Use of this source code is governed by an MIT-style license that can be
102
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
103
+ */
104
+
105
+ /**
106
+ * Test harness for one column header of a `<wr-table>`.
107
+ *
108
+ * The selector deliberately skips the two LEAD headers — selection and expand —
109
+ * which carry the same `.wr-table__th` class but hold a checkbox or nothing at
110
+ * all. What is left lines up index-for-index with the data columns, so a header's
111
+ * position is its column's position.
112
+ *
113
+ * Columns are addressed by their TITLE here and everywhere else in this harness
114
+ * family, never by their `columns` key: the key never reaches the DOM. Only the
115
+ * title does — in this header and in every cell's `data-label` — so it is the one
116
+ * handle a spec and the rendered table share.
117
+ *
118
+ * @see https://ngwr.dev/guides/testing
119
+ */
120
+ declare class WrTableHeaderCellHarness extends ComponentHarness {
121
+ static hostSelector: string;
122
+ /** Build a predicate that narrows the query. */
123
+ static with(options?: WrTableHeaderCellHarnessFilters): HarnessPredicate<WrTableHeaderCellHarness>;
124
+ /** The column title, trimmed. The sort and filter controls are not part of it. */
125
+ getText(): Promise<string>;
126
+ /**
127
+ * The direction this column announces, exactly as `aria-sort` puts it — or
128
+ * `null` when the column does not sort.
129
+ *
130
+ * `null` is not "unsorted": a sortable column with no direction announces
131
+ * `'none'`, and only a plain column omits the attribute entirely. Claiming
132
+ * sortability a column does not have is the bug that distinction prevents.
133
+ */
134
+ getSortDirection(): Promise<'ascending' | 'descending' | 'none' | null>;
135
+ /** Whether the column offers sorting at all. */
136
+ isSortable(): Promise<boolean>;
137
+ /**
138
+ * Advance the sort one step — none → ascending → descending → none, the cycle a
139
+ * click on the indicator drives.
140
+ *
141
+ * Throws on a column with no sort control rather than doing nothing: the quiet
142
+ * version of this leaves a spec asserting an unchanged direction and passing.
143
+ */
144
+ sort(): Promise<void>;
145
+ /** Whether the column offers a filter dropdown (its definition carries a NON-EMPTY `filterItems`). */
146
+ isFilterable(): Promise<boolean>;
147
+ /** Which edge the column is frozen against, or `null` when it scrolls with the rest. */
148
+ getPin(): Promise<'left' | 'right' | null>;
149
+ }
150
+
151
+ /**
152
+ * @license
153
+ *
154
+ * Use of this source code is governed by an MIT-style license that can be
155
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
156
+ */
157
+
158
+ /**
159
+ * Test harness for one body row of a `<wr-table>` — flat, grouped or tree.
160
+ *
161
+ * Also a CONTENT CONTAINER, so `row.getHarness(WrButtonHarness…)` reaches the
162
+ * consumer's own components anywhere in the row without leaving this row.
163
+ *
164
+ * @example
165
+ * ```ts
166
+ * const [ada] = await table.getRows({ cellText: 'Ada' });
167
+ *
168
+ * await ada.select();
169
+ * await (await ada.getHarness(WrButtonHarness.with({ text: 'Edit' }))).click();
170
+ * ```
171
+ *
172
+ * @see https://ngwr.dev/guides/testing
173
+ */
174
+ declare class WrTableRowHarness extends ContentContainerComponentHarness {
175
+ /**
176
+ * `.wr-table__tr` is the DATA row and nothing else.
177
+ *
178
+ * Everything else a `<tbody>` can hold is a `<tr>` too: the group band
179
+ * (`.wr-table__group-row`), its subtotal row, the detail row a `[wrTableExpand]`
180
+ * template renders, the two virtual spacers, and the "no data" row. Querying
181
+ * `tbody tr` would hand every one of those back as a row with no cells.
182
+ */
183
+ static hostSelector: string;
184
+ /** Build a predicate that narrows the query. */
185
+ static with(options?: WrTableRowHarnessFilters): HarnessPredicate<WrTableRowHarness>;
186
+ private readonly selectBox;
187
+ /**
188
+ * The row's disclosure control, whichever of the two the table gave it: the lead
189
+ * button of a `[wrTableExpand]` table, or the tree toggle inside the tree column.
190
+ * The two never coexist — a tree row owns its own disclosure, so the component
191
+ * refuses the pair.
192
+ *
193
+ * `button` in the tree selector is load-bearing. A leaf renders a `<span>` with
194
+ * the same `.wr-table__tree-toggle` class purely to hold the indent, and taking
195
+ * that for a control would report every leaf as expandable.
196
+ */
197
+ private readonly disclosure;
198
+ /** The row's data cells, in DOM order. The lead control cells are not cells. */
199
+ getCells(filters?: WrTableCellHarnessFilters): Promise<WrTableCellHarness[]>;
200
+ /** The text of every data cell, in DOM order. */
201
+ getCellTexts(): Promise<string[]>;
202
+ /**
203
+ * Whether the row is selected.
204
+ *
205
+ * Read from the `--selected` modifier, which is what the row looks like and what
206
+ * a consumer styles against. It also means a row is not "selected" while
207
+ * `rowSelection` is off, however many keys the `selection` model holds — nothing
208
+ * on screen says otherwise.
209
+ */
210
+ isSelected(): Promise<boolean>;
211
+ /** Whether the row offers a selection checkbox at all. */
212
+ isSelectable(): Promise<boolean>;
213
+ /** Flip the row's checkbox. Throws when the table has no selection column. */
214
+ toggleSelection(): Promise<void>;
215
+ /** Select the row if it is not already selected. */
216
+ select(): Promise<void>;
217
+ /** Deselect the row if it is selected. */
218
+ deselect(): Promise<void>;
219
+ /**
220
+ * Whether the row has something to open — a detail template's disclosure, or
221
+ * children in a tree. A tree leaf answers `false`.
222
+ */
223
+ isExpandable(): Promise<boolean>;
224
+ /** Whether the row is open, from the disclosure's `aria-expanded`. */
225
+ isExpanded(): Promise<boolean>;
226
+ /** Open or close the row. Throws when it has nothing to open. */
227
+ toggleExpand(): Promise<void>;
228
+ /**
229
+ * The row's depth as the table announces it — 1-based `aria-level`, `null` in a
230
+ * flat table, where depth is not a thing that exists.
231
+ */
232
+ getLevel(): Promise<number | null>;
233
+ /** The row's 1-based position among its siblings (`aria-posinset`), or `null` when flat. */
234
+ getPosInSet(): Promise<number | null>;
235
+ /** How many rows are in the row's sibling set, itself included (`aria-setsize`); `null` when flat. */
236
+ getSetSize(): Promise<number | null>;
237
+ /**
238
+ * The row's 1-based index in the FULL dataset (`aria-rowindex`, header included),
239
+ * or `null` when the table is not virtualized.
240
+ *
241
+ * Only a windowed table publishes it, and that is precisely when it matters: the
242
+ * rows in the DOM are a slice, so their DOM order says nothing about where they
243
+ * sit in the data.
244
+ */
245
+ getRowIndex(): Promise<number | null>;
246
+ private numericAttribute;
247
+ }
248
+
249
+ /**
250
+ * @license
251
+ *
252
+ * Use of this source code is governed by an MIT-style license that can be
253
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
254
+ */
255
+
256
+ /**
257
+ * Test harness for `<wr-table>` — the root of a small family, since a table is a
258
+ * tree and not one control: {@link WrTableHeaderCellHarness} for a column header,
259
+ * {@link WrTableRowHarness} for a body row, and `WrTableCellHarness` for a cell.
260
+ *
261
+ * Columns are addressed by their header TITLE, never by their `columns` key: the
262
+ * key never reaches the DOM.
263
+ *
264
+ * What this harness deliberately does NOT do:
265
+ * - open a column's filter dropdown. The panel is a `wr-dropdown` in the overlay
266
+ * container, and driving it belongs to a dropdown harness rather than this one;
267
+ * {@link WrTableHeaderCellHarness.isFilterable} reports that a column offers one.
268
+ * - scroll a virtualized body. See {@link getRows}.
269
+ *
270
+ * @example
271
+ * ```ts
272
+ * const table = await loader.getHarness(WrTableHarness);
273
+ *
274
+ * expect(await table.getHeaderTexts()).toEqual(['Name', 'Role']);
275
+ * await table.sortByColumn('Name');
276
+ * expect(await table.getSortDirection('Name')).toBe('ascending');
277
+ * ```
278
+ *
279
+ * @see https://ngwr.dev/guides/testing
280
+ */
281
+ declare class WrTableHarness extends ComponentHarness {
282
+ static hostSelector: string;
283
+ /** Build a predicate that narrows the query — pass to `getHarness` / `getAllHarnesses`. */
284
+ static with(options?: WrTableHarnessFilters): HarnessPredicate<WrTableHarness>;
285
+ private readonly tableEl;
286
+ private readonly selectAllBox;
287
+ /**
288
+ * The role the table announces.
289
+ *
290
+ * A flat table sets no `role` at all, so it announces the native `table` role —
291
+ * NOT `grid`, which would promise cell-by-cell keyboard navigation it does not
292
+ * implement. `childrenKey` turns it into a `treegrid`, and that role is the only
293
+ * place the hierarchy exists for a screen-reader user: the indent is decoration.
294
+ */
295
+ getRole(): Promise<'treegrid' | 'table'>;
296
+ /** Whether the rows are a hierarchy rather than a flat list. */
297
+ isTree(): Promise<boolean>;
298
+ /**
299
+ * Whether the body is WINDOWED right now.
300
+ *
301
+ * Read from the host modifier rather than from the input, and that is the point:
302
+ * `virtualScroll` is a request, not a promise. The table falls back to rendering
303
+ * every row whenever the layout stops being uniform — grouping, a detail
304
+ * template, responsive card mode, a visible pager, a tree — so this answers what
305
+ * actually happened.
306
+ */
307
+ isVirtual(): Promise<boolean>;
308
+ /** Whether the loading spinner is covering the table. */
309
+ isLoading(): Promise<boolean>;
310
+ /** The column headers, in render order — which `columnOrder` and a drag can change. */
311
+ getHeaderCells(filters?: WrTableHeaderCellHarnessFilters): Promise<WrTableHeaderCellHarness[]>;
312
+ /**
313
+ * The column titles, in render order.
314
+ *
315
+ * The selection and expand headers are not columns and are not here, so this
316
+ * list stays as wide as every row from {@link getCellTexts}.
317
+ */
318
+ getHeaderTexts(): Promise<string[]>;
319
+ /** The direction a column announces via `aria-sort`, or `null` when it does not sort. */
320
+ getSortDirection(columnTitle: string): Promise<'ascending' | 'descending' | 'none' | null>;
321
+ /**
322
+ * Advance a column's sort one step — none → ascending → descending → none.
323
+ *
324
+ * Sorting is the host's job: `<wr-table>` publishes the intent through its `sort`
325
+ * model and never reorders `items` itself, so a spec that expects the rows to
326
+ * move has to sort the data the way the app does.
327
+ */
328
+ sortByColumn(columnTitle: string): Promise<void>;
329
+ /**
330
+ * The body rows currently rendered, in DOM order.
331
+ *
332
+ * "Currently rendered" is the whole caveat of a virtualized table: while
333
+ * {@link isVirtual} is true the `<tbody>` holds only the window around the scroll
334
+ * offset, padded by a spacer row at each end that still has rows to stand in for
335
+ * (one of them, at the top or the bottom of the list), so this returns the
336
+ * WINDOW — not the dataset.
337
+ * {@link getAriaRowCount} is the total the table announces and
338
+ * {@link WrTableRowHarness.getRowIndex} says where a row sits in it. Nothing here
339
+ * scrolls that window on purpose: the viewport has no layout in a unit test, so a
340
+ * `scrollTo` would silently do nothing. Reach for `WrTable.scrollToRow()` in a
341
+ * real browser, or narrow the data instead.
342
+ *
343
+ * Group bands, per-group subtotals, detail rows and the "no data" row are not
344
+ * rows and never appear here.
345
+ */
346
+ getRows(filters?: WrTableRowHarnessFilters): Promise<WrTableRowHarness[]>;
347
+ /** The whole body as a matrix of cell text — one array per row, one entry per column. */
348
+ getCellTexts(): Promise<string[][]>;
349
+ /**
350
+ * The `<tfoot>` summary cells, one per column and `''` for a column with no
351
+ * `summary`. Empty when no column defines one.
352
+ *
353
+ * The lead cells are dropped so this lines up with {@link getHeaderTexts}. A
354
+ * per-group subtotal row is NOT here — it lives in the body, under its band.
355
+ */
356
+ getFooterTexts(): Promise<string[]>;
357
+ /** The "no data" message, or `null` while the table has rows to show. */
358
+ getEmptyText(): Promise<string | null>;
359
+ /**
360
+ * The row count the table announces (`aria-rowcount` — header and summary row
361
+ * included), or `null` when it is not virtualized and every row is in the DOM.
362
+ */
363
+ getAriaRowCount(): Promise<number | null>;
364
+ /** Whether the header offers a select-all box — only `rowSelection="multiple"` does. */
365
+ hasSelectAll(): Promise<boolean>;
366
+ /** Whether every row in the select-all scope is selected — see {@link toggleSelectAll}. */
367
+ isAllSelected(): Promise<boolean>;
368
+ /**
369
+ * Whether some rows are selected and others are not — the box's third state.
370
+ *
371
+ * `indeterminate` is a DOM PROPERTY, not an attribute: reading the attribute
372
+ * reports `null` for a box that is visibly dashed.
373
+ */
374
+ isPartiallySelected(): Promise<boolean>;
375
+ /**
376
+ * Click the select-all box, once.
377
+ *
378
+ * Its scope is the rows the table RENDERS — the current page, and a collapsed
379
+ * group's rows are out because collapsing drops them from that list. A
380
+ * virtualized table's off-window rows are IN, though: the window is a slice
381
+ * taken after the list is built, so one click selects the whole dataset and not
382
+ * just what is in the DOM. And the third state is worth knowing about before
383
+ * asserting: while the selection is partial the box reads unchecked, so one
384
+ * click selects everything rather than clearing it.
385
+ */
386
+ toggleSelectAll(): Promise<void>;
387
+ /**
388
+ * The text of each open detail row, in row order.
389
+ *
390
+ * A detail row is a full-width `<tr>` NEXT TO the row it belongs to, not inside
391
+ * it — which is why it is neither one of {@link getRows} nor one of a row's
392
+ * cells.
393
+ */
394
+ getDetailTexts(): Promise<string[]>;
395
+ /**
396
+ * The group band labels, in order.
397
+ *
398
+ * Empty when `groupBy` is off — and also when a `[wrTableGroupHeader]` template
399
+ * replaced the built-in band, since the label is then the consumer's own markup.
400
+ * Reach for that through {@link getRows}' siblings or your own component's
401
+ * harness.
402
+ */
403
+ getGroupLabels(): Promise<string[]>;
404
+ /** Whether the band with this label is collapsed. */
405
+ isGroupCollapsed(label: string): Promise<boolean>;
406
+ /** Collapse or expand the band with this label. */
407
+ toggleGroup(label: string): Promise<void>;
408
+ /** The header for a column title, or a failure that says which titles do exist. */
409
+ private headerCellFor;
410
+ /**
411
+ * The collapse toggle of one band.
412
+ *
413
+ * Paired by index rather than by containment: both lists are emitted once per
414
+ * band by the same loop, in the same order, and a `TestElement` cannot be
415
+ * queried into.
416
+ */
417
+ private groupToggleFor;
418
+ /** The select-all input, or a failure naming both reasons it is missing. */
419
+ private selectAllHost;
420
+ }
421
+
422
+ export { WrTableCellHarness, WrTableHarness, WrTableHeaderCellHarness, WrTableRowHarness };
423
+ export type { WrTableCellHarnessFilters, WrTableHarnessFilters, WrTableHeaderCellHarnessFilters, WrTableRowHarnessFilters };
@@ -438,6 +438,17 @@ declare class WrTable {
438
438
  protected readonly cellMap: _angular_core.Signal<Map<string, TemplateRef<WrTableCellContext>>>;
439
439
  private readonly platformId;
440
440
  private readonly headerCells;
441
+ /**
442
+ * Ambient reading direction, for the two header gestures that travel the
443
+ * inline axis: the resize drag and the CDK's drop-slot index.
444
+ *
445
+ * Optional so a bare `TestBed` — or a consumer who never set a direction —
446
+ * needs no provider; `Directionality` is root-provided anyway, and a missing
447
+ * one reads as `ltr`. Read per gesture rather than cached, so a runtime `dir`
448
+ * flip needs no subscription to `change`.
449
+ */
450
+ private readonly dir;
451
+ private isRtl;
441
452
  /**
442
453
  * Columns in render order — declaration order, overridden by `columnOrder`
443
454
  * once reordered; new keys append, removed keys drop out. Pin and resize
@@ -477,6 +488,16 @@ declare class WrTable {
477
488
  /** Freeze every column at its current rendered header width (skips frozen keys). */
478
489
  private freezeColumnWidths;
479
490
  protected onResizeStart(event: PointerEvent, key: string, th: HTMLElement): void;
491
+ /**
492
+ * Pointer travel along the INLINE axis since the drag started, in px.
493
+ *
494
+ * The grip sits on each column's inline-END edge, so a column grows as the
495
+ * pointer moves away from that column's start: rightward in LTR, leftward in
496
+ * RTL. Signed here once rather than sprinkled through the width maths — and
497
+ * this sign is the pair of `inset-inline-end` on `.wr-table__resize-handle`,
498
+ * so the two must move together.
499
+ */
500
+ private resizeDelta;
480
501
  protected onResizeMove(event: PointerEvent): void;
481
502
  protected onResizeEnd(event: PointerEvent): void;
482
503
  /** md-density fallback row height (px), used before measuring / on the server. */
@@ -519,6 +540,17 @@ declare class WrTable {
519
540
  /**
520
541
  * Keep pinned columns anchored — a drop can't land on a pinned column's slot,
521
542
  * so a scrollable column can't be dragged into the frozen region at either edge.
543
+ *
544
+ * The index the CDK hands over is a slot in the pointer sweep it does along
545
+ * the header, and that sweep is always left-to-right (`SingleAxisSortStrategy`
546
+ * caches item rects sorted by `clientRect.left`). `displayColumns()` is DOM
547
+ * order, which under `dir="rtl"` runs the other way — so without the mirror
548
+ * the guard is asked about the column at the opposite end of the header, and
549
+ * a drop lands on the pinned one it was meant to protect.
550
+ *
551
+ * The drop event itself needs no such mapping: `previousIndex` /
552
+ * `currentIndex` come from `getItemIndex`, which the CDK already un-mirrors
553
+ * back to DOM order.
522
554
  */
523
555
  protected readonly sortPredicate: (index: number) => boolean;
524
556
  private rowKeyOf;
@@ -760,6 +792,16 @@ declare class WrTableFilter {
760
792
  protected readonly query: _angular_core.WritableSignal<string>;
761
793
  /** Filtered + selection-tracked view of items. */
762
794
  protected readonly visible: _angular_core.Signal<WrTableFilterItem<unknown>[]>;
795
+ /**
796
+ * Bumped on every selection change.
797
+ *
798
+ * `items` belongs to the CONSUMER — the column definition hands the same array
799
+ * back on every render — and this component flips `selected` on those objects in
800
+ * place. No signal sees a property mutation, so `selectedCount` memoised its
801
+ * first answer: the count badge never appeared and the `--active` class never
802
+ * arrived, however many boxes were ticked.
803
+ */
804
+ private readonly selectionVersion;
763
805
  protected readonly selectedCount: _angular_core.Signal<number>;
764
806
  protected readonly classes: _angular_core.Signal<string>;
765
807
  protected onSearchInput(event: Event): void;