@rt-tools/ui-kit-v2 0.16.0 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (321) hide show
  1. package/README.md +25 -0
  2. package/fesm2022/rt-tools-ui-kit-v2-accordion.mjs +79 -0
  3. package/fesm2022/rt-tools-ui-kit-v2-accordion.mjs.map +1 -0
  4. package/fesm2022/rt-tools-ui-kit-v2-action-bar.mjs +227 -0
  5. package/fesm2022/rt-tools-ui-kit-v2-action-bar.mjs.map +1 -0
  6. package/fesm2022/rt-tools-ui-kit-v2-aside-section.mjs +47 -0
  7. package/fesm2022/rt-tools-ui-kit-v2-aside-section.mjs.map +1 -0
  8. package/fesm2022/rt-tools-ui-kit-v2-aside.mjs +702 -0
  9. package/fesm2022/rt-tools-ui-kit-v2-aside.mjs.map +1 -0
  10. package/fesm2022/rt-tools-ui-kit-v2-autocomplete.mjs +214 -0
  11. package/fesm2022/rt-tools-ui-kit-v2-autocomplete.mjs.map +1 -0
  12. package/fesm2022/rt-tools-ui-kit-v2-bar-list.mjs +53 -0
  13. package/fesm2022/rt-tools-ui-kit-v2-bar-list.mjs.map +1 -0
  14. package/fesm2022/rt-tools-ui-kit-v2-bottom-sheet.mjs +88 -0
  15. package/fesm2022/rt-tools-ui-kit-v2-bottom-sheet.mjs.map +1 -0
  16. package/fesm2022/rt-tools-ui-kit-v2-button.mjs +365 -0
  17. package/fesm2022/rt-tools-ui-kit-v2-button.mjs.map +1 -0
  18. package/fesm2022/rt-tools-ui-kit-v2-calendar.mjs +152 -0
  19. package/fesm2022/rt-tools-ui-kit-v2-calendar.mjs.map +1 -0
  20. package/fesm2022/rt-tools-ui-kit-v2-card.mjs +72 -0
  21. package/fesm2022/rt-tools-ui-kit-v2-card.mjs.map +1 -0
  22. package/fesm2022/rt-tools-ui-kit-v2-checkbox.mjs +111 -0
  23. package/fesm2022/rt-tools-ui-kit-v2-checkbox.mjs.map +1 -0
  24. package/fesm2022/rt-tools-ui-kit-v2-collapsible-text.mjs +76 -0
  25. package/fesm2022/rt-tools-ui-kit-v2-collapsible-text.mjs.map +1 -0
  26. package/fesm2022/rt-tools-ui-kit-v2-confirm-popover.mjs +255 -0
  27. package/fesm2022/rt-tools-ui-kit-v2-confirm-popover.mjs.map +1 -0
  28. package/fesm2022/rt-tools-ui-kit-v2-container.mjs +1326 -0
  29. package/fesm2022/rt-tools-ui-kit-v2-container.mjs.map +1 -0
  30. package/fesm2022/rt-tools-ui-kit-v2-core.mjs +2590 -0
  31. package/fesm2022/rt-tools-ui-kit-v2-core.mjs.map +1 -0
  32. package/fesm2022/rt-tools-ui-kit-v2-counter-row.mjs +45 -0
  33. package/fesm2022/rt-tools-ui-kit-v2-counter-row.mjs.map +1 -0
  34. package/fesm2022/rt-tools-ui-kit-v2-counter.mjs +158 -0
  35. package/fesm2022/rt-tools-ui-kit-v2-counter.mjs.map +1 -0
  36. package/fesm2022/rt-tools-ui-kit-v2-data-list.mjs +894 -0
  37. package/fesm2022/rt-tools-ui-kit-v2-data-list.mjs.map +1 -0
  38. package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs +1217 -0
  39. package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs.map +1 -0
  40. package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs +779 -0
  41. package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs.map +1 -0
  42. package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs +573 -0
  43. package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs.map +1 -0
  44. package/fesm2022/rt-tools-ui-kit-v2-delta-view.mjs +141 -0
  45. package/fesm2022/rt-tools-ui-kit-v2-delta-view.mjs.map +1 -0
  46. package/fesm2022/rt-tools-ui-kit-v2-detail-list.mjs +68 -0
  47. package/fesm2022/rt-tools-ui-kit-v2-detail-list.mjs.map +1 -0
  48. package/fesm2022/rt-tools-ui-kit-v2-dialog.mjs +478 -0
  49. package/fesm2022/rt-tools-ui-kit-v2-dialog.mjs.map +1 -0
  50. package/fesm2022/rt-tools-ui-kit-v2-dot-field.mjs +183 -0
  51. package/fesm2022/rt-tools-ui-kit-v2-dot-field.mjs.map +1 -0
  52. package/fesm2022/rt-tools-ui-kit-v2-download-link.mjs +44 -0
  53. package/fesm2022/rt-tools-ui-kit-v2-download-link.mjs.map +1 -0
  54. package/fesm2022/rt-tools-ui-kit-v2-dynamic-list.mjs +260 -0
  55. package/fesm2022/rt-tools-ui-kit-v2-dynamic-list.mjs.map +1 -0
  56. package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs +937 -0
  57. package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs.map +1 -0
  58. package/fesm2022/rt-tools-ui-kit-v2-empty-state.mjs +56 -0
  59. package/fesm2022/rt-tools-ui-kit-v2-empty-state.mjs.map +1 -0
  60. package/fesm2022/rt-tools-ui-kit-v2-expansion-panel.mjs +107 -0
  61. package/fesm2022/rt-tools-ui-kit-v2-expansion-panel.mjs.map +1 -0
  62. package/fesm2022/rt-tools-ui-kit-v2-field.mjs +183 -0
  63. package/fesm2022/rt-tools-ui-kit-v2-field.mjs.map +1 -0
  64. package/fesm2022/rt-tools-ui-kit-v2-file-card.mjs +219 -0
  65. package/fesm2022/rt-tools-ui-kit-v2-file-card.mjs.map +1 -0
  66. package/fesm2022/rt-tools-ui-kit-v2-file-drop.mjs +214 -0
  67. package/fesm2022/rt-tools-ui-kit-v2-file-drop.mjs.map +1 -0
  68. package/fesm2022/rt-tools-ui-kit-v2-file-input.mjs +117 -0
  69. package/fesm2022/rt-tools-ui-kit-v2-file-input.mjs.map +1 -0
  70. package/fesm2022/rt-tools-ui-kit-v2-file-list.mjs +32 -0
  71. package/fesm2022/rt-tools-ui-kit-v2-file-list.mjs.map +1 -0
  72. package/fesm2022/rt-tools-ui-kit-v2-filter-control.mjs +91 -0
  73. package/fesm2022/rt-tools-ui-kit-v2-filter-control.mjs.map +1 -0
  74. package/fesm2022/rt-tools-ui-kit-v2-form-control.mjs +220 -0
  75. package/fesm2022/rt-tools-ui-kit-v2-form-control.mjs.map +1 -0
  76. package/fesm2022/rt-tools-ui-kit-v2-header.mjs +72 -0
  77. package/fesm2022/rt-tools-ui-kit-v2-header.mjs.map +1 -0
  78. package/fesm2022/rt-tools-ui-kit-v2-icon-button.mjs +163 -0
  79. package/fesm2022/rt-tools-ui-kit-v2-icon-button.mjs.map +1 -0
  80. package/fesm2022/rt-tools-ui-kit-v2-icon.mjs +674 -0
  81. package/fesm2022/rt-tools-ui-kit-v2-icon.mjs.map +1 -0
  82. package/fesm2022/rt-tools-ui-kit-v2-image-cropper.mjs +540 -0
  83. package/fesm2022/rt-tools-ui-kit-v2-image-cropper.mjs.map +1 -0
  84. package/fesm2022/rt-tools-ui-kit-v2-image-upload.mjs +227 -0
  85. package/fesm2022/rt-tools-ui-kit-v2-image-upload.mjs.map +1 -0
  86. package/fesm2022/rt-tools-ui-kit-v2-info-item.mjs +37 -0
  87. package/fesm2022/rt-tools-ui-kit-v2-info-item.mjs.map +1 -0
  88. package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs +361 -0
  89. package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs.map +1 -0
  90. package/fesm2022/rt-tools-ui-kit-v2-input.mjs +143 -0
  91. package/fesm2022/rt-tools-ui-kit-v2-input.mjs.map +1 -0
  92. package/fesm2022/rt-tools-ui-kit-v2-live-badge.mjs +49 -0
  93. package/fesm2022/rt-tools-ui-kit-v2-live-badge.mjs.map +1 -0
  94. package/fesm2022/rt-tools-ui-kit-v2-logo.mjs +97 -0
  95. package/fesm2022/rt-tools-ui-kit-v2-logo.mjs.map +1 -0
  96. package/fesm2022/rt-tools-ui-kit-v2-markdown-text.mjs +57 -0
  97. package/fesm2022/rt-tools-ui-kit-v2-markdown-text.mjs.map +1 -0
  98. package/fesm2022/rt-tools-ui-kit-v2-menu.mjs +537 -0
  99. package/fesm2022/rt-tools-ui-kit-v2-menu.mjs.map +1 -0
  100. package/fesm2022/rt-tools-ui-kit-v2-message.mjs +105 -0
  101. package/fesm2022/rt-tools-ui-kit-v2-message.mjs.map +1 -0
  102. package/fesm2022/rt-tools-ui-kit-v2-money-list.mjs +71 -0
  103. package/fesm2022/rt-tools-ui-kit-v2-money-list.mjs.map +1 -0
  104. package/fesm2022/rt-tools-ui-kit-v2-multiselect.mjs +315 -0
  105. package/fesm2022/rt-tools-ui-kit-v2-multiselect.mjs.map +1 -0
  106. package/fesm2022/rt-tools-ui-kit-v2-night-grid.mjs +51 -0
  107. package/fesm2022/rt-tools-ui-kit-v2-night-grid.mjs.map +1 -0
  108. package/fesm2022/rt-tools-ui-kit-v2-note.mjs +44 -0
  109. package/fesm2022/rt-tools-ui-kit-v2-note.mjs.map +1 -0
  110. package/fesm2022/rt-tools-ui-kit-v2-notifications-bell.mjs +54 -0
  111. package/fesm2022/rt-tools-ui-kit-v2-notifications-bell.mjs.map +1 -0
  112. package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs +339 -0
  113. package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs.map +1 -0
  114. package/fesm2022/rt-tools-ui-kit-v2-pagination.mjs +187 -0
  115. package/fesm2022/rt-tools-ui-kit-v2-pagination.mjs.map +1 -0
  116. package/fesm2022/rt-tools-ui-kit-v2-photo-viewer.mjs +170 -0
  117. package/fesm2022/rt-tools-ui-kit-v2-photo-viewer.mjs.map +1 -0
  118. package/fesm2022/rt-tools-ui-kit-v2-popover.mjs +312 -0
  119. package/fesm2022/rt-tools-ui-kit-v2-popover.mjs.map +1 -0
  120. package/fesm2022/rt-tools-ui-kit-v2-radio-button.mjs +174 -0
  121. package/fesm2022/rt-tools-ui-kit-v2-radio-button.mjs.map +1 -0
  122. package/fesm2022/rt-tools-ui-kit-v2-radius.mjs +56 -0
  123. package/fesm2022/rt-tools-ui-kit-v2-radius.mjs.map +1 -0
  124. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs +96 -41
  125. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs.map +1 -1
  126. package/fesm2022/rt-tools-ui-kit-v2-ripple.mjs +118 -0
  127. package/fesm2022/rt-tools-ui-kit-v2-ripple.mjs.map +1 -0
  128. package/fesm2022/rt-tools-ui-kit-v2-scroll-area.mjs +290 -0
  129. package/fesm2022/rt-tools-ui-kit-v2-scroll-area.mjs.map +1 -0
  130. package/fesm2022/rt-tools-ui-kit-v2-section-nav.mjs +37 -0
  131. package/fesm2022/rt-tools-ui-kit-v2-section-nav.mjs.map +1 -0
  132. package/fesm2022/rt-tools-ui-kit-v2-select.mjs +495 -0
  133. package/fesm2022/rt-tools-ui-kit-v2-select.mjs.map +1 -0
  134. package/fesm2022/rt-tools-ui-kit-v2-side-menu.mjs +1493 -0
  135. package/fesm2022/rt-tools-ui-kit-v2-side-menu.mjs.map +1 -0
  136. package/fesm2022/rt-tools-ui-kit-v2-skeleton-wrapper.mjs +49 -0
  137. package/fesm2022/rt-tools-ui-kit-v2-skeleton-wrapper.mjs.map +1 -0
  138. package/fesm2022/rt-tools-ui-kit-v2-skeleton.mjs +123 -0
  139. package/fesm2022/rt-tools-ui-kit-v2-skeleton.mjs.map +1 -0
  140. package/fesm2022/rt-tools-ui-kit-v2-spinner.mjs +70 -0
  141. package/fesm2022/rt-tools-ui-kit-v2-spinner.mjs.map +1 -0
  142. package/fesm2022/rt-tools-ui-kit-v2-split-button.mjs +92 -0
  143. package/fesm2022/rt-tools-ui-kit-v2-split-button.mjs.map +1 -0
  144. package/fesm2022/rt-tools-ui-kit-v2-stat-tile.mjs +147 -0
  145. package/fesm2022/rt-tools-ui-kit-v2-stat-tile.mjs.map +1 -0
  146. package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs +117 -0
  147. package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs.map +1 -0
  148. package/fesm2022/rt-tools-ui-kit-v2-table.mjs +1636 -0
  149. package/fesm2022/rt-tools-ui-kit-v2-table.mjs.map +1 -0
  150. package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs +350 -0
  151. package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs.map +1 -0
  152. package/fesm2022/rt-tools-ui-kit-v2-tag.mjs +122 -0
  153. package/fesm2022/rt-tools-ui-kit-v2-tag.mjs.map +1 -0
  154. package/fesm2022/rt-tools-ui-kit-v2-textarea.mjs +85 -0
  155. package/fesm2022/rt-tools-ui-kit-v2-textarea.mjs.map +1 -0
  156. package/fesm2022/rt-tools-ui-kit-v2-theme-toggle.mjs +73 -0
  157. package/fesm2022/rt-tools-ui-kit-v2-theme-toggle.mjs.map +1 -0
  158. package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs +196 -0
  159. package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs.map +1 -0
  160. package/fesm2022/rt-tools-ui-kit-v2-timeline.mjs +39 -0
  161. package/fesm2022/rt-tools-ui-kit-v2-timeline.mjs.map +1 -0
  162. package/fesm2022/rt-tools-ui-kit-v2-toast.mjs +338 -0
  163. package/fesm2022/rt-tools-ui-kit-v2-toast.mjs.map +1 -0
  164. package/fesm2022/rt-tools-ui-kit-v2-toggle-button-group.mjs +132 -0
  165. package/fesm2022/rt-tools-ui-kit-v2-toggle-button-group.mjs.map +1 -0
  166. package/fesm2022/rt-tools-ui-kit-v2-toggle-switch.mjs +162 -0
  167. package/fesm2022/rt-tools-ui-kit-v2-toggle-switch.mjs.map +1 -0
  168. package/fesm2022/rt-tools-ui-kit-v2-toolbar.mjs +135 -0
  169. package/fesm2022/rt-tools-ui-kit-v2-toolbar.mjs.map +1 -0
  170. package/fesm2022/rt-tools-ui-kit-v2-tooltip.mjs +214 -0
  171. package/fesm2022/rt-tools-ui-kit-v2-tooltip.mjs.map +1 -0
  172. package/fesm2022/rt-tools-ui-kit-v2-welcome-dialog.mjs +64 -0
  173. package/fesm2022/rt-tools-ui-kit-v2-welcome-dialog.mjs.map +1 -0
  174. package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs +263 -0
  175. package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs.map +1 -0
  176. package/fesm2022/rt-tools-ui-kit-v2-workspace.mjs +296 -0
  177. package/fesm2022/rt-tools-ui-kit-v2-workspace.mjs.map +1 -0
  178. package/fesm2022/rt-tools-ui-kit-v2.mjs +91 -23164
  179. package/fesm2022/rt-tools-ui-kit-v2.mjs.map +1 -1
  180. package/package.json +349 -1
  181. package/rt-tools-ui-kit-v2-0.18.0.tgz +0 -0
  182. package/src/lib/components/action-bar/CONTEXT.md +5 -0
  183. package/src/lib/components/action-bar/rt-action-bar.component.scss +30 -16
  184. package/src/lib/components/aside/CONTEXT.md +9 -1
  185. package/src/lib/components/aside/footer/rt-aside-footer.component.scss +7 -8
  186. package/src/lib/components/aside/header/rt-aside-header.component.scss +16 -1
  187. package/src/lib/components/aside/rt-aside.component.scss +17 -1
  188. package/src/lib/components/button/CONTEXT.md +12 -11
  189. package/src/lib/components/button/rt-button.directive.scss +36 -0
  190. package/src/lib/components/data-list/settings/rt-data-list-settings-aside.component.scss +2 -2
  191. package/src/lib/components/data-table/cell/rt-data-table-cell.component.scss +1 -1
  192. package/src/lib/components/data-table/filter-cell/rt-data-table-filter-cell.component.scss +1 -1
  193. package/src/lib/components/data-table/rt-data-table.component.scss +1 -1
  194. package/src/lib/components/dialog/CONTEXT.md +9 -0
  195. package/src/lib/components/dialog/content/rt-dialog-content.component.scss +20 -0
  196. package/src/lib/components/dialog/footer/rt-dialog-footer.component.scss +18 -2
  197. package/src/lib/components/dialog/header/rt-dialog-header.component.scss +21 -3
  198. package/src/lib/components/dialog/rt-dialog.component.scss +9 -3
  199. package/src/lib/components/dot-field/CONTEXT.md +31 -0
  200. package/src/lib/components/dot-field/rt-dot-field.component.scss +20 -0
  201. package/src/lib/components/dot-field/stories/component/CONTEXT.md +14 -0
  202. package/src/lib/components/dot-field/stories/component/test-dot-field.component.scss +31 -0
  203. package/src/lib/components/dynamic-selector/CONTEXT.md +6 -0
  204. package/src/lib/components/field/CONTEXT.md +18 -2
  205. package/src/lib/components/header/CONTEXT.md +2 -2
  206. package/src/lib/components/icon/CONTEXT.md +11 -7
  207. package/src/lib/components/icon/rt-icon.component.scss +47 -0
  208. package/src/lib/components/icon-button/CONTEXT.md +27 -20
  209. package/src/lib/components/icon-button/rt-icon-button.component.scss +51 -25
  210. package/src/lib/components/image-upload/CONTEXT.md +20 -15
  211. package/src/lib/components/image-upload/rt-image-upload.component.scss +14 -2
  212. package/src/lib/components/pagination/rt-pagination.component.scss +1 -1
  213. package/src/lib/components/scroll-area/CONTEXT.md +2 -0
  214. package/src/lib/components/scroll-area/rt-scroll-area.component.scss +20 -3
  215. package/src/lib/components/select/rt-select.component.scss +4 -0
  216. package/src/lib/components/side-menu/CONTEXT.md +7 -2
  217. package/src/lib/components/spinner/CONTEXT.md +15 -8
  218. package/src/lib/components/spinner/rt-spinner.component.scss +108 -9
  219. package/src/lib/components/tag/rt-tag.component.scss +43 -23
  220. package/src/lib/components/toast/CONTEXT.md +8 -0
  221. package/src/lib/components/toast/rt-toast.component.scss +74 -15
  222. package/src/lib/components/toast/rt-toaster.component.scss +5 -1
  223. package/src/lib/components/toggle-button-group/rt-toggle-button-group.component.scss +35 -37
  224. package/src/lib/components/toggle-switch/CONTEXT.md +11 -3
  225. package/src/lib/components/toggle-switch/rt-toggle-switch.component.scss +53 -14
  226. package/src/lib/components/toolbar/rt-toolbar.component.scss +15 -4
  227. package/src/lib/components/tooltip/CONTEXT.md +5 -5
  228. package/src/rich-editor/lib/components/chat/CONTEXT.md +7 -2
  229. package/src/rich-editor/lib/components/chat/rt-chat.component.scss +25 -0
  230. package/src/styles/_semantic.scss +1 -1
  231. package/styles/tokens.css +43 -8
  232. package/types/rt-tools-ui-kit-v2-accordion.d.ts +30 -0
  233. package/types/rt-tools-ui-kit-v2-action-bar.d.ts +140 -0
  234. package/types/rt-tools-ui-kit-v2-aside-section.d.ts +25 -0
  235. package/types/rt-tools-ui-kit-v2-aside.d.ts +436 -0
  236. package/types/rt-tools-ui-kit-v2-autocomplete.d.ts +78 -0
  237. package/types/rt-tools-ui-kit-v2-bar-list.d.ts +41 -0
  238. package/types/rt-tools-ui-kit-v2-bottom-sheet.d.ts +20 -0
  239. package/types/rt-tools-ui-kit-v2-button.d.ts +76 -0
  240. package/types/rt-tools-ui-kit-v2-calendar.d.ts +96 -0
  241. package/types/rt-tools-ui-kit-v2-card.d.ts +38 -0
  242. package/types/rt-tools-ui-kit-v2-checkbox.d.ts +46 -0
  243. package/types/rt-tools-ui-kit-v2-collapsible-text.d.ts +20 -0
  244. package/types/rt-tools-ui-kit-v2-confirm-popover.d.ts +85 -0
  245. package/types/rt-tools-ui-kit-v2-container.d.ts +425 -0
  246. package/types/rt-tools-ui-kit-v2-core.d.ts +1222 -0
  247. package/types/rt-tools-ui-kit-v2-counter-row.d.ts +22 -0
  248. package/types/rt-tools-ui-kit-v2-counter.d.ts +70 -0
  249. package/types/rt-tools-ui-kit-v2-data-list.d.ts +334 -0
  250. package/types/rt-tools-ui-kit-v2-data-table.d.ts +494 -0
  251. package/types/rt-tools-ui-kit-v2-date-picker.d.ts +181 -0
  252. package/types/rt-tools-ui-kit-v2-date-range.d.ts +98 -0
  253. package/types/rt-tools-ui-kit-v2-delta-view.d.ts +20 -0
  254. package/types/rt-tools-ui-kit-v2-detail-list.d.ts +33 -0
  255. package/types/rt-tools-ui-kit-v2-dialog.d.ts +287 -0
  256. package/types/rt-tools-ui-kit-v2-dot-field.d.ts +17 -0
  257. package/types/rt-tools-ui-kit-v2-download-link.d.ts +17 -0
  258. package/types/rt-tools-ui-kit-v2-dynamic-list.d.ts +139 -0
  259. package/types/rt-tools-ui-kit-v2-dynamic-selector.d.ts +384 -0
  260. package/types/rt-tools-ui-kit-v2-empty-state.d.ts +29 -0
  261. package/types/rt-tools-ui-kit-v2-expansion-panel.d.ts +57 -0
  262. package/types/rt-tools-ui-kit-v2-field.d.ts +82 -0
  263. package/types/rt-tools-ui-kit-v2-file-card.d.ts +114 -0
  264. package/types/rt-tools-ui-kit-v2-file-drop.d.ts +75 -0
  265. package/types/rt-tools-ui-kit-v2-file-input.d.ts +48 -0
  266. package/types/rt-tools-ui-kit-v2-file-list.d.ts +13 -0
  267. package/types/rt-tools-ui-kit-v2-filter-control.d.ts +72 -0
  268. package/types/rt-tools-ui-kit-v2-form-control.d.ts +74 -0
  269. package/types/rt-tools-ui-kit-v2-header.d.ts +40 -0
  270. package/types/rt-tools-ui-kit-v2-icon-button.d.ts +113 -0
  271. package/types/rt-tools-ui-kit-v2-icon.d.ts +238 -0
  272. package/types/rt-tools-ui-kit-v2-image-cropper.d.ts +168 -0
  273. package/types/rt-tools-ui-kit-v2-image-upload.d.ts +102 -0
  274. package/types/rt-tools-ui-kit-v2-info-item.d.ts +13 -0
  275. package/types/rt-tools-ui-kit-v2-input-number.d.ts +67 -0
  276. package/types/rt-tools-ui-kit-v2-input.d.ts +54 -0
  277. package/types/rt-tools-ui-kit-v2-live-badge.d.ts +23 -0
  278. package/types/rt-tools-ui-kit-v2-logo.d.ts +58 -0
  279. package/types/rt-tools-ui-kit-v2-markdown-text.d.ts +30 -0
  280. package/types/rt-tools-ui-kit-v2-menu.d.ts +217 -0
  281. package/types/rt-tools-ui-kit-v2-message.d.ts +56 -0
  282. package/types/rt-tools-ui-kit-v2-money-list.d.ts +34 -0
  283. package/types/rt-tools-ui-kit-v2-multiselect.d.ts +93 -0
  284. package/types/rt-tools-ui-kit-v2-night-grid.d.ts +39 -0
  285. package/types/rt-tools-ui-kit-v2-note.d.ts +21 -0
  286. package/types/rt-tools-ui-kit-v2-notifications-bell.d.ts +23 -0
  287. package/types/rt-tools-ui-kit-v2-page-header.d.ts +173 -0
  288. package/types/rt-tools-ui-kit-v2-pagination.d.ts +64 -0
  289. package/types/rt-tools-ui-kit-v2-photo-viewer.d.ts +98 -0
  290. package/types/rt-tools-ui-kit-v2-popover.d.ts +79 -0
  291. package/types/rt-tools-ui-kit-v2-radio-button.d.ts +61 -0
  292. package/types/rt-tools-ui-kit-v2-radius.d.ts +37 -0
  293. package/types/rt-tools-ui-kit-v2-rich-editor.d.ts +16 -20
  294. package/types/rt-tools-ui-kit-v2-ripple.d.ts +39 -0
  295. package/types/rt-tools-ui-kit-v2-scroll-area.d.ts +91 -0
  296. package/types/rt-tools-ui-kit-v2-section-nav.d.ts +23 -0
  297. package/types/rt-tools-ui-kit-v2-select.d.ts +215 -0
  298. package/types/rt-tools-ui-kit-v2-side-menu.d.ts +483 -0
  299. package/types/rt-tools-ui-kit-v2-skeleton-wrapper.d.ts +32 -0
  300. package/types/rt-tools-ui-kit-v2-skeleton.d.ts +41 -0
  301. package/types/rt-tools-ui-kit-v2-spinner.d.ts +56 -0
  302. package/types/rt-tools-ui-kit-v2-split-button.d.ts +72 -0
  303. package/types/rt-tools-ui-kit-v2-stat-tile.d.ts +81 -0
  304. package/types/rt-tools-ui-kit-v2-stepper.d.ts +51 -0
  305. package/types/rt-tools-ui-kit-v2-table.d.ts +739 -0
  306. package/types/rt-tools-ui-kit-v2-tabs.d.ts +153 -0
  307. package/types/rt-tools-ui-kit-v2-tag.d.ts +70 -0
  308. package/types/rt-tools-ui-kit-v2-textarea.d.ts +36 -0
  309. package/types/rt-tools-ui-kit-v2-theme-toggle.d.ts +43 -0
  310. package/types/rt-tools-ui-kit-v2-thread-list.d.ts +111 -0
  311. package/types/rt-tools-ui-kit-v2-timeline.d.ts +35 -0
  312. package/types/rt-tools-ui-kit-v2-toast.d.ts +103 -0
  313. package/types/rt-tools-ui-kit-v2-toggle-button-group.d.ts +109 -0
  314. package/types/rt-tools-ui-kit-v2-toggle-switch.d.ts +85 -0
  315. package/types/rt-tools-ui-kit-v2-toolbar.d.ts +66 -0
  316. package/types/rt-tools-ui-kit-v2-tooltip.d.ts +74 -0
  317. package/types/rt-tools-ui-kit-v2-welcome-dialog.d.ts +33 -0
  318. package/types/rt-tools-ui-kit-v2-workspace-details.d.ts +128 -0
  319. package/types/rt-tools-ui-kit-v2-workspace.d.ts +84 -0
  320. package/types/rt-tools-ui-kit-v2.d.ts +87 -9290
  321. package/rt-tools-ui-kit-v2-0.16.0.tgz +0 -0
@@ -0,0 +1,338 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, inject, ElementRef, signal, computed, input, booleanAttribute, output, effect, HostBinding, ViewEncapsulation, ChangeDetectionStrategy, Component, linkedSignal, numberAttribute } from '@angular/core';
3
+ import { BlockDirective, ElemDirective } from '@rt-tools/core';
4
+ import { RT_KIT_LABELS, NotificationBus, rtKitLabel } from '@rt-tools/ui-kit-v2/core';
5
+ import { RtButtonDirective } from '@rt-tools/ui-kit-v2/button';
6
+ import { RtIconButtonComponent } from '@rt-tools/ui-kit-v2/icon-button';
7
+ import { RtIconComponent } from '@rt-tools/ui-kit-v2/icon';
8
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
9
+
10
+ const RT_TOASTER_GAP_PX = 14;
11
+ /**
12
+ * Значки severity у тоста. Приложение подменяет карту целиком — например, на имена
13
+ * Material, — а тост со своим `icon` берёт свой значок мимо карты.
14
+ */
15
+ const RT_TOAST_SEVERITY_ICONS = new InjectionToken('RT_TOAST_SEVERITY_ICONS', {
16
+ providedIn: 'root',
17
+ factory: () => ({
18
+ info: 'info-circle',
19
+ success: 'check-circle',
20
+ warning: 'exclamation-circle',
21
+ danger: 'times-circle',
22
+ }),
23
+ });
24
+
25
+ const BEM_BLOCK$1 = 'rt-toast';
26
+ const UNMOUNT_DELAY_MS = 200;
27
+ class RtToastComponent {
28
+ #host;
29
+ #severityIcons;
30
+ #mounted;
31
+ #removed;
32
+ #offsetBeforeRemove;
33
+ #initialHeight;
34
+ #heightIndex;
35
+ #heightBefore;
36
+ #offset;
37
+ #positionY;
38
+ #timeoutId;
39
+ #unmountTimeoutId;
40
+ #remainingTimeMs;
41
+ #closeTimerStartedAt;
42
+ #closeTimerPausedAt;
43
+ get hostModifierClasses() {
44
+ return {
45
+ [`${BEM_BLOCK$1}--severity--${this.toast().severity}`]: true,
46
+ [`${BEM_BLOCK$1}--filled`]: this.toast().filled === true,
47
+ [`${BEM_BLOCK$1}--y--${this.#positionY()}`]: true,
48
+ [`${BEM_BLOCK$1}--mounted`]: this.#mounted(),
49
+ [`${BEM_BLOCK$1}--removed`]: this.#removed(),
50
+ [`${BEM_BLOCK$1}--front`]: this.index() === 0,
51
+ [`${BEM_BLOCK$1}--hidden`]: this.index() + 1 > this.visibleToasts(),
52
+ [`${BEM_BLOCK$1}--expanded`]: this.expanded() || (this.expandByDefault() && this.#mounted()),
53
+ [`${BEM_BLOCK$1}--paused`]: this.paused(),
54
+ };
55
+ }
56
+ get hostStackStyles() {
57
+ return {
58
+ '--index': `${this.index()}`,
59
+ '--toasts-before': `${this.index()}`,
60
+ '--z-index': `${this.totalToasts() - this.index()}`,
61
+ '--offset': `${this.#removed() ? this.#offsetBeforeRemove() : this.#offset()}px`,
62
+ '--initial-height': this.expandByDefault() ? 'auto' : `${this.#initialHeight()}px`,
63
+ '--lifetime': `${this.lifetime() ?? 0}ms`,
64
+ };
65
+ }
66
+ constructor() {
67
+ this.#host = inject(ElementRef);
68
+ this.#severityIcons = inject(RT_TOAST_SEVERITY_ICONS);
69
+ this.#mounted = signal(false, /* @ts-ignore */
70
+ ...(ngDevMode ? [{ debugName: "#mounted" }] : /* istanbul ignore next */ []));
71
+ this.#removed = signal(false, /* @ts-ignore */
72
+ ...(ngDevMode ? [{ debugName: "#removed" }] : /* istanbul ignore next */ []));
73
+ this.#offsetBeforeRemove = signal(0, /* @ts-ignore */
74
+ ...(ngDevMode ? [{ debugName: "#offsetBeforeRemove" }] : /* istanbul ignore next */ []));
75
+ this.#initialHeight = signal(0, /* @ts-ignore */
76
+ ...(ngDevMode ? [{ debugName: "#initialHeight" }] : /* istanbul ignore next */ []));
77
+ this.#heightIndex = computed(() => this.heights().findIndex((item) => item.toastId === this.toast().id), /* @ts-ignore */
78
+ ...(ngDevMode ? [{ debugName: "#heightIndex" }] : /* istanbul ignore next */ []));
79
+ this.#heightBefore = computed(() => this.heights().reduce((total, item, itemIndex) => itemIndex >= this.#heightIndex() ? total : total + item.height, 0), /* @ts-ignore */
80
+ ...(ngDevMode ? [{ debugName: "#heightBefore" }] : /* istanbul ignore next */ []));
81
+ this.#offset = computed(() => Math.round(this.#heightIndex() * RT_TOASTER_GAP_PX + this.#heightBefore()), /* @ts-ignore */
82
+ ...(ngDevMode ? [{ debugName: "#offset" }] : /* istanbul ignore next */ []));
83
+ this.#positionY = computed(() => this.position().startsWith('top') ? 'top' : 'bottom', /* @ts-ignore */
84
+ ...(ngDevMode ? [{ debugName: "#positionY" }] : /* istanbul ignore next */ []));
85
+ this.#remainingTimeMs = 0;
86
+ this.#closeTimerStartedAt = 0;
87
+ this.#closeTimerPausedAt = 0;
88
+ this.t = inject(RT_KIT_LABELS);
89
+ /** Свой значок тоста важнее карты severity; `null` у тоста значок снимает. */
90
+ this.icon = computed(() => {
91
+ const icon = this.toast().icon;
92
+ return icon === undefined ? this.#severityIcons[this.toast().severity] : icon;
93
+ }, /* @ts-ignore */
94
+ ...(ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []));
95
+ /** Срок жизни тоста: свой, если задан, иначе тостера; `null` — таймера нет. */
96
+ this.lifetime = computed(() => {
97
+ const duration = this.toast().duration;
98
+ return duration === undefined ? this.duration() : duration;
99
+ }, /* @ts-ignore */
100
+ ...(ngDevMode ? [{ debugName: "lifetime" }] : /* istanbul ignore next */ []));
101
+ this.showProgress = computed(() => this.toast().progress === true && this.lifetime() !== null, /* @ts-ignore */
102
+ ...(ngDevMode ? [{ debugName: "showProgress" }] : /* istanbul ignore next */ []));
103
+ /** Таймер и полоса срока встают от одного признака, чтобы не разойтись. */
104
+ this.paused = computed(() => this.expanded() || this.interacting(), /* @ts-ignore */
105
+ ...(ngDevMode ? [{ debugName: "paused" }] : /* istanbul ignore next */ []));
106
+ this.toast = input.required(/* @ts-ignore */
107
+ ...(ngDevMode ? [{ debugName: "toast" }] : /* istanbul ignore next */ []));
108
+ this.index = input.required(/* @ts-ignore */
109
+ ...(ngDevMode ? [{ debugName: "index" }] : /* istanbul ignore next */ []));
110
+ this.totalToasts = input.required(/* @ts-ignore */
111
+ ...(ngDevMode ? [{ debugName: "totalToasts" }] : /* istanbul ignore next */ []));
112
+ this.heights = input.required(/* @ts-ignore */
113
+ ...(ngDevMode ? [{ debugName: "heights" }] : /* istanbul ignore next */ []));
114
+ this.expanded = input.required({ ...(ngDevMode ? { debugName: "expanded" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
115
+ this.expandByDefault = input(false, { ...(ngDevMode ? { debugName: "expandByDefault" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
116
+ this.interacting = input(false, { ...(ngDevMode ? { debugName: "interacting" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
117
+ this.position = input('bottom-right', /* @ts-ignore */
118
+ ...(ngDevMode ? [{ debugName: "position" }] : /* istanbul ignore next */ []));
119
+ this.visibleToasts = input(3, /* @ts-ignore */
120
+ ...(ngDevMode ? [{ debugName: "visibleToasts" }] : /* istanbul ignore next */ []));
121
+ this.duration = input(4000, /* @ts-ignore */
122
+ ...(ngDevMode ? [{ debugName: "duration" }] : /* istanbul ignore next */ []));
123
+ this.heightAdded = output();
124
+ this.heightRemoved = output();
125
+ this.dismissed = output();
126
+ effect((onCleanup) => {
127
+ if (!this.#mounted() || this.#removed() || this.lifetime() === null) {
128
+ return;
129
+ }
130
+ if (this.paused()) {
131
+ this.#pauseTimer();
132
+ }
133
+ else {
134
+ this.#startTimer();
135
+ }
136
+ onCleanup(() => clearTimeout(this.#timeoutId));
137
+ });
138
+ // Вытесненный в режиме `replace` уходит тем же путём, что и закрытый крестиком.
139
+ effect(() => {
140
+ if (this.#mounted() && this.toast().replaced === true) {
141
+ this.#deleteToast();
142
+ }
143
+ });
144
+ }
145
+ ngAfterViewInit() {
146
+ this.#remainingTimeMs = this.lifetime() ?? 0;
147
+ const height = this.#host.nativeElement.getBoundingClientRect().height;
148
+ this.#initialHeight.set(height);
149
+ this.heightAdded.emit({ toastId: this.toast().id, height });
150
+ this.#mounted.set(true);
151
+ }
152
+ ngOnDestroy() {
153
+ clearTimeout(this.#timeoutId);
154
+ clearTimeout(this.#unmountTimeoutId);
155
+ }
156
+ onAction() {
157
+ this.toast().action?.handler();
158
+ this.#deleteToast();
159
+ }
160
+ onSecondaryAction() {
161
+ this.toast().secondaryAction?.handler();
162
+ this.#deleteToast();
163
+ }
164
+ onClose() {
165
+ this.#deleteToast();
166
+ }
167
+ #deleteToast() {
168
+ if (this.#removed()) {
169
+ return;
170
+ }
171
+ this.#removed.set(true);
172
+ this.#offsetBeforeRemove.set(this.#offset());
173
+ this.heightRemoved.emit(this.toast().id);
174
+ this.#unmountTimeoutId = setTimeout(() => this.dismissed.emit(this.toast().id), UNMOUNT_DELAY_MS);
175
+ }
176
+ #startTimer() {
177
+ this.#closeTimerStartedAt = Date.now();
178
+ this.#timeoutId = setTimeout(() => this.#deleteToast(), this.#remainingTimeMs);
179
+ }
180
+ #pauseTimer() {
181
+ if (this.#closeTimerPausedAt < this.#closeTimerStartedAt) {
182
+ const elapsedMs = Date.now() - this.#closeTimerStartedAt;
183
+ this.#remainingTimeMs = this.#remainingTimeMs - elapsedMs;
184
+ }
185
+ this.#closeTimerPausedAt = Date.now();
186
+ }
187
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: RtToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
188
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: RtToastComponent, isStandalone: true, selector: "rt-toast", inputs: { toast: { classPropertyName: "toast", publicName: "toast", isSignal: true, isRequired: true, transformFunction: null }, index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: true, transformFunction: null }, totalToasts: { classPropertyName: "totalToasts", publicName: "totalToasts", isSignal: true, isRequired: true, transformFunction: null }, heights: { classPropertyName: "heights", publicName: "heights", isSignal: true, isRequired: true, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: true, transformFunction: null }, expandByDefault: { classPropertyName: "expandByDefault", publicName: "expandByDefault", isSignal: true, isRequired: false, transformFunction: null }, interacting: { classPropertyName: "interacting", publicName: "interacting", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, visibleToasts: { classPropertyName: "visibleToasts", publicName: "visibleToasts", isSignal: true, isRequired: false, transformFunction: null }, duration: { classPropertyName: "duration", publicName: "duration", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { heightAdded: "heightAdded", heightRemoved: "heightRemoved", dismissed: "dismissed" }, host: { attributes: { "role": "status", "aria-atomic": "true" }, properties: { "class": "this.hostModifierClasses", "style": "this.hostStackStyles" }, classAttribute: "rt-toast" }, ngImport: i0, template: "<ng-container rtBlock=\"rt-toast\">\n @if (icon(); as icon) {\n <rt-icon rtElem=\"icon\" qa-dataid=\"toast-icon\" size=\"sm\" [name]=\"icon\" />\n }\n <div rtElem=\"content\" qa-dataid=\"toast-content\">\n @if (toast().meta; as meta) {\n <span rtElem=\"meta\" qa-dataid=\"toast-meta\">{{ meta }}</span>\n }\n <span rtElem=\"message\" qa-dataid=\"toast-message\">{{ toast().message }}</span>\n @if (toast().description; as description) {\n <span rtElem=\"description\" qa-dataid=\"toast-description\">{{ description }}</span>\n }\n @if (toast().action || toast().secondaryAction) {\n <div rtElem=\"actions\">\n @if (toast().action; as action) {\n <button rtButton rtElem=\"action\" qa-dataid=\"toast-action\" size=\"sm\" type=\"button\" (click)=\"onAction()\">\n {{ action.label }}\n </button>\n }\n @if (toast().secondaryAction; as secondaryAction) {\n <button\n rtButton\n rtElem=\"action\"\n qa-dataid=\"toast-secondary-action\"\n size=\"sm\"\n theme=\"secondary\"\n appearance=\"text\"\n type=\"button\"\n (click)=\"onSecondaryAction()\">\n {{ secondaryAction.label }}\n </button>\n }\n </div>\n }\n </div>\n <rt-icon-button\n rtElem=\"close\"\n qa-dataid=\"toast-close\"\n icon=\"ico-close\"\n variant=\"ghost\"\n size=\"sm\"\n [ariaLabel]=\"t().uiClose\"\n (clicked)=\"onClose()\" />\n @if (showProgress()) {\n <span rtElem=\"progress\" qa-dataid=\"toast-progress\" aria-hidden=\"true\"></span>\n }\n</ng-container>\n", styles: ["@charset \"UTF-8\";@layer rt-kit.components{.rt-toast{--rt-toast-radius: var(--rt-radius-md);--rt-toast-border-width: var(--rt-border-width-thin);--rt-toast-shadow: var(--rt-shadow-card);--rt-toast-enter-duration: var(--rt-duration-slow);--rt-toast-shadow-duration: var(--rt-duration-base);--rt-toast-leave-duration: var(--rt-duration-slower);--rt-toast-fade-duration: var(--rt-duration-fast);--rt-toast-severity-color: var(--rt-color-state-info);--y: translateY(100%);--lift-amount: calc(var(--lift) * var(--gap));position:absolute;z-index:var(--z-index);display:flex;width:100%;box-sizing:border-box;align-items:center;padding:var(--rt-space-4);border:var(--rt-toast-border-width) solid var(--rt-toast-border-color, var(--rt-color-border-subtle));border-radius:var(--rt-toast-radius);background:var(--rt-toast-bg, var(--rt-color-bg-surface));box-shadow:var(--rt-toast-shadow);color:var(--rt-toast-color, var(--rt-color-text-primary));font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-medium);gap:var(--rt-space-2);line-height:var(--rt-leading-normal);opacity:0;outline:none;overflow-wrap:anywhere;touch-action:none;transform:var(--y);transition:transform var(--rt-toast-enter-duration),opacity var(--rt-toast-enter-duration),height var(--rt-toast-enter-duration),box-shadow var(--rt-toast-shadow-duration)}.rt-toast:after{position:absolute;bottom:100%;left:0;width:100%;height:calc(var(--gap) + 1px);content:\"\"}.rt-toast>*{transition:opacity var(--rt-toast-enter-duration)}.rt-toast--y--top{--y: translateY(-100%);--lift: 1;top:0}.rt-toast--y--bottom{--y: translateY(100%);--lift: -1;bottom:0}.rt-toast--severity--success{--rt-toast-severity-color: var(--rt-color-state-success)}.rt-toast--severity--warning{--rt-toast-severity-color: var(--rt-color-state-warning)}.rt-toast--severity--danger{--rt-toast-severity-color: var(--rt-color-state-danger)}.rt-toast--filled .rt-toast__description{color:inherit}.rt-toast--filled .rt-toast__icon{color:currentcolor}.rt-toast--filled.rt-toast--severity--info{border-color:var(--rt-toast-filled-info-border-color, var(--rt-color-state-info-bg));background:var(--rt-toast-filled-info-bg, var(--rt-color-state-info-bg));color:var(--rt-toast-filled-info-color, var(--rt-color-state-info))}.rt-toast--filled.rt-toast--severity--success{border-color:var(--rt-toast-filled-success-border-color, var(--rt-color-state-success-bg));background:var(--rt-toast-filled-success-bg, var(--rt-color-state-success-bg));color:var(--rt-toast-filled-success-color, var(--rt-color-state-success))}.rt-toast--filled.rt-toast--severity--warning{border-color:var(--rt-toast-filled-warning-border-color, var(--rt-color-state-warning-bg));background:var(--rt-toast-filled-warning-bg, var(--rt-color-state-warning-bg));color:var(--rt-toast-filled-warning-color, var(--rt-color-state-warning))}.rt-toast--filled.rt-toast--severity--danger{border-color:var(--rt-toast-filled-danger-border-color, var(--rt-color-state-danger-bg));background:var(--rt-toast-filled-danger-bg, var(--rt-color-state-danger-bg));color:var(--rt-toast-filled-danger-color, var(--rt-color-state-danger))}.rt-toast--mounted{--y: translateY(0);opacity:1}.rt-toast:not(.rt-toast--expanded,.rt-toast--front){--scale: var(--toasts-before) * .05 + 1;--y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}.rt-toast:not(.rt-toast--expanded,.rt-toast--front)>*{opacity:0}.rt-toast--hidden{opacity:0;pointer-events:none}.rt-toast--mounted.rt-toast--expanded{--y: translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}.rt-toast--removed.rt-toast--front{--y: translateY(calc(var(--lift) * -100%));opacity:0}.rt-toast--removed.rt-toast--expanded:not(.rt-toast--front){--y: translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}.rt-toast--removed:not(.rt-toast--front,.rt-toast--expanded){--y: translateY(40%);opacity:0;transition:transform var(--rt-toast-leave-duration),opacity var(--rt-toast-shadow-duration)}.rt-toast--removed:not(.rt-toast--front):before{position:absolute;content:\"\";inset:0;transform:scaleY(2)}.rt-toast__icon{flex-shrink:0;color:var(--rt-toast-icon-color, var(--rt-toast-severity-color))}.rt-toast__progress{position:absolute;bottom:0;animation:rt-toast-progress var(--lifetime) linear forwards;background:var(--rt-toast-progress-color, var(--rt-toast-severity-color));block-size:var(--rt-toast-progress-height, var(--rt-space-0-5));border-end-end-radius:var(--rt-toast-radius);border-end-start-radius:var(--rt-toast-radius);inset-inline:0;transform-origin:left center}.rt-toast--paused .rt-toast__progress{animation-play-state:paused}.rt-toast__content{display:flex;min-width:0;flex:1 1 auto;flex-direction:column;gap:var(--rt-space-0-5)}.rt-toast__description,.rt-toast__meta{color:var(--rt-color-text-muted);font-size:var(--rt-text-xs);font-weight:var(--rt-font-weight-regular)}.rt-toast__actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--rt-space-2);margin-block-start:var(--rt-space-1)}.rt-toast .rt-toast__action{align-self:flex-start}.rt-toast .rt-toast__action:not(.rt-button--text){--rt-btn-bg: var(--rt-toast-action-color, var(--rt-color-action-primary));--rt-btn-bg-hover: var(--rt-toast-action-color, var(--rt-color-action-primary-hover));--rt-btn-bg-active: var(--rt-toast-action-color, var(--rt-color-action-primary-active))}.rt-toast .rt-toast__close{--rt-icon-button-color: var(--rt-toast-close-color, var(--rt-color-text-primary));flex-shrink:0;align-self:flex-start;margin-inline-start:auto;opacity:0;transition:opacity var(--rt-toast-fade-duration)}.rt-toast:hover .rt-toast__close,.rt-toast .rt-toast__close:focus-visible{opacity:1}@media(prefers-reduced-motion){.rt-toast{transition:none}.rt-toast>*{transition:none}}@keyframes rt-toast-progress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}}\n"], dependencies: [{ kind: "directive", type: RtButtonDirective, selector: "button[rtButton], a[rtButton]", inputs: ["label", "icon", "iconPos", "theme", "appearance", "size", "loading", "loadingIcon", "loadingLabel", "pressed"] }, { kind: "component", type: RtIconComponent, selector: "rt-icon", inputs: ["name", "glyph", "size", "color", "fill", "spin", "rotate"] }, { kind: "component", type: RtIconButtonComponent, selector: "rt-icon-button", inputs: ["icon", "glyph", "ariaLabel", "variant", "iconColor", "iconFill", "size", "iconSize", "type", "tooltip", "tabIndex", "loading", "disabled", "active", "indicator"], outputs: ["clicked"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
189
+ }
190
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: RtToastComponent, decorators: [{
191
+ type: Component,
192
+ args: [{ selector: 'rt-toast', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [RtButtonDirective, RtIconComponent, RtIconButtonComponent, BlockDirective, ElemDirective], host: {
193
+ class: BEM_BLOCK$1,
194
+ role: 'status',
195
+ 'aria-atomic': 'true',
196
+ }, template: "<ng-container rtBlock=\"rt-toast\">\n @if (icon(); as icon) {\n <rt-icon rtElem=\"icon\" qa-dataid=\"toast-icon\" size=\"sm\" [name]=\"icon\" />\n }\n <div rtElem=\"content\" qa-dataid=\"toast-content\">\n @if (toast().meta; as meta) {\n <span rtElem=\"meta\" qa-dataid=\"toast-meta\">{{ meta }}</span>\n }\n <span rtElem=\"message\" qa-dataid=\"toast-message\">{{ toast().message }}</span>\n @if (toast().description; as description) {\n <span rtElem=\"description\" qa-dataid=\"toast-description\">{{ description }}</span>\n }\n @if (toast().action || toast().secondaryAction) {\n <div rtElem=\"actions\">\n @if (toast().action; as action) {\n <button rtButton rtElem=\"action\" qa-dataid=\"toast-action\" size=\"sm\" type=\"button\" (click)=\"onAction()\">\n {{ action.label }}\n </button>\n }\n @if (toast().secondaryAction; as secondaryAction) {\n <button\n rtButton\n rtElem=\"action\"\n qa-dataid=\"toast-secondary-action\"\n size=\"sm\"\n theme=\"secondary\"\n appearance=\"text\"\n type=\"button\"\n (click)=\"onSecondaryAction()\">\n {{ secondaryAction.label }}\n </button>\n }\n </div>\n }\n </div>\n <rt-icon-button\n rtElem=\"close\"\n qa-dataid=\"toast-close\"\n icon=\"ico-close\"\n variant=\"ghost\"\n size=\"sm\"\n [ariaLabel]=\"t().uiClose\"\n (clicked)=\"onClose()\" />\n @if (showProgress()) {\n <span rtElem=\"progress\" qa-dataid=\"toast-progress\" aria-hidden=\"true\"></span>\n }\n</ng-container>\n", styles: ["@charset \"UTF-8\";@layer rt-kit.components{.rt-toast{--rt-toast-radius: var(--rt-radius-md);--rt-toast-border-width: var(--rt-border-width-thin);--rt-toast-shadow: var(--rt-shadow-card);--rt-toast-enter-duration: var(--rt-duration-slow);--rt-toast-shadow-duration: var(--rt-duration-base);--rt-toast-leave-duration: var(--rt-duration-slower);--rt-toast-fade-duration: var(--rt-duration-fast);--rt-toast-severity-color: var(--rt-color-state-info);--y: translateY(100%);--lift-amount: calc(var(--lift) * var(--gap));position:absolute;z-index:var(--z-index);display:flex;width:100%;box-sizing:border-box;align-items:center;padding:var(--rt-space-4);border:var(--rt-toast-border-width) solid var(--rt-toast-border-color, var(--rt-color-border-subtle));border-radius:var(--rt-toast-radius);background:var(--rt-toast-bg, var(--rt-color-bg-surface));box-shadow:var(--rt-toast-shadow);color:var(--rt-toast-color, var(--rt-color-text-primary));font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-medium);gap:var(--rt-space-2);line-height:var(--rt-leading-normal);opacity:0;outline:none;overflow-wrap:anywhere;touch-action:none;transform:var(--y);transition:transform var(--rt-toast-enter-duration),opacity var(--rt-toast-enter-duration),height var(--rt-toast-enter-duration),box-shadow var(--rt-toast-shadow-duration)}.rt-toast:after{position:absolute;bottom:100%;left:0;width:100%;height:calc(var(--gap) + 1px);content:\"\"}.rt-toast>*{transition:opacity var(--rt-toast-enter-duration)}.rt-toast--y--top{--y: translateY(-100%);--lift: 1;top:0}.rt-toast--y--bottom{--y: translateY(100%);--lift: -1;bottom:0}.rt-toast--severity--success{--rt-toast-severity-color: var(--rt-color-state-success)}.rt-toast--severity--warning{--rt-toast-severity-color: var(--rt-color-state-warning)}.rt-toast--severity--danger{--rt-toast-severity-color: var(--rt-color-state-danger)}.rt-toast--filled .rt-toast__description{color:inherit}.rt-toast--filled .rt-toast__icon{color:currentcolor}.rt-toast--filled.rt-toast--severity--info{border-color:var(--rt-toast-filled-info-border-color, var(--rt-color-state-info-bg));background:var(--rt-toast-filled-info-bg, var(--rt-color-state-info-bg));color:var(--rt-toast-filled-info-color, var(--rt-color-state-info))}.rt-toast--filled.rt-toast--severity--success{border-color:var(--rt-toast-filled-success-border-color, var(--rt-color-state-success-bg));background:var(--rt-toast-filled-success-bg, var(--rt-color-state-success-bg));color:var(--rt-toast-filled-success-color, var(--rt-color-state-success))}.rt-toast--filled.rt-toast--severity--warning{border-color:var(--rt-toast-filled-warning-border-color, var(--rt-color-state-warning-bg));background:var(--rt-toast-filled-warning-bg, var(--rt-color-state-warning-bg));color:var(--rt-toast-filled-warning-color, var(--rt-color-state-warning))}.rt-toast--filled.rt-toast--severity--danger{border-color:var(--rt-toast-filled-danger-border-color, var(--rt-color-state-danger-bg));background:var(--rt-toast-filled-danger-bg, var(--rt-color-state-danger-bg));color:var(--rt-toast-filled-danger-color, var(--rt-color-state-danger))}.rt-toast--mounted{--y: translateY(0);opacity:1}.rt-toast:not(.rt-toast--expanded,.rt-toast--front){--scale: var(--toasts-before) * .05 + 1;--y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}.rt-toast:not(.rt-toast--expanded,.rt-toast--front)>*{opacity:0}.rt-toast--hidden{opacity:0;pointer-events:none}.rt-toast--mounted.rt-toast--expanded{--y: translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}.rt-toast--removed.rt-toast--front{--y: translateY(calc(var(--lift) * -100%));opacity:0}.rt-toast--removed.rt-toast--expanded:not(.rt-toast--front){--y: translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}.rt-toast--removed:not(.rt-toast--front,.rt-toast--expanded){--y: translateY(40%);opacity:0;transition:transform var(--rt-toast-leave-duration),opacity var(--rt-toast-shadow-duration)}.rt-toast--removed:not(.rt-toast--front):before{position:absolute;content:\"\";inset:0;transform:scaleY(2)}.rt-toast__icon{flex-shrink:0;color:var(--rt-toast-icon-color, var(--rt-toast-severity-color))}.rt-toast__progress{position:absolute;bottom:0;animation:rt-toast-progress var(--lifetime) linear forwards;background:var(--rt-toast-progress-color, var(--rt-toast-severity-color));block-size:var(--rt-toast-progress-height, var(--rt-space-0-5));border-end-end-radius:var(--rt-toast-radius);border-end-start-radius:var(--rt-toast-radius);inset-inline:0;transform-origin:left center}.rt-toast--paused .rt-toast__progress{animation-play-state:paused}.rt-toast__content{display:flex;min-width:0;flex:1 1 auto;flex-direction:column;gap:var(--rt-space-0-5)}.rt-toast__description,.rt-toast__meta{color:var(--rt-color-text-muted);font-size:var(--rt-text-xs);font-weight:var(--rt-font-weight-regular)}.rt-toast__actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--rt-space-2);margin-block-start:var(--rt-space-1)}.rt-toast .rt-toast__action{align-self:flex-start}.rt-toast .rt-toast__action:not(.rt-button--text){--rt-btn-bg: var(--rt-toast-action-color, var(--rt-color-action-primary));--rt-btn-bg-hover: var(--rt-toast-action-color, var(--rt-color-action-primary-hover));--rt-btn-bg-active: var(--rt-toast-action-color, var(--rt-color-action-primary-active))}.rt-toast .rt-toast__close{--rt-icon-button-color: var(--rt-toast-close-color, var(--rt-color-text-primary));flex-shrink:0;align-self:flex-start;margin-inline-start:auto;opacity:0;transition:opacity var(--rt-toast-fade-duration)}.rt-toast:hover .rt-toast__close,.rt-toast .rt-toast__close:focus-visible{opacity:1}@media(prefers-reduced-motion){.rt-toast{transition:none}.rt-toast>*{transition:none}}@keyframes rt-toast-progress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}}\n"] }]
197
+ }], ctorParameters: () => [], propDecorators: { toast: [{ type: i0.Input, args: [{ isSignal: true, alias: "toast", required: true }] }], index: [{ type: i0.Input, args: [{ isSignal: true, alias: "index", required: true }] }], totalToasts: [{ type: i0.Input, args: [{ isSignal: true, alias: "totalToasts", required: true }] }], heights: [{ type: i0.Input, args: [{ isSignal: true, alias: "heights", required: true }] }], expanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "expanded", required: true }] }], expandByDefault: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandByDefault", required: false }] }], interacting: [{ type: i0.Input, args: [{ isSignal: true, alias: "interacting", required: false }] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }], visibleToasts: [{ type: i0.Input, args: [{ isSignal: true, alias: "visibleToasts", required: false }] }], duration: [{ type: i0.Input, args: [{ isSignal: true, alias: "duration", required: false }] }], heightAdded: [{ type: i0.Output, args: ["heightAdded"] }], heightRemoved: [{ type: i0.Output, args: ["heightRemoved"] }], dismissed: [{ type: i0.Output, args: ["dismissed"] }], hostModifierClasses: [{
198
+ type: HostBinding,
199
+ args: ['class']
200
+ }], hostStackStyles: [{
201
+ type: HostBinding,
202
+ args: ['style']
203
+ }] } });
204
+
205
+ const BEM_BLOCK = 'rt-toaster';
206
+ const DEFAULT_DURATION_MS = 4000;
207
+ const DEFAULT_VISIBLE_TOASTS = 3;
208
+ class RtToasterComponent {
209
+ #notificationBus;
210
+ #toastCounter;
211
+ get hostModifierClasses() {
212
+ return {
213
+ [`${BEM_BLOCK}--y--${this.positionY()}`]: true,
214
+ [`${BEM_BLOCK}--x--${this.positionX()}`]: true,
215
+ };
216
+ }
217
+ get hostStackStyles() {
218
+ return {
219
+ '--front-toast-height': `${this.heights()[0]?.height ?? 0}px`,
220
+ '--gap': `${RT_TOASTER_GAP_PX}px`,
221
+ };
222
+ }
223
+ constructor() {
224
+ this.#notificationBus = inject(NotificationBus);
225
+ this.ariaLabel = rtKitLabel('uiNotifications');
226
+ this.#toastCounter = 0;
227
+ this.toasts = signal([], /* @ts-ignore */
228
+ ...(ngDevMode ? [{ debugName: "toasts" }] : /* istanbul ignore next */ []));
229
+ this.heights = signal([], /* @ts-ignore */
230
+ ...(ngDevMode ? [{ debugName: "heights" }] : /* istanbul ignore next */ []));
231
+ this.expanded = linkedSignal({ ...(ngDevMode ? { debugName: "expanded" } : /* istanbul ignore next */ {}), source: this.toasts,
232
+ computation: (toasts) => toasts.length < 1 });
233
+ this.interacting = signal(false, /* @ts-ignore */
234
+ ...(ngDevMode ? [{ debugName: "interacting" }] : /* istanbul ignore next */ []));
235
+ this.positionY = computed(() => this.position().startsWith('top') ? 'top' : 'bottom', /* @ts-ignore */
236
+ ...(ngDevMode ? [{ debugName: "positionY" }] : /* istanbul ignore next */ []));
237
+ this.positionX = computed(() => {
238
+ if (this.position().endsWith('left')) {
239
+ return 'left';
240
+ }
241
+ return this.position().endsWith('center') ? 'center' : 'right';
242
+ }, /* @ts-ignore */
243
+ ...(ngDevMode ? [{ debugName: "positionX" }] : /* istanbul ignore next */ []));
244
+ this.position = input('bottom-right', /* @ts-ignore */
245
+ ...(ngDevMode ? [{ debugName: "position" }] : /* istanbul ignore next */ []));
246
+ this.duration = input(DEFAULT_DURATION_MS, { ...(ngDevMode ? { debugName: "duration" } : /* istanbul ignore next */ {}), transform: numberAttribute });
247
+ this.visibleToasts = input(DEFAULT_VISIBLE_TOASTS, { ...(ngDevMode ? { debugName: "visibleToasts" } : /* istanbul ignore next */ {}), transform: numberAttribute });
248
+ /** `replace` — новый тост уводит прежние их же анимацией ухода, а не копится стопкой. */
249
+ this.mode = input('stack', /* @ts-ignore */
250
+ ...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
251
+ this.expand = input(false, { ...(ngDevMode ? { debugName: "expand" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
252
+ this.#notificationBus
253
+ .onEmit()
254
+ .pipe(takeUntilDestroyed())
255
+ .subscribe((event) => this.#addToast(event));
256
+ }
257
+ onStackEnter() {
258
+ if (this.toasts().length > 0) {
259
+ this.expanded.set(true);
260
+ }
261
+ }
262
+ onStackLeave() {
263
+ if (!this.interacting()) {
264
+ this.expanded.set(false);
265
+ }
266
+ }
267
+ onStackPointerDown() {
268
+ this.interacting.set(true);
269
+ }
270
+ onStackPointerUp() {
271
+ this.interacting.set(false);
272
+ }
273
+ onHeightAdded(height) {
274
+ this.heights.update((items) => this.#sortHeights([height, ...items.filter((item) => item.toastId !== height.toastId)]));
275
+ }
276
+ onHeightRemoved(toastId) {
277
+ this.heights.update((items) => items.filter((item) => item.toastId !== toastId));
278
+ }
279
+ onDismissed(toastId) {
280
+ this.onHeightRemoved(toastId);
281
+ this.toasts.update((items) => items.filter((item) => item.id !== toastId));
282
+ }
283
+ #addToast(event) {
284
+ this.#toastCounter += 1;
285
+ const toast = {
286
+ id: this.#toastCounter,
287
+ severity: event.payload.severity,
288
+ message: event.payload.message,
289
+ description: event.payload.description,
290
+ meta: event.payload.meta,
291
+ action: event.payload.action,
292
+ secondaryAction: event.payload.secondaryAction,
293
+ filled: event.payload.filled,
294
+ duration: event.payload.duration,
295
+ progress: event.payload.progress,
296
+ icon: event.payload.icon,
297
+ };
298
+ this.toasts.update((items) => [
299
+ toast,
300
+ ...(this.mode() === 'replace' ? items.map((item) => this.#replaced(item)) : items),
301
+ ]);
302
+ }
303
+ #replaced(toast) {
304
+ return toast.replaced ? toast : { ...toast, replaced: true };
305
+ }
306
+ #sortHeights(items) {
307
+ const order = this.toasts().map((toast) => toast.id);
308
+ return [...items].sort((left, right) => order.indexOf(left.toastId) - order.indexOf(right.toastId));
309
+ }
310
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: RtToasterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
311
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: RtToasterComponent, isStandalone: true, selector: "rt-toaster", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, duration: { classPropertyName: "duration", publicName: "duration", isSignal: true, isRequired: false, transformFunction: null }, visibleToasts: { classPropertyName: "visibleToasts", publicName: "visibleToasts", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, expand: { classPropertyName: "expand", publicName: "expand", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "region" }, listeners: { "mouseenter": "onStackEnter()", "mousemove": "onStackEnter()", "mouseleave": "onStackLeave()", "pointerdown": "onStackPointerDown()", "pointerup": "onStackPointerUp()" }, properties: { "attr.aria-label": "ariaLabel()", "class": "this.hostModifierClasses", "style": "this.hostStackStyles" }, classAttribute: "rt-toaster" }, ngImport: i0, template: "@for (item of toasts(); track item.id) {\n <rt-toast\n qa-dataid=\"toast\"\n [toast]=\"item\"\n [index]=\"$index\"\n [totalToasts]=\"toasts().length\"\n [heights]=\"heights()\"\n [expanded]=\"expanded()\"\n [expandByDefault]=\"expand()\"\n [interacting]=\"interacting()\"\n [position]=\"position()\"\n [visibleToasts]=\"visibleToasts()\"\n [duration]=\"duration()\"\n (heightAdded)=\"onHeightAdded($event)\"\n (heightRemoved)=\"onHeightRemoved($event)\"\n (dismissed)=\"onDismissed($event)\" />\n}\n", styles: ["@charset \"UTF-8\";@layer rt-kit.components{.rt-toaster{--width: 356px;--toaster-offset: 32px;--rt-toaster-z-index: var(--rt-z-sticky);position:fixed;z-index:var(--rt-toaster-z-index);width:var(--width);box-sizing:border-box;padding:0;margin:0;outline:none}.rt-toaster--x--right{right:max(var(--toaster-offset),env(safe-area-inset-right))}.rt-toaster--x--left{left:max(var(--toaster-offset),env(safe-area-inset-left))}.rt-toaster--x--center{left:50%;transform:translate(-50%)}.rt-toaster--y--top{top:max(var(--toaster-offset),env(safe-area-inset-top))}.rt-toaster--y--bottom{bottom:max(var(--toaster-offset),env(safe-area-inset-bottom))}@media(width<=480px){.rt-toaster{--toaster-offset: 16px;right:var(--toaster-offset);left:var(--toaster-offset);width:auto}.rt-toaster--x--center{transform:none}}}\n"], dependencies: [{ kind: "component", type: RtToastComponent, selector: "rt-toast", inputs: ["toast", "index", "totalToasts", "heights", "expanded", "expandByDefault", "interacting", "position", "visibleToasts", "duration"], outputs: ["heightAdded", "heightRemoved", "dismissed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
312
+ }
313
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: RtToasterComponent, decorators: [{
314
+ type: Component,
315
+ args: [{ selector: 'rt-toaster', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [RtToastComponent], host: {
316
+ class: BEM_BLOCK,
317
+ role: 'region',
318
+ '[attr.aria-label]': 'ariaLabel()',
319
+ '(mouseenter)': 'onStackEnter()',
320
+ '(mousemove)': 'onStackEnter()',
321
+ '(mouseleave)': 'onStackLeave()',
322
+ '(pointerdown)': 'onStackPointerDown()',
323
+ '(pointerup)': 'onStackPointerUp()',
324
+ }, template: "@for (item of toasts(); track item.id) {\n <rt-toast\n qa-dataid=\"toast\"\n [toast]=\"item\"\n [index]=\"$index\"\n [totalToasts]=\"toasts().length\"\n [heights]=\"heights()\"\n [expanded]=\"expanded()\"\n [expandByDefault]=\"expand()\"\n [interacting]=\"interacting()\"\n [position]=\"position()\"\n [visibleToasts]=\"visibleToasts()\"\n [duration]=\"duration()\"\n (heightAdded)=\"onHeightAdded($event)\"\n (heightRemoved)=\"onHeightRemoved($event)\"\n (dismissed)=\"onDismissed($event)\" />\n}\n", styles: ["@charset \"UTF-8\";@layer rt-kit.components{.rt-toaster{--width: 356px;--toaster-offset: 32px;--rt-toaster-z-index: var(--rt-z-sticky);position:fixed;z-index:var(--rt-toaster-z-index);width:var(--width);box-sizing:border-box;padding:0;margin:0;outline:none}.rt-toaster--x--right{right:max(var(--toaster-offset),env(safe-area-inset-right))}.rt-toaster--x--left{left:max(var(--toaster-offset),env(safe-area-inset-left))}.rt-toaster--x--center{left:50%;transform:translate(-50%)}.rt-toaster--y--top{top:max(var(--toaster-offset),env(safe-area-inset-top))}.rt-toaster--y--bottom{bottom:max(var(--toaster-offset),env(safe-area-inset-bottom))}@media(width<=480px){.rt-toaster{--toaster-offset: 16px;right:var(--toaster-offset);left:var(--toaster-offset);width:auto}.rt-toaster--x--center{transform:none}}}\n"] }]
325
+ }], ctorParameters: () => [], propDecorators: { position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }], duration: [{ type: i0.Input, args: [{ isSignal: true, alias: "duration", required: false }] }], visibleToasts: [{ type: i0.Input, args: [{ isSignal: true, alias: "visibleToasts", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], expand: [{ type: i0.Input, args: [{ isSignal: true, alias: "expand", required: false }] }], hostModifierClasses: [{
326
+ type: HostBinding,
327
+ args: ['class']
328
+ }], hostStackStyles: [{
329
+ type: HostBinding,
330
+ args: ['style']
331
+ }] } });
332
+
333
+ /**
334
+ * Generated bundle index. Do not edit.
335
+ */
336
+
337
+ export { RT_TOASTER_GAP_PX, RT_TOAST_SEVERITY_ICONS, RtToastComponent, RtToasterComponent };
338
+ //# sourceMappingURL=rt-tools-ui-kit-v2-toast.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rt-tools-ui-kit-v2-toast.mjs","sources":["../../../projects/ui-kit-v2/src/lib/components/toast/rt-toaster.model.ts","../../../projects/ui-kit-v2/src/lib/components/toast/rt-toast.component.ts","../../../projects/ui-kit-v2/src/lib/components/toast/rt-toast.component.html","../../../projects/ui-kit-v2/src/lib/components/toast/rt-toaster.component.ts","../../../projects/ui-kit-v2/src/lib/components/toast/rt-toaster.component.html","../../../projects/ui-kit-v2/src/lib/components/toast/rt-tools-ui-kit-v2-toast.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nimport { INotification } from '@rt-tools/ui-kit-v2/core';\n\nimport { IRtIcon } from '@rt-tools/ui-kit-v2/core';\n\nexport const RT_TOASTER_GAP_PX: number = 14;\n\n/**\n * Значки severity у тоста. Приложение подменяет карту целиком — например, на имена\n * Material, — а тост со своим `icon` берёт свой значок мимо карты.\n */\nexport const RT_TOAST_SEVERITY_ICONS: InjectionToken<Readonly<Record<INotification.Severity, IRtIcon.Name>>> = new InjectionToken<\n Readonly<Record<INotification.Severity, IRtIcon.Name>>\n>('RT_TOAST_SEVERITY_ICONS', {\n providedIn: 'root',\n factory: (): Readonly<Record<INotification.Severity, IRtIcon.Name>> => ({\n info: 'info-circle',\n success: 'check-circle',\n warning: 'exclamation-circle',\n danger: 'times-circle',\n }),\n});\n\nexport namespace IRtToaster {\n export type Position = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';\n\n export type PositionY = 'top' | 'bottom';\n\n export type PositionX = 'left' | 'center' | 'right';\n\n /** `stack` копит тосты стопкой; `replace` — новый тост уводит прежние. */\n export type Mode = 'stack' | 'replace';\n\n export interface Toast {\n readonly id: number;\n readonly severity: INotification.Severity;\n readonly message: string;\n readonly description?: string;\n readonly meta?: string;\n readonly action?: INotification.Action;\n readonly secondaryAction?: INotification.Action;\n readonly filled?: boolean;\n readonly duration?: number | null;\n readonly progress?: boolean;\n readonly icon?: IRtIcon.Name | null;\n /** Тост вытеснен новым в режиме `replace` и уходит своей анимацией. */\n readonly replaced?: boolean;\n }\n\n export interface Height {\n readonly toastId: number;\n readonly height: number;\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n HostBinding,\n inject,\n input,\n InputSignal,\n InputSignalWithTransform,\n OnDestroy,\n output,\n OutputEmitterRef,\n signal,\n Signal,\n ViewEncapsulation,\n WritableSignal,\n} from '@angular/core';\n\nimport { BlockDirective, ElemDirective } from '@rt-tools/core';\n\nimport { RT_KIT_LABELS, TRtKitLabelMap } from '@rt-tools/ui-kit-v2/core';\nimport { INotification } from '@rt-tools/ui-kit-v2/core';\n\nimport { RtButtonDirective } from '@rt-tools/ui-kit-v2/button';\nimport { RtIconButtonComponent } from '@rt-tools/ui-kit-v2/icon-button';\nimport { RtIconComponent } from '@rt-tools/ui-kit-v2/icon';\nimport { IRtIcon } from '@rt-tools/ui-kit-v2/core';\nimport { RT_TOAST_SEVERITY_ICONS, RT_TOASTER_GAP_PX, IRtToaster } from './rt-toaster.model';\n\nconst BEM_BLOCK: string = 'rt-toast';\n\nconst UNMOUNT_DELAY_MS: number = 200;\n\n@Component({\n selector: 'rt-toast',\n templateUrl: './rt-toast.component.html',\n styleUrl: './rt-toast.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [RtButtonDirective, RtIconComponent, RtIconButtonComponent, BlockDirective, ElemDirective],\n host: {\n class: BEM_BLOCK,\n role: 'status',\n 'aria-atomic': 'true',\n },\n})\nexport class RtToastComponent implements AfterViewInit, OnDestroy {\n readonly #host: ElementRef<HTMLElement> = inject(ElementRef);\n\n readonly #severityIcons: Readonly<Record<INotification.Severity, IRtIcon.Name>> = inject(RT_TOAST_SEVERITY_ICONS);\n\n readonly #mounted: WritableSignal<boolean> = signal<boolean>(false);\n\n readonly #removed: WritableSignal<boolean> = signal<boolean>(false);\n\n readonly #offsetBeforeRemove: WritableSignal<number> = signal<number>(0);\n\n readonly #initialHeight: WritableSignal<number> = signal<number>(0);\n\n readonly #heightIndex: Signal<number> = computed((): number =>\n this.heights().findIndex((item: IRtToaster.Height): boolean => item.toastId === this.toast().id)\n );\n\n readonly #heightBefore: Signal<number> = computed((): number =>\n this.heights().reduce(\n (total: number, item: IRtToaster.Height, itemIndex: number): number =>\n itemIndex >= this.#heightIndex() ? total : total + item.height,\n 0\n )\n );\n\n readonly #offset: Signal<number> = computed((): number => Math.round(this.#heightIndex() * RT_TOASTER_GAP_PX + this.#heightBefore()));\n\n readonly #positionY: Signal<IRtToaster.PositionY> = computed((): IRtToaster.PositionY =>\n this.position().startsWith('top') ? 'top' : 'bottom'\n );\n\n #timeoutId: ReturnType<typeof setTimeout> | undefined;\n\n #unmountTimeoutId: ReturnType<typeof setTimeout> | undefined;\n\n #remainingTimeMs: number = 0;\n\n #closeTimerStartedAt: number = 0;\n\n #closeTimerPausedAt: number = 0;\n\n protected readonly t: Signal<TRtKitLabelMap> = inject(RT_KIT_LABELS);\n\n /** Свой значок тоста важнее карты severity; `null` у тоста значок снимает. */\n protected readonly icon: Signal<IRtIcon.Name | null> = computed((): IRtIcon.Name | null => {\n const icon: IRtIcon.Name | null | undefined = this.toast().icon;\n return icon === undefined ? this.#severityIcons[this.toast().severity] : icon;\n });\n\n /** Срок жизни тоста: свой, если задан, иначе тостера; `null` — таймера нет. */\n protected readonly lifetime: Signal<number | null> = computed((): number | null => {\n const duration: number | null | undefined = this.toast().duration;\n return duration === undefined ? this.duration() : duration;\n });\n\n protected readonly showProgress: Signal<boolean> = computed((): boolean => this.toast().progress === true && this.lifetime() !== null);\n\n /** Таймер и полоса срока встают от одного признака, чтобы не разойтись. */\n protected readonly paused: Signal<boolean> = computed((): boolean => this.expanded() || this.interacting());\n\n public readonly toast: InputSignal<IRtToaster.Toast> = input.required<IRtToaster.Toast>();\n\n public readonly index: InputSignal<number> = input.required<number>();\n\n public readonly totalToasts: InputSignal<number> = input.required<number>();\n\n public readonly heights: InputSignal<IRtToaster.Height[]> = input.required<IRtToaster.Height[]>();\n\n public readonly expanded: InputSignalWithTransform<boolean, BooleanInput> = input.required<boolean, BooleanInput>({\n transform: booleanAttribute,\n });\n\n public readonly expandByDefault: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n public readonly interacting: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n public readonly position: InputSignal<IRtToaster.Position> = input<IRtToaster.Position>('bottom-right');\n\n public readonly visibleToasts: InputSignal<number> = input<number>(3);\n\n public readonly duration: InputSignal<number> = input<number>(4000);\n\n public readonly heightAdded: OutputEmitterRef<IRtToaster.Height> = output<IRtToaster.Height>();\n\n public readonly heightRemoved: OutputEmitterRef<number> = output<number>();\n\n public readonly dismissed: OutputEmitterRef<number> = output<number>();\n\n @HostBinding('class')\n public get hostModifierClasses(): Record<string, boolean> {\n return {\n [`${BEM_BLOCK}--severity--${this.toast().severity}`]: true,\n [`${BEM_BLOCK}--filled`]: this.toast().filled === true,\n [`${BEM_BLOCK}--y--${this.#positionY()}`]: true,\n [`${BEM_BLOCK}--mounted`]: this.#mounted(),\n [`${BEM_BLOCK}--removed`]: this.#removed(),\n [`${BEM_BLOCK}--front`]: this.index() === 0,\n [`${BEM_BLOCK}--hidden`]: this.index() + 1 > this.visibleToasts(),\n [`${BEM_BLOCK}--expanded`]: this.expanded() || (this.expandByDefault() && this.#mounted()),\n [`${BEM_BLOCK}--paused`]: this.paused(),\n };\n }\n\n @HostBinding('style')\n public get hostStackStyles(): Record<string, string> {\n return {\n '--index': `${this.index()}`,\n '--toasts-before': `${this.index()}`,\n '--z-index': `${this.totalToasts() - this.index()}`,\n '--offset': `${this.#removed() ? this.#offsetBeforeRemove() : this.#offset()}px`,\n '--initial-height': this.expandByDefault() ? 'auto' : `${this.#initialHeight()}px`,\n '--lifetime': `${this.lifetime() ?? 0}ms`,\n };\n }\n\n constructor() {\n effect((onCleanup: (cleanup: () => void) => void): void => {\n if (!this.#mounted() || this.#removed() || this.lifetime() === null) {\n return;\n }\n\n if (this.paused()) {\n this.#pauseTimer();\n } else {\n this.#startTimer();\n }\n\n onCleanup((): void => clearTimeout(this.#timeoutId));\n });\n\n // Вытесненный в режиме `replace` уходит тем же путём, что и закрытый крестиком.\n effect((): void => {\n if (this.#mounted() && this.toast().replaced === true) {\n this.#deleteToast();\n }\n });\n }\n\n public ngAfterViewInit(): void {\n this.#remainingTimeMs = this.lifetime() ?? 0;\n\n const height: number = this.#host.nativeElement.getBoundingClientRect().height;\n this.#initialHeight.set(height);\n this.heightAdded.emit({ toastId: this.toast().id, height });\n\n this.#mounted.set(true);\n }\n\n public ngOnDestroy(): void {\n clearTimeout(this.#timeoutId);\n clearTimeout(this.#unmountTimeoutId);\n }\n\n protected onAction(): void {\n this.toast().action?.handler();\n this.#deleteToast();\n }\n\n protected onSecondaryAction(): void {\n this.toast().secondaryAction?.handler();\n this.#deleteToast();\n }\n\n protected onClose(): void {\n this.#deleteToast();\n }\n\n #deleteToast(): void {\n if (this.#removed()) {\n return;\n }\n\n this.#removed.set(true);\n this.#offsetBeforeRemove.set(this.#offset());\n this.heightRemoved.emit(this.toast().id);\n\n this.#unmountTimeoutId = setTimeout((): void => this.dismissed.emit(this.toast().id), UNMOUNT_DELAY_MS);\n }\n\n #startTimer(): void {\n this.#closeTimerStartedAt = Date.now();\n this.#timeoutId = setTimeout((): void => this.#deleteToast(), this.#remainingTimeMs);\n }\n\n #pauseTimer(): void {\n if (this.#closeTimerPausedAt < this.#closeTimerStartedAt) {\n const elapsedMs: number = Date.now() - this.#closeTimerStartedAt;\n this.#remainingTimeMs = this.#remainingTimeMs - elapsedMs;\n }\n\n this.#closeTimerPausedAt = Date.now();\n }\n}\n","<ng-container rtBlock=\"rt-toast\">\n @if (icon(); as icon) {\n <rt-icon rtElem=\"icon\" qa-dataid=\"toast-icon\" size=\"sm\" [name]=\"icon\" />\n }\n <div rtElem=\"content\" qa-dataid=\"toast-content\">\n @if (toast().meta; as meta) {\n <span rtElem=\"meta\" qa-dataid=\"toast-meta\">{{ meta }}</span>\n }\n <span rtElem=\"message\" qa-dataid=\"toast-message\">{{ toast().message }}</span>\n @if (toast().description; as description) {\n <span rtElem=\"description\" qa-dataid=\"toast-description\">{{ description }}</span>\n }\n @if (toast().action || toast().secondaryAction) {\n <div rtElem=\"actions\">\n @if (toast().action; as action) {\n <button rtButton rtElem=\"action\" qa-dataid=\"toast-action\" size=\"sm\" type=\"button\" (click)=\"onAction()\">\n {{ action.label }}\n </button>\n }\n @if (toast().secondaryAction; as secondaryAction) {\n <button\n rtButton\n rtElem=\"action\"\n qa-dataid=\"toast-secondary-action\"\n size=\"sm\"\n theme=\"secondary\"\n appearance=\"text\"\n type=\"button\"\n (click)=\"onSecondaryAction()\">\n {{ secondaryAction.label }}\n </button>\n }\n </div>\n }\n </div>\n <rt-icon-button\n rtElem=\"close\"\n qa-dataid=\"toast-close\"\n icon=\"ico-close\"\n variant=\"ghost\"\n size=\"sm\"\n [ariaLabel]=\"t().uiClose\"\n (clicked)=\"onClose()\" />\n @if (showProgress()) {\n <span rtElem=\"progress\" qa-dataid=\"toast-progress\" aria-hidden=\"true\"></span>\n }\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n InputSignal,\n InputSignalWithTransform,\n Signal,\n ViewEncapsulation,\n WritableSignal,\n booleanAttribute,\n computed,\n inject,\n input,\n linkedSignal,\n numberAttribute,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { rtKitLabel } from '@rt-tools/ui-kit-v2/core';\nimport { INotification, NotificationBus } from '@rt-tools/ui-kit-v2/core';\n\nimport { RtToastComponent } from './rt-toast.component';\nimport { RT_TOASTER_GAP_PX, IRtToaster } from './rt-toaster.model';\n\nconst BEM_BLOCK: string = 'rt-toaster';\n\nconst DEFAULT_DURATION_MS: number = 4000;\n\nconst DEFAULT_VISIBLE_TOASTS: number = 3;\n\n@Component({\n selector: 'rt-toaster',\n templateUrl: './rt-toaster.component.html',\n styleUrl: './rt-toaster.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [RtToastComponent],\n host: {\n class: BEM_BLOCK,\n role: 'region',\n '[attr.aria-label]': 'ariaLabel()',\n '(mouseenter)': 'onStackEnter()',\n '(mousemove)': 'onStackEnter()',\n '(mouseleave)': 'onStackLeave()',\n '(pointerdown)': 'onStackPointerDown()',\n '(pointerup)': 'onStackPointerUp()',\n },\n})\nexport class RtToasterComponent {\n readonly #notificationBus: NotificationBus = inject(NotificationBus);\n\n protected readonly ariaLabel: Signal<string> = rtKitLabel('uiNotifications');\n\n #toastCounter: number = 0;\n\n protected readonly toasts: WritableSignal<IRtToaster.Toast[]> = signal<IRtToaster.Toast[]>([]);\n\n protected readonly heights: WritableSignal<IRtToaster.Height[]> = signal<IRtToaster.Height[]>([]);\n\n protected readonly expanded: WritableSignal<boolean> = linkedSignal<IRtToaster.Toast[], boolean>({\n source: this.toasts,\n computation: (toasts: IRtToaster.Toast[]): boolean => toasts.length < 1,\n });\n\n protected readonly interacting: WritableSignal<boolean> = signal<boolean>(false);\n\n protected readonly positionY: Signal<IRtToaster.PositionY> = computed((): IRtToaster.PositionY =>\n this.position().startsWith('top') ? 'top' : 'bottom'\n );\n\n protected readonly positionX: Signal<IRtToaster.PositionX> = computed((): IRtToaster.PositionX => {\n if (this.position().endsWith('left')) {\n return 'left';\n }\n return this.position().endsWith('center') ? 'center' : 'right';\n });\n\n public readonly position: InputSignal<IRtToaster.Position> = input<IRtToaster.Position>('bottom-right');\n\n public readonly duration: InputSignalWithTransform<number, number | string> = input<number, number | string>(DEFAULT_DURATION_MS, {\n transform: numberAttribute,\n });\n\n public readonly visibleToasts: InputSignalWithTransform<number, number | string> = input<number, number | string>(\n DEFAULT_VISIBLE_TOASTS,\n { transform: numberAttribute }\n );\n\n /** `replace` — новый тост уводит прежние их же анимацией ухода, а не копится стопкой. */\n public readonly mode: InputSignal<IRtToaster.Mode> = input<IRtToaster.Mode>('stack');\n\n public readonly expand: InputSignalWithTransform<boolean, boolean | string> = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n\n @HostBinding('class')\n public get hostModifierClasses(): Record<string, boolean> {\n return {\n [`${BEM_BLOCK}--y--${this.positionY()}`]: true,\n [`${BEM_BLOCK}--x--${this.positionX()}`]: true,\n };\n }\n\n @HostBinding('style')\n public get hostStackStyles(): Record<string, string> {\n return {\n '--front-toast-height': `${this.heights()[0]?.height ?? 0}px`,\n '--gap': `${RT_TOASTER_GAP_PX}px`,\n };\n }\n\n constructor() {\n this.#notificationBus\n .onEmit()\n .pipe(takeUntilDestroyed())\n .subscribe((event: INotification.Event): void => this.#addToast(event));\n }\n\n protected onStackEnter(): void {\n if (this.toasts().length > 0) {\n this.expanded.set(true);\n }\n }\n\n protected onStackLeave(): void {\n if (!this.interacting()) {\n this.expanded.set(false);\n }\n }\n\n protected onStackPointerDown(): void {\n this.interacting.set(true);\n }\n\n protected onStackPointerUp(): void {\n this.interacting.set(false);\n }\n\n protected onHeightAdded(height: IRtToaster.Height): void {\n this.heights.update((items: IRtToaster.Height[]): IRtToaster.Height[] =>\n this.#sortHeights([height, ...items.filter((item: IRtToaster.Height): boolean => item.toastId !== height.toastId)])\n );\n }\n\n protected onHeightRemoved(toastId: number): void {\n this.heights.update((items: IRtToaster.Height[]): IRtToaster.Height[] =>\n items.filter((item: IRtToaster.Height): boolean => item.toastId !== toastId)\n );\n }\n\n protected onDismissed(toastId: number): void {\n this.onHeightRemoved(toastId);\n this.toasts.update((items: IRtToaster.Toast[]): IRtToaster.Toast[] =>\n items.filter((item: IRtToaster.Toast): boolean => item.id !== toastId)\n );\n }\n\n #addToast(event: INotification.Event): void {\n this.#toastCounter += 1;\n const toast: IRtToaster.Toast = {\n id: this.#toastCounter,\n severity: event.payload.severity,\n message: event.payload.message,\n description: event.payload.description,\n meta: event.payload.meta,\n action: event.payload.action,\n secondaryAction: event.payload.secondaryAction,\n filled: event.payload.filled,\n duration: event.payload.duration,\n progress: event.payload.progress,\n icon: event.payload.icon,\n };\n this.toasts.update((items: IRtToaster.Toast[]): IRtToaster.Toast[] => [\n toast,\n ...(this.mode() === 'replace' ? items.map((item: IRtToaster.Toast): IRtToaster.Toast => this.#replaced(item)) : items),\n ]);\n }\n\n #replaced(toast: IRtToaster.Toast): IRtToaster.Toast {\n return toast.replaced ? toast : { ...toast, replaced: true };\n }\n\n #sortHeights(items: IRtToaster.Height[]): IRtToaster.Height[] {\n const order: number[] = this.toasts().map((toast: IRtToaster.Toast): number => toast.id);\n return [...items].sort(\n (left: IRtToaster.Height, right: IRtToaster.Height): number => order.indexOf(left.toastId) - order.indexOf(right.toastId)\n );\n }\n}\n","@for (item of toasts(); track item.id) {\n <rt-toast\n qa-dataid=\"toast\"\n [toast]=\"item\"\n [index]=\"$index\"\n [totalToasts]=\"toasts().length\"\n [heights]=\"heights()\"\n [expanded]=\"expanded()\"\n [expandByDefault]=\"expand()\"\n [interacting]=\"interacting()\"\n [position]=\"position()\"\n [visibleToasts]=\"visibleToasts()\"\n [duration]=\"duration()\"\n (heightAdded)=\"onHeightAdded($event)\"\n (heightRemoved)=\"onHeightRemoved($event)\"\n (dismissed)=\"onDismissed($event)\" />\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["BEM_BLOCK"],"mappings":"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"}