@rt-tools/ui-kit-v2 0.23.3 → 0.23.4

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 (348) 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 +2309 -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-prompt-suggestion.mjs +135 -45
  138. package/fesm2022/rt-tools-ui-kit-v2-prompt-suggestion.mjs.map +1 -1
  139. package/fesm2022/rt-tools-ui-kit-v2-radio-button.mjs +293 -171
  140. package/fesm2022/rt-tools-ui-kit-v2-radio-button.mjs.map +1 -1
  141. package/fesm2022/rt-tools-ui-kit-v2-radius.mjs +62 -55
  142. package/fesm2022/rt-tools-ui-kit-v2-radius.mjs.map +1 -1
  143. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs +3379 -1466
  144. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs.map +1 -1
  145. package/fesm2022/rt-tools-ui-kit-v2-ripple.mjs +114 -116
  146. package/fesm2022/rt-tools-ui-kit-v2-ripple.mjs.map +1 -1
  147. package/fesm2022/rt-tools-ui-kit-v2-scroll-area.mjs +406 -299
  148. package/fesm2022/rt-tools-ui-kit-v2-scroll-area.mjs.map +1 -1
  149. package/fesm2022/rt-tools-ui-kit-v2-section-nav.mjs +137 -36
  150. package/fesm2022/rt-tools-ui-kit-v2-section-nav.mjs.map +1 -1
  151. package/fesm2022/rt-tools-ui-kit-v2-select.mjs +687 -468
  152. package/fesm2022/rt-tools-ui-kit-v2-select.mjs.map +1 -1
  153. package/fesm2022/rt-tools-ui-kit-v2-side-menu.mjs +2195 -1569
  154. package/fesm2022/rt-tools-ui-kit-v2-side-menu.mjs.map +1 -1
  155. package/fesm2022/rt-tools-ui-kit-v2-skeleton-wrapper.mjs +187 -48
  156. package/fesm2022/rt-tools-ui-kit-v2-skeleton-wrapper.mjs.map +1 -1
  157. package/fesm2022/rt-tools-ui-kit-v2-skeleton.mjs +242 -122
  158. package/fesm2022/rt-tools-ui-kit-v2-skeleton.mjs.map +1 -1
  159. package/fesm2022/rt-tools-ui-kit-v2-speed-menu.mjs +439 -0
  160. package/fesm2022/rt-tools-ui-kit-v2-speed-menu.mjs.map +1 -0
  161. package/fesm2022/rt-tools-ui-kit-v2-spinner.mjs +218 -69
  162. package/fesm2022/rt-tools-ui-kit-v2-spinner.mjs.map +1 -1
  163. package/fesm2022/rt-tools-ui-kit-v2-split-button.mjs +292 -91
  164. package/fesm2022/rt-tools-ui-kit-v2-split-button.mjs.map +1 -1
  165. package/fesm2022/rt-tools-ui-kit-v2-stat-tile.mjs +225 -138
  166. package/fesm2022/rt-tools-ui-kit-v2-stat-tile.mjs.map +1 -1
  167. package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs +150 -116
  168. package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs.map +1 -1
  169. package/fesm2022/rt-tools-ui-kit-v2-table.mjs +2462 -1583
  170. package/fesm2022/rt-tools-ui-kit-v2-table.mjs.map +1 -1
  171. package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs +647 -346
  172. package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs.map +1 -1
  173. package/fesm2022/rt-tools-ui-kit-v2-tag.mjs +335 -121
  174. package/fesm2022/rt-tools-ui-kit-v2-tag.mjs.map +1 -1
  175. package/fesm2022/rt-tools-ui-kit-v2-textarea.mjs +217 -84
  176. package/fesm2022/rt-tools-ui-kit-v2-textarea.mjs.map +1 -1
  177. package/fesm2022/rt-tools-ui-kit-v2-theme-toggle.mjs +151 -72
  178. package/fesm2022/rt-tools-ui-kit-v2-theme-toggle.mjs.map +1 -1
  179. package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs +697 -226
  180. package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs.map +1 -1
  181. package/fesm2022/rt-tools-ui-kit-v2-timeline.mjs +92 -38
  182. package/fesm2022/rt-tools-ui-kit-v2-timeline.mjs.map +1 -1
  183. package/fesm2022/rt-tools-ui-kit-v2-toast.mjs +752 -338
  184. package/fesm2022/rt-tools-ui-kit-v2-toast.mjs.map +1 -1
  185. package/fesm2022/rt-tools-ui-kit-v2-toggle-button-group.mjs +310 -129
  186. package/fesm2022/rt-tools-ui-kit-v2-toggle-button-group.mjs.map +1 -1
  187. package/fesm2022/rt-tools-ui-kit-v2-toggle-switch.mjs +286 -158
  188. package/fesm2022/rt-tools-ui-kit-v2-toggle-switch.mjs.map +1 -1
  189. package/fesm2022/rt-tools-ui-kit-v2-toolbar.mjs +270 -134
  190. package/fesm2022/rt-tools-ui-kit-v2-toolbar.mjs.map +1 -1
  191. package/fesm2022/rt-tools-ui-kit-v2-tooltip.mjs +322 -202
  192. package/fesm2022/rt-tools-ui-kit-v2-tooltip.mjs.map +1 -1
  193. package/fesm2022/rt-tools-ui-kit-v2-tree-selector.mjs +908 -0
  194. package/fesm2022/rt-tools-ui-kit-v2-tree-selector.mjs.map +1 -0
  195. package/fesm2022/rt-tools-ui-kit-v2-tree.mjs +785 -0
  196. package/fesm2022/rt-tools-ui-kit-v2-tree.mjs.map +1 -0
  197. package/fesm2022/rt-tools-ui-kit-v2-welcome-dialog.mjs +118 -63
  198. package/fesm2022/rt-tools-ui-kit-v2-welcome-dialog.mjs.map +1 -1
  199. package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs +783 -262
  200. package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs.map +1 -1
  201. package/fesm2022/rt-tools-ui-kit-v2-workspace.mjs +633 -294
  202. package/fesm2022/rt-tools-ui-kit-v2-workspace.mjs.map +1 -1
  203. package/fesm2022/rt-tools-ui-kit-v2.mjs +100 -103
  204. package/package.json +41 -1
  205. package/src/assets/icons/collapse-all.svg +9 -0
  206. package/src/assets/icons/expand-all.svg +9 -0
  207. package/src/assets/icons-material/collapse-all.fill.svg +5 -0
  208. package/src/assets/icons-material/collapse-all.svg +5 -0
  209. package/src/assets/icons-material/expand-all.fill.svg +5 -0
  210. package/src/assets/icons-material/expand-all.svg +5 -0
  211. package/src/assets/icons-material/undo.fill.svg +5 -0
  212. package/src/assets/icons-material/undo.svg +5 -0
  213. package/src/lib/components/bottom-sheet/CONTEXT.md +20 -2
  214. package/src/lib/components/bottom-sheet/rt-bottom-sheet.component.scss +35 -1
  215. package/src/lib/components/breadcrumbs/CONTEXT.md +37 -0
  216. package/src/lib/components/breadcrumbs/rt-breadcrumbs.component.scss +205 -0
  217. package/src/lib/components/carousel/CONTEXT.md +42 -0
  218. package/src/lib/components/carousel/rt-carousel.component.scss +117 -0
  219. package/src/lib/components/checkbox/CONTEXT.md +3 -0
  220. package/src/lib/components/checkbox/rt-checkbox.component.scss +9 -3
  221. package/src/lib/components/color-palette/CONTEXT.md +49 -0
  222. package/src/lib/components/color-palette/picker/rt-color-picker.component.scss +161 -0
  223. package/src/lib/components/color-palette/rt-color-palette.component.scss +132 -0
  224. package/src/lib/components/draggable-tree/CONTEXT.md +54 -0
  225. package/src/lib/components/draggable-tree/rt-draggable-tree.component.scss +219 -0
  226. package/src/lib/components/hybrid-tree/CONTEXT.md +31 -0
  227. package/src/lib/components/hybrid-tree-selector/CONTEXT.md +25 -0
  228. package/src/lib/components/icon-button/CONTEXT.md +3 -0
  229. package/src/lib/components/inline-edit/CONTEXT.md +41 -0
  230. package/src/lib/components/inline-edit/rt-inline-edit.component.scss +274 -0
  231. package/src/lib/components/popover/CONTEXT.md +3 -0
  232. package/src/lib/components/speed-menu/CONTEXT.md +34 -0
  233. package/src/lib/components/speed-menu/rt-speed-menu.component.scss +118 -0
  234. package/src/lib/components/tag/rt-tag.component.scss +12 -0
  235. package/src/lib/components/thread-list/CONTEXT.md +1 -0
  236. package/src/lib/components/thread-list/rt-thread-list.component.scss +2 -1
  237. package/src/lib/components/toolbar/CONTEXT.md +9 -4
  238. package/src/lib/components/toolbar/rt-toolbar.component.scss +10 -2
  239. package/src/lib/components/tooltip/CONTEXT.md +8 -1
  240. package/src/lib/components/tree/CONTEXT.md +66 -0
  241. package/src/lib/components/tree/rt-tree.component.scss +313 -0
  242. package/src/lib/components/tree-selector/CONTEXT.md +47 -0
  243. package/src/lib/components/tree-selector/rt-tree-selector.component.scss +121 -0
  244. package/src/styles/_primitives.scss +4 -0
  245. package/styles/tokens.css +3 -0
  246. package/types/rt-tools-ui-kit-v2-accordion.d.ts +31 -24
  247. package/types/rt-tools-ui-kit-v2-action-bar.d.ts +112 -91
  248. package/types/rt-tools-ui-kit-v2-ai-run-status.d.ts +64 -40
  249. package/types/rt-tools-ui-kit-v2-aside-section.d.ts +13 -10
  250. package/types/rt-tools-ui-kit-v2-aside.d.ts +268 -206
  251. package/types/rt-tools-ui-kit-v2-autocomplete.d.ts +102 -61
  252. package/types/rt-tools-ui-kit-v2-bar-list.d.ts +39 -27
  253. package/types/rt-tools-ui-kit-v2-bottom-sheet.d.ts +31 -20
  254. package/types/rt-tools-ui-kit-v2-breadcrumbs.d.ts +89 -0
  255. package/types/rt-tools-ui-kit-v2-button.d.ts +119 -59
  256. package/types/rt-tools-ui-kit-v2-calendar.d.ts +151 -86
  257. package/types/rt-tools-ui-kit-v2-card.d.ts +42 -21
  258. package/types/rt-tools-ui-kit-v2-carousel.d.ts +76 -0
  259. package/types/rt-tools-ui-kit-v2-checkbox.d.ts +48 -24
  260. package/types/rt-tools-ui-kit-v2-collapsible-text.d.ts +28 -20
  261. package/types/rt-tools-ui-kit-v2-color-palette.d.ts +208 -0
  262. package/types/rt-tools-ui-kit-v2-confirm-popover.d.ts +104 -47
  263. package/types/rt-tools-ui-kit-v2-container.d.ts +278 -221
  264. package/types/rt-tools-ui-kit-v2-copy-value.d.ts +39 -24
  265. package/types/rt-tools-ui-kit-v2-core.d.ts +856 -865
  266. package/types/rt-tools-ui-kit-v2-counter-row.d.ts +20 -12
  267. package/types/rt-tools-ui-kit-v2-counter.d.ts +70 -38
  268. package/types/rt-tools-ui-kit-v2-data-list.d.ts +429 -264
  269. package/types/rt-tools-ui-kit-v2-data-table.d.ts +500 -351
  270. package/types/rt-tools-ui-kit-v2-date-picker.d.ts +164 -138
  271. package/types/rt-tools-ui-kit-v2-date-range.d.ts +102 -84
  272. package/types/rt-tools-ui-kit-v2-delta-view.d.ts +16 -13
  273. package/types/rt-tools-ui-kit-v2-detail-list.d.ts +23 -16
  274. package/types/rt-tools-ui-kit-v2-dialog.d.ts +130 -101
  275. package/types/rt-tools-ui-kit-v2-dot-field.d.ts +10 -13
  276. package/types/rt-tools-ui-kit-v2-download-link.d.ts +22 -17
  277. package/types/rt-tools-ui-kit-v2-draggable-tree.d.ts +132 -0
  278. package/types/rt-tools-ui-kit-v2-dynamic-list.d.ts +185 -96
  279. package/types/rt-tools-ui-kit-v2-dynamic-selector.d.ts +904 -404
  280. package/types/rt-tools-ui-kit-v2-empty-state.d.ts +48 -19
  281. package/types/rt-tools-ui-kit-v2-expansion-panel.d.ts +67 -39
  282. package/types/rt-tools-ui-kit-v2-field.d.ts +90 -49
  283. package/types/rt-tools-ui-kit-v2-file-card.d.ts +115 -75
  284. package/types/rt-tools-ui-kit-v2-file-drop.d.ts +75 -48
  285. package/types/rt-tools-ui-kit-v2-file-input.d.ts +53 -36
  286. package/types/rt-tools-ui-kit-v2-file-list.d.ts +5 -8
  287. package/types/rt-tools-ui-kit-v2-filter-control.d.ts +83 -49
  288. package/types/rt-tools-ui-kit-v2-form-control.d.ts +102 -74
  289. package/types/rt-tools-ui-kit-v2-header.d.ts +40 -22
  290. package/types/rt-tools-ui-kit-v2-hybrid-tree-selector.d.ts +14 -0
  291. package/types/rt-tools-ui-kit-v2-hybrid-tree.d.ts +72 -0
  292. package/types/rt-tools-ui-kit-v2-icon-button.d.ts +190 -90
  293. package/types/rt-tools-ui-kit-v2-icon.d.ts +160 -129
  294. package/types/rt-tools-ui-kit-v2-image-cropper.d.ts +151 -111
  295. package/types/rt-tools-ui-kit-v2-image-upload.d.ts +159 -85
  296. package/types/rt-tools-ui-kit-v2-info-item.d.ts +26 -13
  297. package/types/rt-tools-ui-kit-v2-inline-edit.d.ts +194 -0
  298. package/types/rt-tools-ui-kit-v2-input-number.d.ts +102 -53
  299. package/types/rt-tools-ui-kit-v2-input.d.ts +82 -43
  300. package/types/rt-tools-ui-kit-v2-live-badge.d.ts +30 -17
  301. package/types/rt-tools-ui-kit-v2-logo.d.ts +49 -32
  302. package/types/rt-tools-ui-kit-v2-markdown-text.d.ts +26 -17
  303. package/types/rt-tools-ui-kit-v2-menu.d.ts +272 -155
  304. package/types/rt-tools-ui-kit-v2-message.d.ts +59 -33
  305. package/types/rt-tools-ui-kit-v2-money-list.d.ts +36 -18
  306. package/types/rt-tools-ui-kit-v2-multiselect.d.ts +114 -80
  307. package/types/rt-tools-ui-kit-v2-night-grid.d.ts +34 -25
  308. package/types/rt-tools-ui-kit-v2-note.d.ts +12 -9
  309. package/types/rt-tools-ui-kit-v2-notifications-bell.d.ts +37 -16
  310. package/types/rt-tools-ui-kit-v2-page-header.d.ts +218 -150
  311. package/types/rt-tools-ui-kit-v2-pagination.d.ts +99 -63
  312. package/types/rt-tools-ui-kit-v2-photo-viewer.d.ts +61 -66
  313. package/types/rt-tools-ui-kit-v2-popover.d.ts +116 -55
  314. package/types/rt-tools-ui-kit-v2-prompt-suggestion.d.ts +26 -16
  315. package/types/rt-tools-ui-kit-v2-radio-button.d.ts +85 -43
  316. package/types/rt-tools-ui-kit-v2-radius.d.ts +18 -15
  317. package/types/rt-tools-ui-kit-v2-rich-editor.d.ts +931 -590
  318. package/types/rt-tools-ui-kit-v2-ripple.d.ts +28 -25
  319. package/types/rt-tools-ui-kit-v2-scroll-area.d.ts +60 -58
  320. package/types/rt-tools-ui-kit-v2-section-nav.d.ts +32 -22
  321. package/types/rt-tools-ui-kit-v2-select.d.ts +182 -139
  322. package/types/rt-tools-ui-kit-v2-side-menu.d.ts +452 -349
  323. package/types/rt-tools-ui-kit-v2-skeleton-wrapper.d.ts +53 -20
  324. package/types/rt-tools-ui-kit-v2-skeleton.d.ts +55 -26
  325. package/types/rt-tools-ui-kit-v2-speed-menu.d.ts +131 -0
  326. package/types/rt-tools-ui-kit-v2-spinner.d.ts +56 -28
  327. package/types/rt-tools-ui-kit-v2-split-button.d.ts +96 -55
  328. package/types/rt-tools-ui-kit-v2-stat-tile.d.ts +88 -60
  329. package/types/rt-tools-ui-kit-v2-stepper.d.ts +50 -37
  330. package/types/rt-tools-ui-kit-v2-table.d.ts +631 -480
  331. package/types/rt-tools-ui-kit-v2-tabs.d.ts +198 -113
  332. package/types/rt-tools-ui-kit-v2-tag.d.ts +106 -53
  333. package/types/rt-tools-ui-kit-v2-textarea.d.ts +48 -25
  334. package/types/rt-tools-ui-kit-v2-theme-toggle.d.ts +28 -26
  335. package/types/rt-tools-ui-kit-v2-thread-list.d.ts +154 -94
  336. package/types/rt-tools-ui-kit-v2-timeline.d.ts +30 -28
  337. package/types/rt-tools-ui-kit-v2-toast.d.ts +174 -98
  338. package/types/rt-tools-ui-kit-v2-toggle-button-group.d.ts +132 -86
  339. package/types/rt-tools-ui-kit-v2-toggle-switch.d.ts +88 -50
  340. package/types/rt-tools-ui-kit-v2-toolbar.d.ts +30 -27
  341. package/types/rt-tools-ui-kit-v2-tooltip.d.ts +65 -41
  342. package/types/rt-tools-ui-kit-v2-tree-selector.d.ts +257 -0
  343. package/types/rt-tools-ui-kit-v2-tree.d.ts +282 -0
  344. package/types/rt-tools-ui-kit-v2-welcome-dialog.d.ts +21 -24
  345. package/types/rt-tools-ui-kit-v2-workspace-details.d.ts +195 -124
  346. package/types/rt-tools-ui-kit-v2-workspace.d.ts +122 -79
  347. package/types/rt-tools-ui-kit-v2.d.ts +100 -90
  348. package/fesm2022/rt-tools-ui-kit-v2.mjs.map +0 -1
@@ -0,0 +1,66 @@
1
+ # `rt-tree`
2
+
3
+ ```html
4
+ <rt-tree [nodes]="regions" [searchTerm]="term()" [showSelectAll]="true" [(value)]="chosen" (picked)="open($event)">
5
+ <ng-template rtTreeNodeEnd let-node>
6
+ <rt-tag size="sm" [value]="node.description ?? ''" />
7
+ </ng-template>
8
+ </rt-tree>
9
+ ```
10
+
11
+ | вход | тип | умолчание |
12
+ | --------------- | ------------------------------------- | -------------- |
13
+ | `nodes` | `ReadonlyArray<IRtTree.Node<TValue>>` | **обязателен** |
14
+ | `value` (model) | `ReadonlyArray<TValue>` | `[]` |
15
+ | `mode` | `'multiple' \| 'single' \| 'none'` | `'multiple'` |
16
+ | `cascade` | `boolean` | `true` |
17
+ | `searchTerm` | `string` | `''` |
18
+ | `showSelectAll` | `boolean` | `false` |
19
+ | `ariaLabel` | `string \| null` | `null` |
20
+
21
+ | выход | тип |
22
+ | ------------- | ----------------------- |
23
+ | `valueChange` | `ReadonlyArray<TValue>` |
24
+ | `picked` | `IRtTree.Node<TValue>` |
25
+
26
+ Публичные методы: `handleKeydown(event)`, `expandAll()`, `collapseAll()`, `clearHighlight()`.
27
+
28
+ ## Главное, что нужно знать
29
+
30
+ **Дерево считает тот же модуль, что дерево вариантов у `rt-select` и `rt-multiselect`.** Строки,
31
+ листья, отметки ветвей, отбор по слову и боковые стрелки — функции `rt-select-tree.ts`. Свою копию
32
+ логики дерево не держит: две копии разошлись бы на первой правке.
33
+
34
+ **Узлы не меняются никогда.** Выбор живёт в `value`, каждый клик даёт новый массив. В каскаде
35
+ выбор держит только листья, а отметка ветки выводится из них.
36
+
37
+ ## Края
38
+
39
+ - Без каскада клик меняет только сам узел, и в выборе может лежать значение ветки.
40
+ - В одиночном режиме повторный клик по выбранному узлу его не снимает.
41
+ - В режиме без отметок клик по листу отдаёт `picked`, клик по ветке её раскрывает.
42
+ - Выключенный узел не меняется ни кликом, ни «выбрать всё».
43
+ - Выключенное дерево не меняет выбор ничем и уходит из порядка Tab. Стрелка у ветки раскрывает её
44
+ и в нём: раскрытие — не выбор.
45
+ - `handleKeydown` отвечает, взята ли клавиша: незнакомую дерево не трогает, и приложение может
46
+ отдавать сюда каждую клавишу своего поля поиска.
47
+ - Ветки над выбранным раскрыты, когда дерево появилось. Дальше раскрытие меняют только человек
48
+ и методы: первый же выбор фиксирует его, и отметка ветки её не сворачивает.
49
+ - Отметку рисуют `rt-checkbox` и `rt-radio-button` кита. Они стоят с `inert`: фокус и нажатие
50
+ берёт строка, а контрол только показывает отметку.
51
+ - Подпись и описание строки обрезаются многоточием, и тогда полный текст показывает подсказка кита
52
+ в режиме `rtTooltipWhenTruncated`; у поместившегося текста подсказки нет.
53
+ - Расчёт выбора открыт наследнику четырьмя методами: `rowState`, `selectAllMarkOf`,
54
+ `selectAllChoice` и `nextChoice`. Так `rt-hybrid-tree` берёт эту разметку и стили целиком и меняет
55
+ только правила выбора. Число в конце строки рисуется, когда `rowState` его отдаёт; само дерево
56
+ отдаёт `null`.
57
+ - `emptyIcon` ставит значок кита над подписью пустого дерева; без него пустота — одна подпись.
58
+ - `nodeEndTemplate` и `nodeMetaTemplate` отдают разметку строки входом и сильнее директив
59
+ `rtTreeNodeEnd` и `rtTreeNodeMeta`: так её передаёт `rt-tree-selector`, у которого дерево внутри.
60
+ - Каждое значение вида — свойство `--rt-tree-*` с прежним шагом по умолчанию. Материальный набор
61
+ переназначает их по деревьям приложения: строка 32px со скруглением 6px и зазором 5px, отступ
62
+ 46px с линией, стрелка и плашка числа основного цвета, флажок 16px, совпадение на жёлтом. Высота
63
+ 32px считается вместе с полями: `--rt-tree-row-box-sizing` в наборе — `border-box`. Размер и
64
+ рамку квадрата дерево передаёт через `--rt-checkbox-box-size` и `--rt-checkbox-box-border-color`
65
+ на хосте флажка: 14px внутри, 16px с рамкой, серая рамка приложения. Своего материального вида у
66
+ флажка нет.
@@ -0,0 +1,313 @@
1
+ @layer rt-kit.components {
2
+ /* rt-tree — дерево выбора; его же разметку и стили берёт rt-hybrid-tree. ViewEncapsulation.None.
3
+ Каждое значение вида — свойство блока: приложение перенастраивает строки, отступ уровня, стрелку,
4
+ отметку, совпадение и счётчик, не трогая общих шагов кита. Умолчания — прежние шаги, вид без
5
+ свойств не меняется. */
6
+
7
+ .rt-tree {
8
+ --rt-tree-font-size: var(--rt-input-font-size);
9
+ --rt-tree-color: var(--rt-color-text-primary);
10
+ --rt-tree-indent: var(--rt-space-lg);
11
+ --rt-tree-row-padding-block: var(--rt-space-sm);
12
+ --rt-tree-row-padding-inline: var(--rt-space-md);
13
+ --rt-tree-row-gap: var(--rt-space-sm);
14
+ --rt-tree-row-spacing: var(--rt-space-0);
15
+ --rt-tree-row-min-height: auto;
16
+ --rt-tree-row-box-sizing: content-box;
17
+ --rt-tree-row-radius: var(--rt-radius-none);
18
+ --rt-tree-row-bg-hover: var(--rt-color-bg-hover);
19
+ --rt-tree-row-bg-highlighted: var(--rt-color-bg-hover);
20
+ --rt-tree-row-bg-chosen: var(--rt-color-action-primary-subtle);
21
+ --rt-tree-guide-width: var(--rt-border-width-thin);
22
+ --rt-tree-guide-color: transparent;
23
+ --rt-tree-toggle-size: var(--rt-input-icon-size);
24
+ --rt-tree-toggle-color: var(--rt-neutral-600);
25
+ --rt-tree-leaf-space-display: inline-flex;
26
+ --rt-tree-check-size: calc(var(--rt-size-4) + var(--rt-space-0-5));
27
+ --rt-tree-check-border-color: var(--rt-color-border-strong);
28
+ --rt-tree-match-bg: var(--rt-yellow-400);
29
+ --rt-tree-match-color: var(--rt-neutral-950);
30
+ --rt-tree-match-radius: var(--rt-radius-xs);
31
+ --rt-tree-match-font-weight: var(--rt-font-weight-regular);
32
+ --rt-tree-count-color: var(--rt-color-text-muted);
33
+ --rt-tree-count-bg: transparent;
34
+ --rt-tree-count-font-size: var(--rt-text-sm);
35
+ --rt-tree-count-padding-inline: var(--rt-space-0);
36
+ --rt-tree-count-min-size: auto;
37
+ --rt-tree-count-radius: var(--rt-radius-none);
38
+ --rt-tree-select-all-font-size: var(--rt-tree-font-size);
39
+ --rt-tree-select-all-font-weight: var(--rt-font-weight-regular);
40
+ --rt-tree-empty-color: var(--rt-color-text-muted);
41
+ --rt-tree-empty-gap: var(--rt-space-sm);
42
+ --rt-tree-focus-shadow: var(--rt-shadow-focus-ring);
43
+ --rt-tree-border-width: var(--rt-border-width-thin);
44
+ --rt-tree-bg: var(--rt-color-bg-surface);
45
+ --rt-tree-select-all-bg: var(--rt-tree-bg);
46
+
47
+ /* Ярус липкой строки «выбрать всё» — внутри дерева: `isolation` не пускает её над страницей. */
48
+ --rt-tree-select-all-z: var(--rt-z-sticky);
49
+
50
+ display: block;
51
+ background-color: var(--rt-tree-bg);
52
+ color: var(--rt-tree-color);
53
+ font-size: var(--rt-tree-font-size);
54
+ isolation: isolate;
55
+ outline: none;
56
+
57
+ /* Под пальцем строка не ниже контрола кита: высота переназначается свойством, а не правилом. */
58
+ @media (pointer: coarse) {
59
+ --rt-tree-row-min-height: var(--rt-control-height-lg);
60
+ }
61
+
62
+ /* Материальный набор повторяет деревья приложения: строка 32px со скруглением 6px, 12px по
63
+ бокам и 5px до следующей; между стрелкой или отметкой и подписью 10px; уровень отступает на
64
+ 46px, и под стрелкой предка идёт линия; у листа нет места под стрелку. Стрелка, флажок и
65
+ плашка счётчика — основного цвета темы, флажок 16px, совпадение — полужирное на жёлтом
66
+ первого кита, «выбрать всё» — 14px средней насыщенности. 32px — внешняя высота строки,
67
+ поэтому строка считается с полями; квадрат флажка задан без рамки — 14px внутри, 16px
68
+ снаружи. */
69
+ :is(.rt-preset-material, [data-preset='material']) & {
70
+ --rt-tree-indent: calc(var(--rt-size-12) - var(--rt-space-0-5));
71
+ --rt-tree-row-padding-block: var(--rt-space-1);
72
+ --rt-tree-row-padding-inline: calc(var(--rt-space-2) + var(--rt-space-1));
73
+ --rt-tree-row-gap: calc(var(--rt-space-2) + var(--rt-space-0-5));
74
+ --rt-tree-row-spacing: calc(var(--rt-space-1) + var(--rt-space-0-5) / 2);
75
+ --rt-tree-row-min-height: var(--rt-size-8);
76
+ --rt-tree-row-box-sizing: border-box;
77
+ --rt-tree-row-radius: var(--rt-radius-ms);
78
+ --rt-tree-guide-color: var(--mat-sys-outline-variant, var(--rt-color-border-subtle));
79
+ --rt-tree-toggle-color: var(--rt-color-action-primary);
80
+ --rt-tree-leaf-space-display: none;
81
+ --rt-tree-check-size: calc(var(--rt-size-4) - 2 * var(--rt-input-border-width));
82
+ --rt-tree-check-border-color: var(--rt-mat-neutral-40);
83
+ --rt-tree-match-bg: var(--rt-mat-yellow-100);
84
+ --rt-tree-match-font-weight: var(--rt-font-weight-semibold);
85
+ --rt-tree-count-bg: var(--rt-color-action-primary);
86
+ --rt-tree-count-color: var(--mat-sys-on-primary, var(--rt-color-text-inverse));
87
+ --rt-tree-count-font-size: var(--rt-text-xs);
88
+ --rt-tree-count-padding-inline: calc(var(--rt-space-1) + var(--rt-space-0-5));
89
+ --rt-tree-count-min-size: var(--rt-size-5);
90
+ --rt-tree-count-radius: var(--rt-radius-full);
91
+ --rt-tree-select-all-font-size: var(--rt-text-sm);
92
+ --rt-tree-select-all-font-weight: var(--rt-font-weight-medium);
93
+
94
+ @media (pointer: coarse) {
95
+ --rt-tree-row-min-height: var(--rt-control-height-lg);
96
+ }
97
+ }
98
+
99
+ &:focus-visible {
100
+ box-shadow: var(--rt-tree-focus-shadow);
101
+ }
102
+
103
+ &__select-all,
104
+ &__row {
105
+ /* Уровень строки ставит разметка на саму строку; ноль — верхний уровень. */
106
+ --rt-tree-level: 0;
107
+
108
+ display: flex;
109
+ box-sizing: var(--rt-tree-row-box-sizing);
110
+ align-items: center;
111
+ padding: var(--rt-tree-row-padding-block) var(--rt-tree-row-padding-inline);
112
+ border-radius: var(--rt-tree-row-radius);
113
+ cursor: pointer;
114
+ gap: var(--rt-tree-row-gap);
115
+ min-block-size: var(--rt-tree-row-min-height);
116
+ padding-inline-start: calc(var(--rt-tree-row-padding-inline) + var(--rt-tree-indent) * var(--rt-tree-level));
117
+
118
+ &:hover {
119
+ background-color: var(--rt-tree-row-bg-hover);
120
+ }
121
+ }
122
+
123
+ /* Строка прилипает к верху места, которое прокручивает дерево; фон непрозрачный, иначе под
124
+ ней видны уехавшие строки. Наведение ложится поверх фона, а не вместо него. */
125
+ &__select-all {
126
+ position: sticky;
127
+ z-index: var(--rt-tree-select-all-z);
128
+ top: 0;
129
+ border-bottom: var(--rt-tree-border-width) solid var(--rt-color-border-default);
130
+ background-color: var(--rt-tree-select-all-bg);
131
+
132
+ &:hover {
133
+ background-color: var(--rt-tree-select-all-bg);
134
+ background-image: linear-gradient(var(--rt-tree-row-bg-hover), var(--rt-tree-row-bg-hover));
135
+ }
136
+
137
+ &--disabled {
138
+ cursor: not-allowed;
139
+ opacity: var(--rt-input-disabled-opacity);
140
+ }
141
+ }
142
+
143
+ &__select-all &__label {
144
+ font-size: var(--rt-tree-select-all-font-size);
145
+ font-weight: var(--rt-tree-select-all-font-weight);
146
+ }
147
+
148
+ &__row {
149
+ position: relative;
150
+
151
+ & + & {
152
+ margin-block-start: var(--rt-tree-row-spacing);
153
+ }
154
+
155
+ /* Линии уровней: по одной под стрелкой каждого предка. Полоса тянется и через зазор над
156
+ строкой, чтобы линия шла сплошной; у верхнего уровня её ширина ноль. Без своего цвета
157
+ линия прозрачна, и вид кита её не показывает. */
158
+ &:before {
159
+ position: absolute;
160
+ background: repeating-linear-gradient(
161
+ to right,
162
+ var(--rt-tree-guide-color) 0 var(--rt-tree-guide-width),
163
+ transparent var(--rt-tree-guide-width) var(--rt-tree-indent)
164
+ );
165
+ content: '';
166
+ inline-size: calc(var(--rt-tree-indent) * var(--rt-tree-level));
167
+ inset-block: calc(-1 * var(--rt-tree-row-spacing)) 0;
168
+ inset-inline-start: calc(var(--rt-tree-row-padding-inline) + (var(--rt-tree-toggle-size) - var(--rt-tree-guide-width)) / 2);
169
+ pointer-events: none;
170
+ }
171
+
172
+ &--highlighted {
173
+ background-color: var(--rt-tree-row-bg-highlighted);
174
+ }
175
+
176
+ &--chosen {
177
+ background-color: var(--rt-tree-row-bg-chosen);
178
+ }
179
+
180
+ &--disabled {
181
+ cursor: not-allowed;
182
+ opacity: var(--rt-input-disabled-opacity);
183
+
184
+ &:hover {
185
+ background-color: transparent;
186
+ }
187
+ }
188
+ }
189
+
190
+ /* Стрелка ветки и пустое место под неё у листа: шаг отступа равен их ширине с зазором,
191
+ и стрелка дочерней строки встаёт под подписью родителя. */
192
+ &__toggle,
193
+ &__toggle-space {
194
+ display: inline-flex;
195
+ flex-shrink: 0;
196
+ block-size: var(--rt-tree-toggle-size);
197
+ inline-size: var(--rt-tree-toggle-size);
198
+ }
199
+
200
+ /* Место под стрелку у листа: материальный вид его убирает, и отметка листа встаёт под
201
+ стрелкой соседней группы, как в приложении. Над первой строкой-листом «выбрать всё»
202
+ убирает своё место вместе с ней. */
203
+ &__row > &__toggle-space,
204
+ &__select-all--over-leaf > &__toggle-space {
205
+ display: var(--rt-tree-leaf-space-display);
206
+ }
207
+
208
+ /* Цвет стрелки идёт в значок через его же свойство приглушённого цвета. */
209
+ &__toggle {
210
+ --rt-icon-color-muted: var(--rt-tree-toggle-color);
211
+
212
+ align-items: center;
213
+ justify-content: center;
214
+ padding: 0;
215
+ border: 0;
216
+ background: transparent;
217
+ cursor: pointer;
218
+ }
219
+
220
+ /* Размер квадрата флажка: класс элемента стоит на хосте флажка и перекрывает его свойство,
221
+ объявленное по имени тега. Умолчание дерева равно размеру самого флажка. */
222
+ &__check {
223
+ --rt-checkbox-box-size: var(--rt-tree-check-size);
224
+ --rt-checkbox-box-border-color: var(--rt-tree-check-border-color);
225
+
226
+ flex-shrink: 0;
227
+ margin: 0;
228
+ pointer-events: none;
229
+ }
230
+
231
+ &__text {
232
+ display: flex;
233
+ min-width: 0;
234
+ flex: 1 1 auto;
235
+ flex-direction: column;
236
+ }
237
+
238
+ &__label {
239
+ overflow: hidden;
240
+ text-overflow: ellipsis;
241
+ white-space: nowrap;
242
+ }
243
+
244
+ &__description {
245
+ overflow: hidden;
246
+ color: var(--rt-color-text-muted);
247
+ font-size: var(--rt-text-sm);
248
+ text-overflow: ellipsis;
249
+ white-space: nowrap;
250
+ }
251
+
252
+ /* Метки узла и разметка приложения под подписью: строка переносится, а не вылезает. */
253
+ &__meta {
254
+ display: flex;
255
+ min-width: 0;
256
+ flex-wrap: wrap;
257
+ align-items: center;
258
+ gap: var(--rt-space-1);
259
+ margin-block-start: var(--rt-space-1);
260
+ }
261
+
262
+ &__part {
263
+ &--match {
264
+ border-radius: var(--rt-tree-match-radius);
265
+ background: var(--rt-tree-match-bg);
266
+ color: var(--rt-tree-match-color);
267
+ font-weight: var(--rt-tree-match-font-weight);
268
+ }
269
+ }
270
+
271
+ /* Число выбранного под группой без отметки — в конце строки, перед разметкой приложения.
272
+ В материальном виде это плашка: фон, скругление и поля приходят свойствами. */
273
+ &__count {
274
+ display: inline-flex;
275
+ flex-shrink: 0;
276
+ align-items: center;
277
+ justify-content: center;
278
+ border-radius: var(--rt-tree-count-radius);
279
+ background: var(--rt-tree-count-bg);
280
+ color: var(--rt-tree-count-color);
281
+ font-size: var(--rt-tree-count-font-size);
282
+ font-variant-numeric: tabular-nums;
283
+ min-block-size: var(--rt-tree-count-min-size);
284
+ min-inline-size: var(--rt-tree-count-min-size);
285
+ padding-inline: var(--rt-tree-count-padding-inline);
286
+ }
287
+
288
+ &__end {
289
+ display: inline-flex;
290
+ flex-shrink: 0;
291
+ align-items: center;
292
+ margin-inline-start: auto;
293
+ }
294
+
295
+ &__empty {
296
+ padding: var(--rt-space-md);
297
+ color: var(--rt-tree-empty-color);
298
+ text-align: center;
299
+
300
+ /* Значок приложения стоит над подписью. */
301
+ &--with-icon {
302
+ display: flex;
303
+ flex-direction: column;
304
+ align-items: center;
305
+ gap: var(--rt-tree-empty-gap);
306
+ }
307
+ }
308
+
309
+ &__empty-icon {
310
+ flex-shrink: 0;
311
+ }
312
+ }
313
+ }
@@ -0,0 +1,47 @@
1
+ # `rt-tree-selector`
2
+
3
+ ```html
4
+ <rt-tree-selector
5
+ confirm
6
+ expandControls
7
+ revertable
8
+ multiToggle
9
+ [emptyAllowed]="false"
10
+ [nodes]="hotels"
11
+ [(value)]="hotelIds"
12
+ (applied)="close()" />
13
+ ```
14
+
15
+ Входы и выходы — на странице обзора `Overview.mdx` рядом. Договорённость —
16
+ `docs/specs/ui-kit-v2/tree-selector/spec.md`.
17
+
18
+ ## Главное, что нужно знать
19
+
20
+ **Строки рисует `rt-tree`, селектор только отбирает узлы и держит выбор.** Отбор по словам — в
21
+ `rt-tree-selector.logic.ts`; дереву уходят отобранные узлы с `filter = false`, а строка поиска — для
22
+ подсветки слов.
23
+
24
+ **Черновик — `linkedSignal` от `value`.** Смена выбора снаружи сбрасывает черновик; в прямой форме
25
+ каждое изменение пишется и в черновик, и в `value`.
26
+
27
+ **Поле поиска передаёт клавиши дереву.** Фокус ставится в поле после первой отрисовки; раскрытие на
28
+ старте и раскрытие под строкой поиска зовут `expandAll` и `collapseAll` дерева после отрисовки.
29
+
30
+ ## Края
31
+
32
+ - Выбор всегда новый массив, узлы не правятся.
33
+ - «Очистить выбор» оставляет выключенные выбранные узлы.
34
+ - Кнопки строки контролов иконочные и все необязательные. Откат стоит только в подтверждаемой форме.
35
+ - Порядок значений при сравнении черновика с выбором не учитывается.
36
+ - Выключенный селектор выключает поле, кнопки, переключатель и дерево, и «Применить» тогда не
37
+ проходит. Фокус на старте он в поле не ставит.
38
+ - Наследник `rt-hybrid-tree-selector` ставит флаг `hybrid`, и разметка рисует `rt-hybrid-tree` вместо
39
+ `rt-tree`. Ссылка `tree` берёт то дерево, какое стоит.
40
+ - `rtTreeSelectorUnderSearch` — разметка приложения между полем поиска и строкой контролов.
41
+ - Шаблоны `rtTreeNodeEnd` и `rtTreeNodeMeta` из содержимого селектора уходят дереву внутри входами
42
+ `nodeEndTemplate` и `nodeMetaTemplate`: своим содержимым дерево их не видит.
43
+ - `matchHighlight` выключает отметку найденных слов: дерево получает пустое слово, а отбор узлов
44
+ идёт по строке поиска как прежде. `emptyIcon` ставит значок над «ничего не найдено» и отдаётся
45
+ дереву внутри.
46
+ - В материальном наборе между головой и деревом 10px (`--rt-tree-selector-gap`); строки дерева
47
+ берут материальный вид `rt-tree`.
@@ -0,0 +1,121 @@
1
+ @layer rt-kit.components {
2
+ /* rt-tree-selector — поиск, контролы и дерево. ViewEncapsulation.None.
3
+ Высоту задаёт место, куда приложение ставит селектор: дерево прокручивается внутри,
4
+ поле поиска и подвал стоят на месте. */
5
+
6
+ .rt-tree-selector {
7
+ --rt-tree-selector-border-width: var(--rt-border-width-thin);
8
+ --rt-tree-selector-bg: var(--rt-color-bg-surface);
9
+ --rt-tree-selector-gap: var(--rt-space-sm);
10
+ --rt-tree-selector-empty-color: var(--rt-color-text-muted);
11
+ --rt-tree-selector-empty-gap: var(--rt-space-sm);
12
+
13
+ display: flex;
14
+ min-height: 0;
15
+ box-sizing: border-box;
16
+ flex-direction: column;
17
+ background-color: var(--rt-tree-selector-bg);
18
+ color: var(--rt-color-text-primary);
19
+ gap: var(--rt-tree-selector-gap);
20
+
21
+ /* Материальный набор повторяет выбор деревом приложения: над списком 10px. Строки дерева
22
+ внутри берут свой материальный вид сами. */
23
+ :is(.rt-preset-material, [data-preset='material']) & {
24
+ --rt-tree-selector-gap: calc(var(--rt-space-2) + var(--rt-space-0-5));
25
+ }
26
+
27
+ &__head {
28
+ display: flex;
29
+ flex-direction: column;
30
+ gap: var(--rt-space-sm);
31
+ }
32
+
33
+ &__label {
34
+ font-size: var(--rt-text-sm);
35
+ font-weight: var(--rt-font-weight-semibold);
36
+ }
37
+
38
+ &__search {
39
+ display: block;
40
+ }
41
+
42
+ &__controls {
43
+ display: flex;
44
+ flex-direction: column;
45
+ gap: var(--rt-space-sm);
46
+ }
47
+
48
+ // Контролы переносятся на вторую строку на узком экране: обрезка спрятала бы кнопку.
49
+ &__row {
50
+ display: flex;
51
+ flex-wrap: wrap;
52
+ align-items: center;
53
+ gap: var(--rt-space-xs);
54
+ }
55
+
56
+ &__control {
57
+ flex: 0 0 auto;
58
+ }
59
+
60
+ // Контролы приложения прижаты к правому краю строки, кнопки дерева — к левому.
61
+ &__own {
62
+ display: flex;
63
+ align-items: center;
64
+ gap: var(--rt-space-xs);
65
+ margin-inline-start: auto;
66
+ }
67
+
68
+ &__multi {
69
+ display: flex;
70
+ align-items: center;
71
+ gap: var(--rt-space-sm);
72
+ }
73
+
74
+ &__multi-label {
75
+ font-size: var(--rt-text-sm);
76
+ }
77
+
78
+ &__multi-hint-icon {
79
+ color: var(--rt-color-text-muted);
80
+ }
81
+
82
+ &__tree {
83
+ min-height: 0;
84
+ flex: 1 1 auto;
85
+ overflow-y: auto;
86
+ }
87
+
88
+ &__empty {
89
+ flex: 1 1 auto;
90
+ padding: var(--rt-space-md);
91
+ color: var(--rt-tree-selector-empty-color);
92
+ text-align: center;
93
+
94
+ /* Значок приложения стоит над подписью. */
95
+ &--with-icon {
96
+ display: flex;
97
+ flex-direction: column;
98
+ align-items: center;
99
+ gap: var(--rt-tree-selector-empty-gap);
100
+ }
101
+ }
102
+
103
+ &__empty-icon {
104
+ flex-shrink: 0;
105
+ }
106
+
107
+ /* Разметка приложения под полем поиска — во всю ширину головы. */
108
+ &__under-search {
109
+ display: block;
110
+ }
111
+
112
+ &__foot {
113
+ display: flex;
114
+ align-items: center;
115
+ justify-content: flex-end;
116
+ border-top: var(--rt-tree-selector-border-width) solid var(--rt-color-border-subtle);
117
+ gap: var(--rt-space-sm);
118
+ padding-block-start: var(--rt-space-sm);
119
+ }
120
+ }
121
+ }
@@ -358,6 +358,10 @@
358
358
  цветность те же): это ближайшая к виду первого кита ступень, что берёт порог текста. */
359
359
  --rt-mat-green-120: #008465;
360
360
 
361
+ /* Материальный набор: жёлтая подсветка найденного — фон совпадения в деревьях первого кита
362
+ и приложения. */
363
+ --rt-mat-yellow-100: #ffeb3b;
364
+
361
365
  /* Материальный набор: марка первого кита и подложка его обвязки */
362
366
  --rt-mat-navy-100: #0d1c2b;
363
367
 
package/styles/tokens.css CHANGED
@@ -404,6 +404,9 @@
404
404
  успеха ею не читается. Ступень 120 взята от 100 двумя шагами светлоты вниз (OKLCH, тон и
405
405
  цветность те же): это ближайшая к виду первого кита ступень, что берёт порог текста. */
406
406
  --rt-mat-green-120: #008465;
407
+ /* Материальный набор: жёлтая подсветка найденного — фон совпадения в деревьях первого кита
408
+ и приложения. */
409
+ --rt-mat-yellow-100: #ffeb3b;
407
410
  /* Материальный набор: марка первого кита и подложка его обвязки */
408
411
  --rt-mat-navy-100: #0d1c2b;
409
412
  /* Прозрачные оттенки считаются от своих ступеней, а не повторяют их коды цвета. */
@@ -1,30 +1,37 @@
1
- import * as i0 from '@angular/core';
2
- import { WritableSignal, InputSignal } from '@angular/core';
3
-
4
- declare namespace IRtAccordion {
5
- /** Пункт аккордеона: заголовок раскрывает текст под собой. Строки приходят уже переведёнными. */
6
- interface Item {
7
- readonly title: string;
8
- readonly text: string;
9
- }
1
+ import * as i0 from "@angular/core";
2
+ import { InputSignal, WritableSignal } from "@angular/core";
3
+ export declare namespace IRtAccordion {
4
+ /** Пункт аккордеона: заголовок раскрывает текст под собой. Строки приходят уже переведёнными. */
5
+ interface Item {
6
+ readonly title: string;
7
+ readonly text: string;
8
+ }
10
9
  }
11
-
12
10
  /**
13
11
  * Список пунктов, у каждого заголовок-кнопка и текст под ней. Нажатие раскрывает или сворачивает
14
12
  * пункт, соседи остаются как были. Предмета показа аккордеон не знает: пункты приходят входом уже
15
13
  * переведёнными.
16
14
  */
17
- declare class RtAccordionComponent {
18
- /** Основа id кнопок и панелей: два аккордеона на одной странице не ссылаются на чужие панели. */
19
- protected readonly idBase: string;
20
- /** Пришёл новый список — раскрытие начинается заново с пункта из входа. */
21
- protected readonly open: WritableSignal<ReadonlySet<number>>;
22
- readonly items: InputSignal<readonly IRtAccordion.Item[]>;
23
- /** Пункт, раскрытый при входе. `null` оставляет все свёрнутыми. */
24
- readonly openIndex: InputSignal<number | null>;
25
- protected toggle(index: number): void;
26
- static ɵfac: i0.ɵɵFactoryDeclaration<RtAccordionComponent, never>;
27
- static ɵcmp: i0.ɵɵComponentDeclaration<RtAccordionComponent, "rt-accordion", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "openIndex": { "alias": "openIndex"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
28
- }
29
-
30
- export { IRtAccordion, RtAccordionComponent };
15
+ export declare class RtAccordionComponent {
16
+ /** Основа id кнопок и панелей: два аккордеона на одной странице не ссылаются на чужие панели. */
17
+ protected readonly idBase: string;
18
+ /** Пришёл новый список — раскрытие начинается заново с пункта из входа. */
19
+ protected readonly open: WritableSignal<ReadonlySet<number>>;
20
+ readonly items: InputSignal<readonly IRtAccordion.Item[]>;
21
+ /** Пункт, раскрытый при входе. `null` оставляет все свёрнутыми. */
22
+ readonly openIndex: InputSignal<number | null>;
23
+ protected toggle(index: number): void;
24
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtAccordionComponent, never>;
25
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtAccordionComponent, "rt-accordion", never, {
26
+ "items": {
27
+ "alias": "items";
28
+ "required": true;
29
+ "isSignal": true;
30
+ };
31
+ "openIndex": {
32
+ "alias": "openIndex";
33
+ "required": false;
34
+ "isSignal": true;
35
+ };
36
+ }, {}, never, never, true, never>;
37
+ }