@rt-tools/ui-kit-v2 0.23.3 → 0.24.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 (354) hide show
  1. package/fesm2022/rt-tools-ui-kit-v2-accordion.mjs +142 -71
  2. package/fesm2022/rt-tools-ui-kit-v2-accordion.mjs.map +1 -1
  3. package/fesm2022/rt-tools-ui-kit-v2-action-bar.mjs +467 -231
  4. package/fesm2022/rt-tools-ui-kit-v2-action-bar.mjs.map +1 -1
  5. package/fesm2022/rt-tools-ui-kit-v2-ai-run-status.mjs +260 -91
  6. package/fesm2022/rt-tools-ui-kit-v2-ai-run-status.mjs.map +1 -1
  7. package/fesm2022/rt-tools-ui-kit-v2-aside-section.mjs +80 -46
  8. package/fesm2022/rt-tools-ui-kit-v2-aside-section.mjs.map +1 -1
  9. package/fesm2022/rt-tools-ui-kit-v2-aside.mjs +984 -697
  10. package/fesm2022/rt-tools-ui-kit-v2-aside.mjs.map +1 -1
  11. package/fesm2022/rt-tools-ui-kit-v2-autocomplete.mjs +452 -210
  12. package/fesm2022/rt-tools-ui-kit-v2-autocomplete.mjs.map +1 -1
  13. package/fesm2022/rt-tools-ui-kit-v2-bar-list.mjs +143 -52
  14. package/fesm2022/rt-tools-ui-kit-v2-bar-list.mjs.map +1 -1
  15. package/fesm2022/rt-tools-ui-kit-v2-bottom-sheet.mjs +158 -83
  16. package/fesm2022/rt-tools-ui-kit-v2-bottom-sheet.mjs.map +1 -1
  17. package/fesm2022/rt-tools-ui-kit-v2-breadcrumbs.mjs +335 -0
  18. package/fesm2022/rt-tools-ui-kit-v2-breadcrumbs.mjs.map +1 -0
  19. package/fesm2022/rt-tools-ui-kit-v2-button.mjs +437 -363
  20. package/fesm2022/rt-tools-ui-kit-v2-button.mjs.map +1 -1
  21. package/fesm2022/rt-tools-ui-kit-v2-calendar.mjs +430 -149
  22. package/fesm2022/rt-tools-ui-kit-v2-calendar.mjs.map +1 -1
  23. package/fesm2022/rt-tools-ui-kit-v2-card.mjs +155 -71
  24. package/fesm2022/rt-tools-ui-kit-v2-card.mjs.map +1 -1
  25. package/fesm2022/rt-tools-ui-kit-v2-carousel.mjs +155 -0
  26. package/fesm2022/rt-tools-ui-kit-v2-carousel.mjs.map +1 -0
  27. package/fesm2022/rt-tools-ui-kit-v2-checkbox.mjs +215 -110
  28. package/fesm2022/rt-tools-ui-kit-v2-checkbox.mjs.map +1 -1
  29. package/fesm2022/rt-tools-ui-kit-v2-collapsible-text.mjs +158 -75
  30. package/fesm2022/rt-tools-ui-kit-v2-collapsible-text.mjs.map +1 -1
  31. package/fesm2022/rt-tools-ui-kit-v2-color-palette.mjs +769 -0
  32. package/fesm2022/rt-tools-ui-kit-v2-color-palette.mjs.map +1 -0
  33. package/fesm2022/rt-tools-ui-kit-v2-confirm-popover.mjs +462 -253
  34. package/fesm2022/rt-tools-ui-kit-v2-confirm-popover.mjs.map +1 -1
  35. package/fesm2022/rt-tools-ui-kit-v2-container.mjs +1276 -1316
  36. package/fesm2022/rt-tools-ui-kit-v2-container.mjs.map +1 -1
  37. package/fesm2022/rt-tools-ui-kit-v2-copy-value.mjs +185 -80
  38. package/fesm2022/rt-tools-ui-kit-v2-copy-value.mjs.map +1 -1
  39. package/fesm2022/rt-tools-ui-kit-v2-core.mjs +2321 -2619
  40. package/fesm2022/rt-tools-ui-kit-v2-core.mjs.map +1 -1
  41. package/fesm2022/rt-tools-ui-kit-v2-counter-row.mjs +100 -44
  42. package/fesm2022/rt-tools-ui-kit-v2-counter-row.mjs.map +1 -1
  43. package/fesm2022/rt-tools-ui-kit-v2-counter.mjs +290 -155
  44. package/fesm2022/rt-tools-ui-kit-v2-counter.mjs.map +1 -1
  45. package/fesm2022/rt-tools-ui-kit-v2-data-list.mjs +2097 -858
  46. package/fesm2022/rt-tools-ui-kit-v2-data-list.mjs.map +1 -1
  47. package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs +2247 -1176
  48. package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs.map +1 -1
  49. package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs +1043 -705
  50. package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs.map +1 -1
  51. package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs +810 -525
  52. package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs.map +1 -1
  53. package/fesm2022/rt-tools-ui-kit-v2-delta-view.mjs +158 -138
  54. package/fesm2022/rt-tools-ui-kit-v2-delta-view.mjs.map +1 -1
  55. package/fesm2022/rt-tools-ui-kit-v2-detail-list.mjs +177 -67
  56. package/fesm2022/rt-tools-ui-kit-v2-detail-list.mjs.map +1 -1
  57. package/fesm2022/rt-tools-ui-kit-v2-dialog.mjs +550 -477
  58. package/fesm2022/rt-tools-ui-kit-v2-dialog.mjs.map +1 -1
  59. package/fesm2022/rt-tools-ui-kit-v2-dot-field.mjs +185 -168
  60. package/fesm2022/rt-tools-ui-kit-v2-dot-field.mjs.map +1 -1
  61. package/fesm2022/rt-tools-ui-kit-v2-download-link.mjs +116 -43
  62. package/fesm2022/rt-tools-ui-kit-v2-download-link.mjs.map +1 -1
  63. package/fesm2022/rt-tools-ui-kit-v2-draggable-tree.mjs +585 -0
  64. package/fesm2022/rt-tools-ui-kit-v2-draggable-tree.mjs.map +1 -0
  65. package/fesm2022/rt-tools-ui-kit-v2-dynamic-list.mjs +755 -259
  66. package/fesm2022/rt-tools-ui-kit-v2-dynamic-list.mjs.map +1 -1
  67. package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs +3266 -1115
  68. package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs.map +1 -1
  69. package/fesm2022/rt-tools-ui-kit-v2-empty-state.mjs +190 -55
  70. package/fesm2022/rt-tools-ui-kit-v2-empty-state.mjs.map +1 -1
  71. package/fesm2022/rt-tools-ui-kit-v2-expansion-panel.mjs +283 -103
  72. package/fesm2022/rt-tools-ui-kit-v2-expansion-panel.mjs.map +1 -1
  73. package/fesm2022/rt-tools-ui-kit-v2-field.mjs +393 -177
  74. package/fesm2022/rt-tools-ui-kit-v2-field.mjs.map +1 -1
  75. package/fesm2022/rt-tools-ui-kit-v2-file-card.mjs +399 -207
  76. package/fesm2022/rt-tools-ui-kit-v2-file-card.mjs.map +1 -1
  77. package/fesm2022/rt-tools-ui-kit-v2-file-drop.mjs +288 -212
  78. package/fesm2022/rt-tools-ui-kit-v2-file-drop.mjs.map +1 -1
  79. package/fesm2022/rt-tools-ui-kit-v2-file-input.mjs +262 -116
  80. package/fesm2022/rt-tools-ui-kit-v2-file-input.mjs.map +1 -1
  81. package/fesm2022/rt-tools-ui-kit-v2-file-list.mjs +57 -31
  82. package/fesm2022/rt-tools-ui-kit-v2-file-list.mjs.map +1 -1
  83. package/fesm2022/rt-tools-ui-kit-v2-filter-control.mjs +258 -90
  84. package/fesm2022/rt-tools-ui-kit-v2-filter-control.mjs.map +1 -1
  85. package/fesm2022/rt-tools-ui-kit-v2-form-control.mjs +249 -215
  86. package/fesm2022/rt-tools-ui-kit-v2-form-control.mjs.map +1 -1
  87. package/fesm2022/rt-tools-ui-kit-v2-header.mjs +199 -71
  88. package/fesm2022/rt-tools-ui-kit-v2-header.mjs.map +1 -1
  89. package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree-selector.mjs +231 -0
  90. package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree-selector.mjs.map +1 -0
  91. package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree.mjs +336 -0
  92. package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree.mjs.map +1 -0
  93. package/fesm2022/rt-tools-ui-kit-v2-icon-button.mjs +451 -162
  94. package/fesm2022/rt-tools-ui-kit-v2-icon-button.mjs.map +1 -1
  95. package/fesm2022/rt-tools-ui-kit-v2-icon.mjs +931 -686
  96. package/fesm2022/rt-tools-ui-kit-v2-icon.mjs.map +1 -1
  97. package/fesm2022/rt-tools-ui-kit-v2-image-cropper.mjs +664 -491
  98. package/fesm2022/rt-tools-ui-kit-v2-image-cropper.mjs.map +1 -1
  99. package/fesm2022/rt-tools-ui-kit-v2-image-upload.mjs +574 -222
  100. package/fesm2022/rt-tools-ui-kit-v2-image-upload.mjs.map +1 -1
  101. package/fesm2022/rt-tools-ui-kit-v2-info-item.mjs +150 -36
  102. package/fesm2022/rt-tools-ui-kit-v2-info-item.mjs.map +1 -1
  103. package/fesm2022/rt-tools-ui-kit-v2-inline-edit.mjs +606 -0
  104. package/fesm2022/rt-tools-ui-kit-v2-inline-edit.mjs.map +1 -0
  105. package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs +461 -355
  106. package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs.map +1 -1
  107. package/fesm2022/rt-tools-ui-kit-v2-input.mjs +338 -143
  108. package/fesm2022/rt-tools-ui-kit-v2-input.mjs.map +1 -1
  109. package/fesm2022/rt-tools-ui-kit-v2-live-badge.mjs +135 -48
  110. package/fesm2022/rt-tools-ui-kit-v2-live-badge.mjs.map +1 -1
  111. package/fesm2022/rt-tools-ui-kit-v2-logo.mjs +166 -92
  112. package/fesm2022/rt-tools-ui-kit-v2-logo.mjs.map +1 -1
  113. package/fesm2022/rt-tools-ui-kit-v2-markdown-text.mjs +118 -56
  114. package/fesm2022/rt-tools-ui-kit-v2-markdown-text.mjs.map +1 -1
  115. package/fesm2022/rt-tools-ui-kit-v2-menu.mjs +1054 -527
  116. package/fesm2022/rt-tools-ui-kit-v2-menu.mjs.map +1 -1
  117. package/fesm2022/rt-tools-ui-kit-v2-message.mjs +230 -104
  118. package/fesm2022/rt-tools-ui-kit-v2-message.mjs.map +1 -1
  119. package/fesm2022/rt-tools-ui-kit-v2-money-list.mjs +210 -70
  120. package/fesm2022/rt-tools-ui-kit-v2-money-list.mjs.map +1 -1
  121. package/fesm2022/rt-tools-ui-kit-v2-multiselect.mjs +532 -311
  122. package/fesm2022/rt-tools-ui-kit-v2-multiselect.mjs.map +1 -1
  123. package/fesm2022/rt-tools-ui-kit-v2-night-grid.mjs +125 -50
  124. package/fesm2022/rt-tools-ui-kit-v2-night-grid.mjs.map +1 -1
  125. package/fesm2022/rt-tools-ui-kit-v2-note.mjs +73 -43
  126. package/fesm2022/rt-tools-ui-kit-v2-note.mjs.map +1 -1
  127. package/fesm2022/rt-tools-ui-kit-v2-notifications-bell.mjs +161 -53
  128. package/fesm2022/rt-tools-ui-kit-v2-notifications-bell.mjs.map +1 -1
  129. package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs +491 -310
  130. package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs.map +1 -1
  131. package/fesm2022/rt-tools-ui-kit-v2-pagination.mjs +374 -174
  132. package/fesm2022/rt-tools-ui-kit-v2-pagination.mjs.map +1 -1
  133. package/fesm2022/rt-tools-ui-kit-v2-photo-viewer.mjs +202 -159
  134. package/fesm2022/rt-tools-ui-kit-v2-photo-viewer.mjs.map +1 -1
  135. package/fesm2022/rt-tools-ui-kit-v2-popover.mjs +438 -309
  136. package/fesm2022/rt-tools-ui-kit-v2-popover.mjs.map +1 -1
  137. package/fesm2022/rt-tools-ui-kit-v2-profile-menu.mjs +295 -0
  138. package/fesm2022/rt-tools-ui-kit-v2-profile-menu.mjs.map +1 -0
  139. package/fesm2022/rt-tools-ui-kit-v2-prompt-suggestion.mjs +135 -45
  140. package/fesm2022/rt-tools-ui-kit-v2-prompt-suggestion.mjs.map +1 -1
  141. package/fesm2022/rt-tools-ui-kit-v2-radio-button.mjs +293 -171
  142. package/fesm2022/rt-tools-ui-kit-v2-radio-button.mjs.map +1 -1
  143. package/fesm2022/rt-tools-ui-kit-v2-radius.mjs +62 -55
  144. package/fesm2022/rt-tools-ui-kit-v2-radius.mjs.map +1 -1
  145. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs +3379 -1466
  146. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs.map +1 -1
  147. package/fesm2022/rt-tools-ui-kit-v2-ripple.mjs +114 -116
  148. package/fesm2022/rt-tools-ui-kit-v2-ripple.mjs.map +1 -1
  149. package/fesm2022/rt-tools-ui-kit-v2-scroll-area.mjs +406 -299
  150. package/fesm2022/rt-tools-ui-kit-v2-scroll-area.mjs.map +1 -1
  151. package/fesm2022/rt-tools-ui-kit-v2-section-nav.mjs +137 -36
  152. package/fesm2022/rt-tools-ui-kit-v2-section-nav.mjs.map +1 -1
  153. package/fesm2022/rt-tools-ui-kit-v2-select.mjs +687 -468
  154. package/fesm2022/rt-tools-ui-kit-v2-select.mjs.map +1 -1
  155. package/fesm2022/rt-tools-ui-kit-v2-side-menu.mjs +2195 -1569
  156. package/fesm2022/rt-tools-ui-kit-v2-side-menu.mjs.map +1 -1
  157. package/fesm2022/rt-tools-ui-kit-v2-skeleton-wrapper.mjs +187 -48
  158. package/fesm2022/rt-tools-ui-kit-v2-skeleton-wrapper.mjs.map +1 -1
  159. package/fesm2022/rt-tools-ui-kit-v2-skeleton.mjs +242 -122
  160. package/fesm2022/rt-tools-ui-kit-v2-skeleton.mjs.map +1 -1
  161. package/fesm2022/rt-tools-ui-kit-v2-speed-menu.mjs +439 -0
  162. package/fesm2022/rt-tools-ui-kit-v2-speed-menu.mjs.map +1 -0
  163. package/fesm2022/rt-tools-ui-kit-v2-spinner.mjs +218 -69
  164. package/fesm2022/rt-tools-ui-kit-v2-spinner.mjs.map +1 -1
  165. package/fesm2022/rt-tools-ui-kit-v2-split-button.mjs +292 -91
  166. package/fesm2022/rt-tools-ui-kit-v2-split-button.mjs.map +1 -1
  167. package/fesm2022/rt-tools-ui-kit-v2-stat-tile.mjs +225 -138
  168. package/fesm2022/rt-tools-ui-kit-v2-stat-tile.mjs.map +1 -1
  169. package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs +150 -116
  170. package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs.map +1 -1
  171. package/fesm2022/rt-tools-ui-kit-v2-table.mjs +2462 -1583
  172. package/fesm2022/rt-tools-ui-kit-v2-table.mjs.map +1 -1
  173. package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs +647 -346
  174. package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs.map +1 -1
  175. package/fesm2022/rt-tools-ui-kit-v2-tag.mjs +335 -121
  176. package/fesm2022/rt-tools-ui-kit-v2-tag.mjs.map +1 -1
  177. package/fesm2022/rt-tools-ui-kit-v2-textarea.mjs +217 -84
  178. package/fesm2022/rt-tools-ui-kit-v2-textarea.mjs.map +1 -1
  179. package/fesm2022/rt-tools-ui-kit-v2-theme-toggle.mjs +151 -72
  180. package/fesm2022/rt-tools-ui-kit-v2-theme-toggle.mjs.map +1 -1
  181. package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs +697 -226
  182. package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs.map +1 -1
  183. package/fesm2022/rt-tools-ui-kit-v2-timeline.mjs +92 -38
  184. package/fesm2022/rt-tools-ui-kit-v2-timeline.mjs.map +1 -1
  185. package/fesm2022/rt-tools-ui-kit-v2-toast.mjs +752 -338
  186. package/fesm2022/rt-tools-ui-kit-v2-toast.mjs.map +1 -1
  187. package/fesm2022/rt-tools-ui-kit-v2-toggle-button-group.mjs +310 -129
  188. package/fesm2022/rt-tools-ui-kit-v2-toggle-button-group.mjs.map +1 -1
  189. package/fesm2022/rt-tools-ui-kit-v2-toggle-switch.mjs +286 -158
  190. package/fesm2022/rt-tools-ui-kit-v2-toggle-switch.mjs.map +1 -1
  191. package/fesm2022/rt-tools-ui-kit-v2-toolbar.mjs +270 -134
  192. package/fesm2022/rt-tools-ui-kit-v2-toolbar.mjs.map +1 -1
  193. package/fesm2022/rt-tools-ui-kit-v2-tooltip.mjs +322 -202
  194. package/fesm2022/rt-tools-ui-kit-v2-tooltip.mjs.map +1 -1
  195. package/fesm2022/rt-tools-ui-kit-v2-tree-selector.mjs +908 -0
  196. package/fesm2022/rt-tools-ui-kit-v2-tree-selector.mjs.map +1 -0
  197. package/fesm2022/rt-tools-ui-kit-v2-tree.mjs +785 -0
  198. package/fesm2022/rt-tools-ui-kit-v2-tree.mjs.map +1 -0
  199. package/fesm2022/rt-tools-ui-kit-v2-welcome-dialog.mjs +118 -63
  200. package/fesm2022/rt-tools-ui-kit-v2-welcome-dialog.mjs.map +1 -1
  201. package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs +783 -262
  202. package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs.map +1 -1
  203. package/fesm2022/rt-tools-ui-kit-v2-workspace.mjs +633 -294
  204. package/fesm2022/rt-tools-ui-kit-v2-workspace.mjs.map +1 -1
  205. package/fesm2022/rt-tools-ui-kit-v2.mjs +100 -103
  206. package/package.json +45 -1
  207. package/src/assets/icons/collapse-all.svg +9 -0
  208. package/src/assets/icons/expand-all.svg +9 -0
  209. package/src/assets/icons-material/collapse-all.fill.svg +5 -0
  210. package/src/assets/icons-material/collapse-all.svg +5 -0
  211. package/src/assets/icons-material/expand-all.fill.svg +5 -0
  212. package/src/assets/icons-material/expand-all.svg +5 -0
  213. package/src/assets/icons-material/undo.fill.svg +5 -0
  214. package/src/assets/icons-material/undo.svg +5 -0
  215. package/src/lib/components/bottom-sheet/CONTEXT.md +20 -2
  216. package/src/lib/components/bottom-sheet/rt-bottom-sheet.component.scss +36 -1
  217. package/src/lib/components/breadcrumbs/CONTEXT.md +37 -0
  218. package/src/lib/components/breadcrumbs/rt-breadcrumbs.component.scss +205 -0
  219. package/src/lib/components/carousel/CONTEXT.md +42 -0
  220. package/src/lib/components/carousel/rt-carousel.component.scss +117 -0
  221. package/src/lib/components/checkbox/CONTEXT.md +3 -0
  222. package/src/lib/components/checkbox/rt-checkbox.component.scss +9 -3
  223. package/src/lib/components/color-palette/CONTEXT.md +49 -0
  224. package/src/lib/components/color-palette/picker/rt-color-picker.component.scss +161 -0
  225. package/src/lib/components/color-palette/rt-color-palette.component.scss +132 -0
  226. package/src/lib/components/draggable-tree/CONTEXT.md +54 -0
  227. package/src/lib/components/draggable-tree/rt-draggable-tree.component.scss +219 -0
  228. package/src/lib/components/hybrid-tree/CONTEXT.md +31 -0
  229. package/src/lib/components/hybrid-tree-selector/CONTEXT.md +25 -0
  230. package/src/lib/components/icon-button/CONTEXT.md +3 -0
  231. package/src/lib/components/inline-edit/CONTEXT.md +41 -0
  232. package/src/lib/components/inline-edit/rt-inline-edit.component.scss +274 -0
  233. package/src/lib/components/popover/CONTEXT.md +3 -0
  234. package/src/lib/components/profile-menu/CONTEXT.md +32 -0
  235. package/src/lib/components/profile-menu/rt-profile-menu.component.scss +104 -0
  236. package/src/lib/components/speed-menu/CONTEXT.md +34 -0
  237. package/src/lib/components/speed-menu/rt-speed-menu.component.scss +118 -0
  238. package/src/lib/components/tag/rt-tag.component.scss +12 -0
  239. package/src/lib/components/thread-list/CONTEXT.md +1 -0
  240. package/src/lib/components/thread-list/rt-thread-list.component.scss +2 -1
  241. package/src/lib/components/toolbar/CONTEXT.md +9 -4
  242. package/src/lib/components/toolbar/rt-toolbar.component.scss +10 -2
  243. package/src/lib/components/tooltip/CONTEXT.md +8 -1
  244. package/src/lib/components/tree/CONTEXT.md +66 -0
  245. package/src/lib/components/tree/rt-tree.component.scss +313 -0
  246. package/src/lib/components/tree-selector/CONTEXT.md +47 -0
  247. package/src/lib/components/tree-selector/rt-tree-selector.component.scss +121 -0
  248. package/src/styles/_primitives.scss +4 -0
  249. package/src/styles/_semantic.scss +5 -0
  250. package/styles/tokens.css +43 -0
  251. package/types/rt-tools-ui-kit-v2-accordion.d.ts +31 -24
  252. package/types/rt-tools-ui-kit-v2-action-bar.d.ts +112 -91
  253. package/types/rt-tools-ui-kit-v2-ai-run-status.d.ts +64 -40
  254. package/types/rt-tools-ui-kit-v2-aside-section.d.ts +13 -10
  255. package/types/rt-tools-ui-kit-v2-aside.d.ts +268 -206
  256. package/types/rt-tools-ui-kit-v2-autocomplete.d.ts +102 -61
  257. package/types/rt-tools-ui-kit-v2-bar-list.d.ts +39 -27
  258. package/types/rt-tools-ui-kit-v2-bottom-sheet.d.ts +31 -20
  259. package/types/rt-tools-ui-kit-v2-breadcrumbs.d.ts +89 -0
  260. package/types/rt-tools-ui-kit-v2-button.d.ts +119 -59
  261. package/types/rt-tools-ui-kit-v2-calendar.d.ts +151 -86
  262. package/types/rt-tools-ui-kit-v2-card.d.ts +42 -21
  263. package/types/rt-tools-ui-kit-v2-carousel.d.ts +76 -0
  264. package/types/rt-tools-ui-kit-v2-checkbox.d.ts +48 -24
  265. package/types/rt-tools-ui-kit-v2-collapsible-text.d.ts +28 -20
  266. package/types/rt-tools-ui-kit-v2-color-palette.d.ts +208 -0
  267. package/types/rt-tools-ui-kit-v2-confirm-popover.d.ts +104 -47
  268. package/types/rt-tools-ui-kit-v2-container.d.ts +278 -221
  269. package/types/rt-tools-ui-kit-v2-copy-value.d.ts +39 -24
  270. package/types/rt-tools-ui-kit-v2-core.d.ts +862 -865
  271. package/types/rt-tools-ui-kit-v2-counter-row.d.ts +20 -12
  272. package/types/rt-tools-ui-kit-v2-counter.d.ts +70 -38
  273. package/types/rt-tools-ui-kit-v2-data-list.d.ts +429 -264
  274. package/types/rt-tools-ui-kit-v2-data-table.d.ts +500 -351
  275. package/types/rt-tools-ui-kit-v2-date-picker.d.ts +164 -138
  276. package/types/rt-tools-ui-kit-v2-date-range.d.ts +102 -84
  277. package/types/rt-tools-ui-kit-v2-delta-view.d.ts +16 -13
  278. package/types/rt-tools-ui-kit-v2-detail-list.d.ts +23 -16
  279. package/types/rt-tools-ui-kit-v2-dialog.d.ts +130 -101
  280. package/types/rt-tools-ui-kit-v2-dot-field.d.ts +10 -13
  281. package/types/rt-tools-ui-kit-v2-download-link.d.ts +22 -17
  282. package/types/rt-tools-ui-kit-v2-draggable-tree.d.ts +132 -0
  283. package/types/rt-tools-ui-kit-v2-dynamic-list.d.ts +185 -96
  284. package/types/rt-tools-ui-kit-v2-dynamic-selector.d.ts +904 -404
  285. package/types/rt-tools-ui-kit-v2-empty-state.d.ts +48 -19
  286. package/types/rt-tools-ui-kit-v2-expansion-panel.d.ts +67 -39
  287. package/types/rt-tools-ui-kit-v2-field.d.ts +90 -49
  288. package/types/rt-tools-ui-kit-v2-file-card.d.ts +115 -75
  289. package/types/rt-tools-ui-kit-v2-file-drop.d.ts +75 -48
  290. package/types/rt-tools-ui-kit-v2-file-input.d.ts +53 -36
  291. package/types/rt-tools-ui-kit-v2-file-list.d.ts +5 -8
  292. package/types/rt-tools-ui-kit-v2-filter-control.d.ts +83 -49
  293. package/types/rt-tools-ui-kit-v2-form-control.d.ts +102 -74
  294. package/types/rt-tools-ui-kit-v2-header.d.ts +40 -22
  295. package/types/rt-tools-ui-kit-v2-hybrid-tree-selector.d.ts +14 -0
  296. package/types/rt-tools-ui-kit-v2-hybrid-tree.d.ts +72 -0
  297. package/types/rt-tools-ui-kit-v2-icon-button.d.ts +190 -90
  298. package/types/rt-tools-ui-kit-v2-icon.d.ts +160 -129
  299. package/types/rt-tools-ui-kit-v2-image-cropper.d.ts +151 -111
  300. package/types/rt-tools-ui-kit-v2-image-upload.d.ts +159 -85
  301. package/types/rt-tools-ui-kit-v2-info-item.d.ts +26 -13
  302. package/types/rt-tools-ui-kit-v2-inline-edit.d.ts +194 -0
  303. package/types/rt-tools-ui-kit-v2-input-number.d.ts +102 -53
  304. package/types/rt-tools-ui-kit-v2-input.d.ts +82 -43
  305. package/types/rt-tools-ui-kit-v2-live-badge.d.ts +30 -17
  306. package/types/rt-tools-ui-kit-v2-logo.d.ts +49 -32
  307. package/types/rt-tools-ui-kit-v2-markdown-text.d.ts +26 -17
  308. package/types/rt-tools-ui-kit-v2-menu.d.ts +272 -155
  309. package/types/rt-tools-ui-kit-v2-message.d.ts +59 -33
  310. package/types/rt-tools-ui-kit-v2-money-list.d.ts +36 -18
  311. package/types/rt-tools-ui-kit-v2-multiselect.d.ts +114 -80
  312. package/types/rt-tools-ui-kit-v2-night-grid.d.ts +34 -25
  313. package/types/rt-tools-ui-kit-v2-note.d.ts +12 -9
  314. package/types/rt-tools-ui-kit-v2-notifications-bell.d.ts +37 -16
  315. package/types/rt-tools-ui-kit-v2-page-header.d.ts +218 -150
  316. package/types/rt-tools-ui-kit-v2-pagination.d.ts +99 -63
  317. package/types/rt-tools-ui-kit-v2-photo-viewer.d.ts +61 -66
  318. package/types/rt-tools-ui-kit-v2-popover.d.ts +116 -55
  319. package/types/rt-tools-ui-kit-v2-profile-menu.d.ts +103 -0
  320. package/types/rt-tools-ui-kit-v2-prompt-suggestion.d.ts +26 -16
  321. package/types/rt-tools-ui-kit-v2-radio-button.d.ts +85 -43
  322. package/types/rt-tools-ui-kit-v2-radius.d.ts +18 -15
  323. package/types/rt-tools-ui-kit-v2-rich-editor.d.ts +931 -590
  324. package/types/rt-tools-ui-kit-v2-ripple.d.ts +28 -25
  325. package/types/rt-tools-ui-kit-v2-scroll-area.d.ts +60 -58
  326. package/types/rt-tools-ui-kit-v2-section-nav.d.ts +32 -22
  327. package/types/rt-tools-ui-kit-v2-select.d.ts +182 -139
  328. package/types/rt-tools-ui-kit-v2-side-menu.d.ts +452 -349
  329. package/types/rt-tools-ui-kit-v2-skeleton-wrapper.d.ts +53 -20
  330. package/types/rt-tools-ui-kit-v2-skeleton.d.ts +55 -26
  331. package/types/rt-tools-ui-kit-v2-speed-menu.d.ts +131 -0
  332. package/types/rt-tools-ui-kit-v2-spinner.d.ts +56 -28
  333. package/types/rt-tools-ui-kit-v2-split-button.d.ts +96 -55
  334. package/types/rt-tools-ui-kit-v2-stat-tile.d.ts +88 -60
  335. package/types/rt-tools-ui-kit-v2-stepper.d.ts +50 -37
  336. package/types/rt-tools-ui-kit-v2-table.d.ts +631 -480
  337. package/types/rt-tools-ui-kit-v2-tabs.d.ts +198 -113
  338. package/types/rt-tools-ui-kit-v2-tag.d.ts +106 -53
  339. package/types/rt-tools-ui-kit-v2-textarea.d.ts +48 -25
  340. package/types/rt-tools-ui-kit-v2-theme-toggle.d.ts +28 -26
  341. package/types/rt-tools-ui-kit-v2-thread-list.d.ts +154 -94
  342. package/types/rt-tools-ui-kit-v2-timeline.d.ts +30 -28
  343. package/types/rt-tools-ui-kit-v2-toast.d.ts +174 -98
  344. package/types/rt-tools-ui-kit-v2-toggle-button-group.d.ts +132 -86
  345. package/types/rt-tools-ui-kit-v2-toggle-switch.d.ts +88 -50
  346. package/types/rt-tools-ui-kit-v2-toolbar.d.ts +30 -27
  347. package/types/rt-tools-ui-kit-v2-tooltip.d.ts +65 -41
  348. package/types/rt-tools-ui-kit-v2-tree-selector.d.ts +257 -0
  349. package/types/rt-tools-ui-kit-v2-tree.d.ts +282 -0
  350. package/types/rt-tools-ui-kit-v2-welcome-dialog.d.ts +21 -24
  351. package/types/rt-tools-ui-kit-v2-workspace-details.d.ts +195 -124
  352. package/types/rt-tools-ui-kit-v2-workspace.d.ts +122 -79
  353. package/types/rt-tools-ui-kit-v2.d.ts +100 -90
  354. package/fesm2022/rt-tools-ui-kit-v2.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"rt-tools-ui-kit-v2-button.mjs","sources":["../../../projects/ui-kit-v2/src/lib/components/button/rt-button.directive.ts","../../../projects/ui-kit-v2/src/lib/components/button/rt-tools-ui-kit-v2-button.ts"],"sourcesContent":["import { BooleanInput } from '@angular/cdk/coercion';\nimport { DOCUMENT } from '@angular/common';\nimport {\n afterNextRender,\n booleanAttribute,\n computed,\n Directive,\n effect,\n ElementRef,\n HostBinding,\n inject,\n input,\n InputSignal,\n InputSignalWithTransform,\n Renderer2,\n Signal,\n untracked,\n} from '@angular/core';\n\nimport { IRtKitConfig } from '@rt-tools/ui-kit-v2/core';\nimport { rtKitDefault } from '@rt-tools/ui-kit-v2/core';\nimport { RtRadiusDirective } from '@rt-tools/ui-kit-v2/radius';\nimport { RT_RADIUS_DEFAULT, TRtRadius } from '@rt-tools/ui-kit-v2/core';\nimport { IRtIcon } from '@rt-tools/ui-kit-v2/core';\nimport {\n RT_ICON_GLYPH_STRATEGY,\n RT_ICON_MATERIAL_PRESET_SELECTOR,\n RtIconFontService,\n RtIconRegistry,\n resolveIconGlyph,\n} from '@rt-tools/ui-kit-v2/icon';\nimport { iconMaterialDrawn } from '@rt-tools/ui-kit-v2/icon';\nimport { RtRippleDirective } from '@rt-tools/ui-kit-v2/ripple';\nimport { IButton } from '@rt-tools/ui-kit-v2/core';\n\nconst BEM_BLOCK: string = 'rt-button';\n\n/** Длительность затухания спиннера при выходе из загрузки. */\nconst LOADING_FADE_OUT_MS: number = 300;\n\n/** Запас поверх затухания, после которого подпись возвращается без анимации. */\nconst LOADING_FADE_OUT_BUFFER_MS: number = 50;\n\n/**\n * Директива стилизованной кнопки. Применяется к `<button>` или `<a>`\n * (для ссылок-кнопок с `routerLink`/`href`).\n *\n * Иконка и лейбл рендерятся внутрь элемента через `Renderer2`, чтобы можно\n * было применять директиву к существующему элементу без обёртки.\n * Поддерживает анимированный переход в/из loading.\n *\n * @example\n * ```html\n * <button rtButton label=\"Войти\" theme=\"primary\"></button>\n * <button rtButton label=\"Скачать\" icon=\"ico-download\" theme=\"success\"></button>\n * <button rtButton icon=\"pencil\" theme=\"info\" appearance=\"text\"></button>\n * <button rtButton label=\"Сохранение...\" [loading]=\"saving()\" [disabled]=\"saving()\"></button>\n * <a rtButton label=\"Главная\" [routerLink]=\"'/'\"></a>\n * ```\n */\n@Directive({\n selector: 'button[rtButton], a[rtButton]',\n hostDirectives: [\n { directive: RtRippleDirective, inputs: ['rippleDisabled'] },\n { directive: RtRadiusDirective, inputs: ['radius'] },\n ],\n /* Шаг скругления без входа берётся из настроек кита: приложение, скруглившее все кнопки разом,\n называет шаг один раз, а вход на кнопке по-прежнему сильнее. */\n providers: [\n {\n provide: RT_RADIUS_DEFAULT,\n useFactory: (): TRtRadius | null =>\n rtKitDefault('button', (it: IRtKitConfig.Button): TRtRadius | null | undefined => it.radius, null),\n },\n ],\n})\nexport class RtButtonDirective {\n readonly #el: ElementRef<HTMLButtonElement | HTMLAnchorElement> = inject<ElementRef<HTMLButtonElement | HTMLAnchorElement>>(ElementRef);\n readonly #renderer: Renderer2 = inject(Renderer2);\n readonly #doc: Document = inject(DOCUMENT);\n readonly #iconRegistry: RtIconRegistry = inject(RtIconRegistry);\n readonly #glyphStrategy: IRtIcon.GlyphStrategy = inject(RT_ICON_GLYPH_STRATEGY);\n readonly #fontReady: Signal<boolean> = inject(RtIconFontService).ready;\n\n /* С чего стартуют три входа, которые приложение вправе задать киту разом. Значение считается\n из настроек при объявлении входа: так публичный вид входа не меняется — ни тип, ни имя, — а\n вход, написанный в разметке, по-прежнему перебивает всё. Цена — настройки читаются один раз,\n когда узел создан. */\n readonly #appearance: IButton.Appearance = rtKitDefault(\n 'button',\n (it: IRtKitConfig.Button): IButton.Appearance | undefined => it.appearance,\n 'filled'\n );\n readonly #size: IButton.Size = rtKitDefault('button', (it: IRtKitConfig.Button): IButton.Size | undefined => it.size, 'md');\n\n #iconEl: HTMLElement | null = null;\n #labelEl: HTMLElement | null = null;\n #spinnerEl: HTMLElement | null = null;\n #wasLoading: boolean = false;\n\n protected readonly isIconOnly: Signal<boolean> = computed(() => !!this.icon() && !this.label());\n\n /** Текстовый лейбл кнопки. Если null — кнопка только с иконкой. */\n public readonly label: InputSignal<string | null> = input<string | null>(null);\n /**\n * Значок кнопки: имя кита (`check`) или имя Material (`arrow_back`). Имя Material рисуется\n * так же, как вход `glyph` у `rt-icon`: парой из перечня кита или лигатурой шрифта — по\n * настройке `glyphStrategy` у `provideRtIcons()`. Если null — без иконки.\n */\n public readonly icon: InputSignal<string | null> = input<string | null>(null);\n /** Сторона размещения иконки относительно лейбла. */\n public readonly iconPos: InputSignal<IButton.IconPos> = input<IButton.IconPos>('left');\n /** Семантическая палитра. */\n public readonly theme: InputSignal<IButton.Theme> = input<IButton.Theme>('primary');\n /** Внешний вид (filled / outlined / text). Умолчание — из настроек кита. */\n public readonly appearance: InputSignal<IButton.Appearance> = input<IButton.Appearance>(this.#appearance);\n /** Размер. Умолчание — из настроек кита. */\n public readonly size: InputSignal<IButton.Size> = input<IButton.Size>(this.#size);\n /** Состояние загрузки: показывает спиннер вместо иконки, блокирует клики. */\n public readonly loading: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Кастомный CSS-класс иконки в loading. Если null — встроенный CSS-спиннер. */\n public readonly loadingIcon: InputSignal<string | null> = input<string | null>(null);\n /**\n * Подпись во время загрузки. `hide` оставляет подпись и иконку в кнопке невидимыми — ширина\n * не скачет, — а спиннер ставит по центру; имя кнопки для скринридера остаётся.\n */\n public readonly loadingLabel: InputSignal<IButton.LoadingLabel> = input<IButton.LoadingLabel>('keep');\n\n /**\n * Положение двухпозиционной кнопки: `true` — нажата, `false` — отжата, `null` — положения нет\n * вовсе.\n *\n * Три значения, а не два, потому что обычная кнопка переключателем не является и объявлять\n * себя двухпозиционной не должна: сказанное вспомогательным средствам «эта кнопка отжата» на\n * кнопке, которая просто запускает действие, — ложь, а не умолчание. Отжатое положение при\n * этом объявляется наравне с нажатым: молчащая в отжатом виде кнопка неотличима от обычной, и\n * о втором положении узнают только нажав.\n *\n * Само по нажатию положение не меняется: кнопка говорит о нажатии наружу, а положение\n * возвращает вызывающий — иначе вид кнопки и состояние приложения расходятся при первом же\n * отказе сохранения.\n */\n public readonly pressed: InputSignal<boolean | null> = input<boolean | null>(null);\n\n constructor() {\n afterNextRender(() => untracked(() => this.#updateContent()));\n\n effect(() => {\n this.label();\n this.icon();\n this.iconPos();\n this.loading();\n this.loadingIcon();\n this.loadingLabel();\n // Лигатура до готовности шрифтов скрыта: готовность перерисовывает содержимое.\n this.#fontReady();\n\n untracked(() => this.#updateContent());\n });\n }\n\n /** Положение наружу: атрибута нет вовсе там, где положения у кнопки не бывает. */\n @HostBinding('attr.aria-pressed')\n protected get ariaPressed(): string | null {\n const pressed: boolean | null = this.pressed();\n\n return pressed === null ? null : String(pressed);\n }\n\n @HostBinding('class')\n protected get hostClasses(): Record<string, boolean> {\n const theme: IButton.Theme = this.theme();\n const appearance: IButton.Appearance = this.appearance();\n const size: IButton.Size = this.size();\n\n return {\n [BEM_BLOCK]: true,\n [`${BEM_BLOCK}--${theme}`]: theme !== 'primary',\n [`${BEM_BLOCK}--outlined`]: appearance === 'outlined',\n [`${BEM_BLOCK}--text`]: appearance === 'text',\n [`${BEM_BLOCK}--loading`]: this.loading(),\n [`${BEM_BLOCK}--loading-label-hidden`]: this.loading() && this.loadingLabel() === 'hide',\n [`${BEM_BLOCK}--icon-only`]: this.isIconOnly(),\n [`${BEM_BLOCK}--${size}`]: size !== 'md',\n [`${BEM_BLOCK}--pressed`]: this.pressed() === true,\n };\n }\n\n #updateContent(): void {\n const button: HTMLButtonElement | HTMLAnchorElement = this.#el.nativeElement;\n const isLoading: boolean = this.loading();\n const wasLoading: boolean = this.#wasLoading;\n this.#wasLoading = isLoading;\n\n if (wasLoading && !isLoading) {\n this.#transitionFromLoading(button);\n return;\n }\n\n this.#clearContent(button);\n\n if (isLoading) {\n this.#renderLoading(button);\n return;\n }\n\n this.#renderIconAndLabel(button);\n }\n\n #transitionFromLoading(button: HTMLElement): void {\n const spinnerEl: HTMLElement | null = this.#spinnerEl;\n\n if (spinnerEl === null) {\n this.#restoreContent(button);\n return;\n }\n\n spinnerEl.style.animation = `rt-button-fade-out ${LOADING_FADE_OUT_MS}ms ease-out forwards`;\n\n // settled-гард делает animationend и страховочный таймаут взаимно\n // идемпотентными — сработает и снимет listener только то, что раньше.\n // Без таймаута подпись возвращалась бы только по анимации, а она не\n // идёт, пока кнопка спрятана (свёрнутая панель, неактивная вкладка):\n // выход из загрузки не наступал никогда, и на кнопке навсегда\n // оставался голый спиннер.\n let settled: boolean = false;\n\n const finish: () => void = (): void => {\n if (settled) {\n return;\n }\n settled = true;\n spinnerEl.removeEventListener('animationend', finish);\n this.#restoreContent(button);\n };\n\n spinnerEl.addEventListener('animationend', finish);\n setTimeout(finish, LOADING_FADE_OUT_MS + LOADING_FADE_OUT_BUFFER_MS);\n }\n\n #restoreContent(button: HTMLElement): void {\n this.#clearContent(button);\n this.#renderIconAndLabel(button);\n }\n\n /**\n * Чистим по классу, а не по своим ссылкам. Под серверным рендером разметку\n * кнопки рисует сервер: после гидратации лейбл и иконка уже лежат в DOM, но создавал их\n * другой экземпляр директивы, и `#labelEl` у клиентского — пустой. Ссылки\n * тогда не находят ничего, а `#renderIconAndLabel` дорисовывает второй\n * лейбл — подпись кнопки удваивается («СохранитьСохранить»).\n */\n #clearContent(button: HTMLElement): void {\n const ownClasses: ReadonlyArray<string> = [`${BEM_BLOCK}__icon`, `${BEM_BLOCK}__label`, `${BEM_BLOCK}__spinner`];\n\n // Обход по детям, а не селектором `:scope >`: тот же код исполняется на\n // сервере, где DOM эмулированный и селекторный движок урезан\n for (const child of Array.from(button.children)) {\n if (ownClasses.some((ownClass: string): boolean => child.classList.contains(ownClass))) {\n this.#renderer.removeChild(button, child);\n }\n }\n\n this.#iconEl = null;\n this.#labelEl = null;\n this.#spinnerEl = null;\n }\n\n #renderLoading(button: HTMLElement): void {\n const loadingIcon: string | null = this.loadingIcon();\n const loader: HTMLElement = loadingIcon ? this.#createIcon(loadingIcon) : this.#createSpinner();\n\n if (this.loadingLabel() === 'hide') {\n // Обычное содержимое остаётся и держит ширину; стили гасят его и ставят\n // загрузчик поверх по центру\n this.#renderIconAndLabel(button);\n this.#renderer.addClass(loader, `${BEM_BLOCK}__loader`);\n this.#renderer.appendChild(button, loader);\n if (!loadingIcon) {\n this.#spinnerEl = loader;\n }\n return;\n }\n\n if (loadingIcon) {\n this.#iconEl = loader;\n this.#renderer.appendChild(button, this.#iconEl);\n } else {\n this.#spinnerEl = loader;\n this.#renderer.appendChild(button, this.#spinnerEl);\n }\n\n const label: string | null = this.label();\n if (label) {\n this.#labelEl = this.#createLabel(label);\n this.#renderer.appendChild(button, this.#labelEl);\n }\n }\n\n #renderIconAndLabel(button: HTMLElement): void {\n const iconClass: string | null = this.icon();\n const label: string | null = this.label();\n const pos: IButton.IconPos = this.iconPos();\n\n const iconEl: HTMLElement | null = iconClass ? this.#createIcon(iconClass) : null;\n const labelEl: HTMLElement | null = label ? this.#createLabel(label) : null;\n\n if (pos === 'left') {\n if (iconEl) {\n this.#renderer.appendChild(button, iconEl);\n }\n if (labelEl) {\n this.#renderer.appendChild(button, labelEl);\n }\n } else {\n if (labelEl) {\n this.#renderer.appendChild(button, labelEl);\n }\n if (iconEl) {\n this.#renderer.appendChild(button, iconEl);\n }\n }\n\n this.#iconEl = iconEl;\n this.#labelEl = labelEl;\n }\n\n #createIcon(iconName: string): HTMLElement {\n const resolved: IRtIcon.Resolved | null = resolveIconGlyph(null, iconName, this.#glyphStrategy);\n if (resolved?.kind === 'kit') {\n return this.#createKitIcon(resolved.name);\n }\n return this.#createGlyph(iconName);\n }\n\n #createKitIcon(name: IRtIcon.Name): HTMLElement {\n const svg: SVGSVGElement = this.#doc.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('focusable', 'false');\n svg.setAttribute('aria-hidden', 'true');\n svg.setAttribute('viewBox', '0 0 24 24');\n svg.classList.add(`${BEM_BLOCK}__icon`);\n\n // Тот же путь, что и у компонента значка: имя просится у реестра, а он ходит за файлом\n // один раз на страницу — значок, спрошенный обеими разметками сразу, едет одним запросом.\n const drawing: IRtIcon.Drawing = this.#drawingOf(name);\n this.#iconRegistry.request(name, drawing);\n\n const use: SVGUseElement = this.#doc.createElementNS('http://www.w3.org/2000/svg', 'use');\n use.setAttribute('href', this.#iconRegistry.symbolHref(name, drawing));\n svg.appendChild(use);\n\n return svg as unknown as HTMLElement;\n }\n\n /**\n * Набор рисунка — как у компонента значка: материальный рисунок под разметкой с признаком\n * материального набора, если у имени он есть. Признак читается при каждой отрисовке\n * содержимого, а после первой отрисовки она повторяется — контейнер к тому времени на месте.\n */\n #drawingOf(name: IRtIcon.Name): IRtIcon.Drawing {\n const underMaterial: boolean = this.#el.nativeElement.closest(RT_ICON_MATERIAL_PRESET_SELECTOR) !== null;\n return underMaterial && iconMaterialDrawn.has(name) ? 'material' : 'base';\n }\n\n /** Лигатура шрифта Material Symbols для имени без пары. Шрифт подключает приложение. */\n #createGlyph(glyph: string): HTMLElement {\n const el: HTMLElement = this.#renderer.createElement('span') as HTMLElement;\n this.#renderer.addClass(el, `${BEM_BLOCK}__icon`);\n this.#renderer.addClass(el, `${BEM_BLOCK}__glyph`);\n if (!this.#fontReady()) {\n this.#renderer.addClass(el, `${BEM_BLOCK}__glyph--pending`);\n }\n this.#renderer.setAttribute(el, 'aria-hidden', 'true');\n this.#renderer.appendChild(el, this.#renderer.createText(glyph));\n return el;\n }\n\n #createLabel(text: string): HTMLElement {\n const el: HTMLElement = this.#renderer.createElement('span') as HTMLElement;\n this.#renderer.addClass(el, `${BEM_BLOCK}__label`);\n this.#renderer.appendChild(el, this.#renderer.createText(text));\n return el;\n }\n\n #createSpinner(): HTMLElement {\n const wrapper: HTMLElement = this.#renderer.createElement('span') as HTMLElement;\n this.#renderer.addClass(wrapper, `${BEM_BLOCK}__spinner`);\n\n const circle: HTMLElement = this.#renderer.createElement('span') as HTMLElement;\n this.#renderer.addClass(circle, `${BEM_BLOCK}__spinner-circle`);\n this.#renderer.appendChild(wrapper, circle);\n\n return wrapper;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rt-tools-ui-kit-v2-button.mjs","names":[],"sources":["../../../projects/ui-kit-v2/src/lib/components/button/rt-button.directive.ts"],"sourcesContent":["import { BooleanInput } from '@angular/cdk/coercion';\nimport { DOCUMENT } from '@angular/common';\nimport {\n afterNextRender,\n booleanAttribute,\n computed,\n Directive,\n effect,\n ElementRef,\n HostBinding,\n inject,\n input,\n InputSignal,\n InputSignalWithTransform,\n Renderer2,\n Signal,\n untracked,\n} from '@angular/core';\n\nimport { IRtKitConfig } from '@rt-tools/ui-kit-v2/core';\nimport { rtKitDefault } from '@rt-tools/ui-kit-v2/core';\nimport { RtRadiusDirective } from '@rt-tools/ui-kit-v2/radius';\nimport { RT_RADIUS_DEFAULT, TRtRadius } from '@rt-tools/ui-kit-v2/core';\nimport { IRtIcon } from '@rt-tools/ui-kit-v2/core';\nimport {\n RT_ICON_GLYPH_STRATEGY,\n RT_ICON_MATERIAL_PRESET_SELECTOR,\n RtIconFontService,\n RtIconRegistry,\n resolveIconGlyph,\n} from '@rt-tools/ui-kit-v2/icon';\nimport { iconMaterialDrawn } from '@rt-tools/ui-kit-v2/icon';\nimport { RtRippleDirective } from '@rt-tools/ui-kit-v2/ripple';\nimport { IButton } from '@rt-tools/ui-kit-v2/core';\n\nconst BEM_BLOCK: string = 'rt-button';\n\n/** Длительность затухания спиннера при выходе из загрузки. */\nconst LOADING_FADE_OUT_MS: number = 300;\n\n/** Запас поверх затухания, после которого подпись возвращается без анимации. */\nconst LOADING_FADE_OUT_BUFFER_MS: number = 50;\n\n/**\n * Директива стилизованной кнопки. Применяется к `<button>` или `<a>`\n * (для ссылок-кнопок с `routerLink`/`href`).\n *\n * Иконка и лейбл рендерятся внутрь элемента через `Renderer2`, чтобы можно\n * было применять директиву к существующему элементу без обёртки.\n * Поддерживает анимированный переход в/из loading.\n *\n * @example\n * ```html\n * <button rtButton label=\"Войти\" theme=\"primary\"></button>\n * <button rtButton label=\"Скачать\" icon=\"ico-download\" theme=\"success\"></button>\n * <button rtButton icon=\"pencil\" theme=\"info\" appearance=\"text\"></button>\n * <button rtButton label=\"Сохранение...\" [loading]=\"saving()\" [disabled]=\"saving()\"></button>\n * <a rtButton label=\"Главная\" [routerLink]=\"'/'\"></a>\n * ```\n */\n@Directive({\n selector: 'button[rtButton], a[rtButton]',\n hostDirectives: [\n { directive: RtRippleDirective, inputs: ['rippleDisabled'] },\n { directive: RtRadiusDirective, inputs: ['radius'] },\n ],\n /* Шаг скругления без входа берётся из настроек кита: приложение, скруглившее все кнопки разом,\n называет шаг один раз, а вход на кнопке по-прежнему сильнее. */\n providers: [\n {\n provide: RT_RADIUS_DEFAULT,\n useFactory: (): TRtRadius | null =>\n rtKitDefault('button', (it: IRtKitConfig.Button): TRtRadius | null | undefined => it.radius, null),\n },\n ],\n})\nexport class RtButtonDirective {\n readonly #el: ElementRef<HTMLButtonElement | HTMLAnchorElement> = inject<ElementRef<HTMLButtonElement | HTMLAnchorElement>>(ElementRef);\n readonly #renderer: Renderer2 = inject(Renderer2);\n readonly #doc: Document = inject(DOCUMENT);\n readonly #iconRegistry: RtIconRegistry = inject(RtIconRegistry);\n readonly #glyphStrategy: IRtIcon.GlyphStrategy = inject(RT_ICON_GLYPH_STRATEGY);\n readonly #fontReady: Signal<boolean> = inject(RtIconFontService).ready;\n\n /* С чего стартуют три входа, которые приложение вправе задать киту разом. Значение считается\n из настроек при объявлении входа: так публичный вид входа не меняется — ни тип, ни имя, — а\n вход, написанный в разметке, по-прежнему перебивает всё. Цена — настройки читаются один раз,\n когда узел создан. */\n readonly #appearance: IButton.Appearance = rtKitDefault(\n 'button',\n (it: IRtKitConfig.Button): IButton.Appearance | undefined => it.appearance,\n 'filled'\n );\n readonly #size: IButton.Size = rtKitDefault('button', (it: IRtKitConfig.Button): IButton.Size | undefined => it.size, 'md');\n\n #iconEl: HTMLElement | null = null;\n #labelEl: HTMLElement | null = null;\n #spinnerEl: HTMLElement | null = null;\n #wasLoading: boolean = false;\n\n protected readonly isIconOnly: Signal<boolean> = computed(() => !!this.icon() && !this.label());\n\n /** Текстовый лейбл кнопки. Если null — кнопка только с иконкой. */\n public readonly label: InputSignal<string | null> = input<string | null>(null);\n /**\n * Значок кнопки: имя кита (`check`) или имя Material (`arrow_back`). Имя Material рисуется\n * так же, как вход `glyph` у `rt-icon`: парой из перечня кита или лигатурой шрифта — по\n * настройке `glyphStrategy` у `provideRtIcons()`. Если null — без иконки.\n */\n public readonly icon: InputSignal<string | null> = input<string | null>(null);\n /** Сторона размещения иконки относительно лейбла. */\n public readonly iconPos: InputSignal<IButton.IconPos> = input<IButton.IconPos>('left');\n /** Семантическая палитра. */\n public readonly theme: InputSignal<IButton.Theme> = input<IButton.Theme>('primary');\n /** Внешний вид (filled / outlined / text). Умолчание — из настроек кита. */\n public readonly appearance: InputSignal<IButton.Appearance> = input<IButton.Appearance>(this.#appearance);\n /** Размер. Умолчание — из настроек кита. */\n public readonly size: InputSignal<IButton.Size> = input<IButton.Size>(this.#size);\n /** Состояние загрузки: показывает спиннер вместо иконки, блокирует клики. */\n public readonly loading: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Кастомный CSS-класс иконки в loading. Если null — встроенный CSS-спиннер. */\n public readonly loadingIcon: InputSignal<string | null> = input<string | null>(null);\n /**\n * Подпись во время загрузки. `hide` оставляет подпись и иконку в кнопке невидимыми — ширина\n * не скачет, — а спиннер ставит по центру; имя кнопки для скринридера остаётся.\n */\n public readonly loadingLabel: InputSignal<IButton.LoadingLabel> = input<IButton.LoadingLabel>('keep');\n\n /**\n * Положение двухпозиционной кнопки: `true` — нажата, `false` — отжата, `null` — положения нет\n * вовсе.\n *\n * Три значения, а не два, потому что обычная кнопка переключателем не является и объявлять\n * себя двухпозиционной не должна: сказанное вспомогательным средствам «эта кнопка отжата» на\n * кнопке, которая просто запускает действие, — ложь, а не умолчание. Отжатое положение при\n * этом объявляется наравне с нажатым: молчащая в отжатом виде кнопка неотличима от обычной, и\n * о втором положении узнают только нажав.\n *\n * Само по нажатию положение не меняется: кнопка говорит о нажатии наружу, а положение\n * возвращает вызывающий — иначе вид кнопки и состояние приложения расходятся при первом же\n * отказе сохранения.\n */\n public readonly pressed: InputSignal<boolean | null> = input<boolean | null>(null);\n\n constructor() {\n afterNextRender(() => untracked(() => this.#updateContent()));\n\n effect(() => {\n this.label();\n this.icon();\n this.iconPos();\n this.loading();\n this.loadingIcon();\n this.loadingLabel();\n // Лигатура до готовности шрифтов скрыта: готовность перерисовывает содержимое.\n this.#fontReady();\n\n untracked(() => this.#updateContent());\n });\n }\n\n /** Положение наружу: атрибута нет вовсе там, где положения у кнопки не бывает. */\n @HostBinding('attr.aria-pressed')\n protected get ariaPressed(): string | null {\n const pressed: boolean | null = this.pressed();\n\n return pressed === null ? null : String(pressed);\n }\n\n @HostBinding('class')\n protected get hostClasses(): Record<string, boolean> {\n const theme: IButton.Theme = this.theme();\n const appearance: IButton.Appearance = this.appearance();\n const size: IButton.Size = this.size();\n\n return {\n [BEM_BLOCK]: true,\n [`${BEM_BLOCK}--${theme}`]: theme !== 'primary',\n [`${BEM_BLOCK}--outlined`]: appearance === 'outlined',\n [`${BEM_BLOCK}--text`]: appearance === 'text',\n [`${BEM_BLOCK}--loading`]: this.loading(),\n [`${BEM_BLOCK}--loading-label-hidden`]: this.loading() && this.loadingLabel() === 'hide',\n [`${BEM_BLOCK}--icon-only`]: this.isIconOnly(),\n [`${BEM_BLOCK}--${size}`]: size !== 'md',\n [`${BEM_BLOCK}--pressed`]: this.pressed() === true,\n };\n }\n\n #updateContent(): void {\n const button: HTMLButtonElement | HTMLAnchorElement = this.#el.nativeElement;\n const isLoading: boolean = this.loading();\n const wasLoading: boolean = this.#wasLoading;\n this.#wasLoading = isLoading;\n\n if (wasLoading && !isLoading) {\n this.#transitionFromLoading(button);\n return;\n }\n\n this.#clearContent(button);\n\n if (isLoading) {\n this.#renderLoading(button);\n return;\n }\n\n this.#renderIconAndLabel(button);\n }\n\n #transitionFromLoading(button: HTMLElement): void {\n const spinnerEl: HTMLElement | null = this.#spinnerEl;\n\n if (spinnerEl === null) {\n this.#restoreContent(button);\n return;\n }\n\n spinnerEl.style.animation = `rt-button-fade-out ${LOADING_FADE_OUT_MS}ms ease-out forwards`;\n\n // settled-гард делает animationend и страховочный таймаут взаимно\n // идемпотентными — сработает и снимет listener только то, что раньше.\n // Без таймаута подпись возвращалась бы только по анимации, а она не\n // идёт, пока кнопка спрятана (свёрнутая панель, неактивная вкладка):\n // выход из загрузки не наступал никогда, и на кнопке навсегда\n // оставался голый спиннер.\n let settled: boolean = false;\n\n const finish: () => void = (): void => {\n if (settled) {\n return;\n }\n settled = true;\n spinnerEl.removeEventListener('animationend', finish);\n this.#restoreContent(button);\n };\n\n spinnerEl.addEventListener('animationend', finish);\n setTimeout(finish, LOADING_FADE_OUT_MS + LOADING_FADE_OUT_BUFFER_MS);\n }\n\n #restoreContent(button: HTMLElement): void {\n this.#clearContent(button);\n this.#renderIconAndLabel(button);\n }\n\n /**\n * Чистим по классу, а не по своим ссылкам. Под серверным рендером разметку\n * кнопки рисует сервер: после гидратации лейбл и иконка уже лежат в DOM, но создавал их\n * другой экземпляр директивы, и `#labelEl` у клиентского — пустой. Ссылки\n * тогда не находят ничего, а `#renderIconAndLabel` дорисовывает второй\n * лейбл — подпись кнопки удваивается («СохранитьСохранить»).\n */\n #clearContent(button: HTMLElement): void {\n const ownClasses: ReadonlyArray<string> = [`${BEM_BLOCK}__icon`, `${BEM_BLOCK}__label`, `${BEM_BLOCK}__spinner`];\n\n // Обход по детям, а не селектором `:scope >`: тот же код исполняется на\n // сервере, где DOM эмулированный и селекторный движок урезан\n for (const child of Array.from(button.children)) {\n if (ownClasses.some((ownClass: string): boolean => child.classList.contains(ownClass))) {\n this.#renderer.removeChild(button, child);\n }\n }\n\n this.#iconEl = null;\n this.#labelEl = null;\n this.#spinnerEl = null;\n }\n\n #renderLoading(button: HTMLElement): void {\n const loadingIcon: string | null = this.loadingIcon();\n const loader: HTMLElement = loadingIcon ? this.#createIcon(loadingIcon) : this.#createSpinner();\n\n if (this.loadingLabel() === 'hide') {\n // Обычное содержимое остаётся и держит ширину; стили гасят его и ставят\n // загрузчик поверх по центру\n this.#renderIconAndLabel(button);\n this.#renderer.addClass(loader, `${BEM_BLOCK}__loader`);\n this.#renderer.appendChild(button, loader);\n if (!loadingIcon) {\n this.#spinnerEl = loader;\n }\n return;\n }\n\n if (loadingIcon) {\n this.#iconEl = loader;\n this.#renderer.appendChild(button, this.#iconEl);\n } else {\n this.#spinnerEl = loader;\n this.#renderer.appendChild(button, this.#spinnerEl);\n }\n\n const label: string | null = this.label();\n if (label) {\n this.#labelEl = this.#createLabel(label);\n this.#renderer.appendChild(button, this.#labelEl);\n }\n }\n\n #renderIconAndLabel(button: HTMLElement): void {\n const iconClass: string | null = this.icon();\n const label: string | null = this.label();\n const pos: IButton.IconPos = this.iconPos();\n\n const iconEl: HTMLElement | null = iconClass ? this.#createIcon(iconClass) : null;\n const labelEl: HTMLElement | null = label ? this.#createLabel(label) : null;\n\n if (pos === 'left') {\n if (iconEl) {\n this.#renderer.appendChild(button, iconEl);\n }\n if (labelEl) {\n this.#renderer.appendChild(button, labelEl);\n }\n } else {\n if (labelEl) {\n this.#renderer.appendChild(button, labelEl);\n }\n if (iconEl) {\n this.#renderer.appendChild(button, iconEl);\n }\n }\n\n this.#iconEl = iconEl;\n this.#labelEl = labelEl;\n }\n\n #createIcon(iconName: string): HTMLElement {\n const resolved: IRtIcon.Resolved | null = resolveIconGlyph(null, iconName, this.#glyphStrategy);\n if (resolved?.kind === 'kit') {\n return this.#createKitIcon(resolved.name);\n }\n return this.#createGlyph(iconName);\n }\n\n #createKitIcon(name: IRtIcon.Name): HTMLElement {\n const svg: SVGSVGElement = this.#doc.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('focusable', 'false');\n svg.setAttribute('aria-hidden', 'true');\n svg.setAttribute('viewBox', '0 0 24 24');\n svg.classList.add(`${BEM_BLOCK}__icon`);\n\n // Тот же путь, что и у компонента значка: имя просится у реестра, а он ходит за файлом\n // один раз на страницу — значок, спрошенный обеими разметками сразу, едет одним запросом.\n const drawing: IRtIcon.Drawing = this.#drawingOf(name);\n this.#iconRegistry.request(name, drawing);\n\n const use: SVGUseElement = this.#doc.createElementNS('http://www.w3.org/2000/svg', 'use');\n use.setAttribute('href', this.#iconRegistry.symbolHref(name, drawing));\n svg.appendChild(use);\n\n return svg as unknown as HTMLElement;\n }\n\n /**\n * Набор рисунка — как у компонента значка: материальный рисунок под разметкой с признаком\n * материального набора, если у имени он есть. Признак читается при каждой отрисовке\n * содержимого, а после первой отрисовки она повторяется — контейнер к тому времени на месте.\n */\n #drawingOf(name: IRtIcon.Name): IRtIcon.Drawing {\n const underMaterial: boolean = this.#el.nativeElement.closest(RT_ICON_MATERIAL_PRESET_SELECTOR) !== null;\n return underMaterial && iconMaterialDrawn.has(name) ? 'material' : 'base';\n }\n\n /** Лигатура шрифта Material Symbols для имени без пары. Шрифт подключает приложение. */\n #createGlyph(glyph: string): HTMLElement {\n const el: HTMLElement = this.#renderer.createElement('span') as HTMLElement;\n this.#renderer.addClass(el, `${BEM_BLOCK}__icon`);\n this.#renderer.addClass(el, `${BEM_BLOCK}__glyph`);\n if (!this.#fontReady()) {\n this.#renderer.addClass(el, `${BEM_BLOCK}__glyph--pending`);\n }\n this.#renderer.setAttribute(el, 'aria-hidden', 'true');\n this.#renderer.appendChild(el, this.#renderer.createText(glyph));\n return el;\n }\n\n #createLabel(text: string): HTMLElement {\n const el: HTMLElement = this.#renderer.createElement('span') as HTMLElement;\n this.#renderer.addClass(el, `${BEM_BLOCK}__label`);\n this.#renderer.appendChild(el, this.#renderer.createText(text));\n return el;\n }\n\n #createSpinner(): HTMLElement {\n const wrapper: HTMLElement = this.#renderer.createElement('span') as HTMLElement;\n this.#renderer.addClass(wrapper, `${BEM_BLOCK}__spinner`);\n\n const circle: HTMLElement = this.#renderer.createElement('span') as HTMLElement;\n this.#renderer.addClass(circle, `${BEM_BLOCK}__spinner-circle`);\n this.#renderer.appendChild(wrapper, circle);\n\n return wrapper;\n }\n}\n"],"mappings":"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"}