@elementar-rt/components 0.6.56 → 0.6.58

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 (345) hide show
  1. package/README.md +49 -49
  2. package/badge/index.d.ts +18 -0
  3. package/bottom-sheet/index.d.ts +32 -0
  4. package/button-toggle/index.d.ts +33 -0
  5. package/calendar/index.d.ts +44 -0
  6. package/card/index.d.ts +32 -0
  7. package/chips/index.d.ts +23 -0
  8. package/clipboard-copy/index.d.ts +28 -0
  9. package/code-highlighter/index.d.ts +5 -1
  10. package/combobox/index.d.ts +38 -0
  11. package/content-editor/index.d.ts +18 -0
  12. package/dashboard/index.d.ts +1 -1
  13. package/data-grid/index.d.ts +64 -0
  14. package/datepicker/index.d.ts +32 -0
  15. package/dialog/index.d.ts +48 -0
  16. package/digit-roller/index.d.ts +18 -0
  17. package/empty-state/index.d.ts +17 -0
  18. package/expansion-panel/index.d.ts +12 -0
  19. package/fesm2022/elementar-rt-components-action-required.mjs +4 -4
  20. package/fesm2022/elementar-rt-components-action-required.mjs.map +1 -1
  21. package/fesm2022/elementar-rt-components-alert.mjs +18 -17
  22. package/fesm2022/elementar-rt-components-alert.mjs.map +1 -1
  23. package/fesm2022/elementar-rt-components-announcement.mjs +8 -8
  24. package/fesm2022/elementar-rt-components-announcement.mjs.map +1 -1
  25. package/fesm2022/elementar-rt-components-avatar.mjs +22 -22
  26. package/fesm2022/elementar-rt-components-avatar.mjs.map +1 -1
  27. package/fesm2022/elementar-rt-components-badge.mjs +38 -0
  28. package/fesm2022/elementar-rt-components-badge.mjs.map +1 -0
  29. package/fesm2022/elementar-rt-components-block-loader.mjs +7 -7
  30. package/fesm2022/elementar-rt-components-block-loader.mjs.map +1 -1
  31. package/fesm2022/elementar-rt-components-block-state.mjs +24 -24
  32. package/fesm2022/elementar-rt-components-block-state.mjs.map +1 -1
  33. package/fesm2022/elementar-rt-components-bottom-sheet.mjs +71 -0
  34. package/fesm2022/elementar-rt-components-bottom-sheet.mjs.map +1 -0
  35. package/fesm2022/elementar-rt-components-brand-colors.mjs +5 -5
  36. package/fesm2022/elementar-rt-components-brand-colors.mjs.map +1 -1
  37. package/fesm2022/elementar-rt-components-breadcrumbs.mjs +41 -41
  38. package/fesm2022/elementar-rt-components-breadcrumbs.mjs.map +1 -1
  39. package/fesm2022/elementar-rt-components-button-toggle.mjs +89 -0
  40. package/fesm2022/elementar-rt-components-button-toggle.mjs.map +1 -0
  41. package/fesm2022/elementar-rt-components-calendar.mjs +130 -0
  42. package/fesm2022/elementar-rt-components-calendar.mjs.map +1 -0
  43. package/fesm2022/elementar-rt-components-card-overlay.mjs +7 -7
  44. package/fesm2022/elementar-rt-components-card-overlay.mjs.map +1 -1
  45. package/fesm2022/elementar-rt-components-card.mjs +60 -0
  46. package/fesm2022/elementar-rt-components-card.mjs.map +1 -0
  47. package/fesm2022/elementar-rt-components-carousel.mjs +22 -22
  48. package/fesm2022/elementar-rt-components-carousel.mjs.map +1 -1
  49. package/fesm2022/elementar-rt-components-chips.mjs +54 -0
  50. package/fesm2022/elementar-rt-components-chips.mjs.map +1 -0
  51. package/fesm2022/elementar-rt-components-clipboard-copy.mjs +115 -0
  52. package/fesm2022/elementar-rt-components-clipboard-copy.mjs.map +1 -0
  53. package/fesm2022/elementar-rt-components-code-highlighter.mjs +19 -6
  54. package/fesm2022/elementar-rt-components-code-highlighter.mjs.map +1 -1
  55. package/fesm2022/elementar-rt-components-color-picker.mjs +27 -27
  56. package/fesm2022/elementar-rt-components-color-picker.mjs.map +1 -1
  57. package/fesm2022/elementar-rt-components-color-scheme.mjs +10 -10
  58. package/fesm2022/elementar-rt-components-color-scheme.mjs.map +1 -1
  59. package/fesm2022/elementar-rt-components-combobox.mjs +70 -0
  60. package/fesm2022/elementar-rt-components-combobox.mjs.map +1 -0
  61. package/fesm2022/elementar-rt-components-command-bar.mjs +12 -12
  62. package/fesm2022/elementar-rt-components-command-bar.mjs.map +1 -1
  63. package/fesm2022/elementar-rt-components-comment-editor.mjs +86 -84
  64. package/fesm2022/elementar-rt-components-comment-editor.mjs.map +1 -1
  65. package/fesm2022/elementar-rt-components-comparison-slider.mjs +10 -10
  66. package/fesm2022/elementar-rt-components-comparison-slider.mjs.map +1 -1
  67. package/fesm2022/elementar-rt-components-confirm.mjs +7 -7
  68. package/fesm2022/elementar-rt-components-confirm.mjs.map +1 -1
  69. package/fesm2022/elementar-rt-components-content-editor.mjs +121 -0
  70. package/fesm2022/elementar-rt-components-content-editor.mjs.map +1 -0
  71. package/fesm2022/elementar-rt-components-content-fade.mjs +4 -4
  72. package/fesm2022/elementar-rt-components-content-fade.mjs.map +1 -1
  73. package/fesm2022/elementar-rt-components-cookie-popup.mjs +13 -13
  74. package/fesm2022/elementar-rt-components-cookie-popup.mjs.map +1 -1
  75. package/fesm2022/elementar-rt-components-core.mjs +64 -64
  76. package/fesm2022/elementar-rt-components-core.mjs.map +1 -1
  77. package/fesm2022/elementar-rt-components-country-select.mjs +5 -5
  78. package/fesm2022/elementar-rt-components-country-select.mjs.map +1 -1
  79. package/fesm2022/elementar-rt-components-crop.mjs +4 -4
  80. package/fesm2022/elementar-rt-components-crop.mjs.map +1 -1
  81. package/fesm2022/elementar-rt-components-currency-select.mjs +5 -5
  82. package/fesm2022/elementar-rt-components-currency-select.mjs.map +1 -1
  83. package/fesm2022/elementar-rt-components-dashboard.mjs +9 -9
  84. package/fesm2022/elementar-rt-components-dashboard.mjs.map +1 -1
  85. package/fesm2022/elementar-rt-components-data-grid.mjs +120 -0
  86. package/fesm2022/elementar-rt-components-data-grid.mjs.map +1 -0
  87. package/fesm2022/elementar-rt-components-data-view.mjs +17 -17
  88. package/fesm2022/elementar-rt-components-data-view.mjs.map +1 -1
  89. package/fesm2022/elementar-rt-components-date-format-select.mjs +5 -5
  90. package/fesm2022/elementar-rt-components-date-format-select.mjs.map +1 -1
  91. package/fesm2022/elementar-rt-components-datepicker.mjs +81 -0
  92. package/fesm2022/elementar-rt-components-datepicker.mjs.map +1 -0
  93. package/fesm2022/elementar-rt-components-dialog.mjs +97 -0
  94. package/fesm2022/elementar-rt-components-dialog.mjs.map +1 -0
  95. package/fesm2022/elementar-rt-components-digit-roller.mjs +41 -0
  96. package/fesm2022/elementar-rt-components-digit-roller.mjs.map +1 -0
  97. package/fesm2022/elementar-rt-components-divider.mjs +8 -8
  98. package/fesm2022/elementar-rt-components-divider.mjs.map +1 -1
  99. package/fesm2022/elementar-rt-components-drawer.mjs +8 -8
  100. package/fesm2022/elementar-rt-components-drawer.mjs.map +1 -1
  101. package/fesm2022/elementar-rt-components-emoji-picker.mjs +7 -7
  102. package/fesm2022/elementar-rt-components-emoji-picker.mjs.map +1 -1
  103. package/fesm2022/elementar-rt-components-empty-state.mjs +35 -0
  104. package/fesm2022/elementar-rt-components-empty-state.mjs.map +1 -0
  105. package/fesm2022/elementar-rt-components-expand.mjs +4 -4
  106. package/fesm2022/elementar-rt-components-expand.mjs.map +1 -1
  107. package/fesm2022/elementar-rt-components-expansion-panel.mjs +32 -0
  108. package/fesm2022/elementar-rt-components-expansion-panel.mjs.map +1 -0
  109. package/fesm2022/elementar-rt-components-filter-builder.mjs +13 -13
  110. package/fesm2022/elementar-rt-components-filter-builder.mjs.map +1 -1
  111. package/fesm2022/elementar-rt-components-filter-select.mjs +126 -0
  112. package/fesm2022/elementar-rt-components-filter-select.mjs.map +1 -0
  113. package/fesm2022/elementar-rt-components-form-renderer-autocomplete-many-field.component-C2Ai6F2X.mjs +123 -0
  114. package/fesm2022/elementar-rt-components-form-renderer-autocomplete-many-field.component-C2Ai6F2X.mjs.map +1 -0
  115. package/fesm2022/elementar-rt-components-form-renderer-checkbox-field.component-a0XAs0-_.mjs +22 -0
  116. package/fesm2022/elementar-rt-components-form-renderer-checkbox-field.component-a0XAs0-_.mjs.map +1 -0
  117. package/fesm2022/elementar-rt-components-form-renderer-datepicker-field.component-CTVrrf43.mjs +40 -0
  118. package/fesm2022/elementar-rt-components-form-renderer-datepicker-field.component-CTVrrf43.mjs.map +1 -0
  119. package/fesm2022/{elementar-rt-components-form-renderer-divider-content.component-CjlGcU3B.mjs → elementar-rt-components-form-renderer-divider-content.component-CkYa0MOQ.mjs} +5 -5
  120. package/fesm2022/elementar-rt-components-form-renderer-divider-content.component-CkYa0MOQ.mjs.map +1 -0
  121. package/fesm2022/{elementar-rt-components-form-renderer-image-content.component-0pL2Fk0H.mjs → elementar-rt-components-form-renderer-image-content.component-B5uj3hoV.mjs} +5 -5
  122. package/fesm2022/elementar-rt-components-form-renderer-image-content.component-B5uj3hoV.mjs.map +1 -0
  123. package/fesm2022/elementar-rt-components-form-renderer-input-field.component-DnaWJIK9.mjs +33 -0
  124. package/fesm2022/elementar-rt-components-form-renderer-input-field.component-DnaWJIK9.mjs.map +1 -0
  125. package/fesm2022/elementar-rt-components-form-renderer-radio-group-field.component-9BLv1MsP.mjs +38 -0
  126. package/fesm2022/elementar-rt-components-form-renderer-radio-group-field.component-9BLv1MsP.mjs.map +1 -0
  127. package/fesm2022/elementar-rt-components-form-renderer-select-field.component-C97pIEdh.mjs +39 -0
  128. package/fesm2022/elementar-rt-components-form-renderer-select-field.component-C97pIEdh.mjs.map +1 -0
  129. package/fesm2022/{elementar-rt-components-form-renderer-text-content.component-BmFyUG06.mjs → elementar-rt-components-form-renderer-text-content.component-CJxCc5vX.mjs} +5 -5
  130. package/fesm2022/elementar-rt-components-form-renderer-text-content.component-CJxCc5vX.mjs.map +1 -0
  131. package/fesm2022/elementar-rt-components-form-renderer-textarea-field.component-CCtWiJOk.mjs +37 -0
  132. package/fesm2022/elementar-rt-components-form-renderer-textarea-field.component-CCtWiJOk.mjs.map +1 -0
  133. package/fesm2022/elementar-rt-components-form-renderer-timezone-field.component-GvZgdvUX.mjs +35 -0
  134. package/fesm2022/elementar-rt-components-form-renderer-timezone-field.component-GvZgdvUX.mjs.map +1 -0
  135. package/fesm2022/elementar-rt-components-form-renderer-toggle-field.component-DBiIiV-9.mjs +22 -0
  136. package/fesm2022/elementar-rt-components-form-renderer-toggle-field.component-DBiIiV-9.mjs.map +1 -0
  137. package/fesm2022/elementar-rt-components-form-renderer.mjs +29 -29
  138. package/fesm2022/elementar-rt-components-form-renderer.mjs.map +1 -1
  139. package/fesm2022/elementar-rt-components-gauge.mjs +8 -8
  140. package/fesm2022/elementar-rt-components-gauge.mjs.map +1 -1
  141. package/fesm2022/elementar-rt-components-grid.mjs +37 -0
  142. package/fesm2022/elementar-rt-components-grid.mjs.map +1 -0
  143. package/fesm2022/elementar-rt-components-guided-tour.mjs +161 -0
  144. package/fesm2022/elementar-rt-components-guided-tour.mjs.map +1 -0
  145. package/fesm2022/elementar-rt-components-headless-stepper.mjs +72 -0
  146. package/fesm2022/elementar-rt-components-headless-stepper.mjs.map +1 -0
  147. package/fesm2022/elementar-rt-components-icon.mjs +4 -4
  148. package/fesm2022/elementar-rt-components-icon.mjs.map +1 -1
  149. package/fesm2022/elementar-rt-components-image-placeholder.mjs +30 -0
  150. package/fesm2022/elementar-rt-components-image-placeholder.mjs.map +1 -0
  151. package/fesm2022/elementar-rt-components-image-resizer.mjs +10 -10
  152. package/fesm2022/elementar-rt-components-image-resizer.mjs.map +1 -1
  153. package/fesm2022/elementar-rt-components-image-viewer.mjs +19 -19
  154. package/fesm2022/elementar-rt-components-image-viewer.mjs.map +1 -1
  155. package/fesm2022/elementar-rt-components-image-zoom-viewer.mjs +97 -0
  156. package/fesm2022/elementar-rt-components-image-zoom-viewer.mjs.map +1 -0
  157. package/fesm2022/elementar-rt-components-incidents.mjs +49 -49
  158. package/fesm2022/elementar-rt-components-incidents.mjs.map +1 -1
  159. package/fesm2022/elementar-rt-components-inline-text-edit.mjs +4 -4
  160. package/fesm2022/elementar-rt-components-inline-text-edit.mjs.map +1 -1
  161. package/fesm2022/elementar-rt-components-input-mask.mjs +9 -9
  162. package/fesm2022/elementar-rt-components-input-mask.mjs.map +1 -1
  163. package/fesm2022/elementar-rt-components-input-validator.mjs.map +1 -1
  164. package/fesm2022/elementar-rt-components-kanban-board.mjs +7 -7
  165. package/fesm2022/elementar-rt-components-kanban-board.mjs.map +1 -1
  166. package/fesm2022/elementar-rt-components-keyboard.mjs +63 -0
  167. package/fesm2022/elementar-rt-components-keyboard.mjs.map +1 -0
  168. package/fesm2022/elementar-rt-components-layout.mjs +43 -38
  169. package/fesm2022/elementar-rt-components-layout.mjs.map +1 -1
  170. package/fesm2022/elementar-rt-components-list.mjs +43 -0
  171. package/fesm2022/elementar-rt-components-list.mjs.map +1 -0
  172. package/fesm2022/elementar-rt-components-logo.mjs +12 -12
  173. package/fesm2022/elementar-rt-components-logo.mjs.map +1 -1
  174. package/fesm2022/elementar-rt-components-marquee.mjs +7 -7
  175. package/fesm2022/elementar-rt-components-marquee.mjs.map +1 -1
  176. package/fesm2022/elementar-rt-components-menu.mjs +94 -0
  177. package/fesm2022/elementar-rt-components-menu.mjs.map +1 -0
  178. package/fesm2022/elementar-rt-components-micro-chart.mjs +24 -24
  179. package/fesm2022/elementar-rt-components-micro-chart.mjs.map +1 -1
  180. package/fesm2022/elementar-rt-components-multi-select.mjs +66 -0
  181. package/fesm2022/elementar-rt-components-multi-select.mjs.map +1 -0
  182. package/fesm2022/elementar-rt-components-navigation.mjs +39 -39
  183. package/fesm2022/elementar-rt-components-navigation.mjs.map +1 -1
  184. package/fesm2022/elementar-rt-components-notifications.mjs +40 -40
  185. package/fesm2022/elementar-rt-components-notifications.mjs.map +1 -1
  186. package/fesm2022/elementar-rt-components-number-input.mjs +17 -17
  187. package/fesm2022/elementar-rt-components-number-input.mjs.map +1 -1
  188. package/fesm2022/elementar-rt-components-overlay-scrollbar.mjs +4 -4
  189. package/fesm2022/elementar-rt-components-overlay-scrollbar.mjs.map +1 -1
  190. package/fesm2022/elementar-rt-components-overlay.mjs.map +1 -1
  191. package/fesm2022/elementar-rt-components-page-loading-bar.mjs +4 -4
  192. package/fesm2022/elementar-rt-components-page-loading-bar.mjs.map +1 -1
  193. package/fesm2022/elementar-rt-components-paginator.mjs +50 -0
  194. package/fesm2022/elementar-rt-components-paginator.mjs.map +1 -0
  195. package/fesm2022/elementar-rt-components-panel.mjs +24 -24
  196. package/fesm2022/elementar-rt-components-panel.mjs.map +1 -1
  197. package/fesm2022/elementar-rt-components-password-strength.mjs +13 -13
  198. package/fesm2022/elementar-rt-components-password-strength.mjs.map +1 -1
  199. package/fesm2022/elementar-rt-components-phone-input.mjs +11 -11
  200. package/fesm2022/elementar-rt-components-phone-input.mjs.map +1 -1
  201. package/fesm2022/elementar-rt-components-pin-input.mjs +13 -13
  202. package/fesm2022/elementar-rt-components-pin-input.mjs.map +1 -1
  203. package/fesm2022/elementar-rt-components-popover.mjs +10 -10
  204. package/fesm2022/elementar-rt-components-popover.mjs.map +1 -1
  205. package/fesm2022/elementar-rt-components-progress-bar.mjs +32 -0
  206. package/fesm2022/elementar-rt-components-progress-bar.mjs.map +1 -0
  207. package/fesm2022/elementar-rt-components-progress-spinner.mjs +94 -0
  208. package/fesm2022/elementar-rt-components-progress-spinner.mjs.map +1 -0
  209. package/fesm2022/elementar-rt-components-radio-card.mjs +17 -17
  210. package/fesm2022/elementar-rt-components-radio-card.mjs.map +1 -1
  211. package/fesm2022/elementar-rt-components-rail-nav.mjs +12 -12
  212. package/fesm2022/elementar-rt-components-rail-nav.mjs.map +1 -1
  213. package/fesm2022/elementar-rt-components-rating.mjs +84 -0
  214. package/fesm2022/elementar-rt-components-rating.mjs.map +1 -0
  215. package/fesm2022/elementar-rt-components-resizable-container.mjs +4 -4
  216. package/fesm2022/elementar-rt-components-resizable-container.mjs.map +1 -1
  217. package/fesm2022/elementar-rt-components-screen-loader.mjs +4 -4
  218. package/fesm2022/elementar-rt-components-screen-loader.mjs.map +1 -1
  219. package/fesm2022/elementar-rt-components-scroll-spy.mjs +16 -16
  220. package/fesm2022/elementar-rt-components-scroll-spy.mjs.map +1 -1
  221. package/fesm2022/elementar-rt-components-segmented.mjs +15 -12
  222. package/fesm2022/elementar-rt-components-segmented.mjs.map +1 -1
  223. package/fesm2022/elementar-rt-components-side-panel.mjs +8 -8
  224. package/fesm2022/elementar-rt-components-side-panel.mjs.map +1 -1
  225. package/fesm2022/elementar-rt-components-sidebar.mjs +61 -61
  226. package/fesm2022/elementar-rt-components-sidebar.mjs.map +1 -1
  227. package/fesm2022/elementar-rt-components-sidenav.mjs +72 -0
  228. package/fesm2022/elementar-rt-components-sidenav.mjs.map +1 -0
  229. package/fesm2022/elementar-rt-components-signature-pad.mjs +4 -4
  230. package/fesm2022/elementar-rt-components-signature-pad.mjs.map +1 -1
  231. package/fesm2022/elementar-rt-components-skeleton.mjs +16 -16
  232. package/fesm2022/elementar-rt-components-skeleton.mjs.map +1 -1
  233. package/fesm2022/elementar-rt-components-slider.mjs +64 -0
  234. package/fesm2022/elementar-rt-components-slider.mjs.map +1 -0
  235. package/fesm2022/elementar-rt-components-snackbar.mjs +81 -0
  236. package/fesm2022/elementar-rt-components-snackbar.mjs.map +1 -0
  237. package/fesm2022/elementar-rt-components-sort.mjs +69 -0
  238. package/fesm2022/elementar-rt-components-sort.mjs.map +1 -0
  239. package/fesm2022/elementar-rt-components-splash-screen.mjs +15 -7
  240. package/fesm2022/elementar-rt-components-splash-screen.mjs.map +1 -1
  241. package/fesm2022/elementar-rt-components-split-pane.mjs +70 -0
  242. package/fesm2022/elementar-rt-components-split-pane.mjs.map +1 -0
  243. package/fesm2022/elementar-rt-components-stat-card.mjs +27 -0
  244. package/fesm2022/elementar-rt-components-stat-card.mjs.map +1 -0
  245. package/fesm2022/elementar-rt-components-step-tracker.mjs +30 -0
  246. package/fesm2022/elementar-rt-components-step-tracker.mjs.map +1 -0
  247. package/fesm2022/elementar-rt-components-stepper.mjs +6 -6
  248. package/fesm2022/elementar-rt-components-stepper.mjs.map +1 -1
  249. package/fesm2022/elementar-rt-components-suggestions.mjs +18 -18
  250. package/fesm2022/elementar-rt-components-suggestions.mjs.map +1 -1
  251. package/fesm2022/elementar-rt-components-tab-panel.mjs +48 -48
  252. package/fesm2022/elementar-rt-components-tab-panel.mjs.map +1 -1
  253. package/fesm2022/elementar-rt-components-table.mjs +84 -0
  254. package/fesm2022/elementar-rt-components-table.mjs.map +1 -0
  255. package/fesm2022/elementar-rt-components-tabs.mjs +59 -0
  256. package/fesm2022/elementar-rt-components-tabs.mjs.map +1 -0
  257. package/fesm2022/elementar-rt-components-tag.mjs +28 -0
  258. package/fesm2022/elementar-rt-components-tag.mjs.map +1 -0
  259. package/fesm2022/elementar-rt-components-text-editor.mjs +89 -87
  260. package/fesm2022/elementar-rt-components-text-editor.mjs.map +1 -1
  261. package/fesm2022/elementar-rt-components-thumbnail-maker.mjs +7 -7
  262. package/fesm2022/elementar-rt-components-thumbnail-maker.mjs.map +1 -1
  263. package/fesm2022/elementar-rt-components-tiles.mjs +35 -0
  264. package/fesm2022/elementar-rt-components-tiles.mjs.map +1 -0
  265. package/fesm2022/elementar-rt-components-timeline.mjs +39 -39
  266. package/fesm2022/elementar-rt-components-timeline.mjs.map +1 -1
  267. package/fesm2022/elementar-rt-components-timepicker.mjs +75 -0
  268. package/fesm2022/elementar-rt-components-timepicker.mjs.map +1 -0
  269. package/fesm2022/elementar-rt-components-timezone-select.mjs +8 -8
  270. package/fesm2022/elementar-rt-components-timezone-select.mjs.map +1 -1
  271. package/fesm2022/elementar-rt-components-toast.mjs +98 -0
  272. package/fesm2022/elementar-rt-components-toast.mjs.map +1 -0
  273. package/fesm2022/elementar-rt-components-toolbar.mjs +24 -0
  274. package/fesm2022/elementar-rt-components-toolbar.mjs.map +1 -0
  275. package/fesm2022/elementar-rt-components-tooltip.mjs +119 -0
  276. package/fesm2022/elementar-rt-components-tooltip.mjs.map +1 -0
  277. package/fesm2022/elementar-rt-components-tree.mjs +77 -0
  278. package/fesm2022/elementar-rt-components-tree.mjs.map +1 -0
  279. package/fesm2022/elementar-rt-components-upload.mjs +60 -58
  280. package/fesm2022/elementar-rt-components-upload.mjs.map +1 -1
  281. package/fesm2022/elementar-rt-components-video-player.mjs +144 -0
  282. package/fesm2022/elementar-rt-components-video-player.mjs.map +1 -0
  283. package/fesm2022/elementar-rt-components-video-viewer.mjs +98 -0
  284. package/fesm2022/elementar-rt-components-video-viewer.mjs.map +1 -0
  285. package/fesm2022/elementar-rt-components.mjs.map +1 -1
  286. package/filter-select/index.d.ts +40 -0
  287. package/grid/index.d.ts +24 -0
  288. package/guided-tour/index.d.ts +45 -0
  289. package/headless-stepper/index.d.ts +30 -0
  290. package/image-placeholder/index.d.ts +18 -0
  291. package/image-zoom-viewer/index.d.ts +33 -0
  292. package/keyboard/index.d.ts +13 -0
  293. package/layout/index.d.ts +3 -1
  294. package/list/index.d.ts +18 -0
  295. package/menu/index.d.ts +38 -0
  296. package/multi-select/index.d.ts +36 -0
  297. package/package.json +225 -33
  298. package/paginator/index.d.ts +26 -0
  299. package/progress-bar/index.d.ts +17 -0
  300. package/progress-spinner/index.d.ts +19 -0
  301. package/rating/index.d.ts +30 -0
  302. package/sidenav/index.d.ts +31 -0
  303. package/slider/index.d.ts +26 -0
  304. package/snackbar/index.d.ts +36 -0
  305. package/sort/index.d.ts +27 -0
  306. package/split-pane/index.d.ts +25 -0
  307. package/stat-card/index.d.ts +16 -0
  308. package/step-tracker/index.d.ts +21 -0
  309. package/styles/_common.scss +777 -776
  310. package/styles/themes/cyan-orange.scss +41 -41
  311. package/styles/themes/default.scss +5 -5
  312. package/styles/themes/magenta-violet.scss +41 -41
  313. package/styles/themes/rose-red.scss +41 -41
  314. package/table/index.d.ts +44 -0
  315. package/tabs/index.d.ts +26 -0
  316. package/tag/index.d.ts +17 -0
  317. package/tiles/index.d.ts +14 -0
  318. package/timepicker/index.d.ts +29 -0
  319. package/toast/index.d.ts +48 -0
  320. package/toolbar/index.d.ts +10 -0
  321. package/tooltip/index.d.ts +30 -0
  322. package/tree/index.d.ts +42 -0
  323. package/video-player/index.d.ts +49 -0
  324. package/video-viewer/index.d.ts +33 -0
  325. package/fesm2022/elementar-rt-components-form-renderer-autocomplete-many-field.component-AqEghjO_.mjs +0 -123
  326. package/fesm2022/elementar-rt-components-form-renderer-autocomplete-many-field.component-AqEghjO_.mjs.map +0 -1
  327. package/fesm2022/elementar-rt-components-form-renderer-checkbox-field.component-CUKmZGFq.mjs +0 -22
  328. package/fesm2022/elementar-rt-components-form-renderer-checkbox-field.component-CUKmZGFq.mjs.map +0 -1
  329. package/fesm2022/elementar-rt-components-form-renderer-datepicker-field.component-DihIRWMt.mjs +0 -40
  330. package/fesm2022/elementar-rt-components-form-renderer-datepicker-field.component-DihIRWMt.mjs.map +0 -1
  331. package/fesm2022/elementar-rt-components-form-renderer-divider-content.component-CjlGcU3B.mjs.map +0 -1
  332. package/fesm2022/elementar-rt-components-form-renderer-image-content.component-0pL2Fk0H.mjs.map +0 -1
  333. package/fesm2022/elementar-rt-components-form-renderer-input-field.component-X2sKvj6J.mjs +0 -33
  334. package/fesm2022/elementar-rt-components-form-renderer-input-field.component-X2sKvj6J.mjs.map +0 -1
  335. package/fesm2022/elementar-rt-components-form-renderer-radio-group-field.component-DWXZAA3F.mjs +0 -38
  336. package/fesm2022/elementar-rt-components-form-renderer-radio-group-field.component-DWXZAA3F.mjs.map +0 -1
  337. package/fesm2022/elementar-rt-components-form-renderer-select-field.component-Cx9DZoD6.mjs +0 -39
  338. package/fesm2022/elementar-rt-components-form-renderer-select-field.component-Cx9DZoD6.mjs.map +0 -1
  339. package/fesm2022/elementar-rt-components-form-renderer-text-content.component-BmFyUG06.mjs.map +0 -1
  340. package/fesm2022/elementar-rt-components-form-renderer-textarea-field.component-D9KmE049.mjs +0 -37
  341. package/fesm2022/elementar-rt-components-form-renderer-textarea-field.component-D9KmE049.mjs.map +0 -1
  342. package/fesm2022/elementar-rt-components-form-renderer-timezone-field.component-BroP_Q4P.mjs +0 -35
  343. package/fesm2022/elementar-rt-components-form-renderer-timezone-field.component-BroP_Q4P.mjs.map +0 -1
  344. package/fesm2022/elementar-rt-components-form-renderer-toggle-field.component-nGbtVi1_.mjs +0 -22
  345. package/fesm2022/elementar-rt-components-form-renderer-toggle-field.component-nGbtVi1_.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"elementar-rt-components-timezone-select.mjs","sources":["../../../projects/components/timezone-select/src/timezone-utils.ts","../../../projects/components/timezone-select/src/filter-timezones.pipe.ts","../../../projects/components/timezone-select/src/timezone-select/timezone-select.component.ts","../../../projects/components/timezone-select/src/timezone-select/timezone-select.component.html","../../../projects/components/timezone-select/elementar-rt-components-timezone-select.ts"],"sourcesContent":["export interface LocalizedTimezone {\r\n id: string;\r\n name: string;\r\n shortName?: string;\r\n // genericName?: string; // Removed\r\n offsetName?: string;\r\n}\r\n\r\nexport interface TimezoneGroup {\r\n name: string; // Changed from groupName\r\n timezones: LocalizedTimezone[];\r\n}\r\n\r\nexport class TimezoneUtils {\r\n private static _groupTimezoneIds(timezones: string[]): Record<string, string[]> {\r\n const grouped: Record<string, string[]> = {};\r\n for (const tz of timezones) {\r\n const parts = tz.split('/');\r\n const groupName = parts[0];\r\n if (!grouped[groupName]) {\r\n grouped[groupName] = [];\r\n }\r\n grouped[groupName].push(tz);\r\n }\r\n for (const group in grouped) {\r\n grouped[group].sort();\r\n }\r\n return grouped;\r\n }\r\n\r\n private static _groupLocalizedTimezonesToArray(\r\n timezones: LocalizedTimezone[]\r\n ): TimezoneGroup[] {\r\n const intermediateGrouped: Record<string, LocalizedTimezone[]> = {};\r\n for (const tz of timezones) {\r\n const parts = tz.id.split('/');\r\n const groupNameKey = parts[0]; // Use a different variable name to avoid confusion with the 'name' property of TimezoneGroup\r\n if (!intermediateGrouped[groupNameKey]) {\r\n intermediateGrouped[groupNameKey] = [];\r\n }\r\n intermediateGrouped[groupNameKey].push(tz);\r\n }\r\n\r\n const result: TimezoneGroup[] = [];\r\n const sortedGroupKeys = Object.keys(intermediateGrouped).sort();\r\n\r\n for (const groupKey of sortedGroupKeys) {\r\n const timezonesInGroup = intermediateGrouped[groupKey];\r\n timezonesInGroup.sort((a, b) => a.name.localeCompare(b.name));\r\n result.push({\r\n name: groupKey, // Changed from groupName\r\n timezones: timezonesInGroup,\r\n });\r\n }\r\n return result;\r\n }\r\n\r\n public static getAll(groupByName: true): Record<string, string[]>;\r\n public static getAll(groupByName?: false): string[];\r\n public static getAll(groupByName?: boolean): string[] | Record<string, string[]> {\r\n let timezonesList: string[];\r\n if (typeof Intl.supportedValuesOf === 'function') {\r\n try {\r\n timezonesList = Intl.supportedValuesOf('timeZone');\r\n } catch (e) {\r\n timezonesList = [];\r\n }\r\n } else {\r\n timezonesList = [];\r\n }\r\n\r\n if (groupByName) {\r\n return TimezoneUtils._groupTimezoneIds(timezonesList);\r\n } else {\r\n return [...timezonesList];\r\n }\r\n }\r\n\r\n private static _getSingleLocalizedName(\r\n id: string,\r\n locale: string,\r\n style: 'long' | 'short' | 'shortOffset' | 'longOffset' | 'shortGeneric' | 'longGeneric', // Kept generic styles in param for flexibility if main name needs it\r\n currentDate: Date\r\n ): string | undefined {\r\n try {\r\n const formatter = new Intl.DateTimeFormat(locale, {\r\n timeZone: id,\r\n timeZoneName: style,\r\n });\r\n const parts = formatter.formatToParts(currentDate);\r\n const tzNamePart = parts.find(part => part.type === 'timeZoneName');\r\n return tzNamePart?.value;\r\n } catch (e) {\r\n return undefined;\r\n }\r\n }\r\n\r\n public static getLocalizedAll(\r\n locale: string,\r\n groupByName: true,\r\n timeZoneNameStyle?: 'long' | 'short' | 'shortOffset' | 'longOffset' | 'shortGeneric' | 'longGeneric'\r\n ): TimezoneGroup[];\r\n public static getLocalizedAll(\r\n locale: string,\r\n groupByName?: false,\r\n timeZoneNameStyle?: 'long' | 'short' | 'shortOffset' | 'longOffset' | 'shortGeneric' | 'longGeneric'\r\n ): LocalizedTimezone[];\r\n\r\n public static getLocalizedAll(\r\n locale: string,\r\n groupByName?: boolean,\r\n timeZoneNameStyle: 'long' | 'short' | 'shortOffset' | 'longOffset' | 'shortGeneric' | 'longGeneric' = 'long'\r\n ): LocalizedTimezone[] | TimezoneGroup[] {\r\n const ianaTimezoneIds = TimezoneUtils.getAll(false);\r\n const localizedTimezones: LocalizedTimezone[] = [];\r\n const currentDate = new Date();\r\n\r\n for (const id of ianaTimezoneIds) {\r\n const mainName = TimezoneUtils._getSingleLocalizedName(id, locale, timeZoneNameStyle, currentDate);\r\n const tzObject: LocalizedTimezone = {\r\n id: id,\r\n name: mainName || id,\r\n shortName: TimezoneUtils._getSingleLocalizedName(id, locale, 'short', currentDate),\r\n offsetName: TimezoneUtils._getSingleLocalizedName(id, locale, 'longOffset', currentDate),\r\n };\r\n localizedTimezones.push(tzObject);\r\n }\r\n\r\n if (groupByName) {\r\n return TimezoneUtils._groupLocalizedTimezonesToArray(localizedTimezones);\r\n } else {\r\n localizedTimezones.sort((a, b) => a.name.localeCompare(b.name));\r\n return localizedTimezones;\r\n }\r\n }\r\n\r\n private static readonly ianaGroupToRegionCodeMap: Record<string, string> = {\r\n 'America': '019', // Americas (UN M49)\r\n 'Europe': '150', // Europe (UN M49)\r\n 'Asia': '142', // Asia (UN M49)\r\n 'Africa': '002', // Africa (UN M49)\r\n 'Australia': 'AU', // Australia (ISO 3166-1 alpha-2) - для группы IANA 'Australia'\r\n 'Pacific': '009', // Oceania (UN M49) - для группы IANA 'Pacific'\r\n 'Antarctica': 'AQ', // Antarctica (ISO 3166-1 alpha-2)\r\n };\r\n\r\n private static _getLocalizedRegionDisplayName(\r\n ianaGroupName: string,\r\n locale: string\r\n ): string {\r\n const regionCode = TimezoneUtils.ianaGroupToRegionCodeMap[ianaGroupName];\r\n if (regionCode && typeof Intl.DisplayNames === 'function') {\r\n try {\r\n const displayNameService = new Intl.DisplayNames(locale, { type: 'region' });\r\n return displayNameService.of(regionCode) || ianaGroupName; // Фоллбэк, если .of() вернет undefined/пусто\r\n } catch (e) {\r\n // Ошибка (например, старая среда без поддержки этого кода для региона)\r\n // console.warn(`Could not get display name for region code ${regionCode} in locale ${locale}:`, e);\r\n return ianaGroupName; // Фоллбэк\r\n }\r\n }\r\n return ianaGroupName; // Фоллбэк, если нет сопоставления или Intl.DisplayNames не поддерживается\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizedTimezone, TimezoneGroup } from './timezone-utils';\r\n\r\n@Pipe({\r\n name: 'filterTimezones',\r\n})\r\nexport class FilterTimezonesPipe implements PipeTransform {\r\n\r\n transform(\r\n value: TimezoneGroup[] | null | undefined,\r\n searchTerm: string | null | undefined\r\n ): TimezoneGroup[] | null | undefined {\r\n\r\n if (!value) {\r\n return value;\r\n }\r\n if (!searchTerm || searchTerm.trim() === '') {\r\n return value;\r\n }\r\n\r\n const lowerSearchTerm = searchTerm.trim().toLowerCase();\r\n const timezoneMatches = (timezone: LocalizedTimezone, term: string): boolean => {\r\n return (\r\n timezone.id.toLowerCase().includes(term) ||\r\n timezone.name.toLowerCase().includes(term) ||\r\n !!(timezone.shortName && timezone.shortName.toLowerCase().includes(term)) ||\r\n !!(timezone.offsetName && timezone.offsetName.toLowerCase().includes(term)));\r\n };\r\n\r\n const resultGroups: TimezoneGroup[] = [];\r\n for (const group of value) { // Iterate directly over TimezoneGroup[]\r\n const groupNameMatches = group.name.toLowerCase().includes(lowerSearchTerm);\r\n const filteredTimezonesInGroup = group.timezones.filter(tz => timezoneMatches(tz, lowerSearchTerm));\r\n\r\n // A group is included if its name matches OR it has matching timezones after filtering\r\n if (groupNameMatches || filteredTimezonesInGroup.length > 0) {\r\n resultGroups.push({\r\n ...group,\r\n timezones: filteredTimezonesInGroup // Always use the filtered list of timezones for the group\r\n });\r\n }\r\n }\r\n return resultGroups;\r\n }\r\n}\r\n","import {\r\n booleanAttribute, ChangeDetectionStrategy,\r\n Component, computed, effect, ElementRef,\r\n forwardRef,\r\n inject,\r\n input,\r\n LOCALE_ID, model,\r\n OnInit, Renderer2,\r\n signal, untracked, viewChild\r\n} from '@angular/core';\r\nimport { TimezoneGroup, TimezoneUtils } from '../timezone-utils';\r\nimport { MatOption, MatSelect } from '@angular/material/select';\r\nimport {\r\n ControlValueAccessor, FormsModule,\r\n NgControl\r\n} from '@angular/forms';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { Subject } from 'rxjs';\r\nimport { FocusMonitor } from '@angular/cdk/a11y';\r\nimport { FilterTimezonesPipe } from '../filter-timezones.pipe';\r\nimport { MatIconButton } from '@angular/material/button';\r\nimport { MatIcon } from '@angular/material/icon';\r\n\r\nlet nextId = 0;\r\n\r\n@Component({\r\n selector: 'emr-timezone-select',\r\n exportAs: 'emrTimezoneSelect',\r\n imports: [\r\n MatSelect,\r\n MatOption,\r\n FormsModule,\r\n FilterTimezonesPipe,\r\n MatIcon,\r\n MatIconButton\r\n ],\r\n providers: [\r\n {\r\n provide: MatFormFieldControl,\r\n useExisting: forwardRef(() => TimezoneSelectComponent),\r\n multi: true,\r\n },\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n templateUrl: './timezone-select.component.html',\r\n styleUrl: './timezone-select.component.scss',\r\n host: {\r\n 'class': 'emr-timezone-select',\r\n '[id]': 'id',\r\n }\r\n})\r\nexport class TimezoneSelectComponent implements OnInit, MatFormFieldControl<any>, ControlValueAccessor {\r\n protected localeId = inject(LOCALE_ID);\r\n protected renderer = inject(Renderer2);\r\n private readonly _focusMonitor = inject(FocusMonitor);\r\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n ngControl = inject(NgControl, { optional: true, self: true });\r\n\r\n private searchInput = viewChild.required<ElementRef<HTMLInputElement>>('searchInput');\r\n private selectRef = viewChild.required<MatSelect>('select');\r\n\r\n protected timezoneGroups = signal<TimezoneGroup[]>([]);\r\n readonly touched = signal(false);\r\n readonly stateChanges = new Subject<void>();\r\n readonly controlType = 'emr-timezone-select';\r\n readonly id = `emr-timezone-select-${nextId++}`;\r\n readonly _userAriaDescribedBy = input<string>('', { alias: 'aria-describedby' });\r\n readonly locale = input<string>(this.localeId);\r\n readonly _placeholder = input<string>('', { alias: 'placeholder' });\r\n readonly _required = input<boolean, unknown>(false, {\r\n alias: 'required',\r\n transform: booleanAttribute,\r\n });\r\n readonly _disabledByInput = input<boolean, unknown>(false, {\r\n alias: 'disabled',\r\n transform: booleanAttribute,\r\n });\r\n readonly _value = model<string | null>(null, { alias: 'value' });\r\n protected searchTerm = model('');\r\n private readonly _focused = signal(false);\r\n private readonly _disabledByCva = signal(false);\r\n private readonly _disabled = computed(() => this._disabledByInput() || this._disabledByCva());\r\n\r\n onChange = (_: any) => {};\r\n onTouched = () => {};\r\n\r\n get focused(): boolean {\r\n return this._focused();\r\n }\r\n\r\n get empty() {\r\n return !this._value() || this._value()?.trim() === '';\r\n }\r\n\r\n get shouldLabelFloat() {\r\n return this.focused || !this.empty;\r\n }\r\n\r\n get userAriaDescribedBy() {\r\n return this._userAriaDescribedBy();\r\n }\r\n\r\n get placeholder(): string {\r\n return this._placeholder();\r\n }\r\n\r\n get required(): boolean {\r\n return this._required();\r\n }\r\n\r\n get disabled(): boolean {\r\n return this._disabled();\r\n }\r\n\r\n get value(): string | null {\r\n return this._value();\r\n }\r\n\r\n get errorState(): boolean {\r\n // @ts-ignore\r\n return this.ngControl?.invalid && this.touched();\r\n }\r\n\r\n constructor() {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n\r\n effect(() => {\r\n // Read signals to trigger effect.\r\n this._placeholder();\r\n this._required();\r\n this._disabled();\r\n this._focused();\r\n // Propagate state changes.\r\n untracked(() => this.stateChanges.next());\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n const locale = this.locale() || this.localeId;\r\n this.timezoneGroups.set(TimezoneUtils.getLocalizedAll(locale, true));\r\n const formFieldElement = this._elementRef.nativeElement.closest('.mat-mdc-form-field');\r\n\r\n if (formFieldElement) {\r\n this.renderer.addClass(formFieldElement, 'mat-mdc-form-field-type-mat-select');\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.stateChanges.complete();\r\n this._focusMonitor.stopMonitoring(this._elementRef);\r\n }\r\n\r\n onFocusIn() {\r\n if (!this._focused()) {\r\n this._focused.set(true);\r\n }\r\n }\r\n\r\n onFocusOut(event: FocusEvent) {\r\n if (!this._elementRef.nativeElement.contains(event.relatedTarget as Element)) {\r\n this.touched.set(true);\r\n this._focused.set(false);\r\n this.onTouched();\r\n }\r\n }\r\n\r\n onContainerClick(event: MouseEvent) {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n this._focused.set(true);\r\n this.selectRef().onContainerClick();\r\n }\r\n\r\n setDescribedByIds(ids: string[]) {\r\n }\r\n\r\n writeValue(timezone: string | null): void {\r\n this._updateValue(timezone);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this._disabledByCva.set(isDisabled);\r\n }\r\n\r\n protected onSelectOpened(): void {\r\n setTimeout(() => {\r\n this.searchInput().nativeElement.focus();\r\n });\r\n }\r\n\r\n protected clearSearch() {\r\n this.searchTerm.set('');\r\n }\r\n\r\n protected onSelectClosed() {\r\n this._focused.set(false);\r\n this.searchTerm.set('');\r\n }\r\n\r\n protected onModelChange(value: string) {\r\n this._value.set(value);\r\n this.onChange(value);\r\n }\r\n\r\n private _updateValue(value: string | null) {\r\n const current = this._value();\r\n\r\n if (current === value) {\r\n return;\r\n }\r\n\r\n this._value.set(value);\r\n }\r\n}\r\n","<mat-select #select=\"matSelect\"\r\n panelClass=\"emr-timezone-select-panel\"\r\n [value]=\"_value\"\r\n [aria-describedby]=\"userAriaDescribedBy\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"_placeholder()\"\r\n (opened)=\"onSelectOpened()\"\r\n (closed)=\"onSelectClosed()\">\r\n <div class=\"px-3 py-3 rounded-t sticky top-0 z-1 bg-[var(--mat-select-panel-background-color)]\">\r\n <input #searchInput\r\n type=\"text\" placeholder=\"Search...\" autocomplete=\"off\" [(ngModel)]=\"searchTerm\"\r\n class=\"w-full bg-surface-container-highest rounded-lg text-sm focus:outline-none\r\n focus:bg-surface-container-lowest focus:shadow-sm h-12 px-3\">\r\n @if (searchTerm().trim()) {\r\n <div class=\"absolute end-4 top-1/2 -translate-y-1/2\">\r\n <button\r\n mat-icon-button\r\n (click)=\"clearSearch()\"\r\n class=\"clear-button\"\r\n type=\"button\"\r\n aria-label=\"Clear search\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n @for (timezoneGroup of timezoneGroups() | filterTimezones:searchTerm(); track timezoneGroup.name) {\r\n <div class=\"px-4 font-bold text-on-surface-container my-4\" i18n>{{ timezoneGroup.name }}</div>\r\n <div>\r\n @for (timezone of timezoneGroup.timezones; track timezone) {\r\n <mat-option [value]=\"timezone.id\" (click)=\"onModelChange(timezone.id)\">\r\n {{ timezone.id }}\r\n </mat-option>\r\n }\r\n </div>\r\n } @empty {\r\n @if (searchTerm()) {\r\n <div class=\"text-sm px-4 py-3\">\r\n <span i18n>Timezone not found</span>.\r\n </div>\r\n }\r\n }\r\n</mat-select>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"elementar-rt-components-timezone-select.mjs","sources":["../../../projects/components/timezone-select/src/timezone-utils.ts","../../../projects/components/timezone-select/src/filter-timezones.pipe.ts","../../../projects/components/timezone-select/src/timezone-select/timezone-select.component.ts","../../../projects/components/timezone-select/src/timezone-select/timezone-select.component.html","../../../projects/components/timezone-select/elementar-rt-components-timezone-select.ts"],"sourcesContent":["export interface LocalizedTimezone {\n id: string;\n name: string;\n shortName?: string;\n // genericName?: string; // Removed\n offsetName?: string;\n}\n\nexport interface TimezoneGroup {\n name: string; // Changed from groupName\n timezones: LocalizedTimezone[];\n}\n\nexport class TimezoneUtils {\n private static _groupTimezoneIds(timezones: string[]): Record<string, string[]> {\n const grouped: Record<string, string[]> = {};\n for (const tz of timezones) {\n const parts = tz.split('/');\n const groupName = parts[0];\n if (!grouped[groupName]) {\n grouped[groupName] = [];\n }\n grouped[groupName].push(tz);\n }\n for (const group in grouped) {\n grouped[group].sort();\n }\n return grouped;\n }\n\n private static _groupLocalizedTimezonesToArray(\n timezones: LocalizedTimezone[]\n ): TimezoneGroup[] {\n const intermediateGrouped: Record<string, LocalizedTimezone[]> = {};\n for (const tz of timezones) {\n const parts = tz.id.split('/');\n const groupNameKey = parts[0]; // Use a different variable name to avoid confusion with the 'name' property of TimezoneGroup\n if (!intermediateGrouped[groupNameKey]) {\n intermediateGrouped[groupNameKey] = [];\n }\n intermediateGrouped[groupNameKey].push(tz);\n }\n\n const result: TimezoneGroup[] = [];\n const sortedGroupKeys = Object.keys(intermediateGrouped).sort();\n\n for (const groupKey of sortedGroupKeys) {\n const timezonesInGroup = intermediateGrouped[groupKey];\n timezonesInGroup.sort((a, b) => a.name.localeCompare(b.name));\n result.push({\n name: groupKey, // Changed from groupName\n timezones: timezonesInGroup,\n });\n }\n return result;\n }\n\n public static getAll(groupByName: true): Record<string, string[]>;\n public static getAll(groupByName?: false): string[];\n public static getAll(groupByName?: boolean): string[] | Record<string, string[]> {\n let timezonesList: string[];\n if (typeof Intl.supportedValuesOf === 'function') {\n try {\n timezonesList = Intl.supportedValuesOf('timeZone');\n } catch (e) {\n timezonesList = [];\n }\n } else {\n timezonesList = [];\n }\n\n if (groupByName) {\n return TimezoneUtils._groupTimezoneIds(timezonesList);\n } else {\n return [...timezonesList];\n }\n }\n\n private static _getSingleLocalizedName(\n id: string,\n locale: string,\n style: 'long' | 'short' | 'shortOffset' | 'longOffset' | 'shortGeneric' | 'longGeneric', // Kept generic styles in param for flexibility if main name needs it\n currentDate: Date\n ): string | undefined {\n try {\n const formatter = new Intl.DateTimeFormat(locale, {\n timeZone: id,\n timeZoneName: style,\n });\n const parts = formatter.formatToParts(currentDate);\n const tzNamePart = parts.find(part => part.type === 'timeZoneName');\n return tzNamePart?.value;\n } catch (e) {\n return undefined;\n }\n }\n\n public static getLocalizedAll(\n locale: string,\n groupByName: true,\n timeZoneNameStyle?: 'long' | 'short' | 'shortOffset' | 'longOffset' | 'shortGeneric' | 'longGeneric'\n ): TimezoneGroup[];\n public static getLocalizedAll(\n locale: string,\n groupByName?: false,\n timeZoneNameStyle?: 'long' | 'short' | 'shortOffset' | 'longOffset' | 'shortGeneric' | 'longGeneric'\n ): LocalizedTimezone[];\n\n public static getLocalizedAll(\n locale: string,\n groupByName?: boolean,\n timeZoneNameStyle: 'long' | 'short' | 'shortOffset' | 'longOffset' | 'shortGeneric' | 'longGeneric' = 'long'\n ): LocalizedTimezone[] | TimezoneGroup[] {\n const ianaTimezoneIds = TimezoneUtils.getAll(false);\n const localizedTimezones: LocalizedTimezone[] = [];\n const currentDate = new Date();\n\n for (const id of ianaTimezoneIds) {\n const mainName = TimezoneUtils._getSingleLocalizedName(id, locale, timeZoneNameStyle, currentDate);\n const tzObject: LocalizedTimezone = {\n id: id,\n name: mainName || id,\n shortName: TimezoneUtils._getSingleLocalizedName(id, locale, 'short', currentDate),\n offsetName: TimezoneUtils._getSingleLocalizedName(id, locale, 'longOffset', currentDate),\n };\n localizedTimezones.push(tzObject);\n }\n\n if (groupByName) {\n return TimezoneUtils._groupLocalizedTimezonesToArray(localizedTimezones);\n } else {\n localizedTimezones.sort((a, b) => a.name.localeCompare(b.name));\n return localizedTimezones;\n }\n }\n\n private static readonly ianaGroupToRegionCodeMap: Record<string, string> = {\n 'America': '019', // Americas (UN M49)\n 'Europe': '150', // Europe (UN M49)\n 'Asia': '142', // Asia (UN M49)\n 'Africa': '002', // Africa (UN M49)\n 'Australia': 'AU', // Australia (ISO 3166-1 alpha-2) - для группы IANA 'Australia'\n 'Pacific': '009', // Oceania (UN M49) - для группы IANA 'Pacific'\n 'Antarctica': 'AQ', // Antarctica (ISO 3166-1 alpha-2)\n };\n\n private static _getLocalizedRegionDisplayName(\n ianaGroupName: string,\n locale: string\n ): string {\n const regionCode = TimezoneUtils.ianaGroupToRegionCodeMap[ianaGroupName];\n if (regionCode && typeof Intl.DisplayNames === 'function') {\n try {\n const displayNameService = new Intl.DisplayNames(locale, { type: 'region' });\n return displayNameService.of(regionCode) || ianaGroupName; // Фоллбэк, если .of() вернет undefined/пусто\n } catch (e) {\n // Ошибка (например, старая среда без поддержки этого кода для региона)\n // console.warn(`Could not get display name for region code ${regionCode} in locale ${locale}:`, e);\n return ianaGroupName; // Фоллбэк\n }\n }\n return ianaGroupName; // Фоллбэк, если нет сопоставления или Intl.DisplayNames не поддерживается\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LocalizedTimezone, TimezoneGroup } from './timezone-utils';\n\n@Pipe({\n name: 'filterTimezones',\n})\nexport class FilterTimezonesPipe implements PipeTransform {\n\n transform(\n value: TimezoneGroup[] | null | undefined,\n searchTerm: string | null | undefined\n ): TimezoneGroup[] | null | undefined {\n\n if (!value) {\n return value;\n }\n if (!searchTerm || searchTerm.trim() === '') {\n return value;\n }\n\n const lowerSearchTerm = searchTerm.trim().toLowerCase();\n const timezoneMatches = (timezone: LocalizedTimezone, term: string): boolean => {\n return (\n timezone.id.toLowerCase().includes(term) ||\n timezone.name.toLowerCase().includes(term) ||\n !!(timezone.shortName && timezone.shortName.toLowerCase().includes(term)) ||\n !!(timezone.offsetName && timezone.offsetName.toLowerCase().includes(term)));\n };\n\n const resultGroups: TimezoneGroup[] = [];\n for (const group of value) { // Iterate directly over TimezoneGroup[]\n const groupNameMatches = group.name.toLowerCase().includes(lowerSearchTerm);\n const filteredTimezonesInGroup = group.timezones.filter(tz => timezoneMatches(tz, lowerSearchTerm));\n\n // A group is included if its name matches OR it has matching timezones after filtering\n if (groupNameMatches || filteredTimezonesInGroup.length > 0) {\n resultGroups.push({\n ...group,\n timezones: filteredTimezonesInGroup // Always use the filtered list of timezones for the group\n });\n }\n }\n return resultGroups;\n }\n}\n","import {\n booleanAttribute, ChangeDetectionStrategy,\n Component, computed, effect, ElementRef,\n forwardRef,\n inject,\n input,\n LOCALE_ID, model,\n OnInit, Renderer2,\n signal, untracked, viewChild\n} from '@angular/core';\nimport { TimezoneGroup, TimezoneUtils } from '../timezone-utils';\nimport { MatOption, MatSelect } from '@angular/material/select';\nimport {\n ControlValueAccessor, FormsModule,\n NgControl\n} from '@angular/forms';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { Subject } from 'rxjs';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { FilterTimezonesPipe } from '../filter-timezones.pipe';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\n\nlet nextId = 0;\n\n@Component({\n selector: 'emr-timezone-select',\n exportAs: 'emrTimezoneSelect',\n imports: [\n MatSelect,\n MatOption,\n FormsModule,\n FilterTimezonesPipe,\n MatIcon,\n MatIconButton\n ],\n providers: [\n {\n provide: MatFormFieldControl,\n useExisting: forwardRef(() => TimezoneSelectComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './timezone-select.component.html',\n styleUrl: './timezone-select.component.scss',\n host: {\n 'class': 'emr-timezone-select',\n '[id]': 'id',\n }\n})\nexport class TimezoneSelectComponent implements OnInit, MatFormFieldControl<any>, ControlValueAccessor {\n protected localeId = inject(LOCALE_ID);\n protected renderer = inject(Renderer2);\n private readonly _focusMonitor = inject(FocusMonitor);\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n ngControl = inject(NgControl, { optional: true, self: true });\n\n private searchInput = viewChild.required<ElementRef<HTMLInputElement>>('searchInput');\n private selectRef = viewChild.required<MatSelect>('select');\n\n protected timezoneGroups = signal<TimezoneGroup[]>([]);\n readonly touched = signal(false);\n readonly stateChanges = new Subject<void>();\n readonly controlType = 'emr-timezone-select';\n readonly id = `emr-timezone-select-${nextId++}`;\n readonly _userAriaDescribedBy = input<string>('', { alias: 'aria-describedby' });\n readonly locale = input<string>(this.localeId);\n readonly _placeholder = input<string>('', { alias: 'placeholder' });\n readonly _required = input<boolean, unknown>(false, {\n alias: 'required',\n transform: booleanAttribute,\n });\n readonly _disabledByInput = input<boolean, unknown>(false, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n readonly _value = model<string | null>(null, { alias: 'value' });\n protected searchTerm = model('');\n private readonly _focused = signal(false);\n private readonly _disabledByCva = signal(false);\n private readonly _disabled = computed(() => this._disabledByInput() || this._disabledByCva());\n\n onChange = (_: any) => {};\n onTouched = () => {};\n\n get focused(): boolean {\n return this._focused();\n }\n\n get empty() {\n return !this._value() || this._value()?.trim() === '';\n }\n\n get shouldLabelFloat() {\n return this.focused || !this.empty;\n }\n\n get userAriaDescribedBy() {\n return this._userAriaDescribedBy();\n }\n\n get placeholder(): string {\n return this._placeholder();\n }\n\n get required(): boolean {\n return this._required();\n }\n\n get disabled(): boolean {\n return this._disabled();\n }\n\n get value(): string | null {\n return this._value();\n }\n\n get errorState(): boolean {\n // @ts-ignore\n return this.ngControl?.invalid && this.touched();\n }\n\n constructor() {\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n\n effect(() => {\n // Read signals to trigger effect.\n this._placeholder();\n this._required();\n this._disabled();\n this._focused();\n // Propagate state changes.\n untracked(() => this.stateChanges.next());\n });\n }\n\n ngOnInit() {\n const locale = this.locale() || this.localeId;\n this.timezoneGroups.set(TimezoneUtils.getLocalizedAll(locale, true));\n const formFieldElement = this._elementRef.nativeElement.closest('.mat-mdc-form-field');\n\n if (formFieldElement) {\n this.renderer.addClass(formFieldElement, 'mat-mdc-form-field-type-mat-select');\n }\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n onFocusIn() {\n if (!this._focused()) {\n this._focused.set(true);\n }\n }\n\n onFocusOut(event: FocusEvent) {\n if (!this._elementRef.nativeElement.contains(event.relatedTarget as Element)) {\n this.touched.set(true);\n this._focused.set(false);\n this.onTouched();\n }\n }\n\n onContainerClick(event: MouseEvent) {\n if (this.disabled) {\n return;\n }\n\n this._focused.set(true);\n this.selectRef().onContainerClick();\n }\n\n setDescribedByIds(ids: string[]) {\n }\n\n writeValue(timezone: string | null): void {\n this._updateValue(timezone);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._disabledByCva.set(isDisabled);\n }\n\n protected onSelectOpened(): void {\n setTimeout(() => {\n this.searchInput().nativeElement.focus();\n });\n }\n\n protected clearSearch() {\n this.searchTerm.set('');\n }\n\n protected onSelectClosed() {\n this._focused.set(false);\n this.searchTerm.set('');\n }\n\n protected onModelChange(value: string) {\n this._value.set(value);\n this.onChange(value);\n }\n\n private _updateValue(value: string | null) {\n const current = this._value();\n\n if (current === value) {\n return;\n }\n\n this._value.set(value);\n }\n}\n","<mat-select #select=\"matSelect\"\n panelClass=\"emr-timezone-select-panel\"\n [value]=\"_value\"\n [aria-describedby]=\"userAriaDescribedBy\"\n [disabled]=\"disabled\"\n [placeholder]=\"_placeholder()\"\n (opened)=\"onSelectOpened()\"\n (closed)=\"onSelectClosed()\">\n <div class=\"px-3 py-3 rounded-t sticky top-0 z-1 bg-[var(--mat-select-panel-background-color)]\">\n <input #searchInput\n type=\"text\" placeholder=\"Search...\" autocomplete=\"off\" [(ngModel)]=\"searchTerm\"\n class=\"w-full bg-surface-container-highest rounded-lg text-sm focus:outline-none\n focus:bg-surface-container-lowest focus:shadow-sm h-12 px-3\">\n @if (searchTerm().trim()) {\n <div class=\"absolute end-4 top-1/2 -translate-y-1/2\">\n <button\n mat-icon-button\n (click)=\"clearSearch()\"\n class=\"clear-button\"\n type=\"button\"\n aria-label=\"Clear search\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n }\n </div>\n @for (timezoneGroup of timezoneGroups() | filterTimezones:searchTerm(); track timezoneGroup.name) {\n <div class=\"px-4 font-bold text-on-surface-container my-4\" i18n>{{ timezoneGroup.name }}</div>\n <div>\n @for (timezone of timezoneGroup.timezones; track timezone) {\n <mat-option [value]=\"timezone.id\" (click)=\"onModelChange(timezone.id)\">\n {{ timezone.id }}\n </mat-option>\n }\n </div>\n } @empty {\n @if (searchTerm()) {\n <div class=\"text-sm px-4 py-3\">\n <span i18n>Timezone not found</span>.\n </div>\n }\n }\n</mat-select>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, output, signal, Component, inject, ApplicationRef, EnvironmentInjector, createComponent, Injectable } from '@angular/core';
3
+
4
+ class ToastComponent {
5
+ title = input('', ...(ngDevMode ? [{ debugName: "title" }] : []));
6
+ message = input('', ...(ngDevMode ? [{ debugName: "message" }] : []));
7
+ action = input('', ...(ngDevMode ? [{ debugName: "action" }] : []));
8
+ variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : []));
9
+ duration = input(4000, ...(ngDevMode ? [{ debugName: "duration" }] : []));
10
+ showProgress = input(true, ...(ngDevMode ? [{ debugName: "showProgress" }] : []));
11
+ dismissed = output();
12
+ actionClick = output();
13
+ _progress = signal(100, ...(ngDevMode ? [{ debugName: "_progress" }] : []));
14
+ _timer;
15
+ _interval;
16
+ ngOnInit() {
17
+ const d = this.duration();
18
+ if (d <= 0)
19
+ return;
20
+ const step = 50;
21
+ const decrement = (step / d) * 100;
22
+ this._interval = setInterval(() => {
23
+ this._progress.update(p => Math.max(0, p - decrement));
24
+ }, step);
25
+ this._timer = setTimeout(() => this.dismissed.emit(), d);
26
+ }
27
+ ngOnDestroy() {
28
+ clearTimeout(this._timer);
29
+ clearInterval(this._interval);
30
+ }
31
+ _dismiss() {
32
+ clearTimeout(this._timer);
33
+ clearInterval(this._interval);
34
+ this.dismissed.emit();
35
+ }
36
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
37
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: ToastComponent, isStandalone: true, selector: "emr-toast", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, action: { classPropertyName: "action", publicName: "action", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, duration: { classPropertyName: "duration", publicName: "duration", isSignal: true, isRequired: false, transformFunction: null }, showProgress: { classPropertyName: "showProgress", publicName: "showProgress", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dismissed: "dismissed", actionClick: "actionClick" }, host: { properties: { "attr.data-variant": "variant()" }, classAttribute: "emr-toast" }, exportAs: ["emrToast"], ngImport: i0, template: "<div class=\"toast-body\">\n <div class=\"toast-icon\">\n @switch (variant()) {\n @case ('success') { \u2713 }\n @case ('error') { \u2715 }\n @case ('warning') { \u26A0 }\n @case ('info') { \u2139 }\n }\n </div>\n <div class=\"toast-content\">\n @if (title()) { <strong class=\"toast-title\">{{ title() }}</strong> }\n <span class=\"toast-message\">{{ message() }}</span>\n </div>\n <div class=\"toast-controls\">\n @if (action()) {\n <button class=\"toast-action\" type=\"button\" (click)=\"actionClick.emit()\">{{ action() }}</button>\n }\n <button class=\"toast-close\" type=\"button\" (click)=\"_dismiss()\" aria-label=\"Close\">\u2715</button>\n </div>\n</div>\n@if (showProgress() && duration() > 0) {\n <div class=\"toast-progress\" [style.width]=\"_progress() + '%'\"></div>\n}\n", styles: [":host{--emr-toast-bg: var(--color-surface-container-high);--emr-toast-color: var(--color-on-surface);--emr-toast-border-radius: 1rem;--emr-toast-shadow: 0 8px 24px var(--color-shadow);--emr-toast-width: calc(var(--spacing, .25rem) * 96);--emr-toast-border: 1px solid var(--color-outline-variant);--emr-toast-progress-color: var(--color-primary);display:flex;flex-direction:column;width:var(--emr-toast-width);max-width:calc(100vw - calc(var(--spacing, .25rem) * 8));background:var(--emr-toast-bg);color:var(--emr-toast-color);border-radius:var(--emr-toast-border-radius);border:var(--emr-toast-border);box-shadow:var(--emr-toast-shadow);overflow:hidden;animation:toastIn .25s cubic-bezier(.34,1.56,.64,1)}@supports (color: color-mix(in lab,red,red)){:host{--emr-toast-shadow: 0 8px 24px color-mix(in srgb, var(--color-shadow) 15%, transparent)}}:host[data-variant=success]{--emr-toast-border: 1px solid var(--color-green);--emr-toast-progress-color: var(--color-green)}:host[data-variant=error]{--emr-toast-border: 1px solid var(--color-red);--emr-toast-progress-color: var(--color-red)}:host[data-variant=warning]{--emr-toast-border: 1px solid var(--color-orange);--emr-toast-progress-color: var(--color-orange)}:host[data-variant=info]{--emr-toast-border: 1px solid var(--color-blue);--emr-toast-progress-color: var(--color-blue)}.toast-body{display:flex;align-items:flex-start;gap:calc(var(--spacing, .25rem) * 3);padding:calc(var(--spacing, .25rem) * 4)}.toast-icon{flex-shrink:0;width:calc(var(--spacing, .25rem) * 6);height:calc(var(--spacing, .25rem) * 6);display:flex;align-items:center;justify-content:center;font-size:.9rem;font-weight:700;border-radius:50%;margin-top:calc(var(--spacing, .25rem) * .5)}:host([data-variant=success]) .toast-icon{background:var(--color-green-container);color:var(--color-green)}:host([data-variant=error]) .toast-icon{background:var(--color-red-container);color:var(--color-red)}:host([data-variant=warning]) .toast-icon{background:var(--color-orange-container);color:var(--color-orange)}:host([data-variant=info]) .toast-icon{background:var(--color-blue-container);color:var(--color-blue)}:host([data-variant=default]) .toast-icon{display:none}.toast-content{flex:1;min-width:0}.toast-title{display:block;font-weight:600;font-size:.875rem;margin-bottom:calc(var(--spacing, .25rem) * .5)}.toast-message{font-size:.875rem;color:var(--color-on-surface-variant);line-height:1.4}.toast-controls{display:flex;align-items:center;gap:var(--spacing, .25rem);flex-shrink:0}.toast-action{font-size:.875rem;font-weight:600;color:var(--color-primary);background:transparent;border:none;cursor:pointer;padding:var(--spacing, .25rem) calc(var(--spacing, .25rem) * 2);border-radius:.5rem}.toast-action:hover{background:var(--color-surface-container-highest)}.toast-close{width:calc(var(--spacing, .25rem) * 7);height:calc(var(--spacing, .25rem) * 7);display:flex;align-items:center;justify-content:center;background:transparent;border:none;cursor:pointer;color:var(--color-on-surface-variant);border-radius:.5rem;font-size:.65rem}.toast-close:hover{background:var(--color-surface-container-highest)}.toast-progress{height:var(--spacing, .25rem);background:var(--emr-toast-progress-color);transition:width 50ms linear;border-radius:0 0 var(--emr-toast-border-radius) var(--emr-toast-border-radius)}@keyframes toastIn{0%{opacity:0;transform:translate(calc(var(--spacing, .25rem) * 8)) scale(.95)}to{opacity:1;transform:translate(0) scale(1)}}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"] });
38
+ }
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ToastComponent, decorators: [{
40
+ type: Component,
41
+ args: [{ selector: 'emr-toast', exportAs: 'emrToast', host: {
42
+ 'class': 'emr-toast',
43
+ '[attr.data-variant]': 'variant()',
44
+ }, template: "<div class=\"toast-body\">\n <div class=\"toast-icon\">\n @switch (variant()) {\n @case ('success') { \u2713 }\n @case ('error') { \u2715 }\n @case ('warning') { \u26A0 }\n @case ('info') { \u2139 }\n }\n </div>\n <div class=\"toast-content\">\n @if (title()) { <strong class=\"toast-title\">{{ title() }}</strong> }\n <span class=\"toast-message\">{{ message() }}</span>\n </div>\n <div class=\"toast-controls\">\n @if (action()) {\n <button class=\"toast-action\" type=\"button\" (click)=\"actionClick.emit()\">{{ action() }}</button>\n }\n <button class=\"toast-close\" type=\"button\" (click)=\"_dismiss()\" aria-label=\"Close\">\u2715</button>\n </div>\n</div>\n@if (showProgress() && duration() > 0) {\n <div class=\"toast-progress\" [style.width]=\"_progress() + '%'\"></div>\n}\n", styles: [":host{--emr-toast-bg: var(--color-surface-container-high);--emr-toast-color: var(--color-on-surface);--emr-toast-border-radius: 1rem;--emr-toast-shadow: 0 8px 24px var(--color-shadow);--emr-toast-width: calc(var(--spacing, .25rem) * 96);--emr-toast-border: 1px solid var(--color-outline-variant);--emr-toast-progress-color: var(--color-primary);display:flex;flex-direction:column;width:var(--emr-toast-width);max-width:calc(100vw - calc(var(--spacing, .25rem) * 8));background:var(--emr-toast-bg);color:var(--emr-toast-color);border-radius:var(--emr-toast-border-radius);border:var(--emr-toast-border);box-shadow:var(--emr-toast-shadow);overflow:hidden;animation:toastIn .25s cubic-bezier(.34,1.56,.64,1)}@supports (color: color-mix(in lab,red,red)){:host{--emr-toast-shadow: 0 8px 24px color-mix(in srgb, var(--color-shadow) 15%, transparent)}}:host[data-variant=success]{--emr-toast-border: 1px solid var(--color-green);--emr-toast-progress-color: var(--color-green)}:host[data-variant=error]{--emr-toast-border: 1px solid var(--color-red);--emr-toast-progress-color: var(--color-red)}:host[data-variant=warning]{--emr-toast-border: 1px solid var(--color-orange);--emr-toast-progress-color: var(--color-orange)}:host[data-variant=info]{--emr-toast-border: 1px solid var(--color-blue);--emr-toast-progress-color: var(--color-blue)}.toast-body{display:flex;align-items:flex-start;gap:calc(var(--spacing, .25rem) * 3);padding:calc(var(--spacing, .25rem) * 4)}.toast-icon{flex-shrink:0;width:calc(var(--spacing, .25rem) * 6);height:calc(var(--spacing, .25rem) * 6);display:flex;align-items:center;justify-content:center;font-size:.9rem;font-weight:700;border-radius:50%;margin-top:calc(var(--spacing, .25rem) * .5)}:host([data-variant=success]) .toast-icon{background:var(--color-green-container);color:var(--color-green)}:host([data-variant=error]) .toast-icon{background:var(--color-red-container);color:var(--color-red)}:host([data-variant=warning]) .toast-icon{background:var(--color-orange-container);color:var(--color-orange)}:host([data-variant=info]) .toast-icon{background:var(--color-blue-container);color:var(--color-blue)}:host([data-variant=default]) .toast-icon{display:none}.toast-content{flex:1;min-width:0}.toast-title{display:block;font-weight:600;font-size:.875rem;margin-bottom:calc(var(--spacing, .25rem) * .5)}.toast-message{font-size:.875rem;color:var(--color-on-surface-variant);line-height:1.4}.toast-controls{display:flex;align-items:center;gap:var(--spacing, .25rem);flex-shrink:0}.toast-action{font-size:.875rem;font-weight:600;color:var(--color-primary);background:transparent;border:none;cursor:pointer;padding:var(--spacing, .25rem) calc(var(--spacing, .25rem) * 2);border-radius:.5rem}.toast-action:hover{background:var(--color-surface-container-highest)}.toast-close{width:calc(var(--spacing, .25rem) * 7);height:calc(var(--spacing, .25rem) * 7);display:flex;align-items:center;justify-content:center;background:transparent;border:none;cursor:pointer;color:var(--color-on-surface-variant);border-radius:.5rem;font-size:.65rem}.toast-close:hover{background:var(--color-surface-container-highest)}.toast-progress{height:var(--spacing, .25rem);background:var(--emr-toast-progress-color);transition:width 50ms linear;border-radius:0 0 var(--emr-toast-border-radius) var(--emr-toast-border-radius)}@keyframes toastIn{0%{opacity:0;transform:translate(calc(var(--spacing, .25rem) * 8)) scale(.95)}to{opacity:1;transform:translate(0) scale(1)}}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"] }]
45
+ }], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], message: [{ type: i0.Input, args: [{ isSignal: true, alias: "message", required: false }] }], action: [{ type: i0.Input, args: [{ isSignal: true, alias: "action", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], duration: [{ type: i0.Input, args: [{ isSignal: true, alias: "duration", required: false }] }], showProgress: [{ type: i0.Input, args: [{ isSignal: true, alias: "showProgress", required: false }] }], dismissed: [{ type: i0.Output, args: ["dismissed"] }], actionClick: [{ type: i0.Output, args: ["actionClick"] }] } });
46
+
47
+ class EmrToast {
48
+ _appRef = inject(ApplicationRef);
49
+ _injector = inject(EnvironmentInjector);
50
+ _containers = new Map();
51
+ _getContainer(position) {
52
+ if (!this._containers.has(position)) {
53
+ const el = document.createElement('div');
54
+ el.className = `emr-toast-container emr-toast-${position}`;
55
+ document.body.appendChild(el);
56
+ this._containers.set(position, el);
57
+ }
58
+ return this._containers.get(position);
59
+ }
60
+ open(config) {
61
+ const { title = '', message, action = '', variant = 'default', duration = 4000, showProgress = true, position = 'top-right' } = config;
62
+ const container = this._getContainer(position);
63
+ const host = document.createElement('div');
64
+ container.appendChild(host);
65
+ const ref = createComponent(ToastComponent, {
66
+ environmentInjector: this._injector,
67
+ hostElement: host,
68
+ });
69
+ ref.setInput('title', title);
70
+ ref.setInput('message', message);
71
+ ref.setInput('action', action);
72
+ ref.setInput('variant', variant);
73
+ ref.setInput('duration', duration);
74
+ ref.setInput('showProgress', showProgress);
75
+ const destroy = () => { ref.destroy(); host.remove(); };
76
+ ref.instance.dismissed.subscribe(destroy);
77
+ ref.instance.actionClick.subscribe(destroy);
78
+ this._appRef.attachView(ref.hostView);
79
+ ref.changeDetectorRef.detectChanges();
80
+ }
81
+ success(message, config) { this.open({ ...config, message, variant: 'success' }); }
82
+ error(message, config) { this.open({ ...config, message, variant: 'error' }); }
83
+ warning(message, config) { this.open({ ...config, message, variant: 'warning' }); }
84
+ info(message, config) { this.open({ ...config, message, variant: 'info' }); }
85
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: EmrToast, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
86
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: EmrToast, providedIn: 'root' });
87
+ }
88
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: EmrToast, decorators: [{
89
+ type: Injectable,
90
+ args: [{ providedIn: 'root' }]
91
+ }] });
92
+
93
+ /**
94
+ * Generated bundle index. Do not edit.
95
+ */
96
+
97
+ export { EmrToast, ToastComponent };
98
+ //# sourceMappingURL=elementar-rt-components-toast.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elementar-rt-components-toast.mjs","sources":["../../../projects/components/toast/src/toast/toast.component.ts","../../../projects/components/toast/src/toast/toast.component.html","../../../projects/components/toast/src/toast.service.ts","../../../projects/components/toast/elementar-rt-components-toast.ts"],"sourcesContent":["import { Component, input, output, signal, OnInit, OnDestroy, computed } from '@angular/core';\n\nexport type ToastVariant = 'default' | 'success' | 'error' | 'warning' | 'info';\n\n@Component({\n selector: 'emr-toast',\n exportAs: 'emrToast',\n templateUrl: './toast.component.html',\n styleUrl: './toast.component.scss',\n host: {\n 'class': 'emr-toast',\n '[attr.data-variant]': 'variant()',\n }\n})\nexport class ToastComponent implements OnInit, OnDestroy {\n title = input('');\n message = input('');\n action = input('');\n variant = input<ToastVariant>('default');\n duration = input(4000);\n showProgress = input(true);\n\n readonly dismissed = output<void>();\n readonly actionClick = output<void>();\n\n protected _progress = signal(100);\n private _timer: any;\n private _interval: any;\n\n ngOnInit() {\n const d = this.duration();\n if (d <= 0) return;\n const step = 50;\n const decrement = (step / d) * 100;\n this._interval = setInterval(() => {\n this._progress.update(p => Math.max(0, p - decrement));\n }, step);\n this._timer = setTimeout(() => this.dismissed.emit(), d);\n }\n\n ngOnDestroy() {\n clearTimeout(this._timer);\n clearInterval(this._interval);\n }\n\n protected _dismiss() {\n clearTimeout(this._timer);\n clearInterval(this._interval);\n this.dismissed.emit();\n }\n}\n","<div class=\"toast-body\">\n <div class=\"toast-icon\">\n @switch (variant()) {\n @case ('success') { ✓ }\n @case ('error') { ✕ }\n @case ('warning') { ⚠ }\n @case ('info') { ℹ }\n }\n </div>\n <div class=\"toast-content\">\n @if (title()) { <strong class=\"toast-title\">{{ title() }}</strong> }\n <span class=\"toast-message\">{{ message() }}</span>\n </div>\n <div class=\"toast-controls\">\n @if (action()) {\n <button class=\"toast-action\" type=\"button\" (click)=\"actionClick.emit()\">{{ action() }}</button>\n }\n <button class=\"toast-close\" type=\"button\" (click)=\"_dismiss()\" aria-label=\"Close\">✕</button>\n </div>\n</div>\n@if (showProgress() && duration() > 0) {\n <div class=\"toast-progress\" [style.width]=\"_progress() + '%'\"></div>\n}\n","import {\n ApplicationRef,\n ComponentRef,\n createComponent,\n EnvironmentInjector,\n inject,\n Injectable\n} from '@angular/core';\nimport { ToastComponent, ToastVariant } from './toast/toast.component';\n\nexport interface ToastConfig {\n title?: string;\n message: string;\n action?: string;\n variant?: ToastVariant;\n duration?: number;\n showProgress?: boolean;\n position?: 'top-right' | 'top-left' | 'top-center' | 'bottom-right' | 'bottom-left' | 'bottom-center';\n}\n\n@Injectable({ providedIn: 'root' })\nexport class EmrToast {\n private _appRef = inject(ApplicationRef);\n private _injector = inject(EnvironmentInjector);\n private _containers = new Map<string, HTMLElement>();\n\n private _getContainer(position: string): HTMLElement {\n if (!this._containers.has(position)) {\n const el = document.createElement('div');\n el.className = `emr-toast-container emr-toast-${position}`;\n document.body.appendChild(el);\n this._containers.set(position, el);\n }\n return this._containers.get(position)!;\n }\n\n open(config: ToastConfig): void {\n const {\n title = '', message, action = '', variant = 'default',\n duration = 4000, showProgress = true, position = 'top-right'\n } = config;\n\n const container = this._getContainer(position);\n const host = document.createElement('div');\n container.appendChild(host);\n\n const ref: ComponentRef<ToastComponent> = createComponent(ToastComponent, {\n environmentInjector: this._injector,\n hostElement: host,\n });\n\n ref.setInput('title', title);\n ref.setInput('message', message);\n ref.setInput('action', action);\n ref.setInput('variant', variant);\n ref.setInput('duration', duration);\n ref.setInput('showProgress', showProgress);\n\n const destroy = () => { ref.destroy(); host.remove(); };\n ref.instance.dismissed.subscribe(destroy);\n ref.instance.actionClick.subscribe(destroy);\n\n this._appRef.attachView(ref.hostView);\n ref.changeDetectorRef.detectChanges();\n }\n\n success(message: string, config?: Partial<ToastConfig>) { this.open({ ...config, message, variant: 'success' }); }\n error(message: string, config?: Partial<ToastConfig>) { this.open({ ...config, message, variant: 'error' }); }\n warning(message: string, config?: Partial<ToastConfig>) { this.open({ ...config, message, variant: 'warning' }); }\n info(message: string, config?: Partial<ToastConfig>) { this.open({ ...config, message, variant: 'info' }); }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAca,cAAc,CAAA;AACzB,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;AACjB,IAAA,OAAO,GAAG,KAAK,CAAC,EAAE,mDAAC;AACnB,IAAA,MAAM,GAAG,KAAK,CAAC,EAAE,kDAAC;AAClB,IAAA,OAAO,GAAG,KAAK,CAAe,SAAS,mDAAC;AACxC,IAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,oDAAC;AACtB,IAAA,YAAY,GAAG,KAAK,CAAC,IAAI,wDAAC;IAEjB,SAAS,GAAG,MAAM,EAAQ;IAC1B,WAAW,GAAG,MAAM,EAAQ;AAE3B,IAAA,SAAS,GAAG,MAAM,CAAC,GAAG,qDAAC;AACzB,IAAA,MAAM;AACN,IAAA,SAAS;IAEjB,QAAQ,GAAA;AACN,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE;QACzB,IAAI,CAAC,IAAI,CAAC;YAAE;QACZ,MAAM,IAAI,GAAG,EAAE;QACf,MAAM,SAAS,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG;AAClC,QAAA,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,MAAK;YAChC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;QACxD,CAAC,EAAE,IAAI,CAAC;AACR,QAAA,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC1D;IAEA,WAAW,GAAA;AACT,QAAA,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;AACzB,QAAA,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;IAC/B;IAEU,QAAQ,GAAA;AAChB,QAAA,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;AACzB,QAAA,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;AAC7B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;IACvB;wGAnCW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,ggCCd3B,00BAuBA,EAAA,MAAA,EAAA,CAAA,k9GAAA,CAAA,EAAA,CAAA;;4FDTa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAV1B,SAAS;+BACE,WAAW,EAAA,QAAA,EACX,UAAU,EAAA,IAAA,EAGd;AACJ,wBAAA,OAAO,EAAE,WAAW;AACpB,wBAAA,qBAAqB,EAAE,WAAW;AACnC,qBAAA,EAAA,QAAA,EAAA,00BAAA,EAAA,MAAA,EAAA,CAAA,k9GAAA,CAAA,EAAA;;;MESU,QAAQ,CAAA;AACX,IAAA,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC;AAChC,IAAA,SAAS,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACvC,IAAA,WAAW,GAAG,IAAI,GAAG,EAAuB;AAE5C,IAAA,aAAa,CAAC,QAAgB,EAAA;QACpC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YACnC,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACxC,YAAA,EAAE,CAAC,SAAS,GAAG,CAAA,8BAAA,EAAiC,QAAQ,EAAE;AAC1D,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;QACpC;QACA,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAE;IACxC;AAEA,IAAA,IAAI,CAAC,MAAmB,EAAA;AACtB,QAAA,MAAM,EACJ,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,EAAE,EAAE,OAAO,GAAG,SAAS,EACrD,QAAQ,GAAG,IAAI,EAAE,YAAY,GAAG,IAAI,EAAE,QAAQ,GAAG,WAAW,EAC7D,GAAG,MAAM;QAEV,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;QAC9C,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC1C,QAAA,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC;AAE3B,QAAA,MAAM,GAAG,GAAiC,eAAe,CAAC,cAAc,EAAE;YACxE,mBAAmB,EAAE,IAAI,CAAC,SAAS;AACnC,YAAA,WAAW,EAAE,IAAI;AAClB,SAAA,CAAC;AAEF,QAAA,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;AAC5B,QAAA,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;AAChC,QAAA,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;AAC9B,QAAA,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;AAChC,QAAA,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC;AAClC,QAAA,GAAG,CAAC,QAAQ,CAAC,cAAc,EAAE,YAAY,CAAC;AAE1C,QAAA,MAAM,OAAO,GAAG,MAAK,EAAG,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACvD,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC;QACzC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC;QAE3C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;AACrC,QAAA,GAAG,CAAC,iBAAiB,CAAC,aAAa,EAAE;IACvC;IAEA,OAAO,CAAC,OAAe,EAAE,MAA6B,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IACjH,KAAK,CAAC,OAAe,EAAE,MAA6B,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAC7G,OAAO,CAAC,OAAe,EAAE,MAA6B,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IACjH,IAAI,CAAC,OAAe,EAAE,MAA6B,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;wGAhDhG,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAR,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,QAAQ,cADK,MAAM,EAAA,CAAA;;4FACnB,QAAQ,EAAA,UAAA,EAAA,CAAA;kBADpB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACpBlC;;AAEG;;;;"}
@@ -0,0 +1,24 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, booleanAttribute, Component } from '@angular/core';
3
+
4
+ class ToolbarComponent {
5
+ dense = input(false, ...(ngDevMode ? [{ debugName: "dense", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
6
+ sticky = input(false, ...(ngDevMode ? [{ debugName: "sticky", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
7
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.25", type: ToolbarComponent, isStandalone: true, selector: "emr-toolbar", inputs: { dense: { classPropertyName: "dense", publicName: "dense", isSignal: true, isRequired: false, transformFunction: null }, sticky: { classPropertyName: "sticky", publicName: "sticky", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.is-dense": "dense()", "class.is-sticky": "sticky()" }, classAttribute: "emr-toolbar" }, exportAs: ["emrToolbar"], ngImport: i0, template: "<div class=\"toolbar-start\">\n <ng-content select=\"[emrToolbarStart]\"/>\n</div>\n<div class=\"toolbar-center\">\n <ng-content select=\"[emrToolbarCenter]\"/>\n</div>\n<div class=\"toolbar-end\">\n <ng-content select=\"[emrToolbarEnd]\"/>\n</div>\n<ng-content/>\n", styles: [":host{--emr-toolbar-height: calc(var(--spacing, .25rem) * 16);--emr-toolbar-dense-height: calc(var(--spacing, .25rem) * 12);--emr-toolbar-padding: 0 calc(var(--spacing, .25rem) * 4);--emr-toolbar-bg: var(--color-surface);--emr-toolbar-border: 1px solid var(--color-outline-variant);--emr-toolbar-gap: calc(var(--spacing, .25rem) * 2);display:flex;align-items:center;gap:var(--emr-toolbar-gap);height:var(--emr-toolbar-height);padding:var(--emr-toolbar-padding);background:var(--emr-toolbar-bg);border-bottom:var(--emr-toolbar-border);width:100%}:host.is-dense{height:var(--emr-toolbar-dense-height)}:host.is-sticky{position:sticky;top:0;z-index:50}.toolbar-start{display:flex;align-items:center;gap:var(--emr-toolbar-gap);flex-shrink:0}.toolbar-start:empty{display:none}.toolbar-center{flex:1;display:flex;align-items:center;justify-content:center;gap:var(--emr-toolbar-gap)}.toolbar-center:empty{display:none}.toolbar-end{display:flex;align-items:center;gap:var(--emr-toolbar-gap);flex-shrink:0;margin-inline-start:auto}.toolbar-end:empty{display:none}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"] });
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ToolbarComponent, decorators: [{
11
+ type: Component,
12
+ args: [{ selector: 'emr-toolbar', exportAs: 'emrToolbar', host: {
13
+ 'class': 'emr-toolbar',
14
+ '[class.is-dense]': 'dense()',
15
+ '[class.is-sticky]': 'sticky()',
16
+ }, template: "<div class=\"toolbar-start\">\n <ng-content select=\"[emrToolbarStart]\"/>\n</div>\n<div class=\"toolbar-center\">\n <ng-content select=\"[emrToolbarCenter]\"/>\n</div>\n<div class=\"toolbar-end\">\n <ng-content select=\"[emrToolbarEnd]\"/>\n</div>\n<ng-content/>\n", styles: [":host{--emr-toolbar-height: calc(var(--spacing, .25rem) * 16);--emr-toolbar-dense-height: calc(var(--spacing, .25rem) * 12);--emr-toolbar-padding: 0 calc(var(--spacing, .25rem) * 4);--emr-toolbar-bg: var(--color-surface);--emr-toolbar-border: 1px solid var(--color-outline-variant);--emr-toolbar-gap: calc(var(--spacing, .25rem) * 2);display:flex;align-items:center;gap:var(--emr-toolbar-gap);height:var(--emr-toolbar-height);padding:var(--emr-toolbar-padding);background:var(--emr-toolbar-bg);border-bottom:var(--emr-toolbar-border);width:100%}:host.is-dense{height:var(--emr-toolbar-dense-height)}:host.is-sticky{position:sticky;top:0;z-index:50}.toolbar-start{display:flex;align-items:center;gap:var(--emr-toolbar-gap);flex-shrink:0}.toolbar-start:empty{display:none}.toolbar-center{flex:1;display:flex;align-items:center;justify-content:center;gap:var(--emr-toolbar-gap)}.toolbar-center:empty{display:none}.toolbar-end{display:flex;align-items:center;gap:var(--emr-toolbar-gap);flex-shrink:0;margin-inline-start:auto}.toolbar-end:empty{display:none}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"] }]
17
+ }], propDecorators: { dense: [{ type: i0.Input, args: [{ isSignal: true, alias: "dense", required: false }] }], sticky: [{ type: i0.Input, args: [{ isSignal: true, alias: "sticky", required: false }] }] } });
18
+
19
+ /**
20
+ * Generated bundle index. Do not edit.
21
+ */
22
+
23
+ export { ToolbarComponent };
24
+ //# sourceMappingURL=elementar-rt-components-toolbar.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elementar-rt-components-toolbar.mjs","sources":["../../../projects/components/toolbar/src/toolbar/toolbar.component.ts","../../../projects/components/toolbar/src/toolbar/toolbar.component.html","../../../projects/components/toolbar/elementar-rt-components-toolbar.ts"],"sourcesContent":["import { booleanAttribute, Component, input } from '@angular/core';\n\n@Component({\n selector: 'emr-toolbar',\n exportAs: 'emrToolbar',\n templateUrl: './toolbar.component.html',\n styleUrl: './toolbar.component.scss',\n host: {\n 'class': 'emr-toolbar',\n '[class.is-dense]': 'dense()',\n '[class.is-sticky]': 'sticky()',\n }\n})\nexport class ToolbarComponent {\n dense = input(false, { transform: booleanAttribute });\n sticky = input(false, { transform: booleanAttribute });\n}\n","<div class=\"toolbar-start\">\n <ng-content select=\"[emrToolbarStart]\"/>\n</div>\n<div class=\"toolbar-center\">\n <ng-content select=\"[emrToolbarCenter]\"/>\n</div>\n<div class=\"toolbar-end\">\n <ng-content select=\"[emrToolbarEnd]\"/>\n</div>\n<ng-content/>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAaa,gBAAgB,CAAA;AAC3B,IAAA,KAAK,GAAG,KAAK,CAAC,KAAK,yCAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAC;AACrD,IAAA,MAAM,GAAG,KAAK,CAAC,KAAK,0CAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAC;wGAF3C,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,qdCb7B,8QAUA,EAAA,MAAA,EAAA,CAAA,omCAAA,CAAA,EAAA,CAAA;;4FDGa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAX5B,SAAS;+BACE,aAAa,EAAA,QAAA,EACb,YAAY,EAAA,IAAA,EAGhB;AACJ,wBAAA,OAAO,EAAE,aAAa;AACtB,wBAAA,kBAAkB,EAAE,SAAS;AAC7B,wBAAA,mBAAmB,EAAE,UAAU;AAChC,qBAAA,EAAA,QAAA,EAAA,8QAAA,EAAA,MAAA,EAAA,CAAA,omCAAA,CAAA,EAAA;;;AEXH;;AAEG;;;;"}
@@ -0,0 +1,119 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, Component, inject, ElementRef, ApplicationRef, EnvironmentInjector, createComponent, Directive } from '@angular/core';
3
+ import { NgTemplateOutlet } from '@angular/common';
4
+
5
+ class TooltipComponent {
6
+ text = input('', ...(ngDevMode ? [{ debugName: "text" }] : []));
7
+ templateRef = input(null, ...(ngDevMode ? [{ debugName: "templateRef" }] : []));
8
+ placement = input('top', ...(ngDevMode ? [{ debugName: "placement" }] : []));
9
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: TooltipComponent, isStandalone: true, selector: "emr-tooltip-content", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, templateRef: { classPropertyName: "templateRef", publicName: "templateRef", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
11
+ <div class="tooltip-inner" [attr.data-placement]="placement()">
12
+ @if (templateRef()) {
13
+ <ng-container [ngTemplateOutlet]="templateRef()!"/>
14
+ } @else {
15
+ {{ text() }}
16
+ }
17
+ </div>
18
+ `, isInline: true, styles: [".tooltip-inner{--emr-tooltip-bg: var(--color-inverse-surface);--emr-tooltip-color: var(--color-inverse-on-surface);background:var(--emr-tooltip-bg);color:var(--emr-tooltip-color);padding:calc(var(--spacing) * 1.5) calc(var(--spacing) * 2.5);border-radius:.5rem;font-size:var(--text-xs);font-weight:500;max-width:calc(var(--spacing) * 56);line-height:1.4;animation:tooltipIn .12s ease}@keyframes tooltipIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
19
+ }
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TooltipComponent, decorators: [{
21
+ type: Component,
22
+ args: [{ selector: 'emr-tooltip-content', imports: [NgTemplateOutlet], template: `
23
+ <div class="tooltip-inner" [attr.data-placement]="placement()">
24
+ @if (templateRef()) {
25
+ <ng-container [ngTemplateOutlet]="templateRef()!"/>
26
+ } @else {
27
+ {{ text() }}
28
+ }
29
+ </div>
30
+ `, styles: [".tooltip-inner{--emr-tooltip-bg: var(--color-inverse-surface);--emr-tooltip-color: var(--color-inverse-on-surface);background:var(--emr-tooltip-bg);color:var(--emr-tooltip-color);padding:calc(var(--spacing) * 1.5) calc(var(--spacing) * 2.5);border-radius:.5rem;font-size:var(--text-xs);font-weight:500;max-width:calc(var(--spacing) * 56);line-height:1.4;animation:tooltipIn .12s ease}@keyframes tooltipIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"] }]
31
+ }], propDecorators: { text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }], templateRef: [{ type: i0.Input, args: [{ isSignal: true, alias: "templateRef", required: false }] }], placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "placement", required: false }] }] } });
32
+
33
+ class TooltipDirective {
34
+ emrTooltip = input('', ...(ngDevMode ? [{ debugName: "emrTooltip" }] : []));
35
+ tooltipPlacement = input('top', ...(ngDevMode ? [{ debugName: "tooltipPlacement" }] : []));
36
+ tooltipDisabled = input(false, ...(ngDevMode ? [{ debugName: "tooltipDisabled" }] : []));
37
+ _el = inject((ElementRef));
38
+ _appRef = inject(ApplicationRef);
39
+ _injector = inject(EnvironmentInjector);
40
+ _ref = null;
41
+ _show() {
42
+ if (this.tooltipDisabled() || !this.emrTooltip() || this._ref)
43
+ return;
44
+ const host = document.createElement('div');
45
+ document.body.appendChild(host);
46
+ this._ref = createComponent(TooltipComponent, {
47
+ environmentInjector: this._injector,
48
+ hostElement: host,
49
+ });
50
+ const content = this.emrTooltip();
51
+ if (typeof content === 'string') {
52
+ this._ref.setInput('text', content);
53
+ }
54
+ else {
55
+ this._ref.setInput('templateRef', content);
56
+ }
57
+ this._ref.setInput('placement', this.tooltipPlacement());
58
+ this._appRef.attachView(this._ref.hostView);
59
+ this._ref.changeDetectorRef.detectChanges();
60
+ this._position(host);
61
+ }
62
+ _hide() {
63
+ this._ref?.destroy();
64
+ this._ref = null;
65
+ }
66
+ _position(host) {
67
+ const rect = this._el.nativeElement.getBoundingClientRect();
68
+ const tooltip = host.firstElementChild;
69
+ if (!tooltip)
70
+ return;
71
+ const gap = 8;
72
+ const place = this.tooltipPlacement();
73
+ requestAnimationFrame(() => {
74
+ const tw = tooltip.offsetWidth;
75
+ const th = tooltip.offsetHeight;
76
+ let top = 0, left = 0;
77
+ if (place === 'top') {
78
+ top = rect.top + window.scrollY - th - gap;
79
+ left = rect.left + window.scrollX + rect.width / 2 - tw / 2;
80
+ }
81
+ else if (place === 'bottom') {
82
+ top = rect.bottom + window.scrollY + gap;
83
+ left = rect.left + window.scrollX + rect.width / 2 - tw / 2;
84
+ }
85
+ else if (place === 'left') {
86
+ top = rect.top + window.scrollY + rect.height / 2 - th / 2;
87
+ left = rect.left + window.scrollX - tw - gap;
88
+ }
89
+ else {
90
+ top = rect.top + window.scrollY + rect.height / 2 - th / 2;
91
+ left = rect.right + window.scrollX + gap;
92
+ }
93
+ host.style.cssText = `position:absolute;top:${top}px;left:${left}px;z-index:9999;pointer-events:none;`;
94
+ });
95
+ }
96
+ ngOnDestroy() { this._hide(); }
97
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TooltipDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
98
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.25", type: TooltipDirective, isStandalone: true, selector: "[emrTooltip]", inputs: { emrTooltip: { classPropertyName: "emrTooltip", publicName: "emrTooltip", isSignal: true, isRequired: false, transformFunction: null }, tooltipPlacement: { classPropertyName: "tooltipPlacement", publicName: "tooltipPlacement", isSignal: true, isRequired: false, transformFunction: null }, tooltipDisabled: { classPropertyName: "tooltipDisabled", publicName: "tooltipDisabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "mouseenter": "_show()", "mouseleave": "_hide()", "focusin": "_show()", "focusout": "_hide()" } }, exportAs: ["emrTooltip"], ngImport: i0 });
99
+ }
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TooltipDirective, decorators: [{
101
+ type: Directive,
102
+ args: [{
103
+ selector: '[emrTooltip]',
104
+ exportAs: 'emrTooltip',
105
+ host: {
106
+ '(mouseenter)': '_show()',
107
+ '(mouseleave)': '_hide()',
108
+ '(focusin)': '_show()',
109
+ '(focusout)': '_hide()',
110
+ }
111
+ }]
112
+ }], propDecorators: { emrTooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: "emrTooltip", required: false }] }], tooltipPlacement: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltipPlacement", required: false }] }], tooltipDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltipDisabled", required: false }] }] } });
113
+
114
+ /**
115
+ * Generated bundle index. Do not edit.
116
+ */
117
+
118
+ export { TooltipComponent, TooltipDirective };
119
+ //# sourceMappingURL=elementar-rt-components-tooltip.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elementar-rt-components-tooltip.mjs","sources":["../../../projects/components/tooltip/src/tooltip.component.ts","../../../projects/components/tooltip/src/tooltip.directive.ts","../../../projects/components/tooltip/elementar-rt-components-tooltip.ts"],"sourcesContent":["import { Component, input, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { TooltipPlacement } from './tooltip.directive';\n\n@Component({\n selector: 'emr-tooltip-content',\n imports: [NgTemplateOutlet],\n template: `\n <div class=\"tooltip-inner\" [attr.data-placement]=\"placement()\">\n @if (templateRef()) {\n <ng-container [ngTemplateOutlet]=\"templateRef()!\"/>\n } @else {\n {{ text() }}\n }\n </div>\n `,\n styles: [`\n @reference 'tailwindcss';\n .tooltip-inner {\n --emr-tooltip-bg: var(--color-inverse-surface);\n --emr-tooltip-color: var(--color-inverse-on-surface);\n background: var(--emr-tooltip-bg);\n color: var(--emr-tooltip-color);\n padding: calc(var(--spacing) * 1.5) calc(var(--spacing) * 2.5);\n border-radius: theme(--radius-lg);\n font-size: var(--text-xs);\n font-weight: 500;\n max-width: calc(var(--spacing) * 56);\n line-height: 1.4;\n animation: tooltipIn 120ms ease;\n }\n @keyframes tooltipIn {\n from { opacity: 0; transform: scale(0.95); }\n to { opacity: 1; transform: scale(1); }\n }\n `]\n})\nexport class TooltipComponent {\n text = input('');\n templateRef = input<TemplateRef<any> | null>(null);\n placement = input<TooltipPlacement>('top');\n}\n","import {\n ApplicationRef,\n ComponentRef,\n createComponent,\n Directive,\n ElementRef,\n EnvironmentInjector,\n inject,\n input,\n OnDestroy,\n TemplateRef\n} from '@angular/core';\nimport { TooltipComponent } from './tooltip.component';\n\nexport type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right';\n\n@Directive({\n selector: '[emrTooltip]',\n exportAs: 'emrTooltip',\n host: {\n '(mouseenter)': '_show()',\n '(mouseleave)': '_hide()',\n '(focusin)': '_show()',\n '(focusout)': '_hide()',\n }\n})\nexport class TooltipDirective implements OnDestroy {\n emrTooltip = input<string | TemplateRef<any>>('');\n tooltipPlacement = input<TooltipPlacement>('top');\n tooltipDisabled = input(false);\n\n private _el = inject(ElementRef<HTMLElement>);\n private _appRef = inject(ApplicationRef);\n private _injector = inject(EnvironmentInjector);\n private _ref: ComponentRef<TooltipComponent> | null = null;\n\n protected _show() {\n if (this.tooltipDisabled() || !this.emrTooltip() || this._ref) return;\n\n const host = document.createElement('div');\n document.body.appendChild(host);\n\n this._ref = createComponent(TooltipComponent, {\n environmentInjector: this._injector,\n hostElement: host,\n });\n\n const content = this.emrTooltip();\n if (typeof content === 'string') {\n this._ref.setInput('text', content);\n } else {\n this._ref.setInput('templateRef', content);\n }\n this._ref.setInput('placement', this.tooltipPlacement());\n\n this._appRef.attachView(this._ref.hostView);\n this._ref.changeDetectorRef.detectChanges();\n\n this._position(host);\n }\n\n protected _hide() {\n this._ref?.destroy();\n this._ref = null;\n }\n\n private _position(host: HTMLElement) {\n const rect = this._el.nativeElement.getBoundingClientRect();\n const tooltip = host.firstElementChild as HTMLElement;\n if (!tooltip) return;\n\n const gap = 8;\n const place = this.tooltipPlacement();\n\n requestAnimationFrame(() => {\n const tw = tooltip.offsetWidth;\n const th = tooltip.offsetHeight;\n let top = 0, left = 0;\n\n if (place === 'top') {\n top = rect.top + window.scrollY - th - gap;\n left = rect.left + window.scrollX + rect.width / 2 - tw / 2;\n } else if (place === 'bottom') {\n top = rect.bottom + window.scrollY + gap;\n left = rect.left + window.scrollX + rect.width / 2 - tw / 2;\n } else if (place === 'left') {\n top = rect.top + window.scrollY + rect.height / 2 - th / 2;\n left = rect.left + window.scrollX - tw - gap;\n } else {\n top = rect.top + window.scrollY + rect.height / 2 - th / 2;\n left = rect.right + window.scrollX + gap;\n }\n\n host.style.cssText = `position:absolute;top:${top}px;left:${left}px;z-index:9999;pointer-events:none;`;\n });\n }\n\n ngOnDestroy() { this._hide(); }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, Component, booleanAttribute, output, signal } from '@angular/core';
3
+
4
+ class TreeNodeComponent {
5
+ node = input.required(...(ngDevMode ? [{ debugName: "node" }] : []));
6
+ tree = input.required(...(ngDevMode ? [{ debugName: "tree" }] : []));
7
+ depth = input(0, ...(ngDevMode ? [{ debugName: "depth" }] : []));
8
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TreeNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: TreeNodeComponent, isStandalone: true, selector: "emr-tree-node", inputs: { node: { classPropertyName: "node", publicName: "node", isSignal: true, isRequired: true, transformFunction: null }, tree: { classPropertyName: "tree", publicName: "tree", isSignal: true, isRequired: true, transformFunction: null }, depth: { classPropertyName: "depth", publicName: "depth", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "treeitem" }, classAttribute: "emr-tree-node" }, ngImport: i0, template: "<div\n class=\"tn-row\"\n [style.padding-inline-start.px]=\"depth() * 20 + 8\"\n [class.is-selected]=\"tree()._isSelected(node())\"\n (click)=\"tree()._toggleSelect(node())\"\n>\n @if (node().children?.length) {\n <button\n class=\"tn-expand\"\n type=\"button\"\n (click)=\"$event.stopPropagation(); tree()._toggleExpand(node())\"\n [attr.aria-expanded]=\"tree()._isExpanded(node())\"\n >\n <svg class=\"tn-chevron\" [class.is-open]=\"tree()._isExpanded(node())\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6z\"/>\n </svg>\n </button>\n } @else {\n <span class=\"tn-leaf-indent\"></span>\n }\n\n @if (tree().checkable()) {\n <input type=\"checkbox\" [checked]=\"tree()._isChecked(node())\" (click)=\"$event.stopPropagation(); tree()._toggleCheck(node())\"/>\n }\n\n @if (node().icon) {\n <span class=\"tn-icon\">{{ node().icon }}</span>\n }\n\n <span class=\"tn-label\">{{ node().label }}</span>\n</div>\n\n@if (tree()._isExpanded(node()) && node().children?.length) {\n @for (child of node().children; track child.id) {\n <emr-tree-node [node]=\"child\" [tree]=\"tree()\" [depth]=\"depth() + 1\"/>\n }\n}\n", styles: [":host{display:block}.tn-row{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 1.5);height:calc(var(--spacing, .25rem) * 9);border-radius:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:.875rem;color:var(--color-on-surface);transition:background .1s}.tn-row:hover{background:var(--color-surface-container)}.tn-row.is-selected{background:var(--color-secondary-container)}.tn-expand{display:flex;align-items:center;justify-content:center;width:calc(var(--spacing, .25rem) * 6);height:calc(var(--spacing, .25rem) * 6);border:none;background:transparent;cursor:pointer;color:var(--color-on-surface-variant);border-radius:.375rem;flex-shrink:0}.tn-expand:hover{background:var(--color-surface-container-high)}.tn-chevron{transition:transform .2s cubic-bezier(.4,0,.2,1)}.tn-chevron.is-open{transform:rotate(90deg)}.tn-leaf-indent{width:calc(var(--spacing, .25rem) * 6);flex-shrink:0}.tn-icon{color:var(--color-on-surface-variant)}.tn-label{flex:1}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: TreeNodeComponent, selector: "emr-tree-node", inputs: ["node", "tree", "depth"] }] });
10
+ }
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TreeNodeComponent, decorators: [{
12
+ type: Component,
13
+ args: [{ selector: 'emr-tree-node', host: { 'class': 'emr-tree-node', 'role': 'treeitem' }, imports: [TreeNodeComponent], template: "<div\n class=\"tn-row\"\n [style.padding-inline-start.px]=\"depth() * 20 + 8\"\n [class.is-selected]=\"tree()._isSelected(node())\"\n (click)=\"tree()._toggleSelect(node())\"\n>\n @if (node().children?.length) {\n <button\n class=\"tn-expand\"\n type=\"button\"\n (click)=\"$event.stopPropagation(); tree()._toggleExpand(node())\"\n [attr.aria-expanded]=\"tree()._isExpanded(node())\"\n >\n <svg class=\"tn-chevron\" [class.is-open]=\"tree()._isExpanded(node())\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6z\"/>\n </svg>\n </button>\n } @else {\n <span class=\"tn-leaf-indent\"></span>\n }\n\n @if (tree().checkable()) {\n <input type=\"checkbox\" [checked]=\"tree()._isChecked(node())\" (click)=\"$event.stopPropagation(); tree()._toggleCheck(node())\"/>\n }\n\n @if (node().icon) {\n <span class=\"tn-icon\">{{ node().icon }}</span>\n }\n\n <span class=\"tn-label\">{{ node().label }}</span>\n</div>\n\n@if (tree()._isExpanded(node()) && node().children?.length) {\n @for (child of node().children; track child.id) {\n <emr-tree-node [node]=\"child\" [tree]=\"tree()\" [depth]=\"depth() + 1\"/>\n }\n}\n", styles: [":host{display:block}.tn-row{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 1.5);height:calc(var(--spacing, .25rem) * 9);border-radius:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:.875rem;color:var(--color-on-surface);transition:background .1s}.tn-row:hover{background:var(--color-surface-container)}.tn-row.is-selected{background:var(--color-secondary-container)}.tn-expand{display:flex;align-items:center;justify-content:center;width:calc(var(--spacing, .25rem) * 6);height:calc(var(--spacing, .25rem) * 6);border:none;background:transparent;cursor:pointer;color:var(--color-on-surface-variant);border-radius:.375rem;flex-shrink:0}.tn-expand:hover{background:var(--color-surface-container-high)}.tn-chevron{transition:transform .2s cubic-bezier(.4,0,.2,1)}.tn-chevron.is-open{transform:rotate(90deg)}.tn-leaf-indent{width:calc(var(--spacing, .25rem) * 6);flex-shrink:0}.tn-icon{color:var(--color-on-surface-variant)}.tn-label{flex:1}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"] }]
14
+ }], propDecorators: { node: [{ type: i0.Input, args: [{ isSignal: true, alias: "node", required: true }] }], tree: [{ type: i0.Input, args: [{ isSignal: true, alias: "tree", required: true }] }], depth: [{ type: i0.Input, args: [{ isSignal: true, alias: "depth", required: false }] }] } });
15
+
16
+ class TreeComponent {
17
+ nodes = input([], ...(ngDevMode ? [{ debugName: "nodes" }] : []));
18
+ selectable = input(false, ...(ngDevMode ? [{ debugName: "selectable", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
19
+ multiSelect = input(false, ...(ngDevMode ? [{ debugName: "multiSelect", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
20
+ checkable = input(false, ...(ngDevMode ? [{ debugName: "checkable", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
21
+ nodeSelect = output();
22
+ nodeExpand = output();
23
+ nodeCollapse = output();
24
+ _expanded = signal(new Set(), ...(ngDevMode ? [{ debugName: "_expanded" }] : []));
25
+ _selected = signal(new Set(), ...(ngDevMode ? [{ debugName: "_selected" }] : []));
26
+ _checked = signal(new Set(), ...(ngDevMode ? [{ debugName: "_checked" }] : []));
27
+ _isExpanded(node) { return this._expanded().has(node.id); }
28
+ _isSelected(node) { return this._selected().has(node.id); }
29
+ _isChecked(node) { return this._checked().has(node.id); }
30
+ _toggleExpand(node) {
31
+ const next = new Set(this._expanded());
32
+ if (next.has(node.id)) {
33
+ next.delete(node.id);
34
+ this.nodeCollapse.emit(node);
35
+ }
36
+ else {
37
+ next.add(node.id);
38
+ this.nodeExpand.emit(node);
39
+ }
40
+ this._expanded.set(next);
41
+ }
42
+ _toggleSelect(node) {
43
+ if (!this.selectable())
44
+ return;
45
+ const next = new Set(this.multiSelect() ? this._selected() : new Set());
46
+ if (next.has(node.id))
47
+ next.delete(node.id);
48
+ else
49
+ next.add(node.id);
50
+ this._selected.set(next);
51
+ this.nodeSelect.emit(node);
52
+ }
53
+ _toggleCheck(node) {
54
+ const next = new Set(this._checked());
55
+ if (next.has(node.id))
56
+ next.delete(node.id);
57
+ else
58
+ next.add(node.id);
59
+ this._checked.set(next);
60
+ }
61
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TreeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
62
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: TreeComponent, isStandalone: true, selector: "emr-tree", inputs: { nodes: { classPropertyName: "nodes", publicName: "nodes", isSignal: true, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: true, isRequired: false, transformFunction: null }, multiSelect: { classPropertyName: "multiSelect", publicName: "multiSelect", isSignal: true, isRequired: false, transformFunction: null }, checkable: { classPropertyName: "checkable", publicName: "checkable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { nodeSelect: "nodeSelect", nodeExpand: "nodeExpand", nodeCollapse: "nodeCollapse" }, host: { attributes: { "role": "tree" }, classAttribute: "emr-tree" }, exportAs: ["emrTree"], ngImport: i0, template: "@for (node of nodes(); track node.id) {\n <emr-tree-node\n [node]=\"node\"\n [tree]=\"this\"\n [depth]=\"0\"\n />\n}\n", styles: [":host{display:block;width:100%;font-size:var(--text-sm)}\n"], dependencies: [{ kind: "component", type: TreeNodeComponent, selector: "emr-tree-node", inputs: ["node", "tree", "depth"] }] });
63
+ }
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TreeComponent, decorators: [{
65
+ type: Component,
66
+ args: [{ selector: 'emr-tree', exportAs: 'emrTree', imports: [TreeNodeComponent], host: {
67
+ 'class': 'emr-tree',
68
+ 'role': 'tree',
69
+ }, template: "@for (node of nodes(); track node.id) {\n <emr-tree-node\n [node]=\"node\"\n [tree]=\"this\"\n [depth]=\"0\"\n />\n}\n", styles: [":host{display:block;width:100%;font-size:var(--text-sm)}\n"] }]
70
+ }], propDecorators: { nodes: [{ type: i0.Input, args: [{ isSignal: true, alias: "nodes", required: false }] }], selectable: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectable", required: false }] }], multiSelect: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiSelect", required: false }] }], checkable: [{ type: i0.Input, args: [{ isSignal: true, alias: "checkable", required: false }] }], nodeSelect: [{ type: i0.Output, args: ["nodeSelect"] }], nodeExpand: [{ type: i0.Output, args: ["nodeExpand"] }], nodeCollapse: [{ type: i0.Output, args: ["nodeCollapse"] }] } });
71
+
72
+ /**
73
+ * Generated bundle index. Do not edit.
74
+ */
75
+
76
+ export { TreeComponent, TreeNodeComponent };
77
+ //# sourceMappingURL=elementar-rt-components-tree.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elementar-rt-components-tree.mjs","sources":["../../../projects/components/tree/src/tree-node/tree-node.component.ts","../../../projects/components/tree/src/tree-node/tree-node.component.html","../../../projects/components/tree/src/tree/tree.component.ts","../../../projects/components/tree/src/tree/tree.component.html","../../../projects/components/tree/elementar-rt-components-tree.ts"],"sourcesContent":["import { Component, inject, input } from '@angular/core';\nimport { TreeComponent } from '../tree/tree.component';\nimport { TreeNode } from '../types';\n\n@Component({\n selector: 'emr-tree-node',\n templateUrl: './tree-node.component.html',\n styleUrl: './tree-node.component.scss',\n host: { 'class': 'emr-tree-node', 'role': 'treeitem' },\n imports: [TreeNodeComponent]\n})\nexport class TreeNodeComponent<T = any> {\n node = input.required<TreeNode<T>>();\n tree = input.required<TreeComponent<T>>();\n depth = input(0);\n}\n","<div\n class=\"tn-row\"\n [style.padding-inline-start.px]=\"depth() * 20 + 8\"\n [class.is-selected]=\"tree()._isSelected(node())\"\n (click)=\"tree()._toggleSelect(node())\"\n>\n @if (node().children?.length) {\n <button\n class=\"tn-expand\"\n type=\"button\"\n (click)=\"$event.stopPropagation(); tree()._toggleExpand(node())\"\n [attr.aria-expanded]=\"tree()._isExpanded(node())\"\n >\n <svg class=\"tn-chevron\" [class.is-open]=\"tree()._isExpanded(node())\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6z\"/>\n </svg>\n </button>\n } @else {\n <span class=\"tn-leaf-indent\"></span>\n }\n\n @if (tree().checkable()) {\n <input type=\"checkbox\" [checked]=\"tree()._isChecked(node())\" (click)=\"$event.stopPropagation(); tree()._toggleCheck(node())\"/>\n }\n\n @if (node().icon) {\n <span class=\"tn-icon\">{{ node().icon }}</span>\n }\n\n <span class=\"tn-label\">{{ node().label }}</span>\n</div>\n\n@if (tree()._isExpanded(node()) && node().children?.length) {\n @for (child of node().children; track child.id) {\n <emr-tree-node [node]=\"child\" [tree]=\"tree()\" [depth]=\"depth() + 1\"/>\n }\n}\n","import { booleanAttribute, Component, input, output, signal } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { TreeNode } from '../types';\nimport { TreeNodeComponent } from '../tree-node/tree-node.component';\n\n@Component({\n selector: 'emr-tree',\n exportAs: 'emrTree',\n imports: [TreeNodeComponent],\n templateUrl: './tree.component.html',\n styleUrl: './tree.component.scss',\n host: {\n 'class': 'emr-tree',\n 'role': 'tree',\n }\n})\nexport class TreeComponent<T = any> {\n nodes = input<TreeNode<T>[]>([]);\n selectable = input(false, { transform: booleanAttribute });\n multiSelect = input(false, { transform: booleanAttribute });\n checkable = input(false, { transform: booleanAttribute });\n\n readonly nodeSelect = output<TreeNode<T>>();\n readonly nodeExpand = output<TreeNode<T>>();\n readonly nodeCollapse = output<TreeNode<T>>();\n\n protected _expanded = signal(new Set<string | number>());\n protected _selected = signal(new Set<string | number>());\n protected _checked = signal(new Set<string | number>());\n\n _isExpanded(node: TreeNode<T>): boolean { return this._expanded().has(node.id); }\n _isSelected(node: TreeNode<T>): boolean { return this._selected().has(node.id); }\n _isChecked(node: TreeNode<T>): boolean { return this._checked().has(node.id); }\n\n _toggleExpand(node: TreeNode<T>) {\n const next = new Set(this._expanded());\n if (next.has(node.id)) { next.delete(node.id); this.nodeCollapse.emit(node); }\n else { next.add(node.id); this.nodeExpand.emit(node); }\n this._expanded.set(next);\n }\n\n _toggleSelect(node: TreeNode<T>) {\n if (!this.selectable()) return;\n const next = new Set(this.multiSelect() ? this._selected() : new Set<string | number>());\n if (next.has(node.id)) next.delete(node.id);\n else next.add(node.id);\n this._selected.set(next);\n this.nodeSelect.emit(node);\n }\n\n _toggleCheck(node: TreeNode<T>) {\n const next = new Set(this._checked());\n if (next.has(node.id)) next.delete(node.id);\n else next.add(node.id);\n this._checked.set(next);\n }\n}\n","@for (node of nodes(); track node.id) {\n <emr-tree-node\n [node]=\"node\"\n [tree]=\"this\"\n [depth]=\"0\"\n />\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}