ngwr 10.2.1 → 11.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (425) hide show
  1. package/README.md +39 -19
  2. package/anchor/styles/_index.scss +4 -4
  3. package/back-top/styles/_index.scss +6 -1
  4. package/blur-text/styles/_index.scss +13 -0
  5. package/button/styles/_index.scss +11 -6
  6. package/carousel/styles/_index.scss +13 -2
  7. package/cascader/styles/_index.scss +2 -2
  8. package/circular-text/styles/_index.scss +2 -0
  9. package/collapse/styles/_index.scss +1 -1
  10. package/color-picker/styles/_index.scss +6 -1
  11. package/compare/styles/_index.scss +1 -2
  12. package/context-menu/styles/_index.scss +6 -1
  13. package/descriptions/styles/_index.scss +2 -2
  14. package/dialog/styles/_index.scss +7 -0
  15. package/drawer/styles/_index.scss +20 -1
  16. package/dropdown/styles/_index.scss +19 -5
  17. package/empty/styles/_index.scss +10 -0
  18. package/fesm2022/ngwr-action-sheet.mjs +13 -3
  19. package/fesm2022/ngwr-action-sheet.mjs.map +1 -1
  20. package/fesm2022/ngwr-affix.mjs +40 -13
  21. package/fesm2022/ngwr-affix.mjs.map +1 -1
  22. package/fesm2022/ngwr-anchor.mjs +18 -6
  23. package/fesm2022/ngwr-anchor.mjs.map +1 -1
  24. package/fesm2022/ngwr-aurora.mjs +2 -2
  25. package/fesm2022/ngwr-aurora.mjs.map +1 -1
  26. package/fesm2022/ngwr-avatar.mjs +31 -7
  27. package/fesm2022/ngwr-avatar.mjs.map +1 -1
  28. package/fesm2022/ngwr-back-top.mjs +6 -2
  29. package/fesm2022/ngwr-back-top.mjs.map +1 -1
  30. package/fesm2022/ngwr-badge.mjs +1 -1
  31. package/fesm2022/ngwr-badge.mjs.map +1 -1
  32. package/fesm2022/ngwr-bar-chart.mjs +30 -9
  33. package/fesm2022/ngwr-bar-chart.mjs.map +1 -1
  34. package/fesm2022/ngwr-blur-text.mjs +2 -2
  35. package/fesm2022/ngwr-blur-text.mjs.map +1 -1
  36. package/fesm2022/ngwr-border-glow.mjs +2 -2
  37. package/fesm2022/ngwr-border-glow.mjs.map +1 -1
  38. package/fesm2022/ngwr-breadcrumbs.mjs +2 -2
  39. package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -1
  40. package/fesm2022/ngwr-burger.mjs +9 -4
  41. package/fesm2022/ngwr-burger.mjs.map +1 -1
  42. package/fesm2022/ngwr-button-testing.mjs +96 -0
  43. package/fesm2022/ngwr-button-testing.mjs.map +1 -0
  44. package/fesm2022/ngwr-button.mjs +31 -14
  45. package/fesm2022/ngwr-button.mjs.map +1 -1
  46. package/fesm2022/ngwr-calendar-heatmap.mjs +40 -8
  47. package/fesm2022/ngwr-calendar-heatmap.mjs.map +1 -1
  48. package/fesm2022/ngwr-calendar.mjs +20 -1
  49. package/fesm2022/ngwr-calendar.mjs.map +1 -1
  50. package/fesm2022/ngwr-card.mjs +2 -2
  51. package/fesm2022/ngwr-card.mjs.map +1 -1
  52. package/fesm2022/ngwr-carousel-testing.mjs +377 -0
  53. package/fesm2022/ngwr-carousel-testing.mjs.map +1 -0
  54. package/fesm2022/ngwr-carousel.mjs +67 -13
  55. package/fesm2022/ngwr-carousel.mjs.map +1 -1
  56. package/fesm2022/ngwr-cascader-testing.mjs +534 -0
  57. package/fesm2022/ngwr-cascader-testing.mjs.map +1 -0
  58. package/fesm2022/ngwr-cascader.mjs +2 -2
  59. package/fesm2022/ngwr-cascader.mjs.map +1 -1
  60. package/fesm2022/ngwr-checkbox-testing.mjs +90 -0
  61. package/fesm2022/ngwr-checkbox-testing.mjs.map +1 -0
  62. package/fesm2022/ngwr-checkbox.mjs +9 -3
  63. package/fesm2022/ngwr-checkbox.mjs.map +1 -1
  64. package/fesm2022/ngwr-circular-text.mjs +2 -2
  65. package/fesm2022/ngwr-circular-text.mjs.map +1 -1
  66. package/fesm2022/ngwr-click-spark.mjs +2 -2
  67. package/fesm2022/ngwr-click-spark.mjs.map +1 -1
  68. package/fesm2022/ngwr-collapse-testing.mjs +368 -0
  69. package/fesm2022/ngwr-collapse-testing.mjs.map +1 -0
  70. package/fesm2022/ngwr-color-picker.mjs +134 -14
  71. package/fesm2022/ngwr-color-picker.mjs.map +1 -1
  72. package/fesm2022/ngwr-command-palette-testing.mjs +589 -0
  73. package/fesm2022/ngwr-command-palette-testing.mjs.map +1 -0
  74. package/fesm2022/ngwr-command-palette.mjs +58 -8
  75. package/fesm2022/ngwr-command-palette.mjs.map +1 -1
  76. package/fesm2022/ngwr-compare.mjs +103 -13
  77. package/fesm2022/ngwr-compare.mjs.map +1 -1
  78. package/fesm2022/ngwr-config.mjs +106 -0
  79. package/fesm2022/ngwr-config.mjs.map +1 -0
  80. package/fesm2022/ngwr-context-menu-testing.mjs +631 -0
  81. package/fesm2022/ngwr-context-menu-testing.mjs.map +1 -0
  82. package/fesm2022/ngwr-context-menu.mjs +94 -8
  83. package/fesm2022/ngwr-context-menu.mjs.map +1 -1
  84. package/fesm2022/ngwr-cookie.mjs +5 -1
  85. package/fesm2022/ngwr-cookie.mjs.map +1 -1
  86. package/fesm2022/ngwr-counter.mjs +11 -3
  87. package/fesm2022/ngwr-counter.mjs.map +1 -1
  88. package/fesm2022/ngwr-date-adapter-luxon.mjs +52 -4
  89. package/fesm2022/ngwr-date-adapter-luxon.mjs.map +1 -1
  90. package/fesm2022/ngwr-date-adapter.mjs +54 -8
  91. package/fesm2022/ngwr-date-adapter.mjs.map +1 -1
  92. package/fesm2022/ngwr-date-picker-testing.mjs +766 -0
  93. package/fesm2022/ngwr-date-picker-testing.mjs.map +1 -0
  94. package/fesm2022/ngwr-date-picker.mjs +73 -3
  95. package/fesm2022/ngwr-date-picker.mjs.map +1 -1
  96. package/fesm2022/ngwr-decrypt-text.mjs +27 -9
  97. package/fesm2022/ngwr-decrypt-text.mjs.map +1 -1
  98. package/fesm2022/ngwr-dialog-testing.mjs +89 -0
  99. package/fesm2022/ngwr-dialog-testing.mjs.map +1 -0
  100. package/fesm2022/ngwr-directives.mjs +36 -12
  101. package/fesm2022/ngwr-directives.mjs.map +1 -1
  102. package/fesm2022/ngwr-donut-chart.mjs +22 -5
  103. package/fesm2022/ngwr-donut-chart.mjs.map +1 -1
  104. package/fesm2022/ngwr-drag-drop.mjs +2 -2
  105. package/fesm2022/ngwr-drag-drop.mjs.map +1 -1
  106. package/fesm2022/ngwr-drawer-testing.mjs +250 -0
  107. package/fesm2022/ngwr-drawer-testing.mjs.map +1 -0
  108. package/fesm2022/ngwr-dropdown-testing.mjs +291 -0
  109. package/fesm2022/ngwr-dropdown-testing.mjs.map +1 -0
  110. package/fesm2022/ngwr-dropdown.mjs +10 -2
  111. package/fesm2022/ngwr-dropdown.mjs.map +1 -1
  112. package/fesm2022/ngwr-empty.mjs +24 -7
  113. package/fesm2022/ngwr-empty.mjs.map +1 -1
  114. package/fesm2022/ngwr-event-calendar.mjs +57 -10
  115. package/fesm2022/ngwr-event-calendar.mjs.map +1 -1
  116. package/fesm2022/ngwr-falling-text.mjs +2 -2
  117. package/fesm2022/ngwr-falling-text.mjs.map +1 -1
  118. package/fesm2022/ngwr-file-upload-testing.mjs +332 -0
  119. package/fesm2022/ngwr-file-upload-testing.mjs.map +1 -0
  120. package/fesm2022/ngwr-form-testing.mjs +451 -0
  121. package/fesm2022/ngwr-form-testing.mjs.map +1 -0
  122. package/fesm2022/ngwr-form.mjs +19 -3
  123. package/fesm2022/ngwr-form.mjs.map +1 -1
  124. package/fesm2022/ngwr-fuzzy-text.mjs +9 -2
  125. package/fesm2022/ngwr-fuzzy-text.mjs.map +1 -1
  126. package/fesm2022/ngwr-gauge.mjs +19 -5
  127. package/fesm2022/ngwr-gauge.mjs.map +1 -1
  128. package/fesm2022/ngwr-glitch-text.mjs +2 -2
  129. package/fesm2022/ngwr-glitch-text.mjs.map +1 -1
  130. package/fesm2022/ngwr-gradient-text.mjs +2 -2
  131. package/fesm2022/ngwr-gradient-text.mjs.map +1 -1
  132. package/fesm2022/ngwr-i18n-en.mjs +50 -0
  133. package/fesm2022/ngwr-i18n-en.mjs.map +1 -1
  134. package/fesm2022/ngwr-i18n-ru.mjs +48 -0
  135. package/fesm2022/ngwr-i18n-ru.mjs.map +1 -1
  136. package/fesm2022/ngwr-image-cropper.mjs +23 -0
  137. package/fesm2022/ngwr-image-cropper.mjs.map +1 -1
  138. package/fesm2022/ngwr-input-number-testing.mjs +306 -0
  139. package/fesm2022/ngwr-input-number-testing.mjs.map +1 -0
  140. package/fesm2022/ngwr-input-number.mjs +35 -3
  141. package/fesm2022/ngwr-input-number.mjs.map +1 -1
  142. package/fesm2022/ngwr-input-otp-testing.mjs +419 -0
  143. package/fesm2022/ngwr-input-otp-testing.mjs.map +1 -0
  144. package/fesm2022/ngwr-input-otp.mjs +36 -5
  145. package/fesm2022/ngwr-input-otp.mjs.map +1 -1
  146. package/fesm2022/ngwr-input-testing.mjs +102 -0
  147. package/fesm2022/ngwr-input-testing.mjs.map +1 -0
  148. package/fesm2022/ngwr-input.mjs +47 -10
  149. package/fesm2022/ngwr-input.mjs.map +1 -1
  150. package/fesm2022/ngwr-knob.mjs +44 -8
  151. package/fesm2022/ngwr-knob.mjs.map +1 -1
  152. package/fesm2022/ngwr-layout.mjs +21 -5
  153. package/fesm2022/ngwr-layout.mjs.map +1 -1
  154. package/fesm2022/ngwr-lightbox.mjs +33 -6
  155. package/fesm2022/ngwr-lightbox.mjs.map +1 -1
  156. package/fesm2022/ngwr-line-chart.mjs +17 -4
  157. package/fesm2022/ngwr-line-chart.mjs.map +1 -1
  158. package/fesm2022/ngwr-list.mjs +2 -2
  159. package/fesm2022/ngwr-list.mjs.map +1 -1
  160. package/fesm2022/ngwr-loading-bar.mjs +2 -2
  161. package/fesm2022/ngwr-loading-bar.mjs.map +1 -1
  162. package/fesm2022/ngwr-markdown-testing.mjs +516 -0
  163. package/fesm2022/ngwr-markdown-testing.mjs.map +1 -0
  164. package/fesm2022/ngwr-markdown.mjs +1492 -0
  165. package/fesm2022/ngwr-markdown.mjs.map +1 -0
  166. package/fesm2022/ngwr-marquee.mjs +17 -6
  167. package/fesm2022/ngwr-marquee.mjs.map +1 -1
  168. package/fesm2022/ngwr-mention-testing.mjs +513 -0
  169. package/fesm2022/ngwr-mention-testing.mjs.map +1 -0
  170. package/fesm2022/ngwr-mention.mjs +10 -1
  171. package/fesm2022/ngwr-mention.mjs.map +1 -1
  172. package/fesm2022/ngwr-meta.mjs +22 -7
  173. package/fesm2022/ngwr-meta.mjs.map +1 -1
  174. package/fesm2022/ngwr-meter-group.mjs +19 -5
  175. package/fesm2022/ngwr-meter-group.mjs.map +1 -1
  176. package/fesm2022/ngwr-overlay.mjs +41 -1
  177. package/fesm2022/ngwr-overlay.mjs.map +1 -1
  178. package/fesm2022/ngwr-pagination-testing.mjs +389 -0
  179. package/fesm2022/ngwr-pagination-testing.mjs.map +1 -0
  180. package/fesm2022/ngwr-pagination.mjs +14 -2
  181. package/fesm2022/ngwr-pagination.mjs.map +1 -1
  182. package/fesm2022/ngwr-popconfirm-testing.mjs +309 -0
  183. package/fesm2022/ngwr-popconfirm-testing.mjs.map +1 -0
  184. package/fesm2022/ngwr-popconfirm.mjs +95 -17
  185. package/fesm2022/ngwr-popconfirm.mjs.map +1 -1
  186. package/fesm2022/ngwr-popover-testing.mjs +316 -0
  187. package/fesm2022/ngwr-popover-testing.mjs.map +1 -0
  188. package/fesm2022/ngwr-popover.mjs +21 -3
  189. package/fesm2022/ngwr-popover.mjs.map +1 -1
  190. package/fesm2022/ngwr-pull-to-refresh.mjs +17 -2
  191. package/fesm2022/ngwr-pull-to-refresh.mjs.map +1 -1
  192. package/fesm2022/ngwr-qr.mjs +13 -3
  193. package/fesm2022/ngwr-qr.mjs.map +1 -1
  194. package/fesm2022/ngwr-radio-testing.mjs +392 -0
  195. package/fesm2022/ngwr-radio-testing.mjs.map +1 -0
  196. package/fesm2022/ngwr-radio.mjs +10 -3
  197. package/fesm2022/ngwr-radio.mjs.map +1 -1
  198. package/fesm2022/ngwr-rating-testing.mjs +384 -0
  199. package/fesm2022/ngwr-rating-testing.mjs.map +1 -0
  200. package/fesm2022/ngwr-rating.mjs +37 -2
  201. package/fesm2022/ngwr-rating.mjs.map +1 -1
  202. package/fesm2022/ngwr-segmented-testing.mjs +512 -0
  203. package/fesm2022/ngwr-segmented-testing.mjs.map +1 -0
  204. package/fesm2022/ngwr-select-testing.mjs +268 -0
  205. package/fesm2022/ngwr-select-testing.mjs.map +1 -0
  206. package/fesm2022/ngwr-select.mjs +87 -16
  207. package/fesm2022/ngwr-select.mjs.map +1 -1
  208. package/fesm2022/ngwr-shiny-text.mjs +2 -2
  209. package/fesm2022/ngwr-shiny-text.mjs.map +1 -1
  210. package/fesm2022/ngwr-sidebar.mjs +65 -12
  211. package/fesm2022/ngwr-sidebar.mjs.map +1 -1
  212. package/fesm2022/ngwr-slider-testing.mjs +478 -0
  213. package/fesm2022/ngwr-slider-testing.mjs.map +1 -0
  214. package/fesm2022/ngwr-slider.mjs +57 -13
  215. package/fesm2022/ngwr-slider.mjs.map +1 -1
  216. package/fesm2022/ngwr-sparkline.mjs +26 -6
  217. package/fesm2022/ngwr-sparkline.mjs.map +1 -1
  218. package/fesm2022/ngwr-speed-dial.mjs +37 -4
  219. package/fesm2022/ngwr-speed-dial.mjs.map +1 -1
  220. package/fesm2022/ngwr-spinner.mjs +12 -3
  221. package/fesm2022/ngwr-spinner.mjs.map +1 -1
  222. package/fesm2022/ngwr-splash-cursor.mjs +2 -2
  223. package/fesm2022/ngwr-splash-cursor.mjs.map +1 -1
  224. package/fesm2022/ngwr-split-text.mjs +2 -2
  225. package/fesm2022/ngwr-split-text.mjs.map +1 -1
  226. package/fesm2022/ngwr-splitter.mjs +70 -9
  227. package/fesm2022/ngwr-splitter.mjs.map +1 -1
  228. package/fesm2022/ngwr-spotlight-card.mjs +2 -2
  229. package/fesm2022/ngwr-spotlight-card.mjs.map +1 -1
  230. package/fesm2022/ngwr-star-border.mjs +2 -2
  231. package/fesm2022/ngwr-star-border.mjs.map +1 -1
  232. package/fesm2022/ngwr-statistic.mjs +24 -7
  233. package/fesm2022/ngwr-statistic.mjs.map +1 -1
  234. package/fesm2022/ngwr-stepper-testing.mjs +477 -0
  235. package/fesm2022/ngwr-stepper-testing.mjs.map +1 -0
  236. package/fesm2022/ngwr-switch-testing.mjs +77 -0
  237. package/fesm2022/ngwr-switch-testing.mjs.map +1 -0
  238. package/fesm2022/ngwr-switch.mjs +9 -3
  239. package/fesm2022/ngwr-switch.mjs.map +1 -1
  240. package/fesm2022/ngwr-table-testing.mjs +580 -0
  241. package/fesm2022/ngwr-table-testing.mjs.map +1 -0
  242. package/fesm2022/ngwr-table.mjs +87 -14
  243. package/fesm2022/ngwr-table.mjs.map +1 -1
  244. package/fesm2022/ngwr-tabs-testing.mjs +617 -0
  245. package/fesm2022/ngwr-tabs-testing.mjs.map +1 -0
  246. package/fesm2022/ngwr-tabs.mjs +38 -6
  247. package/fesm2022/ngwr-tabs.mjs.map +1 -1
  248. package/fesm2022/ngwr-textarea-testing.mjs +238 -0
  249. package/fesm2022/ngwr-textarea-testing.mjs.map +1 -0
  250. package/fesm2022/ngwr-textarea.mjs +32 -4
  251. package/fesm2022/ngwr-textarea.mjs.map +1 -1
  252. package/fesm2022/ngwr-tilt-card.mjs +2 -2
  253. package/fesm2022/ngwr-tilt-card.mjs.map +1 -1
  254. package/fesm2022/ngwr-toast-testing.mjs +101 -0
  255. package/fesm2022/ngwr-toast-testing.mjs.map +1 -0
  256. package/fesm2022/ngwr-toast.mjs +2 -2
  257. package/fesm2022/ngwr-toast.mjs.map +1 -1
  258. package/fesm2022/ngwr-tour.mjs +61 -9
  259. package/fesm2022/ngwr-tour.mjs.map +1 -1
  260. package/fesm2022/ngwr-transfer-testing.mjs +538 -0
  261. package/fesm2022/ngwr-transfer-testing.mjs.map +1 -0
  262. package/fesm2022/ngwr-transfer.mjs +45 -14
  263. package/fesm2022/ngwr-transfer.mjs.map +1 -1
  264. package/fesm2022/ngwr-tree-testing.mjs +734 -0
  265. package/fesm2022/ngwr-tree-testing.mjs.map +1 -0
  266. package/fesm2022/ngwr-tree.mjs +73 -7
  267. package/fesm2022/ngwr-tree.mjs.map +1 -1
  268. package/fesm2022/ngwr-typewriter.mjs +5 -3
  269. package/fesm2022/ngwr-typewriter.mjs.map +1 -1
  270. package/fesm2022/ngwr-version.mjs +1 -1
  271. package/fesm2022/ngwr-version.mjs.map +1 -1
  272. package/fesm2022/ngwr-virtual-scroll.mjs +31 -5
  273. package/fesm2022/ngwr-virtual-scroll.mjs.map +1 -1
  274. package/fesm2022/ngwr-waves.mjs +3 -3
  275. package/fesm2022/ngwr-waves.mjs.map +1 -1
  276. package/fesm2022/ngwr-window.mjs +8 -0
  277. package/fesm2022/ngwr-window.mjs.map +1 -1
  278. package/gauge/styles/_index.scss +1 -1
  279. package/glitch-text/styles/_index.scss +4 -0
  280. package/i18n/en.json +48 -0
  281. package/i18n/ru.json +48 -0
  282. package/image-cropper/styles/_index.scss +13 -1
  283. package/input/styles/_index.scss +2 -2
  284. package/input-number/styles/_index.scss +7 -2
  285. package/knob/styles/_index.scss +8 -1
  286. package/layout/styles/_index.scss +3 -3
  287. package/lightbox/styles/_index.scss +10 -2
  288. package/line-chart/styles/_index.scss +6 -0
  289. package/llms-full.txt +151 -4
  290. package/llms.txt +57 -8
  291. package/loading-bar/styles/_index.scss +1 -2
  292. package/markdown/styles/_index.scss +296 -0
  293. package/marquee/styles/_index.scss +12 -0
  294. package/mcp/api.js +512 -0
  295. package/mcp/catalog.js +157 -0
  296. package/mcp/server.js +273 -0
  297. package/mcp/tools.js +366 -0
  298. package/meter-group/styles/_index.scss +1 -1
  299. package/package.json +186 -35
  300. package/pagination/styles/_index.scss +6 -6
  301. package/popover/styles/_index.scss +37 -5
  302. package/rating/styles/_index.scss +10 -0
  303. package/schematics/use/symbol-map.json +2 -0
  304. package/segmented/styles/_index.scss +7 -0
  305. package/select/styles/_index.scss +29 -9
  306. package/sidebar/styles/_index.scss +30 -5
  307. package/slider/styles/_index.scss +15 -0
  308. package/speed-dial/styles/_index.scss +20 -0
  309. package/split-text/styles/_index.scss +13 -0
  310. package/star-border/styles/_index.scss +2 -0
  311. package/stepper/styles/_index.scss +1 -1
  312. package/styles/_grid.scss +4 -4
  313. package/styles.scss +1 -0
  314. package/switch/styles/_index.scss +5 -3
  315. package/table/styles/_index.scss +22 -11
  316. package/tabs/styles/_index.scss +11 -1
  317. package/textarea/styles/_index.scss +5 -0
  318. package/theme/styles/_colors.scss +29 -13
  319. package/theme/styles/_dark.scss +11 -3
  320. package/theme/styles/_mixins.scss +3 -0
  321. package/timeline/styles/_index.scss +2 -2
  322. package/toast/styles/_index.scss +17 -8
  323. package/toolbar/styles/_index.scss +3 -3
  324. package/tour/styles/_index.scss +7 -1
  325. package/tree/styles/_index.scss +5 -3
  326. package/types/ngwr-action-sheet.d.ts +9 -1
  327. package/types/ngwr-affix.d.ts +7 -1
  328. package/types/ngwr-anchor.d.ts +8 -1
  329. package/types/ngwr-avatar.d.ts +13 -3
  330. package/types/ngwr-bar-chart.d.ts +16 -0
  331. package/types/ngwr-burger.d.ts +6 -2
  332. package/types/ngwr-button-testing.d.ts +85 -0
  333. package/types/ngwr-button.d.ts +26 -10
  334. package/types/ngwr-calendar-heatmap.d.ts +16 -2
  335. package/types/ngwr-calendar.d.ts +10 -0
  336. package/types/ngwr-carousel-testing.d.ts +257 -0
  337. package/types/ngwr-carousel.d.ts +20 -4
  338. package/types/ngwr-cascader-testing.d.ts +392 -0
  339. package/types/ngwr-checkbox-testing.d.ts +77 -0
  340. package/types/ngwr-checkbox.d.ts +7 -2
  341. package/types/ngwr-collapse-testing.d.ts +290 -0
  342. package/types/ngwr-color-picker.d.ts +20 -11
  343. package/types/ngwr-command-palette-testing.d.ts +437 -0
  344. package/types/ngwr-command-palette.d.ts +25 -2
  345. package/types/ngwr-compare.d.ts +50 -2
  346. package/types/ngwr-config.d.ts +176 -0
  347. package/types/ngwr-context-menu-testing.d.ts +401 -0
  348. package/types/ngwr-context-menu.d.ts +65 -17
  349. package/types/ngwr-counter.d.ts +6 -1
  350. package/types/ngwr-date-adapter-luxon.d.ts +26 -0
  351. package/types/ngwr-date-picker-testing.d.ts +518 -0
  352. package/types/ngwr-date-picker.d.ts +4 -0
  353. package/types/ngwr-dialog-testing.d.ts +79 -0
  354. package/types/ngwr-directives.d.ts +10 -1
  355. package/types/ngwr-donut-chart.d.ts +8 -1
  356. package/types/ngwr-drawer-testing.d.ts +196 -0
  357. package/types/ngwr-dropdown-testing.d.ts +202 -0
  358. package/types/ngwr-dropdown.d.ts +7 -1
  359. package/types/ngwr-empty.d.ts +19 -4
  360. package/types/ngwr-event-calendar.d.ts +26 -1
  361. package/types/ngwr-file-upload-testing.d.ts +194 -0
  362. package/types/ngwr-form-testing.d.ts +379 -0
  363. package/types/ngwr-form.d.ts +17 -0
  364. package/types/ngwr-gauge.d.ts +13 -1
  365. package/types/ngwr-image-cropper.d.ts +10 -0
  366. package/types/ngwr-input-number-testing.d.ts +226 -0
  367. package/types/ngwr-input-number.d.ts +29 -1
  368. package/types/ngwr-input-otp-testing.d.ts +299 -0
  369. package/types/ngwr-input-otp.d.ts +23 -2
  370. package/types/ngwr-input-testing.d.ts +84 -0
  371. package/types/ngwr-input.d.ts +20 -6
  372. package/types/ngwr-knob.d.ts +18 -0
  373. package/types/ngwr-layout.d.ts +1 -0
  374. package/types/ngwr-lightbox.d.ts +17 -3
  375. package/types/ngwr-line-chart.d.ts +9 -2
  376. package/types/ngwr-markdown-testing.d.ts +462 -0
  377. package/types/ngwr-markdown.d.ts +534 -0
  378. package/types/ngwr-marquee.d.ts +12 -2
  379. package/types/ngwr-mention-testing.d.ts +359 -0
  380. package/types/ngwr-meta.d.ts +4 -2
  381. package/types/ngwr-meter-group.d.ts +11 -1
  382. package/types/ngwr-overlay.d.ts +33 -2
  383. package/types/ngwr-pagination-testing.d.ts +291 -0
  384. package/types/ngwr-pagination.d.ts +1 -0
  385. package/types/ngwr-popconfirm-testing.d.ts +235 -0
  386. package/types/ngwr-popconfirm.d.ts +31 -21
  387. package/types/ngwr-popover-testing.d.ts +221 -0
  388. package/types/ngwr-popover.d.ts +9 -0
  389. package/types/ngwr-pull-to-refresh.d.ts +7 -0
  390. package/types/ngwr-qr.d.ts +9 -1
  391. package/types/ngwr-radio-testing.d.ts +296 -0
  392. package/types/ngwr-radio.d.ts +8 -2
  393. package/types/ngwr-rating-testing.d.ts +291 -0
  394. package/types/ngwr-rating.d.ts +23 -0
  395. package/types/ngwr-segmented-testing.d.ts +401 -0
  396. package/types/ngwr-select-testing.d.ts +175 -0
  397. package/types/ngwr-select.d.ts +45 -4
  398. package/types/ngwr-sidebar.d.ts +17 -2
  399. package/types/ngwr-slider-testing.d.ts +329 -0
  400. package/types/ngwr-slider.d.ts +35 -1
  401. package/types/ngwr-sparkline.d.ts +12 -2
  402. package/types/ngwr-speed-dial.d.ts +17 -18
  403. package/types/ngwr-spinner.d.ts +8 -1
  404. package/types/ngwr-splitter.d.ts +24 -1
  405. package/types/ngwr-statistic.d.ts +12 -2
  406. package/types/ngwr-stepper-testing.d.ts +346 -0
  407. package/types/ngwr-switch-testing.d.ts +66 -0
  408. package/types/ngwr-switch.d.ts +7 -2
  409. package/types/ngwr-table-testing.d.ts +423 -0
  410. package/types/ngwr-table.d.ts +42 -0
  411. package/types/ngwr-tabs-testing.d.ts +470 -0
  412. package/types/ngwr-tabs.d.ts +9 -0
  413. package/types/ngwr-textarea-testing.d.ts +184 -0
  414. package/types/ngwr-textarea.d.ts +7 -2
  415. package/types/ngwr-toast-testing.d.ts +80 -0
  416. package/types/ngwr-tour.d.ts +27 -0
  417. package/types/ngwr-transfer-testing.d.ts +444 -0
  418. package/types/ngwr-transfer.d.ts +16 -1
  419. package/types/ngwr-tree-testing.d.ts +501 -0
  420. package/types/ngwr-tree.d.ts +33 -0
  421. package/types/ngwr-version.d.ts +1 -1
  422. package/types/ngwr-virtual-scroll.d.ts +13 -1
  423. package/typewriter/styles/_index.scss +1 -1
  424. package/typography/styles/_index.scss +1 -1
  425. package/window/styles/_index.scss +32 -9
@@ -0,0 +1,359 @@
1
+ import { BaseHarnessFilters, ComponentHarness, HarnessPredicate } 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 `[wrMention]` field a harness query matches. */
11
+ interface WrMentionHarnessFilters extends BaseHarnessFilters {
12
+ /** Match the field's current text. A string is an exact match, a RegExp is tested. */
13
+ readonly value?: string | RegExp;
14
+ /**
15
+ * Match the field's placeholder — usually the only thing telling two mention
16
+ * fields apart in a fixture, since the host is a plain `<textarea>` / `<input>`
17
+ * with no label of its own. A string is an exact match, a RegExp is tested.
18
+ */
19
+ readonly placeholder?: string | RegExp;
20
+ /** Match only fields currently offering suggestions (`true`), or only those not (`false`). */
21
+ readonly open?: boolean;
22
+ }
23
+ /** Narrows which suggestion inside a mention panel a harness query matches. */
24
+ interface WrMentionOptionHarnessFilters extends BaseHarnessFilters {
25
+ /** Match the suggestion's label — a string is an exact match, a RegExp is tested. */
26
+ readonly text?: string | RegExp;
27
+ /** Match only the active suggestion (`true`), or only the ones the cursor is not on (`false`). */
28
+ readonly active?: boolean;
29
+ }
30
+
31
+ /**
32
+ * @license
33
+ *
34
+ * Use of this source code is governed by an MIT-style license that can be
35
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
36
+ */
37
+
38
+ /**
39
+ * Test harness for one suggestion inside a `[wrMention]` panel.
40
+ *
41
+ * Reach these through {@link WrMentionHarness.getOptions}, never off the document:
42
+ * the panel is a portal in the shared overlay container, so a bare query answers
43
+ * with whichever mention field opened first.
44
+ *
45
+ * @see https://ngwr.dev/guides/testing
46
+ */
47
+ declare class WrMentionOptionHarness extends ComponentHarness {
48
+ /** One `<li role="option">` in the panel's listbox. */
49
+ static hostSelector: string;
50
+ /** Build a predicate that narrows the query. */
51
+ static with(options?: WrMentionOptionHarnessFilters): HarnessPredicate<WrMentionOptionHarness>;
52
+ /** The suggestion's label — whatever `displayWith` returned for the item. */
53
+ getText(): Promise<string>;
54
+ /**
55
+ * Whether the cursor is on this suggestion.
56
+ *
57
+ * Read from `aria-selected` rather than from the `--active` modifier class. The
58
+ * two are set from the same index, so they agree — but the ARIA state is what a
59
+ * screen reader is told, and the class is only what the highlight is painted
60
+ * with.
61
+ */
62
+ isActive(): Promise<boolean>;
63
+ /**
64
+ * The suggestion's id — the value the field names in `aria-activedescendant`.
65
+ *
66
+ * The only link between the two DOM trees: the panel is in the overlay
67
+ * container, not inside the field, so this id is how the reference reaches it
68
+ * at all.
69
+ */
70
+ getId(): Promise<string | null>;
71
+ /**
72
+ * Pick this suggestion with the mouse.
73
+ *
74
+ * Needs no layout, so it works here: the panel commits on `mousedown` —
75
+ * deliberately, so the field never loses focus and the caret stays put — and
76
+ * the CDK's no-arg click dispatches `mousedown` at the head of its sequence
77
+ * without any hit test.
78
+ */
79
+ click(): Promise<void>;
80
+ /**
81
+ * Move the pointer onto this suggestion, which makes it the active one.
82
+ *
83
+ * Hover and the arrow keys drive the same single cursor, so a spec can assert
84
+ * the mouse path through {@link WrMentionHarness.getActiveOptionLabel} exactly
85
+ * as it does the keyboard one.
86
+ */
87
+ hover(): Promise<void>;
88
+ }
89
+
90
+ /**
91
+ * @license
92
+ *
93
+ * Use of this source code is governed by an MIT-style license that can be
94
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
95
+ */
96
+
97
+ /**
98
+ * Test harness for `[wrMention]` — the field, and the suggestion panel it opens
99
+ * at the caret.
100
+ *
101
+ * The harness matches the FIELD, because that is the only part of a mention in the
102
+ * fixture: the panel is a `ComponentPortal` in the shared overlay container, a
103
+ * sibling of the whole app. Suggestions are read through the document root, scoped
104
+ * by the id the field publishes as `aria-controls` — which is what keeps two
105
+ * mention fields on one page from answering with each other's suggestions.
106
+ *
107
+ * **The field is not a combobox, and it has no `aria-expanded`.** Both are
108
+ * deliberate (the source spells out why: it holds prose, `role="combobox"` is
109
+ * disallowed on `<textarea>` and would drop `aria-multiline`, and `aria-expanded`
110
+ * is not a supported state of `role="textbox"`), and both shape this harness.
111
+ * `aria-controls` is STATIC — it names the listbox even while there is no listbox —
112
+ * so {@link isOpen} asks whether the listbox EXISTS instead of reading a state
113
+ * flag, and "a list appeared" reaches a screen reader through the live region that
114
+ * {@link getStatusMessage} reads.
115
+ *
116
+ * **The panel's POSITION is not testable in jsdom, so nothing here reports it.**
117
+ * `caret.ts` places the panel by measuring a mirror `<div>` with
118
+ * `getBoundingClientRect`, and jsdom has no layout: every rect is zeros, so the
119
+ * measurement collapses to the origin. The overlay still lands on finite numbers —
120
+ * `line-height` computes to `normal` there, so `caret.ts` falls back to
121
+ * `font-size * 1.2` and the pane is offset by that alone (a measured
122
+ * `margin-top: 23.2px`, `margin-left: 0px` on a default fixture) — which is
123
+ * precisely the problem: every one of them is an artefact of the environment
124
+ * rather than a fact about the component. Assert placement in a real browser.
125
+ *
126
+ * @example
127
+ * ```ts
128
+ * const mention = await loader.getHarness(WrMentionHarness);
129
+ *
130
+ * await mention.type('hey @al');
131
+ * expect(await mention.getOptionLabels()).toEqual(['Alan Turing', 'Linus Torvalds']);
132
+ *
133
+ * await mention.commit();
134
+ * expect(await mention.getValue()).toBe('hey @Alan Turing ');
135
+ * ```
136
+ *
137
+ * @see https://ngwr.dev/guides/testing
138
+ */
139
+ declare class WrMentionHarness extends ComponentHarness {
140
+ /** The directive's host. Both tags, since the directive drives either one. */
141
+ static hostSelector: string;
142
+ /** Build a predicate that narrows the query — pass to `getHarness` / `getAllHarnesses`. */
143
+ static with(options?: WrMentionHarnessFilters): HarnessPredicate<WrMentionHarness>;
144
+ /** The field's whole text, mention fragments and prose alike. */
145
+ getValue(): Promise<string>;
146
+ /** The field's placeholder, or `''` when it has none. */
147
+ getPlaceholder(): Promise<string>;
148
+ /**
149
+ * Type into the field one keystroke at a time, APPENDING to whatever is there.
150
+ *
151
+ * The realistic path, and the one that exercises detection the way a person
152
+ * does: the directive re-reads the text before the caret on every `input`, so
153
+ * `type('hey @al')` opens the panel on the `@` and then narrows it twice.
154
+ *
155
+ * Focuses the field, which BLURS whatever was focused before — and a blurred
156
+ * mention field closes its own panel. Use {@link setValue} when a spec needs two
157
+ * fields suggesting at the same time.
158
+ */
159
+ type(text: string): Promise<void>;
160
+ /**
161
+ * Replace the field's whole text and let the directive detect once.
162
+ *
163
+ * The `input` event is dispatched by hand rather than through keystrokes so the
164
+ * field is never focused — which is the only way to get two mention panels open
165
+ * at once, since focusing one field blurs the other and blur closes its panel.
166
+ * The caret lands at the end of the new text, where detection looks.
167
+ */
168
+ setValue(text: string): Promise<void>;
169
+ /** Empty the field. The panel goes with it — there is no trigger char left to detect. */
170
+ clear(): Promise<void>;
171
+ /**
172
+ * Click the field.
173
+ *
174
+ * Re-opens the suggestions when the caret is still sitting inside a mention —
175
+ * the directive re-detects on click, which is how a user who pressed Escape (or
176
+ * clicked away and back) gets the panel again without retyping. Needs no layout:
177
+ * the CDK dispatches the event on the element rather than hit-testing a point.
178
+ */
179
+ click(): Promise<void>;
180
+ /**
181
+ * Whether the panel is offering suggestions.
182
+ *
183
+ * Asks whether this field's listbox exists, because the field publishes no
184
+ * open/closed state to read: `aria-expanded` is not a supported state of
185
+ * `role="textbox"` (axe rates it a critical violation), and `aria-controls` is
186
+ * static here, so its presence says nothing.
187
+ */
188
+ isOpen(): Promise<boolean>;
189
+ /**
190
+ * The field's `aria-autocomplete` — `'list'`, permanently.
191
+ *
192
+ * A capability, not a state: ARIA says authors should not toggle it to signal
193
+ * that suggestions are showing, and being static is what makes the feature
194
+ * discoverable on focus, before a trigger char is ever typed. {@link isOpen}
195
+ * answers the state.
196
+ */
197
+ getAutocomplete(): Promise<string | null>;
198
+ /**
199
+ * The role the field PROMISES its popup will announce, from `aria-haspopup` —
200
+ * `'listbox'`. Required alongside `aria-autocomplete="list"`, and it has to name
201
+ * the popup's real role, which {@link getListboxRole} reads back off the panel.
202
+ */
203
+ getPopupRole(): Promise<string | null>;
204
+ /** The role the open panel announces — `'listbox'`. Throws while the panel is closed. */
205
+ getListboxRole(): Promise<string | null>;
206
+ /**
207
+ * The panel's accessible name.
208
+ *
209
+ * ARIA requires a `role="listbox"` to have one, and a consumer never renders the
210
+ * panel themselves — so the directive supplies it from the i18n catalog
211
+ * (`mention.listbox`).
212
+ */
213
+ getListboxLabel(): Promise<string | null>;
214
+ /**
215
+ * The suggestions on offer, in DOM order.
216
+ *
217
+ * The whole list a user can reach, not a window onto a longer one: the directive
218
+ * slices the matches at `maxResults` (8 by default) before rendering, which is
219
+ * why this panel needs no virtualisation.
220
+ *
221
+ * Throws while the panel is closed — the options do not exist anywhere until the
222
+ * portal is attached, and an empty array reads like a panel that rendered
223
+ * nothing.
224
+ */
225
+ getOptions(filters?: WrMentionOptionHarnessFilters): Promise<WrMentionOptionHarness[]>;
226
+ /** The labels of the suggestions on offer, in DOM order. */
227
+ getOptionLabels(): Promise<string[]>;
228
+ /**
229
+ * The id the field names in `aria-activedescendant`, or `null` when it names
230
+ * nothing.
231
+ *
232
+ * The strict half of the field's two references. `aria-controls` is allowed to
233
+ * dangle (see {@link isOpen}); this one is not — naming an element that is not
234
+ * in the document is an author error no browser reports, it simply stops
235
+ * announcing options. So `null` is the CORRECT answer while the panel is closed,
236
+ * and worth asserting there.
237
+ */
238
+ getActiveOptionId(): Promise<string | null>;
239
+ /**
240
+ * The label a screen reader announces as the active suggestion.
241
+ *
242
+ * Resolved through `aria-activedescendant` the way an assistive technology
243
+ * would, rather than by hunting for the active class — which is why it throws on
244
+ * a reference that resolves to nothing instead of quietly reporting what the
245
+ * class says.
246
+ */
247
+ getActiveOptionLabel(): Promise<string>;
248
+ /**
249
+ * Where the active suggestion sits in {@link getOptions}, 0-based.
250
+ *
251
+ * Matched by id rather than counted by class, so the answer is the one
252
+ * `aria-activedescendant` actually points at.
253
+ */
254
+ getActiveOptionIndex(): Promise<number>;
255
+ /**
256
+ * Move the cursor down one suggestion, wrapping past the last back to the first.
257
+ *
258
+ * ArrowDown — and `aria-activedescendant` is the whole navigation model here,
259
+ * because the options are never focused: focus stays in the field so the user can
260
+ * keep typing the query.
261
+ *
262
+ * Throws while the panel is closed, where ArrowDown belongs to the field.
263
+ */
264
+ nextOption(): Promise<void>;
265
+ /** Move the cursor up one suggestion, wrapping past the first round to the last. */
266
+ previousOption(): Promise<void>;
267
+ /**
268
+ * Insert the active suggestion with Enter.
269
+ *
270
+ * The trigger char and the query are replaced by `valueWith(item, trigger)`
271
+ * (`@Label` by default) plus a trailing space, the caret lands after that space,
272
+ * the panel closes and `(wrMentionSelected)` fires with the item, the trigger
273
+ * char and the query.
274
+ *
275
+ * Throws while the panel is closed — Enter is the field's own key there (a
276
+ * newline in a `<textarea>`), and swallowing it would be the bug.
277
+ */
278
+ commit(): Promise<void>;
279
+ /**
280
+ * Insert the active suggestion with Tab instead.
281
+ *
282
+ * The same commit: the directive takes Tab as a second confirm key and
283
+ * `preventDefault`s it, so focus stays in the field rather than leaving for the
284
+ * next control.
285
+ */
286
+ commitWithTab(): Promise<void>;
287
+ /**
288
+ * Pick the first suggestion matching the filters, with the mouse.
289
+ *
290
+ * Opens nothing by itself — type a trigger char first. Names what the panel does
291
+ * offer when nothing matches, since a silent no-op here surfaces as an
292
+ * unexplained unchanged field further down the spec.
293
+ */
294
+ pick(filters: WrMentionOptionHarnessFilters): Promise<void>;
295
+ /**
296
+ * Dismiss the panel with Escape, leaving the typed text — trigger char and
297
+ * query included — exactly as it is. A closed panel is left alone.
298
+ *
299
+ * Sends the WHOLE keystroke, keydown and keyup, as a real Escape is. That
300
+ * matters here: the caret has not moved, so a keyup the directive re-detected on
301
+ * would reopen the panel this just closed, and a harness that dispatched only
302
+ * the keydown would report a dismissal the user never got.
303
+ */
304
+ dismiss(): Promise<void>;
305
+ /**
306
+ * Blur the field and wait for the panel to go.
307
+ *
308
+ * The close is deferred by 120ms so a `mousedown` on a suggestion lands first,
309
+ * and that is a real `setTimeout`: under zoneless change detection nothing
310
+ * flushes it for us, so this waits out REAL time. A spec on fake timers should
311
+ * drive its own clock and read {@link isOpen} instead of calling this.
312
+ */
313
+ blur(timeout?: number): Promise<void>;
314
+ /**
315
+ * What the live region currently says.
316
+ *
317
+ * This is the announcement channel the field has INSTEAD of ARIA state, and
318
+ * three things reach a screen reader only through it: how many suggestions
319
+ * appeared, that NOTHING matched — the panel closes in that case, so there is no
320
+ * DOM left to inspect and no state on the field to read — and what was inserted
321
+ * on commit.
322
+ *
323
+ * Throws when more than one mention field is mounted. The region is parked on
324
+ * `<body>` rather than in the panel (which is disposed on every keystroke that
325
+ * leaves a mention, and a live region has to pre-exist its own text to be
326
+ * announced at all), and it carries no id tying it to a field — so with two
327
+ * fields around, the harness genuinely cannot tell which region is this one's.
328
+ * Answering with whichever came first would be worse than refusing: assert
329
+ * announcements in a fixture holding a single mention field.
330
+ */
331
+ getStatusMessage(): Promise<string>;
332
+ /** Move keyboard focus to the field. Focusing alone opens nothing — the panel needs a trigger char. */
333
+ focus(): Promise<void>;
334
+ /** Whether the field holds keyboard focus. It keeps it while the panel is open, by design. */
335
+ isFocused(): Promise<boolean>;
336
+ /**
337
+ * A loader scoped to THIS field's listbox.
338
+ *
339
+ * Scoped by the id the field publishes as `aria-controls`, never by
340
+ * `.wr-mention-panel`: the overlay container is shared by every mention on the
341
+ * page, so a class query would answer with whichever field opened first.
342
+ */
343
+ private listboxLoader;
344
+ /** This field's listbox in the overlay. Throws when the panel is closed. */
345
+ private listbox;
346
+ /** This field's listbox, or `null` when the panel is closed. */
347
+ private listboxOrNull;
348
+ /** The id the field names in `aria-controls`, which its listbox carries. */
349
+ private listboxId;
350
+ /** The element `aria-activedescendant` points at, or a targeted failure. */
351
+ private activeOption;
352
+ /** The active option's id, or a targeted failure. */
353
+ private requireActiveOptionId;
354
+ /** Refuse a keystroke that would mean something else entirely with the panel closed. */
355
+ private requireOpen;
356
+ }
357
+
358
+ export { WrMentionHarness, WrMentionOptionHarness };
359
+ export type { WrMentionHarnessFilters, WrMentionOptionHarnessFilters };
@@ -54,8 +54,10 @@ interface WrMetaHandle {
54
54
  * Layers merge via shallow merge for scalars and a one-level deep merge
55
55
  * for `og` / `twitter` groups.
56
56
  *
57
- * The resolved metadata is applied diff-style — only changed tags are
58
- * touched in the DOM, so reads of `document.head` stay cheap.
57
+ * The title and the canonical link are diffed against the last applied
58
+ * snapshot and only rewritten when they actually change; the `<meta>` tags
59
+ * are re-resolved by selector on every apply, so an existing tag is updated
60
+ * in place rather than duplicated.
59
61
  *
60
62
  * @example
61
63
  * ```ts
@@ -43,12 +43,22 @@ declare class WrMeterGroup {
43
43
  readonly max: _angular_core.InputSignalWithTransform<number, unknown>;
44
44
  /** Show the labelled legend under the bar. @default true */
45
45
  readonly showLegend: _angular_core.InputSignalWithTransform<boolean, any>;
46
- /** Show each segment's percent value in the legend. @default true */
46
+ /** Show each segment's value in the legend, next to its label. @default true */
47
47
  readonly showValues: _angular_core.InputSignalWithTransform<boolean, any>;
48
+ /**
49
+ * A segment's contribution, floored at `0` and with anything non-finite read
50
+ * as `0`. One `NaN` used to poison the whole bar: the sum is `NaN` as soon as
51
+ * one value is, so the total fell back to `1` and every OTHER segment was
52
+ * asked for a width of `value * 100`%, while `aria-valuenow` announced `NaN`.
53
+ */
54
+ private static amount;
48
55
  protected readonly resolvedMax: _angular_core.Signal<number>;
49
56
  /**
50
57
  * Sum of the segments, for `aria-valuenow`. `role="progressbar"` without it
51
58
  * announces no value at all, so the bar was invisible to assistive tech.
59
+ *
60
+ * Capped at the total, because segments summing past an explicit `max` used
61
+ * to announce a value outside the range they were announced against.
52
62
  */
53
63
  protected readonly totalValue: _angular_core.Signal<number>;
54
64
  protected readonly slices: _angular_core.Signal<{
@@ -1,4 +1,4 @@
1
- import { OverlayRef, OverlayContainer, Overlay } from '@angular/cdk/overlay';
1
+ import { ConnectedPosition, OverlayRef, OverlayContainer, Overlay } from '@angular/cdk/overlay';
2
2
  import { Observable } from 'rxjs';
3
3
  import * as i0 from '@angular/core';
4
4
  import { EnvironmentProviders, InjectionToken } from '@angular/core';
@@ -28,6 +28,37 @@ import { EnvironmentProviders, InjectionToken } from '@angular/core';
28
28
  */
29
29
  declare function wrAppendOverlayClose(host: HTMLElement, className: string, label: string, onClose: () => void): HTMLButtonElement;
30
30
 
31
+ /**
32
+ * @license
33
+ *
34
+ * Use of this source code is governed by an MIT-style license that can be
35
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
36
+ */
37
+
38
+ /**
39
+ * Mirror the horizontal offsets of a connected-position list for RTL.
40
+ *
41
+ * The CDK mirrors `originX` / `overlayX` under `dir="rtl"` — a `start` anchor
42
+ * resolves to the origin's right edge — but it does NOT mirror `offsetX`, which
43
+ * it adds to the final PHYSICAL x (`_getOffset` returns `position.offsetX`
44
+ * verbatim). So a position that meant "sit to the inline-start of the trigger,
45
+ * 8px clear of it" keeps its `-8` under RTL, where the panel is now on the
46
+ * right: the gap becomes an 8px OVERLAP, and the panel sits on top of the thing
47
+ * it is describing.
48
+ *
49
+ * Nothing in the CDK will do this for us, and the amount is per position, so
50
+ * every ngwr overlay that offsets along the inline axis passes its list through
51
+ * here. `offsetY` is untouched: the block axis does not flip.
52
+ *
53
+ * @example
54
+ * ```ts
55
+ * const dir = inject(Directionality, { optional: true });
56
+ *
57
+ * strategy.withPositions(wrMirrorOffsets(WR_POPOVER_POSITIONS[position], dir?.value === 'rtl'));
58
+ * ```
59
+ */
60
+ declare function wrMirrorOffsets(positions: readonly ConnectedPosition[], isRtl: boolean): ConnectedPosition[];
61
+
31
62
  /**
32
63
  * @license
33
64
  *
@@ -253,4 +284,4 @@ declare const WR_OVERLAY: InjectionToken<Overlay>;
253
284
  */
254
285
  declare const WR_OVERLAY_CONTAINER: InjectionToken<OverlayContainer>;
255
286
 
256
- export { WR_OVERLAY, WR_OVERLAY_CONTAINER, WR_RESPONSIVE_OVERLAYS, WrOutsideClick, WrOverlayContainer, provideWrOverlay, provideWrResponsiveOverlays, wrAppendOverlayClose, wrPresentAsSheet };
287
+ export { WR_OVERLAY, WR_OVERLAY_CONTAINER, WR_RESPONSIVE_OVERLAYS, WrOutsideClick, WrOverlayContainer, provideWrOverlay, provideWrResponsiveOverlays, wrAppendOverlayClose, wrMirrorOffsets, wrPresentAsSheet };