ngwr 15.4.0 → 15.6.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 (678) hide show
  1. package/README.md +3 -4
  2. package/affix/styles/_index.scss +2 -0
  3. package/alert/styles/_index.scss +18 -0
  4. package/anchor/styles/_index.scss +1 -0
  5. package/avatar/styles/_index.scss +44 -4
  6. package/back-top/styles/_index.scss +1 -0
  7. package/badge/styles/_index.scss +1 -0
  8. package/breadcrumbs/styles/_index.scss +1 -0
  9. package/burger/styles/_index.scss +1 -0
  10. package/button/styles/_index.scss +1 -0
  11. package/calendar/styles/_index.scss +1 -0
  12. package/card/styles/_index.scss +1 -0
  13. package/carousel/styles/_index.scss +1 -0
  14. package/cascader/styles/_index.scss +1 -0
  15. package/charts/bar-chart/styles/_index.scss +1 -0
  16. package/charts/boxplot-chart/styles/_index.scss +1 -0
  17. package/charts/bullet-chart/styles/_index.scss +1 -0
  18. package/charts/calendar-heatmap/styles/_index.scss +1 -0
  19. package/charts/candlestick-chart/styles/_index.scss +1 -0
  20. package/charts/chart-legend/styles/_index.scss +1 -0
  21. package/charts/donut-chart/styles/_index.scss +1 -0
  22. package/charts/funnel-chart/styles/_index.scss +1 -0
  23. package/charts/gauge/styles/_index.scss +1 -0
  24. package/charts/heatmap-chart/styles/_index.scss +1 -0
  25. package/charts/line-chart/styles/_index.scss +1 -0
  26. package/charts/meter-group/styles/_index.scss +1 -0
  27. package/charts/radar-chart/styles/_index.scss +1 -0
  28. package/charts/scatter-chart/styles/_index.scss +1 -0
  29. package/charts/sparkline/styles/_index.scss +2 -0
  30. package/charts/treemap-chart/styles/_index.scss +1 -0
  31. package/charts/waterfall-chart/styles/_index.scss +1 -0
  32. package/checkbox/styles/_index.scss +1 -0
  33. package/collapse/styles/_index.scss +1 -0
  34. package/color-picker/styles/_index.scss +1 -0
  35. package/command-palette/styles/_index.scss +1 -0
  36. package/comment/styles/_index.scss +271 -0
  37. package/compare/styles/_index.scss +1 -0
  38. package/context-menu/styles/_index.scss +1 -0
  39. package/counter/styles/_index.scss +1 -0
  40. package/date-picker/styles/_index.scss +1 -0
  41. package/density/styles/_index.scss +2 -0
  42. package/descriptions/styles/_index.scss +1 -0
  43. package/dialog/styles/_index.scss +7 -0
  44. package/divider/styles/_index.scss +1 -0
  45. package/drawer/styles/_index.scss +1 -0
  46. package/dropdown/styles/_index.scss +1 -0
  47. package/editor/styles/_index.scss +1 -0
  48. package/empty/styles/_index.scss +1 -0
  49. package/event-calendar/styles/_index.scss +1 -0
  50. package/fesm2022/ngwr-affix.mjs +2 -0
  51. package/fesm2022/ngwr-affix.mjs.map +1 -1
  52. package/fesm2022/ngwr-alert.mjs +7 -3
  53. package/fesm2022/ngwr-alert.mjs.map +1 -1
  54. package/fesm2022/ngwr-anchor.mjs +2 -0
  55. package/fesm2022/ngwr-anchor.mjs.map +1 -1
  56. package/fesm2022/ngwr-avatar.mjs +71 -6
  57. package/fesm2022/ngwr-avatar.mjs.map +1 -1
  58. package/fesm2022/ngwr-back-top.mjs +2 -0
  59. package/fesm2022/ngwr-back-top.mjs.map +1 -1
  60. package/fesm2022/ngwr-badge.mjs +9 -0
  61. package/fesm2022/ngwr-badge.mjs.map +1 -1
  62. package/fesm2022/ngwr-breadcrumbs.mjs +7 -2
  63. package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -1
  64. package/fesm2022/ngwr-burger.mjs +5 -0
  65. package/fesm2022/ngwr-burger.mjs.map +1 -1
  66. package/fesm2022/ngwr-button.mjs +6 -0
  67. package/fesm2022/ngwr-button.mjs.map +1 -1
  68. package/fesm2022/ngwr-calendar.mjs +2 -0
  69. package/fesm2022/ngwr-calendar.mjs.map +1 -1
  70. package/fesm2022/ngwr-card.mjs +11 -2
  71. package/fesm2022/ngwr-card.mjs.map +1 -1
  72. package/fesm2022/ngwr-carousel.mjs +6 -0
  73. package/fesm2022/ngwr-carousel.mjs.map +1 -1
  74. package/fesm2022/ngwr-cascader.mjs +3 -3
  75. package/fesm2022/ngwr-cascader.mjs.map +1 -1
  76. package/fesm2022/ngwr-charts-bar-chart.mjs +2 -1
  77. package/fesm2022/ngwr-charts-bar-chart.mjs.map +1 -1
  78. package/fesm2022/ngwr-charts-boxplot-chart.mjs +2 -0
  79. package/fesm2022/ngwr-charts-boxplot-chart.mjs.map +1 -1
  80. package/fesm2022/ngwr-charts-bullet-chart.mjs +2 -1
  81. package/fesm2022/ngwr-charts-bullet-chart.mjs.map +1 -1
  82. package/fesm2022/ngwr-charts-calendar-heatmap.mjs +2 -0
  83. package/fesm2022/ngwr-charts-calendar-heatmap.mjs.map +1 -1
  84. package/fesm2022/ngwr-charts-candlestick-chart.mjs +2 -1
  85. package/fesm2022/ngwr-charts-candlestick-chart.mjs.map +1 -1
  86. package/fesm2022/ngwr-charts-chart-legend.mjs +9 -0
  87. package/fesm2022/ngwr-charts-chart-legend.mjs.map +1 -1
  88. package/fesm2022/ngwr-charts-donut-chart.mjs +5 -0
  89. package/fesm2022/ngwr-charts-donut-chart.mjs.map +1 -1
  90. package/fesm2022/ngwr-charts-funnel-chart.mjs +5 -1
  91. package/fesm2022/ngwr-charts-funnel-chart.mjs.map +1 -1
  92. package/fesm2022/ngwr-charts-gauge.mjs +5 -1
  93. package/fesm2022/ngwr-charts-gauge.mjs.map +1 -1
  94. package/fesm2022/ngwr-charts-heatmap-chart.mjs +2 -1
  95. package/fesm2022/ngwr-charts-heatmap-chart.mjs.map +1 -1
  96. package/fesm2022/ngwr-charts-line-chart.mjs +2 -1
  97. package/fesm2022/ngwr-charts-line-chart.mjs.map +1 -1
  98. package/fesm2022/ngwr-charts-meter-group.mjs +5 -0
  99. package/fesm2022/ngwr-charts-meter-group.mjs.map +1 -1
  100. package/fesm2022/ngwr-charts-radar-chart.mjs +2 -1
  101. package/fesm2022/ngwr-charts-radar-chart.mjs.map +1 -1
  102. package/fesm2022/ngwr-charts-scatter-chart.mjs +5 -1
  103. package/fesm2022/ngwr-charts-scatter-chart.mjs.map +1 -1
  104. package/fesm2022/ngwr-charts-sparkline.mjs +5 -0
  105. package/fesm2022/ngwr-charts-sparkline.mjs.map +1 -1
  106. package/fesm2022/ngwr-charts-treemap-chart.mjs +2 -0
  107. package/fesm2022/ngwr-charts-treemap-chart.mjs.map +1 -1
  108. package/fesm2022/ngwr-charts-waterfall-chart.mjs +2 -0
  109. package/fesm2022/ngwr-charts-waterfall-chart.mjs.map +1 -1
  110. package/fesm2022/ngwr-checkbox.mjs +9 -1
  111. package/fesm2022/ngwr-checkbox.mjs.map +1 -1
  112. package/fesm2022/ngwr-collapse.mjs +11 -2
  113. package/fesm2022/ngwr-collapse.mjs.map +1 -1
  114. package/fesm2022/ngwr-color-picker.mjs +3 -1
  115. package/fesm2022/ngwr-color-picker.mjs.map +1 -1
  116. package/fesm2022/ngwr-command-palette.mjs +2 -1
  117. package/fesm2022/ngwr-command-palette.mjs.map +1 -1
  118. package/fesm2022/ngwr-comment-testing.mjs +60 -0
  119. package/fesm2022/ngwr-comment-testing.mjs.map +1 -0
  120. package/fesm2022/ngwr-comment.mjs +524 -0
  121. package/fesm2022/ngwr-comment.mjs.map +1 -0
  122. package/fesm2022/ngwr-compare.mjs +2 -1
  123. package/fesm2022/ngwr-compare.mjs.map +1 -1
  124. package/fesm2022/ngwr-context-menu.mjs +12 -2
  125. package/fesm2022/ngwr-context-menu.mjs.map +1 -1
  126. package/fesm2022/ngwr-counter.mjs +17 -23
  127. package/fesm2022/ngwr-counter.mjs.map +1 -1
  128. package/fesm2022/ngwr-date-picker.mjs +17 -2
  129. package/fesm2022/ngwr-date-picker.mjs.map +1 -1
  130. package/fesm2022/ngwr-density.mjs +2 -1
  131. package/fesm2022/ngwr-density.mjs.map +1 -1
  132. package/fesm2022/ngwr-descriptions.mjs +9 -0
  133. package/fesm2022/ngwr-descriptions.mjs.map +1 -1
  134. package/fesm2022/ngwr-dialog-testing.mjs +14 -0
  135. package/fesm2022/ngwr-dialog-testing.mjs.map +1 -1
  136. package/fesm2022/ngwr-dialog.mjs +315 -136
  137. package/fesm2022/ngwr-dialog.mjs.map +1 -1
  138. package/fesm2022/ngwr-directives.mjs +7 -4
  139. package/fesm2022/ngwr-directives.mjs.map +1 -1
  140. package/fesm2022/ngwr-divider.mjs +2 -0
  141. package/fesm2022/ngwr-divider.mjs.map +1 -1
  142. package/fesm2022/ngwr-drawer.mjs +22 -3
  143. package/fesm2022/ngwr-drawer.mjs.map +1 -1
  144. package/fesm2022/ngwr-dropdown.mjs +11 -2
  145. package/fesm2022/ngwr-dropdown.mjs.map +1 -1
  146. package/fesm2022/ngwr-editor.mjs +3 -2
  147. package/fesm2022/ngwr-editor.mjs.map +1 -1
  148. package/fesm2022/ngwr-empty.mjs +5 -0
  149. package/fesm2022/ngwr-empty.mjs.map +1 -1
  150. package/fesm2022/ngwr-event-calendar.mjs +5 -1
  151. package/fesm2022/ngwr-event-calendar.mjs.map +1 -1
  152. package/fesm2022/ngwr-file-upload.mjs +2 -1
  153. package/fesm2022/ngwr-file-upload.mjs.map +1 -1
  154. package/fesm2022/ngwr-form.mjs +10 -0
  155. package/fesm2022/ngwr-form.mjs.map +1 -1
  156. package/fesm2022/ngwr-graph.mjs +2 -1
  157. package/fesm2022/ngwr-graph.mjs.map +1 -1
  158. package/fesm2022/ngwr-hotkey.mjs +86 -6
  159. package/fesm2022/ngwr-hotkey.mjs.map +1 -1
  160. package/fesm2022/ngwr-i18n-ar.mjs +22 -3
  161. package/fesm2022/ngwr-i18n-ar.mjs.map +1 -1
  162. package/fesm2022/ngwr-i18n-cs.mjs +22 -3
  163. package/fesm2022/ngwr-i18n-cs.mjs.map +1 -1
  164. package/fesm2022/ngwr-i18n-de.mjs +22 -3
  165. package/fesm2022/ngwr-i18n-de.mjs.map +1 -1
  166. package/fesm2022/ngwr-i18n-en.mjs +22 -3
  167. package/fesm2022/ngwr-i18n-en.mjs.map +1 -1
  168. package/fesm2022/ngwr-i18n-es.mjs +22 -3
  169. package/fesm2022/ngwr-i18n-es.mjs.map +1 -1
  170. package/fesm2022/ngwr-i18n-fr.mjs +22 -3
  171. package/fesm2022/ngwr-i18n-fr.mjs.map +1 -1
  172. package/fesm2022/ngwr-i18n-he.mjs +22 -3
  173. package/fesm2022/ngwr-i18n-he.mjs.map +1 -1
  174. package/fesm2022/ngwr-i18n-hi.mjs +22 -3
  175. package/fesm2022/ngwr-i18n-hi.mjs.map +1 -1
  176. package/fesm2022/ngwr-i18n-id.mjs +22 -3
  177. package/fesm2022/ngwr-i18n-id.mjs.map +1 -1
  178. package/fesm2022/ngwr-i18n-it.mjs +22 -3
  179. package/fesm2022/ngwr-i18n-it.mjs.map +1 -1
  180. package/fesm2022/ngwr-i18n-ja.mjs +22 -3
  181. package/fesm2022/ngwr-i18n-ja.mjs.map +1 -1
  182. package/fesm2022/ngwr-i18n-ko.mjs +22 -3
  183. package/fesm2022/ngwr-i18n-ko.mjs.map +1 -1
  184. package/fesm2022/ngwr-i18n-nl.mjs +22 -3
  185. package/fesm2022/ngwr-i18n-nl.mjs.map +1 -1
  186. package/fesm2022/ngwr-i18n-pl.mjs +22 -3
  187. package/fesm2022/ngwr-i18n-pl.mjs.map +1 -1
  188. package/fesm2022/ngwr-i18n-pt.mjs +22 -3
  189. package/fesm2022/ngwr-i18n-pt.mjs.map +1 -1
  190. package/fesm2022/ngwr-i18n-ru.mjs +22 -3
  191. package/fesm2022/ngwr-i18n-ru.mjs.map +1 -1
  192. package/fesm2022/ngwr-i18n-sv.mjs +22 -3
  193. package/fesm2022/ngwr-i18n-sv.mjs.map +1 -1
  194. package/fesm2022/ngwr-i18n-tr.mjs +22 -3
  195. package/fesm2022/ngwr-i18n-tr.mjs.map +1 -1
  196. package/fesm2022/ngwr-i18n-uk.mjs +22 -3
  197. package/fesm2022/ngwr-i18n-uk.mjs.map +1 -1
  198. package/fesm2022/ngwr-i18n-vi.mjs +22 -3
  199. package/fesm2022/ngwr-i18n-vi.mjs.map +1 -1
  200. package/fesm2022/ngwr-i18n-zh-tw.mjs +22 -3
  201. package/fesm2022/ngwr-i18n-zh-tw.mjs.map +1 -1
  202. package/fesm2022/ngwr-i18n-zh.mjs +22 -3
  203. package/fesm2022/ngwr-i18n-zh.mjs.map +1 -1
  204. package/fesm2022/ngwr-icon.mjs +2 -0
  205. package/fesm2022/ngwr-icon.mjs.map +1 -1
  206. package/fesm2022/ngwr-image-cropper.mjs +2 -1
  207. package/fesm2022/ngwr-image-cropper.mjs.map +1 -1
  208. package/fesm2022/ngwr-input-number-testing.mjs.map +1 -1
  209. package/fesm2022/ngwr-input-number.mjs +110 -12
  210. package/fesm2022/ngwr-input-number.mjs.map +1 -1
  211. package/fesm2022/ngwr-input-otp.mjs +2 -1
  212. package/fesm2022/ngwr-input-otp.mjs.map +1 -1
  213. package/fesm2022/ngwr-input.mjs +20 -2
  214. package/fesm2022/ngwr-input.mjs.map +1 -1
  215. package/fesm2022/ngwr-keyboard.mjs +79 -18
  216. package/fesm2022/ngwr-keyboard.mjs.map +1 -1
  217. package/fesm2022/ngwr-knob.mjs +5 -1
  218. package/fesm2022/ngwr-knob.mjs.map +1 -1
  219. package/fesm2022/ngwr-layout.mjs +21 -3
  220. package/fesm2022/ngwr-layout.mjs.map +1 -1
  221. package/fesm2022/ngwr-lightbox.mjs +3 -3
  222. package/fesm2022/ngwr-lightbox.mjs.map +1 -1
  223. package/fesm2022/ngwr-list.mjs +7 -2
  224. package/fesm2022/ngwr-list.mjs.map +1 -1
  225. package/fesm2022/ngwr-load-state-testing.mjs +43 -0
  226. package/fesm2022/ngwr-load-state-testing.mjs.map +1 -0
  227. package/fesm2022/ngwr-load-state.mjs +495 -0
  228. package/fesm2022/ngwr-load-state.mjs.map +1 -0
  229. package/fesm2022/ngwr-mention.mjs +48 -20
  230. package/fesm2022/ngwr-mention.mjs.map +1 -1
  231. package/fesm2022/ngwr-page-header.mjs +49 -2
  232. package/fesm2022/ngwr-page-header.mjs.map +1 -1
  233. package/fesm2022/ngwr-pagination.mjs +3 -1
  234. package/fesm2022/ngwr-pagination.mjs.map +1 -1
  235. package/fesm2022/ngwr-pipes.mjs +40 -1
  236. package/fesm2022/ngwr-pipes.mjs.map +1 -1
  237. package/fesm2022/ngwr-platform.mjs +134 -2
  238. package/fesm2022/ngwr-platform.mjs.map +1 -1
  239. package/fesm2022/ngwr-popconfirm.mjs +6 -1
  240. package/fesm2022/ngwr-popconfirm.mjs.map +1 -1
  241. package/fesm2022/ngwr-popover.mjs +10 -1
  242. package/fesm2022/ngwr-popover.mjs.map +1 -1
  243. package/fesm2022/ngwr-progress.mjs +5 -0
  244. package/fesm2022/ngwr-progress.mjs.map +1 -1
  245. package/fesm2022/ngwr-pull-to-refresh.mjs +2 -1
  246. package/fesm2022/ngwr-pull-to-refresh.mjs.map +1 -1
  247. package/fesm2022/ngwr-qr.mjs +2 -1
  248. package/fesm2022/ngwr-qr.mjs.map +1 -1
  249. package/fesm2022/ngwr-radio.mjs +6 -1
  250. package/fesm2022/ngwr-radio.mjs.map +1 -1
  251. package/fesm2022/ngwr-rating.mjs +5 -1
  252. package/fesm2022/ngwr-rating.mjs.map +1 -1
  253. package/fesm2022/ngwr-result.mjs +17 -0
  254. package/fesm2022/ngwr-result.mjs.map +1 -1
  255. package/fesm2022/ngwr-schema-form.mjs +9 -2
  256. package/fesm2022/ngwr-schema-form.mjs.map +1 -1
  257. package/fesm2022/ngwr-segmented.mjs +2 -0
  258. package/fesm2022/ngwr-segmented.mjs.map +1 -1
  259. package/fesm2022/ngwr-select.mjs +65 -17
  260. package/fesm2022/ngwr-select.mjs.map +1 -1
  261. package/fesm2022/ngwr-sidebar.mjs +2 -0
  262. package/fesm2022/ngwr-sidebar.mjs.map +1 -1
  263. package/fesm2022/ngwr-skeleton.mjs +30 -5
  264. package/fesm2022/ngwr-skeleton.mjs.map +1 -1
  265. package/fesm2022/ngwr-slider.mjs +26 -4
  266. package/fesm2022/ngwr-slider.mjs.map +1 -1
  267. package/fesm2022/ngwr-sortable-list.mjs +9 -3
  268. package/fesm2022/ngwr-sortable-list.mjs.map +1 -1
  269. package/fesm2022/ngwr-speed-dial.mjs +2 -0
  270. package/fesm2022/ngwr-speed-dial.mjs.map +1 -1
  271. package/fesm2022/ngwr-spinner.mjs +5 -0
  272. package/fesm2022/ngwr-spinner.mjs.map +1 -1
  273. package/fesm2022/ngwr-splitter.mjs +2 -1
  274. package/fesm2022/ngwr-splitter.mjs.map +1 -1
  275. package/fesm2022/ngwr-statistic.mjs +7 -1
  276. package/fesm2022/ngwr-statistic.mjs.map +1 -1
  277. package/fesm2022/ngwr-stepper.mjs +6 -0
  278. package/fesm2022/ngwr-stepper.mjs.map +1 -1
  279. package/fesm2022/ngwr-storage.mjs +54 -33
  280. package/fesm2022/ngwr-storage.mjs.map +1 -1
  281. package/fesm2022/ngwr-switch.mjs +5 -1
  282. package/fesm2022/ngwr-switch.mjs.map +1 -1
  283. package/fesm2022/ngwr-table.mjs +153 -39
  284. package/fesm2022/ngwr-table.mjs.map +1 -1
  285. package/fesm2022/ngwr-tabs.mjs +3 -1
  286. package/fesm2022/ngwr-tabs.mjs.map +1 -1
  287. package/fesm2022/ngwr-textarea.mjs +2 -0
  288. package/fesm2022/ngwr-textarea.mjs.map +1 -1
  289. package/fesm2022/ngwr-timeline.mjs +9 -0
  290. package/fesm2022/ngwr-timeline.mjs.map +1 -1
  291. package/fesm2022/ngwr-toast.mjs +6 -1
  292. package/fesm2022/ngwr-toast.mjs.map +1 -1
  293. package/fesm2022/ngwr-toolbar.mjs +5 -0
  294. package/fesm2022/ngwr-toolbar.mjs.map +1 -1
  295. package/fesm2022/ngwr-tour.mjs +6 -2
  296. package/fesm2022/ngwr-tour.mjs.map +1 -1
  297. package/fesm2022/ngwr-transfer.mjs +6 -1
  298. package/fesm2022/ngwr-transfer.mjs.map +1 -1
  299. package/fesm2022/ngwr-tree.mjs +2 -1
  300. package/fesm2022/ngwr-tree.mjs.map +1 -1
  301. package/fesm2022/ngwr-typography.mjs +5 -0
  302. package/fesm2022/ngwr-typography.mjs.map +1 -1
  303. package/fesm2022/ngwr-utils-router.mjs +165 -0
  304. package/fesm2022/ngwr-utils-router.mjs.map +1 -0
  305. package/fesm2022/ngwr-utils.mjs +374 -3
  306. package/fesm2022/ngwr-utils.mjs.map +1 -1
  307. package/fesm2022/ngwr-version.mjs +1 -1
  308. package/fesm2022/ngwr-version.mjs.map +1 -1
  309. package/fesm2022/ngwr-window.mjs +4 -1
  310. package/fesm2022/ngwr-window.mjs.map +1 -1
  311. package/file-upload/styles/_index.scss +1 -0
  312. package/form/styles/_index.scss +1 -0
  313. package/graph/styles/_index.scss +1 -0
  314. package/i18n/ar.json +22 -3
  315. package/i18n/cs.json +22 -3
  316. package/i18n/de.json +22 -3
  317. package/i18n/en.json +22 -3
  318. package/i18n/es.json +22 -3
  319. package/i18n/fr.json +22 -3
  320. package/i18n/he.json +22 -3
  321. package/i18n/hi.json +22 -3
  322. package/i18n/id.json +22 -3
  323. package/i18n/it.json +22 -3
  324. package/i18n/ja.json +22 -3
  325. package/i18n/ko.json +22 -3
  326. package/i18n/nl.json +22 -3
  327. package/i18n/pl.json +22 -3
  328. package/i18n/pt.json +22 -3
  329. package/i18n/ru.json +22 -3
  330. package/i18n/sv.json +22 -3
  331. package/i18n/tr.json +22 -3
  332. package/i18n/uk.json +22 -3
  333. package/i18n/vi.json +22 -3
  334. package/i18n/zh-TW.json +22 -3
  335. package/i18n/zh.json +22 -3
  336. package/icon/styles/_index.scss +1 -0
  337. package/image-cropper/styles/_index.scss +1 -0
  338. package/input/styles/_index.scss +1 -0
  339. package/input-number/styles/_index.scss +1 -0
  340. package/input-otp/styles/_index.scss +1 -0
  341. package/keyboard/styles/_index.scss +1 -0
  342. package/knob/styles/_index.scss +1 -0
  343. package/layout/styles/_index.scss +1 -0
  344. package/lightbox/styles/_index.scss +1 -0
  345. package/list/styles/_index.scss +1 -0
  346. package/llms-full.txt +45 -279
  347. package/llms.txt +16 -16
  348. package/load-state/styles/_index.scss +49 -0
  349. package/loading-bar/styles/_index.scss +1 -0
  350. package/mcp/catalog.js +3 -3
  351. package/mention/styles/_index.scss +1 -0
  352. package/package.json +23 -212
  353. package/page-header/styles/_index.scss +82 -0
  354. package/pagination/styles/_index.scss +1 -0
  355. package/popconfirm/styles/_index.scss +1 -0
  356. package/popover/styles/_index.scss +1 -0
  357. package/progress/styles/_index.scss +1 -0
  358. package/pull-to-refresh/styles/_index.scss +1 -0
  359. package/qr/styles/_index.scss +1 -0
  360. package/radio/styles/_index.scss +1 -0
  361. package/rating/styles/_index.scss +1 -0
  362. package/result/styles/_index.scss +1 -0
  363. package/schema-form/styles/_index.scss +1 -0
  364. package/schematics/component-style/index.js +1 -1
  365. package/schematics/component-style/schema.json +1 -1
  366. package/schematics/use/rule.js +0 -1
  367. package/schematics/use/symbol-map.json +8 -28
  368. package/schematics/utility/global-styles.js +3 -3
  369. package/segmented/styles/_index.scss +1 -0
  370. package/select/styles/_index.scss +1 -0
  371. package/sidebar/styles/_index.scss +1 -0
  372. package/skeleton/styles/_index.scss +65 -29
  373. package/skills/ngwr/SKILL.md +3 -4
  374. package/skills/ngwr/references/catalog.md +5 -47
  375. package/skills/ngwr/references/setup.md +1 -2
  376. package/slider/styles/_index.scss +1 -0
  377. package/sortable-list/styles/_index.scss +1 -0
  378. package/speed-dial/styles/_index.scss +1 -0
  379. package/spinner/styles/_index.scss +1 -0
  380. package/splitter/styles/_index.scss +1 -0
  381. package/statistic/styles/_index.scss +1 -0
  382. package/stepper/styles/_index.scss +1 -0
  383. package/styles/_animations.scss +0 -4
  384. package/switch/styles/_index.scss +1 -0
  385. package/table/styles/_index.scss +18 -0
  386. package/tabs/styles/_index.scss +1 -0
  387. package/textarea/styles/_index.scss +1 -0
  388. package/theme/styles/_focus.scss +0 -6
  389. package/theme/styles/_index.scss +6 -0
  390. package/theme/styles/_loaded.scss +29 -0
  391. package/theme/styles/_motion.scss +1 -0
  392. package/timeline/styles/_index.scss +1 -0
  393. package/toast/styles/_index.scss +1 -0
  394. package/toolbar/styles/_index.scss +1 -0
  395. package/tour/styles/_index.scss +1 -0
  396. package/transfer/styles/_index.scss +1 -0
  397. package/tree/styles/_index.scss +1 -0
  398. package/types/ngwr-alert.d.ts +10 -1
  399. package/types/ngwr-avatar.d.ts +49 -0
  400. package/types/ngwr-badge.d.ts +4 -2
  401. package/types/ngwr-breadcrumbs.d.ts +1 -0
  402. package/types/ngwr-burger.d.ts +1 -0
  403. package/types/ngwr-button.d.ts +2 -1
  404. package/types/ngwr-card.d.ts +2 -0
  405. package/types/ngwr-carousel.d.ts +3 -3
  406. package/types/ngwr-charts-chart-legend.d.ts +1 -0
  407. package/types/ngwr-charts-donut-chart.d.ts +1 -0
  408. package/types/ngwr-charts-funnel-chart.d.ts +1 -0
  409. package/types/ngwr-charts-gauge.d.ts +1 -0
  410. package/types/ngwr-charts-meter-group.d.ts +1 -0
  411. package/types/ngwr-charts-scatter-chart.d.ts +1 -0
  412. package/types/ngwr-charts-sparkline.d.ts +1 -0
  413. package/types/ngwr-checkbox.d.ts +2 -0
  414. package/types/ngwr-collapse.d.ts +2 -0
  415. package/types/ngwr-comment-testing.d.ts +90 -0
  416. package/types/ngwr-comment.d.ts +306 -0
  417. package/types/ngwr-compare.d.ts +1 -1
  418. package/types/ngwr-context-menu.d.ts +2 -0
  419. package/types/ngwr-counter.d.ts +12 -8
  420. package/types/ngwr-descriptions.d.ts +2 -0
  421. package/types/ngwr-dialog-testing.d.ts +7 -0
  422. package/types/ngwr-dialog.d.ts +113 -6
  423. package/types/ngwr-directives.d.ts +7 -3
  424. package/types/ngwr-divider.d.ts +1 -1
  425. package/types/ngwr-drawer.d.ts +5 -1
  426. package/types/ngwr-dropdown.d.ts +16 -3
  427. package/types/ngwr-empty.d.ts +1 -0
  428. package/types/ngwr-event-calendar.d.ts +1 -0
  429. package/types/ngwr-form.d.ts +2 -0
  430. package/types/ngwr-hotkey.d.ts +60 -3
  431. package/types/ngwr-image-cropper.d.ts +1 -1
  432. package/types/ngwr-input-number-testing.d.ts +5 -0
  433. package/types/ngwr-input-number.d.ts +91 -12
  434. package/types/ngwr-input.d.ts +4 -0
  435. package/types/ngwr-keyboard.d.ts +28 -1
  436. package/types/ngwr-knob.d.ts +1 -0
  437. package/types/ngwr-layout.d.ts +4 -0
  438. package/types/ngwr-list.d.ts +1 -0
  439. package/types/ngwr-load-state-testing.d.ts +65 -0
  440. package/types/ngwr-load-state.d.ts +269 -0
  441. package/types/ngwr-mention.d.ts +27 -7
  442. package/types/ngwr-page-header.d.ts +60 -8
  443. package/types/ngwr-pipes.d.ts +19 -0
  444. package/types/ngwr-platform.d.ts +73 -7
  445. package/types/ngwr-popconfirm.d.ts +3 -2
  446. package/types/ngwr-progress.d.ts +2 -1
  447. package/types/ngwr-radio.d.ts +1 -0
  448. package/types/ngwr-rating.d.ts +1 -0
  449. package/types/ngwr-result.d.ts +4 -0
  450. package/types/ngwr-schema-form.d.ts +1 -0
  451. package/types/ngwr-select.d.ts +75 -27
  452. package/types/ngwr-skeleton.d.ts +22 -2
  453. package/types/ngwr-slider.d.ts +21 -0
  454. package/types/ngwr-sortable-list.d.ts +2 -1
  455. package/types/ngwr-spinner.d.ts +1 -0
  456. package/types/ngwr-splitter.d.ts +1 -1
  457. package/types/ngwr-statistic.d.ts +1 -0
  458. package/types/ngwr-stepper.d.ts +2 -1
  459. package/types/ngwr-storage.d.ts +33 -3
  460. package/types/ngwr-switch.d.ts +1 -0
  461. package/types/ngwr-table.d.ts +181 -45
  462. package/types/ngwr-timeline.d.ts +3 -1
  463. package/types/ngwr-toolbar.d.ts +1 -0
  464. package/types/ngwr-tour.d.ts +1 -0
  465. package/types/ngwr-transfer.d.ts +1 -0
  466. package/types/ngwr-typography.d.ts +1 -0
  467. package/types/ngwr-utils-router.d.ts +95 -0
  468. package/types/ngwr-utils.d.ts +339 -2
  469. package/types/ngwr-version.d.ts +1 -1
  470. package/typography/styles/_index.scss +1 -0
  471. package/virtual-scroll/styles/_index.scss +1 -0
  472. package/window/styles/_index.scss +1 -0
  473. package/bits/aurora/aurora.scss +0 -1
  474. package/bits/aurora/styles/_index.scss +0 -8
  475. package/bits/aurora/styles/_rules.scss +0 -36
  476. package/bits/blur-text/blur-text.scss +0 -1
  477. package/bits/blur-text/styles/_index.scss +0 -27
  478. package/bits/border-glow/border-glow.scss +0 -4
  479. package/bits/border-glow/styles/_index.scss +0 -15
  480. package/bits/border-glow/styles/_rules.scss +0 -259
  481. package/bits/circular-text/circular-text.scss +0 -1
  482. package/bits/circular-text/styles/_index.scss +0 -15
  483. package/bits/circular-text/styles/_rules.scss +0 -60
  484. package/bits/click-spark/click-spark.scss +0 -5
  485. package/bits/click-spark/styles/_index.scss +0 -11
  486. package/bits/click-spark/styles/_rules.scss +0 -20
  487. package/bits/decrypt-text/decrypt-text.scss +0 -1
  488. package/bits/decrypt-text/styles/_index.scss +0 -15
  489. package/bits/decrypt-text/styles/_rules.scss +0 -40
  490. package/bits/dot-grid/dot-grid.scss +0 -1
  491. package/bits/dot-grid/styles/_index.scss +0 -8
  492. package/bits/dot-grid/styles/_rules.scss +0 -54
  493. package/bits/falling-text/falling-text.scss +0 -1
  494. package/bits/falling-text/styles/_index.scss +0 -15
  495. package/bits/falling-text/styles/_rules.scss +0 -44
  496. package/bits/glitch-text/glitch-text.scss +0 -1
  497. package/bits/glitch-text/styles/_index.scss +0 -15
  498. package/bits/glitch-text/styles/_rules.scss +0 -161
  499. package/bits/gradient-text/gradient-text.scss +0 -1
  500. package/bits/gradient-text/styles/_index.scss +0 -15
  501. package/bits/gradient-text/styles/_rules.scss +0 -118
  502. package/bits/iridescence/iridescence.scss +0 -1
  503. package/bits/iridescence/styles/_index.scss +0 -8
  504. package/bits/iridescence/styles/_rules.scss +0 -72
  505. package/bits/marquee/marquee.scss +0 -1
  506. package/bits/marquee/styles/_index.scss +0 -15
  507. package/bits/marquee/styles/_rules.scss +0 -203
  508. package/bits/ripple-grid/ripple-grid.scss +0 -1
  509. package/bits/ripple-grid/styles/_index.scss +0 -8
  510. package/bits/ripple-grid/styles/_rules.scss +0 -63
  511. package/bits/rotating-text/rotating-text.scss +0 -1
  512. package/bits/rotating-text/styles/_index.scss +0 -39
  513. package/bits/shiny-text/shiny-text.scss +0 -1
  514. package/bits/shiny-text/styles/_index.scss +0 -15
  515. package/bits/shiny-text/styles/_rules.scss +0 -121
  516. package/bits/splash-cursor/splash-cursor.scss +0 -1
  517. package/bits/splash-cursor/styles/_index.scss +0 -28
  518. package/bits/split-text/split-text.scss +0 -1
  519. package/bits/split-text/styles/_index.scss +0 -35
  520. package/bits/spotlight-card/spotlight-card.scss +0 -1
  521. package/bits/spotlight-card/styles/_index.scss +0 -15
  522. package/bits/spotlight-card/styles/_rules.scss +0 -52
  523. package/bits/star-border/star-border.scss +0 -1
  524. package/bits/star-border/styles/_index.scss +0 -15
  525. package/bits/star-border/styles/_rules.scss +0 -126
  526. package/bits/threads/styles/_index.scss +0 -8
  527. package/bits/threads/styles/_rules.scss +0 -76
  528. package/bits/threads/threads.scss +0 -1
  529. package/bits/tilt-card/styles/_index.scss +0 -15
  530. package/bits/tilt-card/styles/_rules.scss +0 -56
  531. package/bits/tilt-card/tilt-card.scss +0 -1
  532. package/bits/typewriter/styles/_index.scss +0 -15
  533. package/bits/typewriter/styles/_rules.scss +0 -45
  534. package/bits/typewriter/typewriter.scss +0 -1
  535. package/bits/waves/styles/_index.scss +0 -15
  536. package/bits/waves/styles/_rules.scss +0 -54
  537. package/bits/waves/waves.scss +0 -1
  538. package/fesm2022/ngwr-bits-aurora.mjs +0 -461
  539. package/fesm2022/ngwr-bits-aurora.mjs.map +0 -1
  540. package/fesm2022/ngwr-bits-blur-text-testing.mjs +0 -49
  541. package/fesm2022/ngwr-bits-blur-text-testing.mjs.map +0 -1
  542. package/fesm2022/ngwr-bits-blur-text.mjs +0 -337
  543. package/fesm2022/ngwr-bits-blur-text.mjs.map +0 -1
  544. package/fesm2022/ngwr-bits-border-glow-testing.mjs +0 -147
  545. package/fesm2022/ngwr-bits-border-glow-testing.mjs.map +0 -1
  546. package/fesm2022/ngwr-bits-border-glow.mjs +0 -561
  547. package/fesm2022/ngwr-bits-border-glow.mjs.map +0 -1
  548. package/fesm2022/ngwr-bits-circular-text-testing.mjs +0 -63
  549. package/fesm2022/ngwr-bits-circular-text-testing.mjs.map +0 -1
  550. package/fesm2022/ngwr-bits-circular-text.mjs +0 -228
  551. package/fesm2022/ngwr-bits-circular-text.mjs.map +0 -1
  552. package/fesm2022/ngwr-bits-click-spark.mjs +0 -304
  553. package/fesm2022/ngwr-bits-click-spark.mjs.map +0 -1
  554. package/fesm2022/ngwr-bits-confetti.mjs +0 -175
  555. package/fesm2022/ngwr-bits-confetti.mjs.map +0 -1
  556. package/fesm2022/ngwr-bits-decrypt-text-testing.mjs +0 -62
  557. package/fesm2022/ngwr-bits-decrypt-text-testing.mjs.map +0 -1
  558. package/fesm2022/ngwr-bits-decrypt-text.mjs +0 -525
  559. package/fesm2022/ngwr-bits-decrypt-text.mjs.map +0 -1
  560. package/fesm2022/ngwr-bits-dot-grid-testing.mjs +0 -40
  561. package/fesm2022/ngwr-bits-dot-grid-testing.mjs.map +0 -1
  562. package/fesm2022/ngwr-bits-dot-grid.mjs +0 -479
  563. package/fesm2022/ngwr-bits-dot-grid.mjs.map +0 -1
  564. package/fesm2022/ngwr-bits-falling-text-testing.mjs +0 -56
  565. package/fesm2022/ngwr-bits-falling-text-testing.mjs.map +0 -1
  566. package/fesm2022/ngwr-bits-falling-text.mjs +0 -418
  567. package/fesm2022/ngwr-bits-falling-text.mjs.map +0 -1
  568. package/fesm2022/ngwr-bits-fuzzy-text-testing.mjs +0 -38
  569. package/fesm2022/ngwr-bits-fuzzy-text-testing.mjs.map +0 -1
  570. package/fesm2022/ngwr-bits-fuzzy-text.mjs +0 -715
  571. package/fesm2022/ngwr-bits-fuzzy-text.mjs.map +0 -1
  572. package/fesm2022/ngwr-bits-glitch-text-testing.mjs +0 -63
  573. package/fesm2022/ngwr-bits-glitch-text-testing.mjs.map +0 -1
  574. package/fesm2022/ngwr-bits-glitch-text.mjs +0 -172
  575. package/fesm2022/ngwr-bits-glitch-text.mjs.map +0 -1
  576. package/fesm2022/ngwr-bits-gradient-text-testing.mjs +0 -89
  577. package/fesm2022/ngwr-bits-gradient-text-testing.mjs.map +0 -1
  578. package/fesm2022/ngwr-bits-gradient-text.mjs +0 -217
  579. package/fesm2022/ngwr-bits-gradient-text.mjs.map +0 -1
  580. package/fesm2022/ngwr-bits-iridescence-testing.mjs +0 -31
  581. package/fesm2022/ngwr-bits-iridescence-testing.mjs.map +0 -1
  582. package/fesm2022/ngwr-bits-iridescence.mjs +0 -591
  583. package/fesm2022/ngwr-bits-iridescence.mjs.map +0 -1
  584. package/fesm2022/ngwr-bits-marquee-testing.mjs +0 -126
  585. package/fesm2022/ngwr-bits-marquee-testing.mjs.map +0 -1
  586. package/fesm2022/ngwr-bits-marquee.mjs +0 -451
  587. package/fesm2022/ngwr-bits-marquee.mjs.map +0 -1
  588. package/fesm2022/ngwr-bits-ripple-grid-testing.mjs +0 -40
  589. package/fesm2022/ngwr-bits-ripple-grid-testing.mjs.map +0 -1
  590. package/fesm2022/ngwr-bits-ripple-grid.mjs +0 -806
  591. package/fesm2022/ngwr-bits-ripple-grid.mjs.map +0 -1
  592. package/fesm2022/ngwr-bits-rotating-text-testing.mjs +0 -50
  593. package/fesm2022/ngwr-bits-rotating-text-testing.mjs.map +0 -1
  594. package/fesm2022/ngwr-bits-rotating-text.mjs +0 -413
  595. package/fesm2022/ngwr-bits-rotating-text.mjs.map +0 -1
  596. package/fesm2022/ngwr-bits-shiny-text-testing.mjs +0 -92
  597. package/fesm2022/ngwr-bits-shiny-text-testing.mjs.map +0 -1
  598. package/fesm2022/ngwr-bits-shiny-text.mjs +0 -315
  599. package/fesm2022/ngwr-bits-shiny-text.mjs.map +0 -1
  600. package/fesm2022/ngwr-bits-splash-cursor-testing.mjs +0 -25
  601. package/fesm2022/ngwr-bits-splash-cursor-testing.mjs.map +0 -1
  602. package/fesm2022/ngwr-bits-splash-cursor.mjs +0 -1282
  603. package/fesm2022/ngwr-bits-splash-cursor.mjs.map +0 -1
  604. package/fesm2022/ngwr-bits-split-text-testing.mjs +0 -54
  605. package/fesm2022/ngwr-bits-split-text-testing.mjs.map +0 -1
  606. package/fesm2022/ngwr-bits-split-text.mjs +0 -378
  607. package/fesm2022/ngwr-bits-split-text.mjs.map +0 -1
  608. package/fesm2022/ngwr-bits-spotlight-card-testing.mjs +0 -113
  609. package/fesm2022/ngwr-bits-spotlight-card-testing.mjs.map +0 -1
  610. package/fesm2022/ngwr-bits-spotlight-card.mjs +0 -228
  611. package/fesm2022/ngwr-bits-spotlight-card.mjs.map +0 -1
  612. package/fesm2022/ngwr-bits-star-border-testing.mjs +0 -57
  613. package/fesm2022/ngwr-bits-star-border-testing.mjs.map +0 -1
  614. package/fesm2022/ngwr-bits-star-border.mjs +0 -162
  615. package/fesm2022/ngwr-bits-star-border.mjs.map +0 -1
  616. package/fesm2022/ngwr-bits-threads-testing.mjs +0 -41
  617. package/fesm2022/ngwr-bits-threads-testing.mjs.map +0 -1
  618. package/fesm2022/ngwr-bits-threads.mjs +0 -482
  619. package/fesm2022/ngwr-bits-threads.mjs.map +0 -1
  620. package/fesm2022/ngwr-bits-tilt-card-testing.mjs +0 -83
  621. package/fesm2022/ngwr-bits-tilt-card-testing.mjs.map +0 -1
  622. package/fesm2022/ngwr-bits-tilt-card.mjs +0 -260
  623. package/fesm2022/ngwr-bits-tilt-card.mjs.map +0 -1
  624. package/fesm2022/ngwr-bits-typewriter-testing.mjs +0 -61
  625. package/fesm2022/ngwr-bits-typewriter-testing.mjs.map +0 -1
  626. package/fesm2022/ngwr-bits-typewriter.mjs +0 -469
  627. package/fesm2022/ngwr-bits-typewriter.mjs.map +0 -1
  628. package/fesm2022/ngwr-bits-waves-testing.mjs +0 -37
  629. package/fesm2022/ngwr-bits-waves-testing.mjs.map +0 -1
  630. package/fesm2022/ngwr-bits-waves.mjs +0 -865
  631. package/fesm2022/ngwr-bits-waves.mjs.map +0 -1
  632. package/types/ngwr-bits-aurora.d.ts +0 -114
  633. package/types/ngwr-bits-blur-text-testing.d.ts +0 -162
  634. package/types/ngwr-bits-blur-text.d.ts +0 -135
  635. package/types/ngwr-bits-border-glow-testing.d.ts +0 -230
  636. package/types/ngwr-bits-border-glow.d.ts +0 -166
  637. package/types/ngwr-bits-circular-text-testing.d.ts +0 -178
  638. package/types/ngwr-bits-circular-text.d.ts +0 -70
  639. package/types/ngwr-bits-click-spark.d.ts +0 -101
  640. package/types/ngwr-bits-confetti.d.ts +0 -80
  641. package/types/ngwr-bits-decrypt-text-testing.d.ts +0 -204
  642. package/types/ngwr-bits-decrypt-text.d.ts +0 -135
  643. package/types/ngwr-bits-dot-grid-testing.d.ts +0 -92
  644. package/types/ngwr-bits-dot-grid.d.ts +0 -158
  645. package/types/ngwr-bits-falling-text-testing.d.ts +0 -170
  646. package/types/ngwr-bits-falling-text.d.ts +0 -95
  647. package/types/ngwr-bits-fuzzy-text-testing.d.ts +0 -112
  648. package/types/ngwr-bits-fuzzy-text.d.ts +0 -208
  649. package/types/ngwr-bits-glitch-text-testing.d.ts +0 -183
  650. package/types/ngwr-bits-glitch-text.d.ts +0 -60
  651. package/types/ngwr-bits-gradient-text-testing.d.ts +0 -168
  652. package/types/ngwr-bits-gradient-text.d.ts +0 -73
  653. package/types/ngwr-bits-iridescence-testing.d.ts +0 -85
  654. package/types/ngwr-bits-iridescence.d.ts +0 -244
  655. package/types/ngwr-bits-marquee-testing.d.ts +0 -266
  656. package/types/ngwr-bits-marquee.d.ts +0 -188
  657. package/types/ngwr-bits-ripple-grid-testing.d.ts +0 -96
  658. package/types/ngwr-bits-ripple-grid.d.ts +0 -299
  659. package/types/ngwr-bits-rotating-text-testing.d.ts +0 -173
  660. package/types/ngwr-bits-rotating-text.d.ts +0 -127
  661. package/types/ngwr-bits-shiny-text-testing.d.ts +0 -147
  662. package/types/ngwr-bits-shiny-text.d.ts +0 -131
  663. package/types/ngwr-bits-splash-cursor-testing.d.ts +0 -77
  664. package/types/ngwr-bits-splash-cursor.d.ts +0 -162
  665. package/types/ngwr-bits-split-text-testing.d.ts +0 -191
  666. package/types/ngwr-bits-split-text.d.ts +0 -163
  667. package/types/ngwr-bits-spotlight-card-testing.d.ts +0 -279
  668. package/types/ngwr-bits-spotlight-card.d.ts +0 -94
  669. package/types/ngwr-bits-star-border-testing.d.ts +0 -117
  670. package/types/ngwr-bits-star-border.d.ts +0 -62
  671. package/types/ngwr-bits-threads-testing.d.ts +0 -97
  672. package/types/ngwr-bits-threads.d.ts +0 -216
  673. package/types/ngwr-bits-tilt-card-testing.d.ts +0 -140
  674. package/types/ngwr-bits-tilt-card.d.ts +0 -94
  675. package/types/ngwr-bits-typewriter-testing.d.ts +0 -201
  676. package/types/ngwr-bits-typewriter.d.ts +0 -165
  677. package/types/ngwr-bits-waves-testing.d.ts +0 -103
  678. package/types/ngwr-bits-waves.d.ts +0 -142
@@ -0,0 +1,495 @@
1
+ import * as i0 from "@angular/core";
2
+ import { Component, Directive, TemplateRef, ViewEncapsulation, computed, contentChild, inject, input, linkedSignal, output } from "@angular/core";
3
+ import { NgTemplateOutlet } from "@angular/common";
4
+ import { numAttr, wrCheckStyles } from "ngwr/utils";
5
+ import { useI18nText } from "ngwr/i18n";
6
+ import { WrButton } from "ngwr/button";
7
+ import { WrEmpty } from "ngwr/empty";
8
+ import { WrResult } from "ngwr/result";
9
+ import { WrSkeleton } from "ngwr/skeleton";
10
+ /**
11
+ * @license
12
+ *
13
+ * Use of this source code is governed by an MIT-style license that can be
14
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
15
+ */
16
+ var WrLoadStateContent = class WrLoadStateContent {
17
+ wrLoadStateContentOf = input(void 0, ...ngDevMode ? [{ debugName: "wrLoadStateContentOf" }] : /* istanbul ignore next */ []);
18
+ template = inject(TemplateRef);
19
+ static ngTemplateContextGuard(_dir, _ctx) {
20
+ return true;
21
+ }
22
+ static ɵfac = i0.ɵɵngDeclareFactory({
23
+ minVersion: "12.0.0",
24
+ version: "22.2.4",
25
+ ngImport: i0,
26
+ type: WrLoadStateContent,
27
+ deps: [],
28
+ target: i0.ɵɵFactoryTarget.Directive
29
+ });
30
+ static ɵdir = i0.ɵɵngDeclareDirective({
31
+ minVersion: "17.1.0",
32
+ version: "22.2.4",
33
+ type: WrLoadStateContent,
34
+ isStandalone: true,
35
+ selector: "ng-template[wrLoadStateContent]",
36
+ inputs: { wrLoadStateContentOf: {
37
+ classPropertyName: "wrLoadStateContentOf",
38
+ publicName: "wrLoadStateContentOf",
39
+ isSignal: true,
40
+ isRequired: false,
41
+ transformFunction: null
42
+ } },
43
+ ngImport: i0
44
+ });
45
+ };
46
+ i0.ɵɵngDeclareClassMetadata({
47
+ minVersion: "12.0.0",
48
+ version: "22.2.4",
49
+ ngImport: i0,
50
+ type: WrLoadStateContent,
51
+ decorators: [{
52
+ type: Directive,
53
+ args: [{ selector: "ng-template[wrLoadStateContent]" }]
54
+ }],
55
+ propDecorators: { wrLoadStateContentOf: [{
56
+ type: i0.Input,
57
+ args: [{
58
+ isSignal: true,
59
+ alias: "wrLoadStateContentOf",
60
+ required: false
61
+ }]
62
+ }] }
63
+ });
64
+ var WrLoadStateLoading = class WrLoadStateLoading {
65
+ template = inject(TemplateRef);
66
+ static ɵfac = i0.ɵɵngDeclareFactory({
67
+ minVersion: "12.0.0",
68
+ version: "22.2.4",
69
+ ngImport: i0,
70
+ type: WrLoadStateLoading,
71
+ deps: [],
72
+ target: i0.ɵɵFactoryTarget.Directive
73
+ });
74
+ static ɵdir = i0.ɵɵngDeclareDirective({
75
+ minVersion: "14.0.0",
76
+ version: "22.2.4",
77
+ type: WrLoadStateLoading,
78
+ isStandalone: true,
79
+ selector: "ng-template[wrLoadStateLoading]",
80
+ ngImport: i0
81
+ });
82
+ };
83
+ i0.ɵɵngDeclareClassMetadata({
84
+ minVersion: "12.0.0",
85
+ version: "22.2.4",
86
+ ngImport: i0,
87
+ type: WrLoadStateLoading,
88
+ decorators: [{
89
+ type: Directive,
90
+ args: [{ selector: "ng-template[wrLoadStateLoading]" }]
91
+ }]
92
+ });
93
+ var WrLoadStateError = class WrLoadStateError {
94
+ template = inject(TemplateRef);
95
+ static ngTemplateContextGuard(_dir, _ctx) {
96
+ return true;
97
+ }
98
+ static ɵfac = i0.ɵɵngDeclareFactory({
99
+ minVersion: "12.0.0",
100
+ version: "22.2.4",
101
+ ngImport: i0,
102
+ type: WrLoadStateError,
103
+ deps: [],
104
+ target: i0.ɵɵFactoryTarget.Directive
105
+ });
106
+ static ɵdir = i0.ɵɵngDeclareDirective({
107
+ minVersion: "14.0.0",
108
+ version: "22.2.4",
109
+ type: WrLoadStateError,
110
+ isStandalone: true,
111
+ selector: "ng-template[wrLoadStateError]",
112
+ ngImport: i0
113
+ });
114
+ };
115
+ i0.ɵɵngDeclareClassMetadata({
116
+ minVersion: "12.0.0",
117
+ version: "22.2.4",
118
+ ngImport: i0,
119
+ type: WrLoadStateError,
120
+ decorators: [{
121
+ type: Directive,
122
+ args: [{ selector: "ng-template[wrLoadStateError]" }]
123
+ }]
124
+ });
125
+ var WrLoadStateEmpty = class WrLoadStateEmpty {
126
+ template = inject(TemplateRef);
127
+ static ɵfac = i0.ɵɵngDeclareFactory({
128
+ minVersion: "12.0.0",
129
+ version: "22.2.4",
130
+ ngImport: i0,
131
+ type: WrLoadStateEmpty,
132
+ deps: [],
133
+ target: i0.ɵɵFactoryTarget.Directive
134
+ });
135
+ static ɵdir = i0.ɵɵngDeclareDirective({
136
+ minVersion: "14.0.0",
137
+ version: "22.2.4",
138
+ type: WrLoadStateEmpty,
139
+ isStandalone: true,
140
+ selector: "ng-template[wrLoadStateEmpty]",
141
+ ngImport: i0
142
+ });
143
+ };
144
+ i0.ɵɵngDeclareClassMetadata({
145
+ minVersion: "12.0.0",
146
+ version: "22.2.4",
147
+ ngImport: i0,
148
+ type: WrLoadStateEmpty,
149
+ decorators: [{
150
+ type: Directive,
151
+ args: [{ selector: "ng-template[wrLoadStateEmpty]" }]
152
+ }]
153
+ });
154
+ /**
155
+ * @license
156
+ *
157
+ * Use of this source code is governed by an MIT-style license that can be
158
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
159
+ */
160
+ const isEmptyValue = (value) => value == null || Array.isArray(value) && value.length === 0;
161
+ var WrLoadState = class WrLoadState {
162
+ constructor() {
163
+ if (typeof ngDevMode === "undefined" || ngDevMode) wrCheckStyles("load-state");
164
+ }
165
+ status = input(null, ...ngDevMode ? [{ debugName: "status" }] : /* istanbul ignore next */ []);
166
+ resource = input(null, ...ngDevMode ? [{ debugName: "resource" }] : /* istanbul ignore next */ []);
167
+ isEmpty = input(isEmptyValue, ...ngDevMode ? [{ debugName: "isEmpty" }] : /* istanbul ignore next */ []);
168
+ lines = input(3, {
169
+ ...ngDevMode ? { debugName: "lines" } : /* istanbul ignore next */ {},
170
+ transform: numAttr(3)
171
+ });
172
+ errorLabel = input(null, ...ngDevMode ? [{ debugName: "errorLabel" }] : /* istanbul ignore next */ []);
173
+ retryLabel = input(null, ...ngDevMode ? [{ debugName: "retryLabel" }] : /* istanbul ignore next */ []);
174
+ emptyLabel = input(null, ...ngDevMode ? [{ debugName: "emptyLabel" }] : /* istanbul ignore next */ []);
175
+ retry = output();
176
+ resolvedErrorLabel = useI18nText(this.errorLabel, "loadState.failed", "Could not load");
177
+ resolvedRetryLabel = useI18nText(this.retryLabel, "loadState.retry", "Try again");
178
+ contentTpl = contentChild(WrLoadStateContent, ...ngDevMode ? [{ debugName: "contentTpl" }] : /* istanbul ignore next */ []);
179
+ loadingTpl = contentChild(WrLoadStateLoading, ...ngDevMode ? [{ debugName: "loadingTpl" }] : /* istanbul ignore next */ []);
180
+ errorTpl = contentChild(WrLoadStateError, ...ngDevMode ? [{ debugName: "errorTpl" }] : /* istanbul ignore next */ []);
181
+ emptyTpl = contentChild(WrLoadStateEmpty, ...ngDevMode ? [{ debugName: "emptyTpl" }] : /* istanbul ignore next */ []);
182
+ state = computed(() => {
183
+ const resource = this.resource();
184
+ if (!resource) return this.status() ?? "loading";
185
+ const status = resource.status();
186
+ if (status === "loading") return "loading";
187
+ if (status === "error") return "error";
188
+ const held = resource.hasValue();
189
+ if (status === "reloading" && !held) return resource.error() !== void 0 ? "error" : "loading";
190
+ return this.isEmpty()(held ? resource.value() : void 0) ? "empty" : "ready";
191
+ }, ...ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []);
192
+ busy = computed(() => {
193
+ const resource = this.resource();
194
+ return resource ? resource.isLoading() : this.state() === "loading";
195
+ }, ...ngDevMode ? [{ debugName: "busy" }] : /* istanbul ignore next */ []);
196
+ pressed = linkedSignal({
197
+ ...ngDevMode ? { debugName: "pressed" } : /* istanbul ignore next */ {},
198
+ source: () => [this.status(), this.resource()?.status()],
199
+ computation: () => false
200
+ });
201
+ retrying = computed(() => this.pressed() || (this.resource()?.isLoading() ?? false), ...ngDevMode ? [{ debugName: "retrying" }] : /* istanbul ignore next */ []);
202
+ classes = computed(() => {
203
+ const parts = ["wr-load-state", `wr-load-state--${this.state()}`];
204
+ if (this.busy()) parts.push("wr-load-state--busy");
205
+ return parts.join(" ");
206
+ }, ...ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []);
207
+ contentContext = computed(() => {
208
+ const resource = this.resource();
209
+ return {
210
+ $implicit: resource?.hasValue() ? resource.value() : void 0,
211
+ reloading: this.busy()
212
+ };
213
+ }, ...ngDevMode ? [{ debugName: "contentContext" }] : /* istanbul ignore next */ []);
214
+ errorContext = computed(() => ({
215
+ $implicit: this.resource()?.error(),
216
+ retry: () => this.onRetry(),
217
+ retrying: this.retrying()
218
+ }), ...ngDevMode ? [{ debugName: "errorContext" }] : /* istanbul ignore next */ []);
219
+ onRetry() {
220
+ if (this.retrying()) return;
221
+ this.pressed.set(true);
222
+ this.retry.emit();
223
+ this.resource()?.reload?.();
224
+ }
225
+ static ɵfac = i0.ɵɵngDeclareFactory({
226
+ minVersion: "12.0.0",
227
+ version: "22.2.4",
228
+ ngImport: i0,
229
+ type: WrLoadState,
230
+ deps: [],
231
+ target: i0.ɵɵFactoryTarget.Component
232
+ });
233
+ static ɵcmp = i0.ɵɵngDeclareComponent({
234
+ minVersion: "17.0.0",
235
+ version: "22.2.4",
236
+ type: WrLoadState,
237
+ isStandalone: true,
238
+ selector: "wr-load-state",
239
+ inputs: {
240
+ status: {
241
+ classPropertyName: "status",
242
+ publicName: "status",
243
+ isSignal: true,
244
+ isRequired: false,
245
+ transformFunction: null
246
+ },
247
+ resource: {
248
+ classPropertyName: "resource",
249
+ publicName: "resource",
250
+ isSignal: true,
251
+ isRequired: false,
252
+ transformFunction: null
253
+ },
254
+ isEmpty: {
255
+ classPropertyName: "isEmpty",
256
+ publicName: "isEmpty",
257
+ isSignal: true,
258
+ isRequired: false,
259
+ transformFunction: null
260
+ },
261
+ lines: {
262
+ classPropertyName: "lines",
263
+ publicName: "lines",
264
+ isSignal: true,
265
+ isRequired: false,
266
+ transformFunction: null
267
+ },
268
+ errorLabel: {
269
+ classPropertyName: "errorLabel",
270
+ publicName: "errorLabel",
271
+ isSignal: true,
272
+ isRequired: false,
273
+ transformFunction: null
274
+ },
275
+ retryLabel: {
276
+ classPropertyName: "retryLabel",
277
+ publicName: "retryLabel",
278
+ isSignal: true,
279
+ isRequired: false,
280
+ transformFunction: null
281
+ },
282
+ emptyLabel: {
283
+ classPropertyName: "emptyLabel",
284
+ publicName: "emptyLabel",
285
+ isSignal: true,
286
+ isRequired: false,
287
+ transformFunction: null
288
+ }
289
+ },
290
+ outputs: { retry: "retry" },
291
+ host: { properties: {
292
+ "class": "classes()",
293
+ "attr.aria-busy": "busy() ? \"true\" : null"
294
+ } },
295
+ queries: [
296
+ {
297
+ propertyName: "contentTpl",
298
+ first: true,
299
+ predicate: WrLoadStateContent,
300
+ descendants: true,
301
+ isSignal: true
302
+ },
303
+ {
304
+ propertyName: "loadingTpl",
305
+ first: true,
306
+ predicate: WrLoadStateLoading,
307
+ descendants: true,
308
+ isSignal: true
309
+ },
310
+ {
311
+ propertyName: "errorTpl",
312
+ first: true,
313
+ predicate: WrLoadStateError,
314
+ descendants: true,
315
+ isSignal: true
316
+ },
317
+ {
318
+ propertyName: "emptyTpl",
319
+ first: true,
320
+ predicate: WrLoadStateEmpty,
321
+ descendants: true,
322
+ isSignal: true
323
+ }
324
+ ],
325
+ ngImport: i0,
326
+ template: "@switch (state()) {\n @case ('loading') {\n @if (loadingTpl(); as custom) {\n <ng-container [ngTemplateOutlet]=\"custom.template\" />\n } @else {\n <wr-skeleton class=\"wr-load-state__skeleton\" [lines]=\"lines()\" />\n }\n }\n @case ('error') {\n @if (errorTpl(); as custom) {\n <ng-container [ngTemplateOutlet]=\"custom.template\" [ngTemplateOutletContext]=\"errorContext()\" />\n } @else {\n <wr-result class=\"wr-load-state__error\" status=\"error\" [title]=\"resolvedErrorLabel()\">\n <wr-btn wrResultExtra class=\"wr-load-state__retry\" size=\"sm\" [loading]=\"retrying()\" (click)=\"onRetry()\">\n {{ resolvedRetryLabel() }}\n </wr-btn>\n </wr-result>\n }\n }\n @case ('empty') {\n @if (emptyTpl(); as custom) {\n <ng-container [ngTemplateOutlet]=\"custom.template\" />\n } @else {\n <wr-empty class=\"wr-load-state__empty\" [title]=\"emptyLabel()\" />\n }\n }\n @case ('ready') {\n @if (contentTpl(); as custom) {\n <ng-container [ngTemplateOutlet]=\"custom.template\" [ngTemplateOutletContext]=\"contentContext()\" />\n }\n }\n}\n<!-- Always in the DOM, so a screen reader is watching it before the failure\n lands. The text leaves while a retry runs and comes back if that fails, so\n a second failure is announced too; a reload behind the content never\n touches it. -->\n<span class=\"wr-load-state__announce\" role=\"status\" aria-live=\"polite\">\n @if (state() === 'error' && !retrying()) {\n {{ resolvedErrorLabel() }}\n }\n</span>\n",
327
+ dependencies: [
328
+ {
329
+ kind: "directive",
330
+ type: NgTemplateOutlet,
331
+ selector: "[ngTemplateOutlet]",
332
+ inputs: [
333
+ "ngTemplateOutletContext",
334
+ "ngTemplateOutlet",
335
+ "ngTemplateOutletInjector"
336
+ ]
337
+ },
338
+ {
339
+ kind: "component",
340
+ type: WrSkeleton,
341
+ selector: "wr-skeleton",
342
+ inputs: [
343
+ "color",
344
+ "animated",
345
+ "lines"
346
+ ]
347
+ },
348
+ {
349
+ kind: "component",
350
+ type: WrResult,
351
+ selector: "wr-result",
352
+ inputs: [
353
+ "title",
354
+ "description",
355
+ "status"
356
+ ]
357
+ },
358
+ {
359
+ kind: "component",
360
+ type: WrEmpty,
361
+ selector: "wr-empty",
362
+ inputs: [
363
+ "icon",
364
+ "iconName",
365
+ "title"
366
+ ]
367
+ },
368
+ {
369
+ kind: "component",
370
+ type: WrButton,
371
+ selector: "wr-btn, button[wr-btn], a[wr-btn]",
372
+ inputs: [
373
+ "color",
374
+ "size",
375
+ "shape",
376
+ "icon",
377
+ "iconPosition",
378
+ "disabled",
379
+ "outlined",
380
+ "block",
381
+ "loading",
382
+ "disabledWhenLoading"
383
+ ]
384
+ }
385
+ ],
386
+ encapsulation: i0.ViewEncapsulation.None
387
+ });
388
+ };
389
+ i0.ɵɵngDeclareClassMetadata({
390
+ minVersion: "12.0.0",
391
+ version: "22.2.4",
392
+ ngImport: i0,
393
+ type: WrLoadState,
394
+ decorators: [{
395
+ type: Component,
396
+ args: [{
397
+ selector: "wr-load-state",
398
+ imports: [
399
+ NgTemplateOutlet,
400
+ WrSkeleton,
401
+ WrResult,
402
+ WrEmpty,
403
+ WrButton
404
+ ],
405
+ encapsulation: ViewEncapsulation.None,
406
+ host: {
407
+ "[class]": "classes()",
408
+ "[attr.aria-busy]": "busy() ? \"true\" : null"
409
+ },
410
+ template: "@switch (state()) {\n @case ('loading') {\n @if (loadingTpl(); as custom) {\n <ng-container [ngTemplateOutlet]=\"custom.template\" />\n } @else {\n <wr-skeleton class=\"wr-load-state__skeleton\" [lines]=\"lines()\" />\n }\n }\n @case ('error') {\n @if (errorTpl(); as custom) {\n <ng-container [ngTemplateOutlet]=\"custom.template\" [ngTemplateOutletContext]=\"errorContext()\" />\n } @else {\n <wr-result class=\"wr-load-state__error\" status=\"error\" [title]=\"resolvedErrorLabel()\">\n <wr-btn wrResultExtra class=\"wr-load-state__retry\" size=\"sm\" [loading]=\"retrying()\" (click)=\"onRetry()\">\n {{ resolvedRetryLabel() }}\n </wr-btn>\n </wr-result>\n }\n }\n @case ('empty') {\n @if (emptyTpl(); as custom) {\n <ng-container [ngTemplateOutlet]=\"custom.template\" />\n } @else {\n <wr-empty class=\"wr-load-state__empty\" [title]=\"emptyLabel()\" />\n }\n }\n @case ('ready') {\n @if (contentTpl(); as custom) {\n <ng-container [ngTemplateOutlet]=\"custom.template\" [ngTemplateOutletContext]=\"contentContext()\" />\n }\n }\n}\n<!-- Always in the DOM, so a screen reader is watching it before the failure\n lands. The text leaves while a retry runs and comes back if that fails, so\n a second failure is announced too; a reload behind the content never\n touches it. -->\n<span class=\"wr-load-state__announce\" role=\"status\" aria-live=\"polite\">\n @if (state() === 'error' && !retrying()) {\n {{ resolvedErrorLabel() }}\n }\n</span>\n"
411
+ }]
412
+ }],
413
+ ctorParameters: () => [],
414
+ propDecorators: {
415
+ status: [{
416
+ type: i0.Input,
417
+ args: [{
418
+ isSignal: true,
419
+ alias: "status",
420
+ required: false
421
+ }]
422
+ }],
423
+ resource: [{
424
+ type: i0.Input,
425
+ args: [{
426
+ isSignal: true,
427
+ alias: "resource",
428
+ required: false
429
+ }]
430
+ }],
431
+ isEmpty: [{
432
+ type: i0.Input,
433
+ args: [{
434
+ isSignal: true,
435
+ alias: "isEmpty",
436
+ required: false
437
+ }]
438
+ }],
439
+ lines: [{
440
+ type: i0.Input,
441
+ args: [{
442
+ isSignal: true,
443
+ alias: "lines",
444
+ required: false
445
+ }]
446
+ }],
447
+ errorLabel: [{
448
+ type: i0.Input,
449
+ args: [{
450
+ isSignal: true,
451
+ alias: "errorLabel",
452
+ required: false
453
+ }]
454
+ }],
455
+ retryLabel: [{
456
+ type: i0.Input,
457
+ args: [{
458
+ isSignal: true,
459
+ alias: "retryLabel",
460
+ required: false
461
+ }]
462
+ }],
463
+ emptyLabel: [{
464
+ type: i0.Input,
465
+ args: [{
466
+ isSignal: true,
467
+ alias: "emptyLabel",
468
+ required: false
469
+ }]
470
+ }],
471
+ retry: [{
472
+ type: i0.Output,
473
+ args: ["retry"]
474
+ }],
475
+ contentTpl: [{
476
+ type: i0.ContentChild,
477
+ args: [i0.forwardRef(() => WrLoadStateContent), { isSignal: true }]
478
+ }],
479
+ loadingTpl: [{
480
+ type: i0.ContentChild,
481
+ args: [i0.forwardRef(() => WrLoadStateLoading), { isSignal: true }]
482
+ }],
483
+ errorTpl: [{
484
+ type: i0.ContentChild,
485
+ args: [i0.forwardRef(() => WrLoadStateError), { isSignal: true }]
486
+ }],
487
+ emptyTpl: [{
488
+ type: i0.ContentChild,
489
+ args: [i0.forwardRef(() => WrLoadStateEmpty), { isSignal: true }]
490
+ }]
491
+ }
492
+ });
493
+ export { WrLoadState, WrLoadStateContent, WrLoadStateEmpty, WrLoadStateError, WrLoadStateLoading };
494
+
495
+ //# sourceMappingURL=ngwr-load-state.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngwr-load-state.mjs","names":[],"sources":["../../../projects/lib/load-state/load-state-templates.ts","../../../projects/lib/load-state/load-state.ts","../../../projects/lib/load-state/load-state.html"],"sourcesContent":["/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n */\n\nimport { Directive, type Resource, TemplateRef, inject, input } from '@angular/core';\n\nimport type { SafeAny } from 'ngwr/utils';\n\nimport type { WrLoadStateContentContext, WrLoadStateErrorContext } from './types';\n\n/**\n * The content `<wr-load-state>` draws once the data is ready. A template rather\n * than projected content, so nothing of it is created before that: a plain\n * `<ng-content>` would be instantiated in every state.\n *\n * Name the resource through `[wrLoadStateContentOf]` and `let-value` arrives\n * typed. The input is read by the type checker only, the way `[wrTableCellOf]`\n * types a table cell: the wrapper hands the template the same context whether\n * or not it is set.\n *\n * @example\n * ```html\n * <wr-load-state [resource]=\"users\">\n * <ng-template wrLoadStateContent [wrLoadStateContentOf]=\"users\" let-users>\n * <wr-table [items]=\"users\" [columns]=\"columns\" />\n * </ng-template>\n * </wr-load-state>\n * ```\n */\n@Directive({\n selector: 'ng-template[wrLoadStateContent]',\n})\nexport class WrLoadStateContent<T = SafeAny> {\n /**\n * The resource the template draws, for the type checker: nothing reads it at\n * runtime. Bind the same resource as the wrapper's `[resource]`.\n */\n readonly wrLoadStateContentOf = input<Resource<T | undefined> | null | undefined>(undefined);\n\n readonly template = inject<TemplateRef<WrLoadStateContentContext<T>>>(TemplateRef);\n\n /**\n * Types the template's `let-` variables under `strictTemplates`. `T` defaults\n * to `SafeAny` for the reason `WrOptionLeading` gives: without\n * `[wrLoadStateContentOf]` nothing infers the value, and narrowed to\n * `unknown` every `value.length` would stop compiling.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- a guard's parameters exist to be narrowed, never read\n static ngTemplateContextGuard<T>(_dir: WrLoadStateContent<T>, _ctx: unknown): _ctx is WrLoadStateContentContext<T> {\n return true;\n }\n}\n\n/**\n * Replaces the default skeleton while `<wr-load-state>` loads for the first time.\n *\n * @example\n * ```html\n * <ng-template wrLoadStateLoading><wr-spinner /></ng-template>\n * ```\n */\n@Directive({\n selector: 'ng-template[wrLoadStateLoading]',\n})\nexport class WrLoadStateLoading {\n readonly template = inject<TemplateRef<void>>(TemplateRef);\n}\n\n/**\n * Replaces the default failure of `<wr-load-state>`. The context carries the\n * error, `retry()` and `retrying`; the error's message is the app's to show.\n *\n * @example\n * ```html\n * <ng-template wrLoadStateError let-error let-retry=\"retry\" let-retrying=\"retrying\">\n * <wr-alert type=\"danger\" title=\"Could not load\" [message]=\"error.message\">\n * <wr-btn wrAlertActions size=\"sm\" [loading]=\"retrying\" (click)=\"retry()\">Try again</wr-btn>\n * </wr-alert>\n * </ng-template>\n * ```\n */\n@Directive({\n selector: 'ng-template[wrLoadStateError]',\n})\nexport class WrLoadStateError<E = SafeAny> {\n readonly template = inject<TemplateRef<WrLoadStateErrorContext<E>>>(TemplateRef);\n\n /**\n * Types the template's `let-` variables under `strictTemplates`. `E` defaults\n * to `SafeAny` for the reason `WrOptionLeading` gives: nothing infers the error\n * type, and narrowed to `unknown`, `error.message` would not compile.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- a guard's parameters exist to be narrowed, never read\n static ngTemplateContextGuard<E>(_dir: WrLoadStateError<E>, _ctx: unknown): _ctx is WrLoadStateErrorContext<E> {\n return true;\n }\n}\n\n/**\n * Replaces the default `<wr-empty>` of `<wr-load-state>`.\n *\n * @example\n * ```html\n * <ng-template wrLoadStateEmpty>\n * <wr-empty title=\"No orders yet\"><wr-btn wrEmptyActions (click)=\"create()\">Create one</wr-btn></wr-empty>\n * </ng-template>\n * ```\n */\n@Directive({\n selector: 'ng-template[wrLoadStateEmpty]',\n})\nexport class WrLoadStateEmpty {\n readonly template = inject<TemplateRef<void>>(TemplateRef);\n}\n","/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n */\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n type Resource,\n ViewEncapsulation,\n type WritableResource,\n computed,\n contentChild,\n input,\n linkedSignal,\n output,\n} from '@angular/core';\n\nimport { WrButton } from 'ngwr/button';\nimport { WrEmpty } from 'ngwr/empty';\nimport { useI18nText } from 'ngwr/i18n';\nimport { WrResult } from 'ngwr/result';\nimport { WrSkeleton } from 'ngwr/skeleton';\nimport { numAttr, type SafeAny, wrCheckStyles } from 'ngwr/utils';\n\nimport { WrLoadStateContent, WrLoadStateEmpty, WrLoadStateError, WrLoadStateLoading } from './load-state-templates';\nimport type { WrLoadStateContentContext, WrLoadStateErrorContext, WrLoadStateStatus } from './types';\n\n/** The default `isEmpty`: nothing, or a list with nothing in it. */\nconst isEmptyValue = (value: unknown): boolean => value == null || (Array.isArray(value) && value.length === 0);\n\n/**\n * One wrapper for the four states of a screen that loads: the skeleton, the\n * failure with a retry, the empty slot and the content. Give it a `resource`\n * and it reads the state from there; give it a `status` and the app decides.\n * Never both.\n *\n * The content and any custom part are templates, so nothing of the content is\n * created before it is ready. The defaults are `<wr-skeleton [lines]>`,\n * `<wr-result status=\"error\">` with a retry button, and `<wr-empty>`, so the\n * minimal use is the resource and a content template.\n *\n * What each resource status draws:\n *\n * | `resource.status()` | Drawn |\n * | --------------------- | --------------------------------------------------------------------- |\n * | `loading` | the skeleton |\n * | `reloading` | what was on screen, marked busy; the failure, with its button busy, after a failed load; the skeleton when there is no value yet |\n * | `error` | the failure |\n * | `resolved`, `local` | the empty slot when `isEmpty(value)`, else the content |\n * | `idle` | the content or the empty slot by `isEmpty`: nothing was asked for, so nothing loads |\n *\n * Accessibility: the host carries `aria-busy` while a load is in flight, the\n * failure's title is announced once through a polite live region, nothing is\n * announced for a reload that keeps the content, and focus is never moved.\n *\n * @example\n * ```html\n * <wr-load-state [resource]=\"users\">\n * <ng-template wrLoadStateContent [wrLoadStateContentOf]=\"users\" let-users>\n * <wr-table [items]=\"users\" [columns]=\"columns\" />\n * </ng-template>\n * </wr-load-state>\n *\n * <wr-load-state [status]=\"status()\" (retry)=\"load()\">\n * <ng-template wrLoadStateContent>{{ text() }}</ng-template>\n * </wr-load-state>\n * ```\n *\n * @see https://ngwr.dev/reference/components/load-state\n */\n@Component({\n selector: 'wr-load-state',\n templateUrl: './load-state.html',\n imports: [NgTemplateOutlet, WrSkeleton, WrResult, WrEmpty, WrButton],\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'classes()',\n '[attr.aria-busy]': 'busy() ? \"true\" : null',\n },\n})\nexport class WrLoadState<T = SafeAny> {\n constructor() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) wrCheckStyles('load-state');\n }\n\n /**\n * The state, when the app decides it. Ignored while `resource` is set.\n *\n * @default null\n */\n readonly status = input<WrLoadStateStatus | null>(null);\n\n /**\n * The resource to read the state from: `resource()`, `rxResource()` and\n * `httpResource()` alike. The retry button calls its `reload()`.\n *\n * @default null\n */\n readonly resource = input<Resource<T | undefined> | null>(null);\n\n /**\n * Decides whether a settled value shows the empty slot instead of the content.\n * The default is empty for `null`, `undefined` and an empty array.\n *\n * @default isEmptyValue\n */\n readonly isEmpty = input<(value: T | undefined) => boolean>(isEmptyValue);\n\n /**\n * How many lines the default skeleton draws.\n *\n * @default 3\n */\n readonly lines = input(3, { transform: numAttr(3) });\n\n /** The failure's title. Falls back to `loadState.failed`, then `'Could not load'`. */\n readonly errorLabel = input<string | null>(null);\n\n /** The retry button's label. Falls back to `loadState.retry`, then `'Try again'`. */\n readonly retryLabel = input<string | null>(null);\n\n /** The default empty slot's title. Falls back to `empty.noData` through `<wr-empty>`. */\n readonly emptyLabel = input<string | null>(null);\n\n /**\n * Emitted when the retry button is pressed, once per press that starts a\n * retry. With a `resource`, `reload()` has been called as well.\n */\n readonly retry = output<void>();\n\n protected readonly resolvedErrorLabel = useI18nText(this.errorLabel, 'loadState.failed', 'Could not load');\n protected readonly resolvedRetryLabel = useI18nText(this.retryLabel, 'loadState.retry', 'Try again');\n\n protected readonly contentTpl = contentChild<WrLoadStateContent<T>>(WrLoadStateContent);\n protected readonly loadingTpl = contentChild(WrLoadStateLoading);\n protected readonly errorTpl = contentChild(WrLoadStateError);\n protected readonly emptyTpl = contentChild(WrLoadStateEmpty);\n\n protected readonly state = computed<WrLoadStateStatus>(() => {\n const resource = this.resource();\n if (!resource) return this.status() ?? 'loading';\n const status = resource.status();\n if (status === 'loading') return 'loading';\n if (status === 'error') return 'error';\n const held = resource.hasValue();\n if (status === 'reloading' && !held) return resource.error() !== undefined ? 'error' : 'loading';\n return this.isEmpty()(held ? resource.value() : undefined) ? 'empty' : 'ready';\n });\n\n /** A load is in flight: the first one, or a reload behind whatever is on screen. */\n protected readonly busy = computed(() => {\n const resource = this.resource();\n return resource ? resource.isLoading() : this.state() === 'loading';\n });\n\n /**\n * A press that has not reached the resource's status yet. `reload()` flips the\n * status in the same tick, so with a resource this covers only the gap before\n * it; with a `status` it holds until the app answers the `retry` output.\n */\n private readonly pressed = linkedSignal({\n source: () => [this.status(), this.resource()?.status()],\n computation: () => false,\n });\n\n protected readonly retrying = computed(() => this.pressed() || (this.resource()?.isLoading() ?? false));\n\n protected readonly classes = computed(() => {\n const parts = ['wr-load-state', `wr-load-state--${this.state()}`];\n if (this.busy()) parts.push('wr-load-state--busy');\n return parts.join(' ');\n });\n\n protected readonly contentContext = computed<WrLoadStateContentContext<T | undefined>>(() => {\n const resource = this.resource();\n return {\n $implicit: resource?.hasValue() ? resource.value() : undefined,\n reloading: this.busy(),\n };\n });\n\n protected readonly errorContext = computed<WrLoadStateErrorContext>(() => ({\n $implicit: this.resource()?.error(),\n retry: () => this.onRetry(),\n retrying: this.retrying(),\n }));\n\n /** A second press while one is in flight starts nothing. */\n protected onRetry(): void {\n if (this.retrying()) return;\n this.pressed.set(true);\n this.retry.emit();\n (this.resource() as Partial<WritableResource<T | undefined>> | null)?.reload?.();\n }\n}\n","@switch (state()) {\n @case ('loading') {\n @if (loadingTpl(); as custom) {\n <ng-container [ngTemplateOutlet]=\"custom.template\" />\n } @else {\n <wr-skeleton class=\"wr-load-state__skeleton\" [lines]=\"lines()\" />\n }\n }\n @case ('error') {\n @if (errorTpl(); as custom) {\n <ng-container [ngTemplateOutlet]=\"custom.template\" [ngTemplateOutletContext]=\"errorContext()\" />\n } @else {\n <wr-result class=\"wr-load-state__error\" status=\"error\" [title]=\"resolvedErrorLabel()\">\n <wr-btn wrResultExtra class=\"wr-load-state__retry\" size=\"sm\" [loading]=\"retrying()\" (click)=\"onRetry()\">\n {{ resolvedRetryLabel() }}\n </wr-btn>\n </wr-result>\n }\n }\n @case ('empty') {\n @if (emptyTpl(); as custom) {\n <ng-container [ngTemplateOutlet]=\"custom.template\" />\n } @else {\n <wr-empty class=\"wr-load-state__empty\" [title]=\"emptyLabel()\" />\n }\n }\n @case ('ready') {\n @if (contentTpl(); as custom) {\n <ng-container [ngTemplateOutlet]=\"custom.template\" [ngTemplateOutletContext]=\"contentContext()\" />\n }\n }\n}\n<!-- Always in the DOM, so a screen reader is watching it before the failure\n lands. The text leaves while a retry runs and comes back if that fails, so\n a second failure is announced too; a reload behind the content never\n touches it. -->\n<span class=\"wr-load-state__announce\" role=\"status\" aria-live=\"polite\">\n @if (state() === 'error' && !retrying()) {\n {{ resolvedErrorLabel() }}\n }\n</span>\n"],"mappings":"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"}