ngwr 6.1.1 → 7.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 (605) hide show
  1. package/LICENSE +1 -3
  2. package/README.md +179 -32
  3. package/affix/styles/_index.scss +12 -0
  4. package/alert/styles/_index.scss +75 -32
  5. package/anchor/styles/_index.scss +59 -0
  6. package/aurora/aurora.scss +1 -0
  7. package/aurora/styles/_index.scss +30 -0
  8. package/avatar/styles/_index.scss +30 -14
  9. package/back-top/styles/_index.scss +42 -0
  10. package/badge/styles/_index.scss +80 -0
  11. package/badge/styles/_tag.scss +81 -0
  12. package/bar-chart/styles/_index.scss +56 -0
  13. package/blur-text/blur-text.scss +1 -0
  14. package/blur-text/styles/_index.scss +14 -0
  15. package/border-glow/border-glow.scss +4 -0
  16. package/border-glow/styles/_index.scss +228 -0
  17. package/breadcrumbs/breadcrumbs.scss +1 -0
  18. package/breadcrumbs/styles/_index.scss +76 -0
  19. package/button/styles/_index.scss +148 -125
  20. package/calendar/styles/_index.scss +252 -0
  21. package/calendar-heatmap/styles/_index.scss +69 -0
  22. package/card/card.scss +1 -0
  23. package/card/styles/_index.scss +96 -0
  24. package/carousel/styles/_index.scss +102 -0
  25. package/cascader/cascader.scss +1 -0
  26. package/cascader/styles/_index.scss +174 -0
  27. package/checkbox/styles/_index.scss +76 -60
  28. package/circular-text/circular-text.scss +1 -0
  29. package/circular-text/styles/_index.scss +45 -0
  30. package/click-spark/click-spark.scss +1 -0
  31. package/click-spark/styles/_index.scss +16 -0
  32. package/collapse/styles/_index.scss +92 -0
  33. package/color-picker/styles/_index.scss +247 -0
  34. package/command-palette/styles/_index.scss +188 -0
  35. package/compare/styles/_index.scss +100 -0
  36. package/context-menu/styles/_index.scss +112 -0
  37. package/counter/styles/_index.scss +44 -0
  38. package/date-picker/styles/_index.scss +204 -0
  39. package/decrypt-text/decrypt-text.scss +1 -0
  40. package/decrypt-text/styles/_index.scss +26 -0
  41. package/density/styles/_index.scss +37 -0
  42. package/descriptions/styles/_index.scss +104 -0
  43. package/dialog/styles/_index.scss +101 -27
  44. package/divider/styles/_index.scss +43 -24
  45. package/donut-chart/styles/_index.scss +76 -0
  46. package/drag-drop/sortable-list.scss +1 -0
  47. package/drag-drop/styles/_index.scss +99 -0
  48. package/drawer/styles/_index.scss +164 -0
  49. package/dropdown/styles/_index.scss +76 -56
  50. package/empty/styles/_index.scss +49 -0
  51. package/falling-text/falling-text.scss +1 -0
  52. package/falling-text/styles/_index.scss +30 -0
  53. package/fesm2022/ngwr-affix.mjs +102 -0
  54. package/fesm2022/ngwr-affix.mjs.map +1 -0
  55. package/fesm2022/ngwr-alert.mjs +70 -52
  56. package/fesm2022/ngwr-alert.mjs.map +1 -1
  57. package/fesm2022/ngwr-anchor.mjs +103 -0
  58. package/fesm2022/ngwr-anchor.mjs.map +1 -0
  59. package/fesm2022/ngwr-aurora.mjs +309 -0
  60. package/fesm2022/ngwr-aurora.mjs.map +1 -0
  61. package/fesm2022/ngwr-avatar.mjs +81 -71
  62. package/fesm2022/ngwr-avatar.mjs.map +1 -1
  63. package/fesm2022/ngwr-back-top.mjs +81 -0
  64. package/fesm2022/ngwr-back-top.mjs.map +1 -0
  65. package/fesm2022/ngwr-badge.mjs +192 -0
  66. package/fesm2022/ngwr-badge.mjs.map +1 -0
  67. package/fesm2022/ngwr-bar-chart.mjs +69 -0
  68. package/fesm2022/ngwr-bar-chart.mjs.map +1 -0
  69. package/fesm2022/ngwr-blur-text.mjs +181 -0
  70. package/fesm2022/ngwr-blur-text.mjs.map +1 -0
  71. package/fesm2022/ngwr-border-glow.mjs +278 -0
  72. package/fesm2022/ngwr-border-glow.mjs.map +1 -0
  73. package/fesm2022/ngwr-breadcrumbs.mjs +101 -0
  74. package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -0
  75. package/fesm2022/ngwr-button.mjs +179 -104
  76. package/fesm2022/ngwr-button.mjs.map +1 -1
  77. package/fesm2022/ngwr-calendar-heatmap.mjs +145 -0
  78. package/fesm2022/ngwr-calendar-heatmap.mjs.map +1 -0
  79. package/fesm2022/ngwr-calendar.mjs +402 -0
  80. package/fesm2022/ngwr-calendar.mjs.map +1 -0
  81. package/fesm2022/ngwr-card.mjs +100 -0
  82. package/fesm2022/ngwr-card.mjs.map +1 -0
  83. package/fesm2022/ngwr-carousel.mjs +128 -0
  84. package/fesm2022/ngwr-carousel.mjs.map +1 -0
  85. package/fesm2022/ngwr-cascader.mjs +280 -0
  86. package/fesm2022/ngwr-cascader.mjs.map +1 -0
  87. package/fesm2022/ngwr-checkbox.mjs +214 -54
  88. package/fesm2022/ngwr-checkbox.mjs.map +1 -1
  89. package/fesm2022/ngwr-circular-text.mjs +168 -0
  90. package/fesm2022/ngwr-circular-text.mjs.map +1 -0
  91. package/fesm2022/ngwr-click-spark.mjs +163 -0
  92. package/fesm2022/ngwr-click-spark.mjs.map +1 -0
  93. package/fesm2022/ngwr-clipboard.mjs +130 -0
  94. package/fesm2022/ngwr-clipboard.mjs.map +1 -0
  95. package/fesm2022/ngwr-collapse.mjs +232 -0
  96. package/fesm2022/ngwr-collapse.mjs.map +1 -0
  97. package/fesm2022/ngwr-color-picker.mjs +646 -0
  98. package/fesm2022/ngwr-color-picker.mjs.map +1 -0
  99. package/fesm2022/ngwr-command-palette.mjs +259 -0
  100. package/fesm2022/ngwr-command-palette.mjs.map +1 -0
  101. package/fesm2022/ngwr-compare.mjs +137 -0
  102. package/fesm2022/ngwr-compare.mjs.map +1 -0
  103. package/fesm2022/ngwr-confetti.mjs +160 -0
  104. package/fesm2022/ngwr-confetti.mjs.map +1 -0
  105. package/fesm2022/ngwr-context-menu.mjs +653 -0
  106. package/fesm2022/ngwr-context-menu.mjs.map +1 -0
  107. package/fesm2022/ngwr-cookie.mjs +127 -0
  108. package/fesm2022/ngwr-cookie.mjs.map +1 -0
  109. package/fesm2022/ngwr-counter.mjs +415 -0
  110. package/fesm2022/ngwr-counter.mjs.map +1 -0
  111. package/fesm2022/ngwr-date-adapter-fns.mjs +180 -0
  112. package/fesm2022/ngwr-date-adapter-fns.mjs.map +1 -0
  113. package/fesm2022/ngwr-date-adapter-luxon.mjs +201 -0
  114. package/fesm2022/ngwr-date-adapter-luxon.mjs.map +1 -0
  115. package/fesm2022/ngwr-date-adapter.mjs +419 -0
  116. package/fesm2022/ngwr-date-adapter.mjs.map +1 -0
  117. package/fesm2022/ngwr-date-picker.mjs +624 -0
  118. package/fesm2022/ngwr-date-picker.mjs.map +1 -0
  119. package/fesm2022/ngwr-decrypt-text.mjs +396 -0
  120. package/fesm2022/ngwr-decrypt-text.mjs.map +1 -0
  121. package/fesm2022/ngwr-density.mjs +157 -0
  122. package/fesm2022/ngwr-density.mjs.map +1 -0
  123. package/fesm2022/ngwr-descriptions.mjs +83 -0
  124. package/fesm2022/ngwr-descriptions.mjs.map +1 -0
  125. package/fesm2022/ngwr-dialog.mjs +249 -377
  126. package/fesm2022/ngwr-dialog.mjs.map +1 -1
  127. package/fesm2022/ngwr-directives.mjs +315 -0
  128. package/fesm2022/ngwr-directives.mjs.map +1 -0
  129. package/fesm2022/ngwr-divider.mjs +74 -59
  130. package/fesm2022/ngwr-divider.mjs.map +1 -1
  131. package/fesm2022/ngwr-donut-chart.mjs +131 -0
  132. package/fesm2022/ngwr-donut-chart.mjs.map +1 -0
  133. package/fesm2022/ngwr-drag-drop.mjs +117 -0
  134. package/fesm2022/ngwr-drag-drop.mjs.map +1 -0
  135. package/fesm2022/ngwr-drawer.mjs +315 -0
  136. package/fesm2022/ngwr-drawer.mjs.map +1 -0
  137. package/fesm2022/ngwr-dropdown.mjs +276 -229
  138. package/fesm2022/ngwr-dropdown.mjs.map +1 -1
  139. package/fesm2022/ngwr-empty.mjs +57 -0
  140. package/fesm2022/ngwr-empty.mjs.map +1 -0
  141. package/fesm2022/ngwr-falling-text.mjs +316 -0
  142. package/fesm2022/ngwr-falling-text.mjs.map +1 -0
  143. package/fesm2022/ngwr-file-upload.mjs +260 -0
  144. package/fesm2022/ngwr-file-upload.mjs.map +1 -0
  145. package/fesm2022/ngwr-form.mjs +133 -48
  146. package/fesm2022/ngwr-form.mjs.map +1 -1
  147. package/fesm2022/ngwr-fuzzy-text.mjs +373 -0
  148. package/fesm2022/ngwr-fuzzy-text.mjs.map +1 -0
  149. package/fesm2022/ngwr-gauge.mjs +83 -0
  150. package/fesm2022/ngwr-gauge.mjs.map +1 -0
  151. package/fesm2022/ngwr-glitch-text.mjs +67 -0
  152. package/fesm2022/ngwr-glitch-text.mjs.map +1 -0
  153. package/fesm2022/ngwr-gradient-text.mjs +109 -0
  154. package/fesm2022/ngwr-gradient-text.mjs.map +1 -0
  155. package/fesm2022/ngwr-hotkey.mjs +263 -0
  156. package/fesm2022/ngwr-hotkey.mjs.map +1 -0
  157. package/fesm2022/ngwr-i18n-en.mjs +168 -0
  158. package/fesm2022/ngwr-i18n-en.mjs.map +1 -0
  159. package/fesm2022/ngwr-i18n-ru.mjs +156 -0
  160. package/fesm2022/ngwr-i18n-ru.mjs.map +1 -0
  161. package/fesm2022/ngwr-i18n.mjs +478 -0
  162. package/fesm2022/ngwr-i18n.mjs.map +1 -0
  163. package/fesm2022/ngwr-icon-adapters-feather.mjs +74 -0
  164. package/fesm2022/ngwr-icon-adapters-feather.mjs.map +1 -0
  165. package/fesm2022/ngwr-icon-adapters-lucide.mjs +88 -0
  166. package/fesm2022/ngwr-icon-adapters-lucide.mjs.map +1 -0
  167. package/fesm2022/ngwr-icon.mjs +189 -649
  168. package/fesm2022/ngwr-icon.mjs.map +1 -1
  169. package/fesm2022/ngwr-image-cropper.mjs +299 -0
  170. package/fesm2022/ngwr-image-cropper.mjs.map +1 -0
  171. package/fesm2022/ngwr-input-number.mjs +239 -0
  172. package/fesm2022/ngwr-input-number.mjs.map +1 -0
  173. package/fesm2022/ngwr-input-otp.mjs +216 -0
  174. package/fesm2022/ngwr-input-otp.mjs.map +1 -0
  175. package/fesm2022/ngwr-input.mjs +183 -104
  176. package/fesm2022/ngwr-input.mjs.map +1 -1
  177. package/fesm2022/ngwr-keyboard.mjs +47 -0
  178. package/fesm2022/ngwr-keyboard.mjs.map +1 -0
  179. package/fesm2022/ngwr-knob.mjs +227 -0
  180. package/fesm2022/ngwr-knob.mjs.map +1 -0
  181. package/fesm2022/ngwr-layout.mjs +197 -0
  182. package/fesm2022/ngwr-layout.mjs.map +1 -0
  183. package/fesm2022/ngwr-lightbox.mjs +131 -0
  184. package/fesm2022/ngwr-lightbox.mjs.map +1 -0
  185. package/fesm2022/ngwr-line-chart.mjs +176 -0
  186. package/fesm2022/ngwr-line-chart.mjs.map +1 -0
  187. package/fesm2022/ngwr-list.mjs +132 -0
  188. package/fesm2022/ngwr-list.mjs.map +1 -0
  189. package/fesm2022/ngwr-loading-bar.mjs +160 -0
  190. package/fesm2022/ngwr-loading-bar.mjs.map +1 -0
  191. package/fesm2022/ngwr-marquee.mjs +224 -0
  192. package/fesm2022/ngwr-marquee.mjs.map +1 -0
  193. package/fesm2022/ngwr-media.mjs +132 -0
  194. package/fesm2022/ngwr-media.mjs.map +1 -0
  195. package/fesm2022/ngwr-mention.mjs +374 -0
  196. package/fesm2022/ngwr-mention.mjs.map +1 -0
  197. package/fesm2022/ngwr-meta.mjs +266 -0
  198. package/fesm2022/ngwr-meta.mjs.map +1 -0
  199. package/fesm2022/ngwr-meter-group.mjs +73 -0
  200. package/fesm2022/ngwr-meter-group.mjs.map +1 -0
  201. package/fesm2022/ngwr-overlay.mjs +145 -0
  202. package/fesm2022/ngwr-overlay.mjs.map +1 -0
  203. package/fesm2022/ngwr-page-header.mjs +53 -0
  204. package/fesm2022/ngwr-page-header.mjs.map +1 -0
  205. package/fesm2022/ngwr-pagination.mjs +152 -96
  206. package/fesm2022/ngwr-pagination.mjs.map +1 -1
  207. package/fesm2022/ngwr-pipes.mjs +290 -11
  208. package/fesm2022/ngwr-pipes.mjs.map +1 -1
  209. package/fesm2022/ngwr-platform.mjs +63 -0
  210. package/fesm2022/ngwr-platform.mjs.map +1 -0
  211. package/fesm2022/ngwr-popconfirm.mjs +188 -0
  212. package/fesm2022/ngwr-popconfirm.mjs.map +1 -0
  213. package/fesm2022/ngwr-popover.mjs +361 -0
  214. package/fesm2022/ngwr-popover.mjs.map +1 -0
  215. package/fesm2022/ngwr-progress.mjs +47 -39
  216. package/fesm2022/ngwr-progress.mjs.map +1 -1
  217. package/fesm2022/ngwr-qr.mjs +160 -179
  218. package/fesm2022/ngwr-qr.mjs.map +1 -1
  219. package/fesm2022/ngwr-radio.mjs +204 -0
  220. package/fesm2022/ngwr-radio.mjs.map +1 -0
  221. package/fesm2022/ngwr-rating.mjs +180 -0
  222. package/fesm2022/ngwr-rating.mjs.map +1 -0
  223. package/fesm2022/ngwr-result.mjs +119 -0
  224. package/fesm2022/ngwr-result.mjs.map +1 -0
  225. package/fesm2022/ngwr-rotating-text.mjs +256 -0
  226. package/fesm2022/ngwr-rotating-text.mjs.map +1 -0
  227. package/fesm2022/ngwr-scramble-text.mjs +165 -0
  228. package/fesm2022/ngwr-scramble-text.mjs.map +1 -0
  229. package/fesm2022/ngwr-scroll.mjs +107 -0
  230. package/fesm2022/ngwr-scroll.mjs.map +1 -0
  231. package/fesm2022/ngwr-segmented.mjs +96 -0
  232. package/fesm2022/ngwr-segmented.mjs.map +1 -0
  233. package/fesm2022/ngwr-select.mjs +844 -309
  234. package/fesm2022/ngwr-select.mjs.map +1 -1
  235. package/fesm2022/ngwr-shiny-text.mjs +127 -0
  236. package/fesm2022/ngwr-shiny-text.mjs.map +1 -0
  237. package/fesm2022/ngwr-sidebar.mjs +134 -0
  238. package/fesm2022/ngwr-sidebar.mjs.map +1 -0
  239. package/fesm2022/ngwr-skeleton.mjs +59 -34
  240. package/fesm2022/ngwr-skeleton.mjs.map +1 -1
  241. package/fesm2022/ngwr-slider.mjs +234 -0
  242. package/fesm2022/ngwr-slider.mjs.map +1 -0
  243. package/fesm2022/ngwr-sparkline.mjs +104 -0
  244. package/fesm2022/ngwr-sparkline.mjs.map +1 -0
  245. package/fesm2022/ngwr-speed-dial.mjs +79 -0
  246. package/fesm2022/ngwr-speed-dial.mjs.map +1 -0
  247. package/fesm2022/ngwr-spinner.mjs +34 -28
  248. package/fesm2022/ngwr-spinner.mjs.map +1 -1
  249. package/fesm2022/ngwr-splash-cursor.mjs +970 -0
  250. package/fesm2022/ngwr-splash-cursor.mjs.map +1 -0
  251. package/fesm2022/ngwr-split-text.mjs +200 -0
  252. package/fesm2022/ngwr-split-text.mjs.map +1 -0
  253. package/fesm2022/ngwr-splitter.mjs +125 -0
  254. package/fesm2022/ngwr-splitter.mjs.map +1 -0
  255. package/fesm2022/ngwr-spotlight-card.mjs +138 -0
  256. package/fesm2022/ngwr-spotlight-card.mjs.map +1 -0
  257. package/fesm2022/ngwr-squircle.mjs +320 -0
  258. package/fesm2022/ngwr-squircle.mjs.map +1 -0
  259. package/fesm2022/ngwr-star-border.mjs +72 -0
  260. package/fesm2022/ngwr-star-border.mjs.map +1 -0
  261. package/fesm2022/ngwr-statistic.mjs +220 -0
  262. package/fesm2022/ngwr-statistic.mjs.map +1 -0
  263. package/fesm2022/ngwr-stepper.mjs +186 -0
  264. package/fesm2022/ngwr-stepper.mjs.map +1 -0
  265. package/fesm2022/ngwr-storage.mjs +317 -0
  266. package/fesm2022/ngwr-storage.mjs.map +1 -0
  267. package/fesm2022/ngwr-switch.mjs +99 -0
  268. package/fesm2022/ngwr-switch.mjs.map +1 -0
  269. package/fesm2022/ngwr-table.mjs +217 -206
  270. package/fesm2022/ngwr-table.mjs.map +1 -1
  271. package/fesm2022/ngwr-tabs.mjs +217 -0
  272. package/fesm2022/ngwr-tabs.mjs.map +1 -0
  273. package/fesm2022/ngwr-textarea.mjs +106 -120
  274. package/fesm2022/ngwr-textarea.mjs.map +1 -1
  275. package/fesm2022/ngwr-theme.mjs +152 -0
  276. package/fesm2022/ngwr-theme.mjs.map +1 -0
  277. package/fesm2022/ngwr-tilt-card.mjs +137 -0
  278. package/fesm2022/ngwr-tilt-card.mjs.map +1 -0
  279. package/fesm2022/ngwr-timeline.mjs +73 -0
  280. package/fesm2022/ngwr-timeline.mjs.map +1 -0
  281. package/fesm2022/ngwr-toast.mjs +446 -0
  282. package/fesm2022/ngwr-toast.mjs.map +1 -0
  283. package/fesm2022/ngwr-toolbar.mjs +46 -0
  284. package/fesm2022/ngwr-toolbar.mjs.map +1 -0
  285. package/fesm2022/ngwr-tree.mjs +483 -0
  286. package/fesm2022/ngwr-tree.mjs.map +1 -0
  287. package/fesm2022/ngwr-typewriter.mjs +229 -0
  288. package/fesm2022/ngwr-typewriter.mjs.map +1 -0
  289. package/fesm2022/ngwr-typography.mjs +79 -0
  290. package/fesm2022/ngwr-typography.mjs.map +1 -0
  291. package/fesm2022/ngwr-utils.mjs +535 -0
  292. package/fesm2022/ngwr-utils.mjs.map +1 -0
  293. package/fesm2022/ngwr-validators.mjs +214 -0
  294. package/fesm2022/ngwr-validators.mjs.map +1 -0
  295. package/fesm2022/ngwr-version.mjs +51 -0
  296. package/fesm2022/ngwr-version.mjs.map +1 -0
  297. package/fesm2022/ngwr-virtual-scroll.mjs +99 -0
  298. package/fesm2022/ngwr-virtual-scroll.mjs.map +1 -0
  299. package/fesm2022/ngwr-waves.mjs +356 -0
  300. package/fesm2022/ngwr-waves.mjs.map +1 -0
  301. package/fesm2022/ngwr-window.mjs +1141 -0
  302. package/fesm2022/ngwr-window.mjs.map +1 -0
  303. package/fesm2022/ngwr.mjs +0 -3
  304. package/fesm2022/ngwr.mjs.map +1 -1
  305. package/file-upload/styles/_index.scss +152 -0
  306. package/form/styles/_index.scss +85 -42
  307. package/gauge/styles/_index.scss +37 -0
  308. package/glitch-text/glitch-text.scss +1 -0
  309. package/glitch-text/styles/_index.scss +144 -0
  310. package/gradient-text/gradient-text.scss +1 -0
  311. package/gradient-text/styles/_index.scss +113 -0
  312. package/icon/styles/_index.scss +21 -15
  313. package/image-cropper/styles/_index.scss +114 -0
  314. package/input/styles/_index.scss +133 -93
  315. package/input-number/styles/_index.scss +75 -0
  316. package/input-otp/styles/_index.scss +53 -0
  317. package/keyboard/styles/_index.scss +55 -0
  318. package/knob/styles/_index.scss +54 -0
  319. package/layout/styles/_index.scss +65 -0
  320. package/lightbox/lightbox.scss +1 -0
  321. package/lightbox/styles/_index.scss +144 -0
  322. package/line-chart/styles/_index.scss +93 -0
  323. package/list/list.scss +1 -0
  324. package/list/styles/_index.scss +101 -0
  325. package/loading-bar/loading-bar.scss +1 -0
  326. package/loading-bar/styles/_index.scss +29 -0
  327. package/marquee/marquee.scss +1 -0
  328. package/marquee/styles/_index.scss +138 -0
  329. package/mention/styles/_index.scss +47 -0
  330. package/meter-group/styles/_index.scss +61 -0
  331. package/package.json +576 -99
  332. package/page-header/styles/_index.scss +78 -0
  333. package/pagination/styles/_index.scss +89 -34
  334. package/popconfirm/styles/_index.scss +32 -0
  335. package/popover/styles/_index.scss +83 -0
  336. package/progress/styles/_index.scss +29 -14
  337. package/qr/styles/_index.scss +6 -3
  338. package/radio/styles/_index.scss +111 -0
  339. package/rating/styles/_index.scss +63 -0
  340. package/result/styles/_index.scss +69 -0
  341. package/rotating-text/rotating-text.scss +1 -0
  342. package/rotating-text/styles/_index.scss +39 -0
  343. package/schematics/collection.json +37 -0
  344. package/schematics/component-style/index.js +49 -0
  345. package/{cdk/utils/index.d.ts → schematics/component-style/schema.js} +2 -8
  346. package/schematics/component-style/schema.json +20 -0
  347. package/schematics/icon-set/index.js +96 -0
  348. package/schematics/icon-set/schema.js +8 -0
  349. package/schematics/icon-set/schema.json +39 -0
  350. package/schematics/migrations/v7/index.js +187 -0
  351. package/schematics/migrations.json +10 -0
  352. package/schematics/ng-add/index.js +180 -0
  353. package/schematics/ng-add/schema.js +8 -0
  354. package/schematics/ng-add/schema.json +80 -0
  355. package/schematics/page/index.js +63 -0
  356. package/schematics/page/schema.js +8 -0
  357. package/schematics/page/schema.json +39 -0
  358. package/schematics/page/templates.js +198 -0
  359. package/schematics/provider/index.js +126 -0
  360. package/schematics/provider/schema.js +8 -0
  361. package/schematics/provider/schema.json +52 -0
  362. package/schematics/use/index.js +143 -0
  363. package/schematics/use/schema.js +8 -0
  364. package/schematics/use/schema.json +25 -0
  365. package/schematics/use/symbol-map.json +356 -0
  366. package/scramble-text/scramble-text.scss +1 -0
  367. package/scramble-text/styles/_index.scss +8 -0
  368. package/segmented/styles/_index.scss +92 -0
  369. package/select/styles/_index.scss +245 -159
  370. package/shiny-text/shiny-text.scss +1 -0
  371. package/shiny-text/styles/_index.scss +101 -0
  372. package/sidebar/styles/_index.scss +208 -0
  373. package/skeleton/styles/_index.scss +33 -33
  374. package/slider/styles/_index.scss +77 -0
  375. package/sparkline/styles/_index.scss +9 -0
  376. package/speed-dial/styles/_index.scss +158 -0
  377. package/spinner/styles/_index.scss +38 -22
  378. package/splash-cursor/splash-cursor.scss +1 -0
  379. package/splash-cursor/styles/_index.scss +27 -0
  380. package/split-text/split-text.scss +1 -0
  381. package/split-text/styles/_index.scss +22 -0
  382. package/splitter/styles/_index.scss +85 -0
  383. package/spotlight-card/spotlight-card.scss +1 -0
  384. package/spotlight-card/styles/_index.scss +43 -0
  385. package/squircle/styles/_index.scss +34 -0
  386. package/star-border/star-border.scss +1 -0
  387. package/star-border/styles/_index.scss +118 -0
  388. package/statistic/styles/_index.scss +54 -0
  389. package/stepper/styles/_index.scss +162 -0
  390. package/styles/_animations.scss +198 -0
  391. package/styles/_breakpoints.scss +75 -0
  392. package/styles/_grid.scss +71 -0
  393. package/styles/_reset.scss +123 -0
  394. package/styles/_typography.scss +122 -0
  395. package/styles.scss +102 -13
  396. package/switch/styles/_index.scss +82 -0
  397. package/table/styles/_index.scss +255 -4
  398. package/tabs/styles/_index.scss +71 -0
  399. package/textarea/styles/_index.scss +47 -56
  400. package/theme/styles/_colors.scss +83 -0
  401. package/theme/styles/_dark.scss +85 -0
  402. package/theme/styles/_focus.scss +93 -0
  403. package/theme/styles/_index.scss +5 -0
  404. package/theme/styles/_mixins.scss +57 -0
  405. package/theme/styles/_variables.scss +118 -0
  406. package/tilt-card/styles/_index.scss +40 -0
  407. package/tilt-card/tilt-card.scss +1 -0
  408. package/timeline/styles/_index.scss +127 -0
  409. package/toast/styles/_index.scss +263 -0
  410. package/toolbar/styles/_index.scss +65 -0
  411. package/tree/styles/_index.scss +271 -0
  412. package/types/ngwr-affix.d.ts +43 -0
  413. package/types/ngwr-alert.d.ts +68 -0
  414. package/types/ngwr-anchor.d.ts +53 -0
  415. package/types/ngwr-aurora.d.ts +52 -0
  416. package/types/ngwr-avatar.d.ts +90 -0
  417. package/types/ngwr-back-top.d.ts +37 -0
  418. package/types/ngwr-badge.d.ts +158 -0
  419. package/types/ngwr-bar-chart.d.ts +47 -0
  420. package/types/ngwr-blur-text.d.ts +62 -0
  421. package/types/ngwr-border-glow.d.ts +66 -0
  422. package/types/ngwr-breadcrumbs.d.ts +61 -0
  423. package/types/ngwr-button.d.ts +176 -0
  424. package/types/ngwr-calendar-heatmap.d.ts +58 -0
  425. package/types/ngwr-calendar.d.ts +116 -0
  426. package/types/ngwr-card.d.ts +50 -0
  427. package/types/ngwr-carousel.d.ts +57 -0
  428. package/types/ngwr-cascader.d.ts +107 -0
  429. package/types/ngwr-checkbox.d.ts +139 -0
  430. package/types/ngwr-circular-text.d.ts +49 -0
  431. package/types/ngwr-click-spark.d.ts +52 -0
  432. package/types/ngwr-clipboard.d.ts +53 -0
  433. package/types/ngwr-collapse.d.ts +139 -0
  434. package/types/ngwr-color-picker.d.ts +302 -0
  435. package/types/ngwr-command-palette.d.ts +113 -0
  436. package/types/ngwr-compare.d.ts +55 -0
  437. package/types/ngwr-confetti.d.ts +70 -0
  438. package/types/ngwr-context-menu.d.ts +207 -0
  439. package/types/ngwr-cookie.d.ts +60 -0
  440. package/types/ngwr-counter.d.ts +182 -0
  441. package/types/ngwr-date-adapter-fns.d.ts +73 -0
  442. package/types/ngwr-date-adapter-luxon.d.ts +73 -0
  443. package/types/ngwr-date-adapter.d.ts +198 -0
  444. package/types/ngwr-date-picker.d.ts +117 -0
  445. package/types/ngwr-decrypt-text.d.ts +85 -0
  446. package/types/ngwr-density.d.ts +97 -0
  447. package/types/ngwr-descriptions.d.ts +41 -0
  448. package/types/ngwr-dialog.d.ts +210 -0
  449. package/types/ngwr-directives.d.ts +125 -0
  450. package/types/ngwr-divider.d.ts +73 -0
  451. package/types/ngwr-donut-chart.d.ts +53 -0
  452. package/types/ngwr-drag-drop.d.ts +83 -0
  453. package/types/ngwr-drawer.d.ts +155 -0
  454. package/types/ngwr-dropdown.d.ts +124 -0
  455. package/types/ngwr-empty.d.ts +38 -0
  456. package/types/ngwr-falling-text.d.ts +63 -0
  457. package/types/ngwr-file-upload.d.ts +94 -0
  458. package/types/ngwr-form.d.ts +95 -0
  459. package/types/ngwr-fuzzy-text.d.ts +74 -0
  460. package/types/ngwr-gauge.d.ts +39 -0
  461. package/types/ngwr-glitch-text.d.ts +31 -0
  462. package/types/ngwr-gradient-text.d.ts +46 -0
  463. package/types/ngwr-hotkey.d.ts +142 -0
  464. package/types/ngwr-i18n-en.d.ts +18 -0
  465. package/types/ngwr-i18n-ru.d.ts +6 -0
  466. package/types/ngwr-i18n.d.ts +336 -0
  467. package/types/ngwr-icon-adapters-feather.d.ts +44 -0
  468. package/types/ngwr-icon-adapters-lucide.d.ts +54 -0
  469. package/types/ngwr-icon.d.ts +180 -0
  470. package/types/ngwr-image-cropper.d.ts +110 -0
  471. package/types/ngwr-input-number.d.ts +77 -0
  472. package/types/ngwr-input-otp.d.ts +78 -0
  473. package/types/ngwr-input.d.ts +131 -0
  474. package/types/ngwr-keyboard.d.ts +34 -0
  475. package/types/ngwr-knob.d.ts +77 -0
  476. package/types/ngwr-layout.d.ts +89 -0
  477. package/types/ngwr-lightbox.d.ts +50 -0
  478. package/types/ngwr-line-chart.d.ts +90 -0
  479. package/types/ngwr-list.d.ts +71 -0
  480. package/types/ngwr-loading-bar.d.ts +79 -0
  481. package/types/ngwr-marquee.d.ts +95 -0
  482. package/types/ngwr-media.d.ts +74 -0
  483. package/types/ngwr-mention.d.ts +110 -0
  484. package/types/ngwr-meta.d.ts +164 -0
  485. package/types/ngwr-meter-group.d.ts +57 -0
  486. package/types/ngwr-overlay.d.ts +110 -0
  487. package/types/ngwr-page-header.d.ts +35 -0
  488. package/types/ngwr-pagination.d.ts +119 -0
  489. package/types/ngwr-pipes.d.ts +177 -0
  490. package/types/ngwr-platform.d.ts +38 -0
  491. package/types/ngwr-popconfirm.d.ts +79 -0
  492. package/types/ngwr-popover.d.ts +90 -0
  493. package/types/ngwr-progress.d.ts +33 -0
  494. package/types/ngwr-qr.d.ts +56 -0
  495. package/types/ngwr-radio.d.ts +120 -0
  496. package/types/ngwr-rating.d.ts +62 -0
  497. package/types/ngwr-result.d.ts +64 -0
  498. package/types/ngwr-rotating-text.d.ts +72 -0
  499. package/types/ngwr-scramble-text.d.ts +49 -0
  500. package/types/ngwr-scroll.d.ts +65 -0
  501. package/types/ngwr-segmented.d.ts +65 -0
  502. package/types/ngwr-select.d.ts +413 -0
  503. package/types/ngwr-shiny-text.d.ts +70 -0
  504. package/types/ngwr-sidebar.d.ts +83 -0
  505. package/types/ngwr-skeleton.d.ts +41 -0
  506. package/types/ngwr-slider.d.ts +86 -0
  507. package/types/ngwr-sparkline.d.ts +48 -0
  508. package/types/ngwr-speed-dial.d.ts +51 -0
  509. package/types/ngwr-spinner.d.ts +41 -0
  510. package/types/ngwr-splash-cursor.d.ts +94 -0
  511. package/types/ngwr-split-text.d.ts +83 -0
  512. package/types/ngwr-splitter.d.ts +52 -0
  513. package/types/ngwr-spotlight-card.d.ts +71 -0
  514. package/types/ngwr-squircle.d.ts +132 -0
  515. package/types/ngwr-star-border.d.ts +40 -0
  516. package/types/ngwr-statistic.d.ts +88 -0
  517. package/types/ngwr-stepper.d.ts +99 -0
  518. package/types/ngwr-storage.d.ts +178 -0
  519. package/types/ngwr-switch.d.ts +39 -0
  520. package/types/ngwr-table.d.ts +237 -0
  521. package/types/ngwr-tabs.d.ts +125 -0
  522. package/types/ngwr-textarea.d.ts +60 -0
  523. package/types/ngwr-theme.d.ts +124 -0
  524. package/types/ngwr-tilt-card.d.ts +63 -0
  525. package/types/ngwr-timeline.d.ts +40 -0
  526. package/types/ngwr-toast.d.ts +230 -0
  527. package/types/ngwr-toolbar.d.ts +30 -0
  528. package/types/ngwr-tree.d.ts +150 -0
  529. package/types/ngwr-typewriter.d.ts +84 -0
  530. package/types/ngwr-typography.d.ts +56 -0
  531. package/types/ngwr-utils.d.ts +447 -0
  532. package/types/ngwr-validators.d.ts +70 -0
  533. package/types/ngwr-version.d.ts +44 -0
  534. package/types/ngwr-virtual-scroll.d.ts +64 -0
  535. package/types/ngwr-waves.d.ts +71 -0
  536. package/types/ngwr-window.d.ts +437 -0
  537. package/typewriter/styles/_index.scss +33 -0
  538. package/typewriter/typewriter.scss +1 -0
  539. package/typography/styles/_index.scss +211 -0
  540. package/virtual-scroll/styles/_index.scss +27 -0
  541. package/virtual-scroll/virtual-scroll.scss +1 -0
  542. package/waves/styles/_index.scss +24 -0
  543. package/waves/waves.scss +1 -0
  544. package/window/styles/_index.scss +430 -0
  545. package/alert/index.d.ts +0 -32
  546. package/alert/styles/theming.scss +0 -26
  547. package/alert/styles/vars.scss +0 -11
  548. package/avatar/index.d.ts +0 -30
  549. package/button/index.d.ts +0 -45
  550. package/button/styles/vars.scss +0 -13
  551. package/cdk/index.d.ts +0 -24
  552. package/cdk/rxjs/index.d.ts +0 -40
  553. package/cdk/types/index.d.ts +0 -27
  554. package/checkbox/index.d.ts +0 -31
  555. package/checkbox/styles/vars.scss +0 -16
  556. package/dialog/index.d.ts +0 -193
  557. package/dialog/styles/vars.scss +0 -7
  558. package/divider/index.d.ts +0 -16
  559. package/dropdown/index.d.ts +0 -68
  560. package/dropdown/styles/vars.scss +0 -18
  561. package/fesm2022/ngwr-cdk-rxjs.mjs +0 -53
  562. package/fesm2022/ngwr-cdk-rxjs.mjs.map +0 -1
  563. package/fesm2022/ngwr-cdk-types.mjs +0 -44
  564. package/fesm2022/ngwr-cdk-types.mjs.map +0 -1
  565. package/fesm2022/ngwr-cdk-utils.mjs +0 -30
  566. package/fesm2022/ngwr-cdk-utils.mjs.map +0 -1
  567. package/fesm2022/ngwr-cdk.mjs +0 -46
  568. package/fesm2022/ngwr-cdk.mjs.map +0 -1
  569. package/fesm2022/ngwr-tag.mjs +0 -87
  570. package/fesm2022/ngwr-tag.mjs.map +0 -1
  571. package/form/index.d.ts +0 -28
  572. package/icon/index.d.ts +0 -830
  573. package/icon/styles/vars.scss +0 -3
  574. package/input/index.d.ts +0 -43
  575. package/input/styles/vars.scss +0 -17
  576. package/pagination/index.d.ts +0 -34
  577. package/pagination/styles/vars.scss +0 -14
  578. package/pipes/index.d.ts +0 -17
  579. package/progress/index.d.ts +0 -13
  580. package/progress/styles/theming.scss +0 -8
  581. package/progress/styles/vars.scss +0 -6
  582. package/qr/index.d.ts +0 -127
  583. package/select/index.d.ts +0 -121
  584. package/select/styles/vars.scss +0 -32
  585. package/skeleton/index.d.ts +0 -13
  586. package/spinner/index.d.ts +0 -23
  587. package/styles/animations.scss +0 -92
  588. package/styles/cdk.scss +0 -5
  589. package/styles/colors.scss +0 -72
  590. package/styles/grid.scss +0 -99
  591. package/styles/maps.scss +0 -31
  592. package/styles/reset.scss +0 -112
  593. package/styles/variables.scss +0 -72
  594. package/table/index.d.ts +0 -101
  595. package/table/styles/table-filter.scss +0 -202
  596. package/table/styles/table-sort.scss +0 -47
  597. package/table/styles/table.scss +0 -232
  598. package/table/styles/vars.scss +0 -21
  599. package/tag/index.d.ts +0 -24
  600. package/tag/styles/_index.scss +0 -32
  601. package/tag/styles/theming.scss +0 -21
  602. package/tag/styles/vars.scss +0 -12
  603. package/textarea/index.d.ts +0 -47
  604. package/textarea/styles/vars.scss +0 -17
  605. /package/{index.d.ts → types/ngwr.d.ts} +0 -0
@@ -1,13 +1,11 @@
1
- import { BasePortalOutlet, CdkPortalOutlet, ComponentPortal } from '@angular/cdk/portal';
1
+ import { ConfigurableFocusTrapFactory } from '@angular/cdk/a11y';
2
+ import { ScrollStrategyOptions } from '@angular/cdk/overlay';
3
+ import { ComponentPortal } from '@angular/cdk/portal';
4
+ import { isPlatformBrowser } from '@angular/common';
2
5
  import * as i0 from '@angular/core';
3
- import { EventEmitter, Directive, Component, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, HostBinding, HostListener, InjectionToken, inject, DestroyRef, Injector, Injectable, NgModule, Optional, Input } from '@angular/core';
4
- import { trigger, state, style, transition, animate } from '@angular/animations';
5
- import * as i2 from '@angular/cdk/overlay';
6
- import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';
7
- import { Subject, filter, take } from 'rxjs';
8
- import { hasModifierKey } from '@angular/cdk/keycodes';
9
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
10
- import { generateRandomId } from 'ngwr/cdk/utils';
6
+ import { InjectionToken, inject, EnvironmentInjector, PLATFORM_ID, Injector, Service, ElementRef, Directive, input, computed } from '@angular/core';
7
+ import { WR_OVERLAY } from 'ngwr/overlay';
8
+ import { Subject } from 'rxjs';
11
9
 
12
10
  /**
13
11
  * @license
@@ -15,165 +13,65 @@ import { generateRandomId } from 'ngwr/cdk/utils';
15
13
  * Use of this source code is governed by an MIT-style license that can be
16
14
  * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
17
15
  */
18
- const WR_ANIMATION_ZOOM_CLASS_NAME_MAP = {
19
- enter: 'wr-animation-zoom-enter',
20
- enterActive: 'wr-animation-zoom-enter--active',
21
- leave: 'wr-animation-zoom-leave',
22
- leaveActive: 'wr-animation-zoom-leave--active',
23
- };
24
- const WR_ANIMATION_FADE_CLASS_NAME_MAP = {
25
- enter: 'wr-animation-fade-enter',
26
- enterActive: 'wr-animation-fade-enter--active',
27
- leave: 'wr-animation-fade-leave',
28
- leaveActive: 'wr-animation-fade-leave--active',
29
- };
30
- const wrDialogAnimations = {
31
- dialogComponent: trigger('dialogComponent', [
32
- state('void, exit', style({})),
33
- state('enter', style({})),
34
- transition('* => enter', animate('.24s', style({}))),
35
- transition('* => void, * => exit', animate('.2s', style({}))),
36
- ]),
37
- };
38
-
39
16
  /**
40
- * @license
17
+ * Handle returned by `WrDialog.open()`.
41
18
  *
42
- * Use of this source code is governed by an MIT-style license that can be
43
- * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
19
+ * Wraps the underlying `OverlayRef` and tracks the close result.
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * const ref = dialog.open<ConfirmComponent, boolean>(ConfirmComponent);
24
+ * const result = await ref.awaitClose(); // boolean | undefined
25
+ * ```
44
26
  */
45
- class WrDialogOptions {
46
- }
47
-
48
- class WrDialogBaseDirective extends BasePortalOutlet {
49
- constructor(cdr, options, overlayRef) {
50
- super();
51
- this.cdr = cdr;
52
- this.options = options;
53
- this.overlayRef = overlayRef;
54
- this.containerClick = new EventEmitter();
55
- this.animationStateChanged = new EventEmitter();
56
- this.state = 'enter';
57
- }
58
- onContainerClick(e) {
59
- if (e.target === e.currentTarget || e.target === this.dialogElementRef.nativeElement) {
60
- this.containerClick.emit();
61
- }
62
- }
63
- attachComponentPortal(portal) {
64
- return this.portalOutlet.attachComponentPortal(portal);
65
- }
66
- attachTemplatePortal(portal) {
67
- return this.portalOutlet.attachTemplatePortal(portal);
68
- }
69
- setEnterAnimationClass() {
70
- const dialogElement = this.dialogElementRef.nativeElement;
71
- const backdropElement = this.overlayRef.backdropElement;
72
- dialogElement.classList.add(WR_ANIMATION_ZOOM_CLASS_NAME_MAP.enter);
73
- dialogElement.classList.add(WR_ANIMATION_ZOOM_CLASS_NAME_MAP.enterActive);
74
- if (backdropElement) {
75
- backdropElement.classList.add(WR_ANIMATION_FADE_CLASS_NAME_MAP.enter);
76
- backdropElement.classList.add(WR_ANIMATION_FADE_CLASS_NAME_MAP.enterActive);
77
- }
78
- }
79
- setExitAnimationClass() {
80
- const dialogElement = this.dialogElementRef.nativeElement;
81
- dialogElement.classList.add(WR_ANIMATION_ZOOM_CLASS_NAME_MAP.leave);
82
- dialogElement.classList.add(WR_ANIMATION_ZOOM_CLASS_NAME_MAP.leaveActive);
83
- this.setMaskExitAnimationClass();
84
- }
85
- setMaskExitAnimationClass() {
86
- const backdropElement = this.overlayRef.backdropElement;
87
- if (backdropElement) {
88
- backdropElement.classList.add(WR_ANIMATION_FADE_CLASS_NAME_MAP.leave);
89
- backdropElement.classList.add(WR_ANIMATION_FADE_CLASS_NAME_MAP.leaveActive);
90
- }
91
- }
92
- cleanAnimationClass() {
93
- const backdropElement = this.overlayRef.backdropElement;
94
- const dialogElement = this.dialogElementRef.nativeElement;
95
- if (backdropElement) {
96
- backdropElement.classList.remove(WR_ANIMATION_FADE_CLASS_NAME_MAP.enter);
97
- backdropElement.classList.remove(WR_ANIMATION_FADE_CLASS_NAME_MAP.enterActive);
27
+ class WrDialogRef {
28
+ _overlayRef;
29
+ /** Emits the close result once and completes. */
30
+ closed = new Subject();
31
+ /** @internal */
32
+ componentRef = null;
33
+ /** @internal */
34
+ focusTrap = null;
35
+ /** @internal */
36
+ previouslyFocused = null;
37
+ constructor(_overlayRef) {
38
+ this._overlayRef = _overlayRef;
39
+ }
40
+ /** The instantiated dialog component. */
41
+ get componentInstance() {
42
+ if (!this.componentRef) {
43
+ throw new Error('WrDialogRef: component not yet attached');
98
44
  }
99
- dialogElement.classList.remove(WR_ANIMATION_ZOOM_CLASS_NAME_MAP.enter);
100
- dialogElement.classList.remove(WR_ANIMATION_ZOOM_CLASS_NAME_MAP.enterActive);
101
- dialogElement.classList.remove(WR_ANIMATION_ZOOM_CLASS_NAME_MAP.leave);
102
- dialogElement.classList.remove(WR_ANIMATION_ZOOM_CLASS_NAME_MAP.leaveActive);
45
+ return this.componentRef.instance;
103
46
  }
104
- onAnimationDone(event) {
105
- this.cleanAnimationClass();
106
- this.animationStateChanged.emit(event);
107
- }
108
- onAnimationStart(event) {
109
- if (event.toState === 'enter') {
110
- this.setEnterAnimationClass();
111
- }
112
- else if (event.toState === 'exit') {
113
- this.setExitAnimationClass();
47
+ /** Close the dialog, optionally returning a result. */
48
+ close(result) {
49
+ this.closed.next(result);
50
+ this.closed.complete();
51
+ this.focusTrap?.destroy();
52
+ this.focusTrap = null;
53
+ const restore = this.previouslyFocused;
54
+ this.previouslyFocused = null;
55
+ this._overlayRef.dispose();
56
+ // Restore focus after disposal so the trigger is reachable again.
57
+ if (restore && typeof restore.focus === 'function') {
58
+ restore.focus();
114
59
  }
115
- this.animationStateChanged.emit(event);
116
- }
117
- startExitAnimation() {
118
- this.state = 'exit';
119
- this.cdr.markForCheck();
120
- }
121
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: WrDialogBaseDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: WrDialogOptions }, { token: i2.OverlayRef }], target: i0.ɵɵFactoryTarget.Directive }); }
122
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.10", type: WrDialogBaseDirective, isStandalone: true, usesInheritance: true, ngImport: i0 }); }
123
- }
124
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: WrDialogBaseDirective, decorators: [{
125
- type: Directive
126
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: WrDialogOptions }, { type: i2.OverlayRef }] });
127
-
128
- class WrDialogComponent extends WrDialogBaseDirective {
129
- onAnimationStart(event) {
130
- super.onAnimationStart(event);
131
- }
132
- onAnimationDone(event) {
133
- super.onAnimationDone(event);
134
- }
135
- onContainerClick(e) {
136
- super.onContainerClick(e);
137
60
  }
138
- /** Set element classes */
139
- get elClasses() {
140
- return {
141
- 'wr-dialog': true,
142
- };
61
+ /** Resolves with the close result when the dialog is dismissed. */
62
+ awaitClose() {
63
+ return new Promise(resolve => {
64
+ this.closed.subscribe({
65
+ next: value => resolve(value),
66
+ complete: () => resolve(undefined),
67
+ });
68
+ });
143
69
  }
144
- constructor(cdr, options, overlayRef) {
145
- super(cdr, options, overlayRef);
146
- this.options = options;
147
- this.state = 'enter';
70
+ /** Underlying overlay ref — escape hatch for advanced cases. */
71
+ get overlayRef() {
72
+ return this._overlayRef;
148
73
  }
149
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: WrDialogComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: WrDialogOptions }, { token: i2.OverlayRef }], target: i0.ɵɵFactoryTarget.Component }); }
150
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.10", type: WrDialogComponent, isStandalone: true, selector: "wr-dialog", host: { listeners: { "@dialogComponent.start": "onAnimationStart($event)", "@dialogComponent.done": "onAnimationDone($event)", "click": "onContainerClick($event)" }, properties: { "@dialogComponent": "this.state", "class": "this.elClasses" } }, viewQueries: [{ propertyName: "portalOutlet", first: true, predicate: CdkPortalOutlet, descendants: true, static: true }, { propertyName: "dialogElementRef", first: true, predicate: ["dialogElement"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"wr-dialog__wrapper\" #dialogElement>\n <ng-template cdkPortalOutlet></ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], animations: [wrDialogAnimations.dialogComponent], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
151
74
  }
152
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: WrDialogComponent, decorators: [{
153
- type: Component,
154
- args: [{ selector: 'wr-dialog', animations: [wrDialogAnimations.dialogComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [CdkPortalOutlet], template: "<div class=\"wr-dialog__wrapper\" #dialogElement>\n <ng-template cdkPortalOutlet></ng-template>\n</div>\n" }]
155
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: WrDialogOptions }, { type: i2.OverlayRef }], propDecorators: { portalOutlet: [{
156
- type: ViewChild,
157
- args: [CdkPortalOutlet, { static: true }]
158
- }], dialogElementRef: [{
159
- type: ViewChild,
160
- args: ['dialogElement', { static: true }]
161
- }], state: [{
162
- type: HostBinding,
163
- args: ['@dialogComponent']
164
- }], onAnimationStart: [{
165
- type: HostListener,
166
- args: ['@dialogComponent.start', ['$event']]
167
- }], onAnimationDone: [{
168
- type: HostListener,
169
- args: ['@dialogComponent.done', ['$event']]
170
- }], onContainerClick: [{
171
- type: HostListener,
172
- args: ['click', ['$event']]
173
- }], elClasses: [{
174
- type: HostBinding,
175
- args: ['class']
176
- }] } });
177
75
 
178
76
  /**
179
77
  * @license
@@ -181,6 +79,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImpo
181
79
  * Use of this source code is governed by an MIT-style license that can be
182
80
  * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
183
81
  */
82
+ /**
83
+ * Token that exposes the `data` payload passed to `WrDialog.open()`.
84
+ *
85
+ * @example
86
+ * ```ts
87
+ * @Component({...})
88
+ * export class ConfirmComponent {
89
+ * readonly data = inject<ConfirmData>(WR_DIALOG_DATA);
90
+ * }
91
+ * ```
92
+ */
184
93
  const WR_DIALOG_DATA = new InjectionToken('WR_DIALOG_DATA');
185
94
 
186
95
  /**
@@ -189,61 +98,13 @@ const WR_DIALOG_DATA = new InjectionToken('WR_DIALOG_DATA');
189
98
  * Use of this source code is governed by an MIT-style license that can be
190
99
  * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
191
100
  */
192
- class WrDialogRef {
193
- constructor(overlayRef, options, baseInstance) {
194
- this.overlayRef = overlayRef;
195
- this.options = options;
196
- this.baseInstance = baseInstance;
197
- this.componentInstance = null;
198
- this.afterOpened = new Subject();
199
- this.afterClosed = new Subject();
200
- this.destroyRef$ = inject(DestroyRef);
201
- this.id = options.id || `wr__modal__${generateRandomId()}`;
202
- baseInstance.animationStateChanged
203
- .pipe(filter(evt => evt.phaseName === 'done' && evt.toState === 'enter'), take(1))
204
- .subscribe(() => {
205
- this.afterOpened.next();
206
- this.afterOpened.complete();
207
- });
208
- baseInstance.animationStateChanged
209
- .pipe(filter(evt => evt.phaseName === 'done' && evt.toState === 'exit'), take(1))
210
- .subscribe(() => {
211
- clearTimeout(this.closeTimeout);
212
- this._finishDialogClose();
213
- });
214
- baseInstance.containerClick.pipe(takeUntilDestroyed(this.destroyRef$)).subscribe(() => {
215
- this.close();
216
- });
217
- overlayRef.backdropClick().subscribe(() => this.close(undefined));
218
- overlayRef.keydownEvents().subscribe(event => {
219
- if (event.code === 'Escape' && !hasModifierKey(event)) {
220
- event.preventDefault();
221
- this.close(undefined);
222
- }
223
- });
224
- overlayRef.detachments().subscribe(() => {
225
- this.afterClosed.next(this.result);
226
- this.afterClosed.complete();
227
- this.componentInstance = null;
228
- this.overlayRef.dispose();
229
- });
230
- }
231
- close(result) {
232
- this.result = result;
233
- this.baseInstance.animationStateChanged
234
- .pipe(filter(event => event.phaseName === 'start'), take(1))
235
- .subscribe(event => {
236
- this.overlayRef.detachBackdrop();
237
- this.closeTimeout = setTimeout(() => {
238
- this._finishDialogClose();
239
- }, event.totalTime + 100);
240
- });
241
- this.baseInstance.startExitAnimation();
242
- }
243
- _finishDialogClose() {
244
- this.overlayRef.dispose();
245
- }
246
- }
101
+ /**
102
+ * Token exposing the open dialog's `WrDialogRef` to components and
103
+ * directives rendered inside it (e.g. `[wrDialogClose]`).
104
+ *
105
+ * @internal
106
+ */
107
+ const WR_DIALOG_REF = new InjectionToken('WR_DIALOG_REF');
247
108
 
248
109
  /**
249
110
  * @license
@@ -251,96 +112,104 @@ class WrDialogRef {
251
112
  * Use of this source code is governed by an MIT-style license that can be
252
113
  * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
253
114
  */
115
+ const DEFAULT_PANEL_CLASS = 'wr-dialog-panel';
116
+ const DEFAULT_BACKDROP_CLASS = 'wr-dialog-backdrop';
254
117
  /**
255
- * NGWR dialog service.
118
+ * Opens dialog components in an isolated NGWR overlay.
119
+ *
120
+ * Uses `WR_OVERLAY` so it composes cleanly with `provideWrOverlay()`
121
+ * — dialogs render into NGWR's own overlay container and never collide
122
+ * with other CDK consumers (Material, NG-ZORRO, etc.).
256
123
  *
257
- * {@tutorial} [How to use wr-dialog]{@link http://ngwr.dev/docs/components/dialog}
124
+ * @example
125
+ * ```ts
126
+ * const dialog = inject(WrDialog);
127
+ *
128
+ * const ref = dialog.open(ConfirmComponent, {
129
+ * data: { message: 'Delete this item?' },
130
+ * width: '24rem',
131
+ * });
132
+ *
133
+ * const ok = await ref.awaitClose();
134
+ * if (ok) remove();
135
+ * ```
136
+ *
137
+ * @see https://ngwr.dev/components/dialog
258
138
  */
259
- class WrDialogService {
260
- constructor() {
261
- this.overlay = inject(Overlay);
262
- this.injector = inject(Injector);
263
- this.parentModal = inject(WrDialogService, { optional: true, skipSelf: true });
264
- this.openedDialogsAtThisLevel = [];
265
- this.afterAllClosedAtThisLevel = new Subject();
266
- }
267
- get openedDialogs() {
268
- return this.parentModal ? this.parentModal.openedDialogs : this.openedDialogsAtThisLevel;
269
- }
270
- get _afterAllClosed() {
271
- const parent = this.parentModal;
272
- return parent ? parent._afterAllClosed : this.afterAllClosedAtThisLevel;
273
- }
274
- open(options) {
275
- const _options = options || new WrDialogOptions();
276
- const positionStrategy = _options?.positionStrategy || this._defaultPositionStrategy();
277
- const scrollStrategy = _options?.scrollStrategy || this._defaultScrollStrategy();
278
- const hasBackdrop = _options?.hasBackdrop || true;
279
- const backdropClass = _options?.backdropClass || 'wr-backdrop';
280
- const overlayRef = this._createOverlay(positionStrategy, scrollStrategy, hasBackdrop, backdropClass);
281
- const dialogContainer = this._attachDialogContainer(overlayRef, _options);
282
- const dialogRef = this._attachDialogContent(dialogContainer, overlayRef, _options);
283
- dialogContainer.dialogRef = dialogRef;
284
- this.openedDialogsAtThisLevel.push(dialogRef);
285
- dialogRef.afterClosed.subscribe(() => this._removeOpenedModal(dialogRef));
286
- return dialogRef;
287
- }
288
- _defaultPositionStrategy() {
289
- return this.overlay.position().global().centerVertically().centerHorizontally();
290
- }
291
- _defaultScrollStrategy() {
292
- return this.overlay.scrollStrategies.block();
293
- }
294
- _createOverlay(positionStrategy, scrollStrategy, hasBackdrop, backdropClass) {
295
- const overlayConfig = new OverlayConfig({
296
- positionStrategy,
297
- hasBackdrop,
298
- backdropClass,
299
- scrollStrategy,
300
- });
301
- return this.overlay.create(overlayConfig);
302
- }
303
- _attachDialogContainer(overlayRef, options) {
304
- const userInjector = options && options.viewContainerRef && options.viewContainerRef.injector;
305
- const injector = Injector.create({
306
- parent: userInjector || this.injector,
307
- providers: [
308
- { provide: OverlayRef, useValue: overlayRef },
309
- { provide: WrDialogOptions, useValue: options },
310
- ],
139
+ class WrDialog {
140
+ overlay = inject(WR_OVERLAY);
141
+ scrollStrategies = inject(ScrollStrategyOptions);
142
+ parentInjector = inject(EnvironmentInjector);
143
+ focusTrapFactory = inject(ConfigurableFocusTrapFactory);
144
+ isBrowser = isPlatformBrowser(inject(PLATFORM_ID));
145
+ open(component, options = {}) {
146
+ const panelClasses = [DEFAULT_PANEL_CLASS];
147
+ const extra = options.panelClass;
148
+ if (typeof extra === 'string') {
149
+ panelClasses.push(extra);
150
+ }
151
+ else if (extra) {
152
+ for (const cls of extra)
153
+ panelClasses.push(cls);
154
+ }
155
+ const overlayRef = this.overlay.create({
156
+ positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),
157
+ scrollStrategy: this.scrollStrategies.block(),
158
+ hasBackdrop: true,
159
+ backdropClass: DEFAULT_BACKDROP_CLASS,
160
+ panelClass: panelClasses,
161
+ width: options.width,
162
+ maxWidth: options.maxWidth,
311
163
  });
312
- const containerPortal = new ComponentPortal(WrDialogComponent, options?.viewContainerRef, injector);
313
- const containerRef = overlayRef.attach(containerPortal);
314
- return containerRef.instance;
315
- }
316
- _attachDialogContent(container, overlayRef, options) {
317
- const dialogRef = new WrDialogRef(overlayRef, options, container);
318
- const userInjector = options && options.viewContainerRef && options.viewContainerRef?.injector;
164
+ const dialogRef = new WrDialogRef(overlayRef);
165
+ if (this.isBrowser) {
166
+ const active = document.activeElement;
167
+ dialogRef.previouslyFocused = active instanceof HTMLElement ? active : null;
168
+ }
319
169
  const injector = Injector.create({
320
- parent: userInjector || this.injector,
170
+ parent: this.parentInjector,
321
171
  providers: [
322
- { provide: WrDialogRef, useValue: dialogRef },
323
- { provide: WR_DIALOG_DATA, useValue: options?.data },
172
+ { provide: WR_DIALOG_DATA, useValue: options.data },
173
+ { provide: WR_DIALOG_REF, useValue: dialogRef },
324
174
  ],
325
175
  });
326
- const contentRef = container.attachComponentPortal(new ComponentPortal(options?.component, options?.viewContainerRef, injector));
327
- dialogRef.componentInstance = contentRef.instance;
328
- return dialogRef;
329
- }
330
- _removeOpenedModal(dialogRef) {
331
- const index = this.openedDialogs.indexOf(dialogRef);
332
- if (index > -1) {
333
- this.openedDialogs.splice(index, 1);
334
- if (!this.openedDialogs.length) {
335
- this._afterAllClosed.next();
336
- }
176
+ const portal = new ComponentPortal(component, null, injector);
177
+ dialogRef.componentRef = overlayRef.attach(portal);
178
+ if (this.isBrowser) {
179
+ const host = overlayRef.overlayElement;
180
+ host.setAttribute('role', 'dialog');
181
+ host.setAttribute('aria-modal', 'true');
182
+ // Wire aria-labelledby to wrDialogTitle's auto-id once content is in DOM.
183
+ queueMicrotask(() => {
184
+ const titleEl = host.querySelector('[wrDialogTitle], [wr-dialog-title]');
185
+ if (titleEl?.id)
186
+ host.setAttribute('aria-labelledby', titleEl.id);
187
+ });
188
+ // Trap focus inside the dialog and move initial focus in.
189
+ const trap = this.focusTrapFactory.create(host);
190
+ dialogRef.focusTrap = trap;
191
+ void trap.focusInitialElementWhenReady();
192
+ }
193
+ // Overlay subscriptions complete when the overlay is disposed, so no
194
+ // explicit teardown is required.
195
+ if (options.closeOnBackdropClick !== false) {
196
+ overlayRef.backdropClick().subscribe(() => dialogRef.close());
337
197
  }
198
+ if (options.closeOnEscape !== false) {
199
+ overlayRef.keydownEvents().subscribe(event => {
200
+ if (event.key === 'Escape') {
201
+ event.preventDefault();
202
+ dialogRef.close();
203
+ }
204
+ });
205
+ }
206
+ return dialogRef;
338
207
  }
339
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: WrDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
340
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: WrDialogService }); }
208
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrDialog, deps: [], target: i0.ɵɵFactoryTarget.Service });
209
+ static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.0.1", ngImport: i0, type: WrDialog });
341
210
  }
342
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: WrDialogService, decorators: [{
343
- type: Injectable
211
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrDialog, decorators: [{
212
+ type: Service
344
213
  }] });
345
214
 
346
215
  /**
@@ -349,47 +218,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImpo
349
218
  * Use of this source code is governed by an MIT-style license that can be
350
219
  * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
351
220
  */
352
- class WrDialogModule {
353
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: WrDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
354
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.10", ngImport: i0, type: WrDialogModule }); }
355
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: WrDialogModule, providers: [WrDialogService] }); }
356
- }
357
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: WrDialogModule, decorators: [{
358
- type: NgModule,
359
- args: [{
360
- imports: [],
361
- providers: [WrDialogService],
362
- }]
363
- }] });
364
-
221
+ let uid = 0;
365
222
  /**
366
- * @license
223
+ * Styles a dialog title row. Use on a heading inside an opened dialog.
224
+ * Auto-assigns an `id` so the dialog panel can reference it via
225
+ * `aria-labelledby`.
367
226
  *
368
- * Use of this source code is governed by an MIT-style license that can be
369
- * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
227
+ * @example
228
+ * ```html
229
+ * <h2 wrDialogTitle>Confirm delete</h2>
230
+ * ```
370
231
  */
371
- class WrDialogCloseDirective {
372
- _onButtonClick(event) {
373
- event.preventDefault();
374
- this.dialogRef.close(undefined);
375
- }
376
- constructor(dialogRef) {
377
- this.dialogRef = dialogRef;
378
- }
379
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: WrDialogCloseDirective, deps: [{ token: WrDialogRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
380
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.10", type: WrDialogCloseDirective, isStandalone: true, selector: "[wrDialogClose]", host: { listeners: { "click": "_onButtonClick($event)" } }, ngImport: i0 }); }
232
+ class WrDialogTitle {
233
+ /** Generated id used for `aria-labelledby` wiring. */
234
+ id = `wr-dialog-title-${++uid}`;
235
+ /** @internal */
236
+ elementRef = inject((ElementRef));
237
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrDialogTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive });
238
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.1", type: WrDialogTitle, isStandalone: true, selector: "[wrDialogTitle]", host: { properties: { "attr.id": "id" }, classAttribute: "wr-dialog__title" }, ngImport: i0 });
381
239
  }
382
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: WrDialogCloseDirective, decorators: [{
240
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrDialogTitle, decorators: [{
383
241
  type: Directive,
384
242
  args: [{
385
- selector: `[wrDialogClose]`,
243
+ selector: '[wrDialogTitle]',
244
+ host: { class: 'wr-dialog__title', '[attr.id]': 'id' },
386
245
  }]
387
- }], ctorParameters: () => [{ type: WrDialogRef, decorators: [{
388
- type: Optional
389
- }] }], propDecorators: { _onButtonClick: [{
390
- type: HostListener,
391
- args: ['click', ['$event']]
392
- }] } });
246
+ }] });
393
247
 
394
248
  /**
395
249
  * @license
@@ -397,21 +251,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImpo
397
251
  * Use of this source code is governed by an MIT-style license that can be
398
252
  * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
399
253
  */
400
- class WrDialogContentDirective {
401
- constructor() {
402
- this.class = 'wr-dialog__content';
403
- }
404
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: WrDialogContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
405
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.10", type: WrDialogContentDirective, isStandalone: true, selector: "[wrDialogContent]", host: { properties: { "class": "this.class" } }, ngImport: i0 }); }
254
+ /**
255
+ * Styles the scrollable body section of a dialog.
256
+ *
257
+ * @example
258
+ * ```html
259
+ * <div wrDialogContent>…body…</div>
260
+ * ```
261
+ */
262
+ class WrDialogContent {
263
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrDialogContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
264
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.1", type: WrDialogContent, isStandalone: true, selector: "[wrDialogContent]", host: { classAttribute: "wr-dialog__content" }, ngImport: i0 });
406
265
  }
407
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: WrDialogContentDirective, decorators: [{
266
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrDialogContent, decorators: [{
408
267
  type: Directive,
409
268
  args: [{
410
- selector: `[wrDialogContent]`,
269
+ selector: '[wrDialogContent]',
270
+ host: { class: 'wr-dialog__content' },
411
271
  }]
412
- }], propDecorators: { class: [{
413
- type: HostBinding
414
- }] } });
272
+ }] });
415
273
 
416
274
  /**
417
275
  * @license
@@ -419,32 +277,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImpo
419
277
  * Use of this source code is governed by an MIT-style license that can be
420
278
  * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
421
279
  */
422
- class WrDialogFooterDirective {
423
- constructor() {
424
- this.position = 'end';
425
- }
426
- get elClasses() {
427
- return {
428
- 'wr-dialog__footer': true,
429
- 'wr-dialog__footer--start': this.position === 'start',
430
- 'wr-dialog__footer--center': this.position === 'center',
431
- 'wr-dialog__footer--end': this.position === 'end',
432
- };
433
- }
434
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: WrDialogFooterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
435
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.10", type: WrDialogFooterDirective, isStandalone: true, selector: "[wrDialogFooter]", inputs: { position: "position" }, host: { properties: { "class": "this.elClasses" } }, ngImport: i0 }); }
280
+ /**
281
+ * Footer row, typically holding action buttons.
282
+ *
283
+ * @example
284
+ * ```html
285
+ * <div wrDialogFooter align="end">
286
+ * <wr-btn wrDialogClose>Cancel</wr-btn>
287
+ * <wr-btn color="danger" (click)="confirm()">Delete</wr-btn>
288
+ * </div>
289
+ * ```
290
+ */
291
+ class WrDialogFooter {
292
+ /**
293
+ * Horizontal alignment of the children.
294
+ *
295
+ * @default 'end'
296
+ */
297
+ align = input('end', /* @ts-ignore */
298
+ ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
299
+ classes = computed(() => `wr-dialog__footer wr-dialog__footer--${this.align()}`, /* @ts-ignore */
300
+ ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
301
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrDialogFooter, deps: [], target: i0.ɵɵFactoryTarget.Directive });
302
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.1", type: WrDialogFooter, isStandalone: true, selector: "[wrDialogFooter]", inputs: { align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0 });
436
303
  }
437
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: WrDialogFooterDirective, decorators: [{
304
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrDialogFooter, decorators: [{
438
305
  type: Directive,
439
306
  args: [{
440
307
  selector: '[wrDialogFooter]',
308
+ host: { '[class]': 'classes()' },
441
309
  }]
442
- }], propDecorators: { position: [{
443
- type: Input
444
- }], elClasses: [{
445
- type: HostBinding,
446
- args: ['class']
447
- }] } });
310
+ }], propDecorators: { align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }] } });
448
311
 
449
312
  /**
450
313
  * @license
@@ -452,32 +315,41 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImpo
452
315
  * Use of this source code is governed by an MIT-style license that can be
453
316
  * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
454
317
  */
455
- class WrDialogTitleDirective {
456
- constructor() {
457
- this.class = 'wr-dialog__title';
458
- }
459
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: WrDialogTitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
460
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.10", type: WrDialogTitleDirective, isStandalone: true, selector: "[wrDialogTitle]", host: { properties: { "class": "this.class" } }, ngImport: i0 }); }
318
+ /**
319
+ * Closes the dialog when the host element is clicked.
320
+ *
321
+ * Optionally passes a `[wrDialogClose]` value as the close result.
322
+ *
323
+ * @example
324
+ * ```html
325
+ * <wr-btn wrDialogClose>Cancel</wr-btn>
326
+ * <wr-btn color="primary" [wrDialogClose]="true">Confirm</wr-btn>
327
+ * ```
328
+ */
329
+ class WrDialogClose {
330
+ /**
331
+ * Value to pass to `close()`. When unset, the dialog closes with
332
+ * `undefined`.
333
+ */
334
+ result = input(undefined, { ...(ngDevMode ? { debugName: "result" } : /* istanbul ignore next */ {}), alias: 'wrDialogClose' });
335
+ ref = inject(WR_DIALOG_REF, { optional: true });
336
+ onClick() {
337
+ this.ref?.close(this.result());
338
+ }
339
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrDialogClose, deps: [], target: i0.ɵɵFactoryTarget.Directive });
340
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.1", type: WrDialogClose, isStandalone: true, selector: "[wrDialogClose]", inputs: { result: { classPropertyName: "result", publicName: "wrDialogClose", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "onClick()" } }, ngImport: i0 });
461
341
  }
462
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: WrDialogTitleDirective, decorators: [{
342
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrDialogClose, decorators: [{
463
343
  type: Directive,
464
344
  args: [{
465
- selector: '[wrDialogTitle]',
345
+ selector: '[wrDialogClose]',
346
+ host: { '(click)': 'onClick()' },
466
347
  }]
467
- }], propDecorators: { class: [{
468
- type: HostBinding
469
- }] } });
470
-
471
- /**
472
- * @license
473
- *
474
- * Use of this source code is governed by an MIT-style license that can be
475
- * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
476
- */
348
+ }], propDecorators: { result: [{ type: i0.Input, args: [{ isSignal: true, alias: "wrDialogClose", required: false }] }] } });
477
349
 
478
350
  /**
479
351
  * Generated bundle index. Do not edit.
480
352
  */
481
353
 
482
- export { WR_ANIMATION_FADE_CLASS_NAME_MAP, WR_ANIMATION_ZOOM_CLASS_NAME_MAP, WR_DIALOG_DATA, WrDialogBaseDirective, WrDialogCloseDirective, WrDialogComponent, WrDialogContentDirective, WrDialogFooterDirective, WrDialogModule, WrDialogOptions, WrDialogRef, WrDialogService, WrDialogTitleDirective, wrDialogAnimations };
354
+ export { WR_DIALOG_DATA, WrDialog, WrDialogClose, WrDialogContent, WrDialogFooter, WrDialogRef, WrDialogTitle };
483
355
  //# sourceMappingURL=ngwr-dialog.mjs.map