@rt-tools/ui-kit-v2 0.33.0 → 0.34.1

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 (217) hide show
  1. package/README.md +4 -3
  2. package/fesm2022/rt-tools-ui-kit-v2-ai-run-status.mjs +1 -0
  3. package/fesm2022/rt-tools-ui-kit-v2-ai-run-status.mjs.map +1 -1
  4. package/fesm2022/rt-tools-ui-kit-v2-autocomplete.mjs +92 -5
  5. package/fesm2022/rt-tools-ui-kit-v2-autocomplete.mjs.map +1 -1
  6. package/fesm2022/rt-tools-ui-kit-v2-badge.mjs +191 -0
  7. package/fesm2022/rt-tools-ui-kit-v2-badge.mjs.map +1 -0
  8. package/fesm2022/rt-tools-ui-kit-v2-breadcrumbs.mjs +3 -2
  9. package/fesm2022/rt-tools-ui-kit-v2-breadcrumbs.mjs.map +1 -1
  10. package/fesm2022/rt-tools-ui-kit-v2-button.mjs +6 -1
  11. package/fesm2022/rt-tools-ui-kit-v2-button.mjs.map +1 -1
  12. package/fesm2022/rt-tools-ui-kit-v2-checkbox.mjs +35 -4
  13. package/fesm2022/rt-tools-ui-kit-v2-checkbox.mjs.map +1 -1
  14. package/fesm2022/rt-tools-ui-kit-v2-color-palette.mjs +13 -4
  15. package/fesm2022/rt-tools-ui-kit-v2-color-palette.mjs.map +1 -1
  16. package/fesm2022/rt-tools-ui-kit-v2-container.mjs +245 -60
  17. package/fesm2022/rt-tools-ui-kit-v2-container.mjs.map +1 -1
  18. package/fesm2022/rt-tools-ui-kit-v2-copy-value.mjs +30 -5
  19. package/fesm2022/rt-tools-ui-kit-v2-copy-value.mjs.map +1 -1
  20. package/fesm2022/rt-tools-ui-kit-v2-core.mjs +113 -2
  21. package/fesm2022/rt-tools-ui-kit-v2-core.mjs.map +1 -1
  22. package/fesm2022/rt-tools-ui-kit-v2-data-list.mjs +14 -3
  23. package/fesm2022/rt-tools-ui-kit-v2-data-list.mjs.map +1 -1
  24. package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs +17 -3
  25. package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs.map +1 -1
  26. package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs +6 -3
  27. package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs.map +1 -1
  28. package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs +2 -2
  29. package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs.map +1 -1
  30. package/fesm2022/rt-tools-ui-kit-v2-divider.mjs +112 -0
  31. package/fesm2022/rt-tools-ui-kit-v2-divider.mjs.map +1 -0
  32. package/fesm2022/rt-tools-ui-kit-v2-draggable-tree.mjs +1 -0
  33. package/fesm2022/rt-tools-ui-kit-v2-draggable-tree.mjs.map +1 -1
  34. package/fesm2022/rt-tools-ui-kit-v2-drawer.mjs +854 -0
  35. package/fesm2022/rt-tools-ui-kit-v2-drawer.mjs.map +1 -0
  36. package/fesm2022/rt-tools-ui-kit-v2-dynamic-list.mjs +16 -5
  37. package/fesm2022/rt-tools-ui-kit-v2-dynamic-list.mjs.map +1 -1
  38. package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs +580 -65
  39. package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs.map +1 -1
  40. package/fesm2022/rt-tools-ui-kit-v2-expansion-panel.mjs +203 -15
  41. package/fesm2022/rt-tools-ui-kit-v2-expansion-panel.mjs.map +1 -1
  42. package/fesm2022/rt-tools-ui-kit-v2-field.mjs +40 -8
  43. package/fesm2022/rt-tools-ui-kit-v2-field.mjs.map +1 -1
  44. package/fesm2022/rt-tools-ui-kit-v2-file-card.mjs +1 -0
  45. package/fesm2022/rt-tools-ui-kit-v2-file-card.mjs.map +1 -1
  46. package/fesm2022/rt-tools-ui-kit-v2-filter-control.mjs +7 -3
  47. package/fesm2022/rt-tools-ui-kit-v2-filter-control.mjs.map +1 -1
  48. package/fesm2022/rt-tools-ui-kit-v2-form-control.mjs +53 -2
  49. package/fesm2022/rt-tools-ui-kit-v2-form-control.mjs.map +1 -1
  50. package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree-selector.mjs +14 -4
  51. package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree-selector.mjs.map +1 -1
  52. package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree.mjs +6 -3
  53. package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree.mjs.map +1 -1
  54. package/fesm2022/rt-tools-ui-kit-v2-icon-button.mjs +16 -5
  55. package/fesm2022/rt-tools-ui-kit-v2-icon-button.mjs.map +1 -1
  56. package/fesm2022/rt-tools-ui-kit-v2-image-upload.mjs +1 -0
  57. package/fesm2022/rt-tools-ui-kit-v2-image-upload.mjs.map +1 -1
  58. package/fesm2022/rt-tools-ui-kit-v2-inline-edit.mjs +14 -4
  59. package/fesm2022/rt-tools-ui-kit-v2-inline-edit.mjs.map +1 -1
  60. package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs +3 -2
  61. package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs.map +1 -1
  62. package/fesm2022/rt-tools-ui-kit-v2-input.mjs +207 -7
  63. package/fesm2022/rt-tools-ui-kit-v2-input.mjs.map +1 -1
  64. package/fesm2022/rt-tools-ui-kit-v2-menu.mjs +1 -0
  65. package/fesm2022/rt-tools-ui-kit-v2-menu.mjs.map +1 -1
  66. package/fesm2022/rt-tools-ui-kit-v2-multiselect.mjs +3 -2
  67. package/fesm2022/rt-tools-ui-kit-v2-multiselect.mjs.map +1 -1
  68. package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs +2 -0
  69. package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs.map +1 -1
  70. package/fesm2022/rt-tools-ui-kit-v2-pagination.mjs +3 -2
  71. package/fesm2022/rt-tools-ui-kit-v2-pagination.mjs.map +1 -1
  72. package/fesm2022/rt-tools-ui-kit-v2-profile-menu.mjs +3 -2
  73. package/fesm2022/rt-tools-ui-kit-v2-profile-menu.mjs.map +1 -1
  74. package/fesm2022/rt-tools-ui-kit-v2-progress-bar.mjs +171 -0
  75. package/fesm2022/rt-tools-ui-kit-v2-progress-bar.mjs.map +1 -0
  76. package/fesm2022/rt-tools-ui-kit-v2-radio-button.mjs +176 -6
  77. package/fesm2022/rt-tools-ui-kit-v2-radio-button.mjs.map +1 -1
  78. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs +2 -1
  79. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs.map +1 -1
  80. package/fesm2022/rt-tools-ui-kit-v2-scroll-area.mjs +1 -0
  81. package/fesm2022/rt-tools-ui-kit-v2-scroll-area.mjs.map +1 -1
  82. package/fesm2022/rt-tools-ui-kit-v2-select.mjs +142 -23
  83. package/fesm2022/rt-tools-ui-kit-v2-select.mjs.map +1 -1
  84. package/fesm2022/rt-tools-ui-kit-v2-side-menu.mjs +22 -9
  85. package/fesm2022/rt-tools-ui-kit-v2-side-menu.mjs.map +1 -1
  86. package/fesm2022/rt-tools-ui-kit-v2-speed-menu.mjs +3 -2
  87. package/fesm2022/rt-tools-ui-kit-v2-speed-menu.mjs.map +1 -1
  88. package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs +105 -8
  89. package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs.map +1 -1
  90. package/fesm2022/rt-tools-ui-kit-v2-table.mjs +13 -2
  91. package/fesm2022/rt-tools-ui-kit-v2-table.mjs.map +1 -1
  92. package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs +654 -43
  93. package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs.map +1 -1
  94. package/fesm2022/rt-tools-ui-kit-v2-tag.mjs +1 -0
  95. package/fesm2022/rt-tools-ui-kit-v2-tag.mjs.map +1 -1
  96. package/fesm2022/rt-tools-ui-kit-v2-textarea.mjs +45 -7
  97. package/fesm2022/rt-tools-ui-kit-v2-textarea.mjs.map +1 -1
  98. package/fesm2022/rt-tools-ui-kit-v2-theme-toggle.mjs +2 -2
  99. package/fesm2022/rt-tools-ui-kit-v2-theme-toggle.mjs.map +1 -1
  100. package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs +11 -2
  101. package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs.map +1 -1
  102. package/fesm2022/rt-tools-ui-kit-v2-toast.mjs +152 -11
  103. package/fesm2022/rt-tools-ui-kit-v2-toast.mjs.map +1 -1
  104. package/fesm2022/rt-tools-ui-kit-v2-toggle-button-group.mjs +199 -17
  105. package/fesm2022/rt-tools-ui-kit-v2-toggle-button-group.mjs.map +1 -1
  106. package/fesm2022/rt-tools-ui-kit-v2-tooltip.mjs +35 -5
  107. package/fesm2022/rt-tools-ui-kit-v2-tooltip.mjs.map +1 -1
  108. package/fesm2022/rt-tools-ui-kit-v2-tree-selector.mjs +14 -4
  109. package/fesm2022/rt-tools-ui-kit-v2-tree-selector.mjs.map +1 -1
  110. package/fesm2022/rt-tools-ui-kit-v2-tree.mjs +6 -3
  111. package/fesm2022/rt-tools-ui-kit-v2-tree.mjs.map +1 -1
  112. package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs +21 -6
  113. package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs.map +1 -1
  114. package/fesm2022/rt-tools-ui-kit-v2.mjs +4 -0
  115. package/package.json +17 -1
  116. package/src/assets/icons/volume-off.svg +2 -1
  117. package/src/lib/components/autocomplete/CONTEXT.md +25 -14
  118. package/src/lib/components/autocomplete/rt-autocomplete.component.scss +19 -0
  119. package/src/lib/components/badge/CONTEXT.md +33 -0
  120. package/src/lib/components/badge/rt-badge.directive.scss +104 -0
  121. package/src/lib/components/breadcrumbs/rt-breadcrumbs.component.scss +2 -2
  122. package/src/lib/components/button/CONTEXT.md +5 -0
  123. package/src/lib/components/button/rt-button.directive.scss +3 -1
  124. package/src/lib/components/checkbox/CONTEXT.md +15 -8
  125. package/src/lib/components/color-palette/rt-color-palette.component.scss +2 -2
  126. package/src/lib/components/container/CONTEXT.md +23 -6
  127. package/src/lib/components/container/rt-container.component.scss +90 -1
  128. package/src/lib/components/copy-value/CONTEXT.md +6 -5
  129. package/src/lib/components/copy-value/rt-copy-value.component.scss +16 -0
  130. package/src/lib/components/date-picker/rt-date-picker.component.scss +7 -0
  131. package/src/lib/components/date-range/rt-date-range.component.scss +7 -0
  132. package/src/lib/components/divider/CONTEXT.md +21 -0
  133. package/src/lib/components/divider/rt-divider.component.scss +34 -0
  134. package/src/lib/components/drawer/CONTEXT.md +73 -0
  135. package/src/lib/components/drawer/rt-drawer-container.component.scss +19 -0
  136. package/src/lib/components/drawer/rt-drawer.component.scss +168 -0
  137. package/src/lib/components/drawer/rt-resize-handle.component.scss +42 -0
  138. package/src/lib/components/dynamic-selector/CONTEXT.md +5 -0
  139. package/src/lib/components/expansion-panel/CONTEXT.md +32 -8
  140. package/src/lib/components/expansion-panel/rt-expansion-panel.component.scss +67 -2
  141. package/src/lib/components/field/CONTEXT.md +43 -0
  142. package/src/lib/components/field/rt-field-label-inside.scss +179 -0
  143. package/src/lib/components/field/rt-field.component.scss +51 -2
  144. package/src/lib/components/icon-button/CONTEXT.md +17 -15
  145. package/src/lib/components/icon-button/rt-icon-button.component.scss +3 -1
  146. package/src/lib/components/inline-edit/rt-inline-edit.component.scss +4 -4
  147. package/src/lib/components/input/CONTEXT.md +45 -11
  148. package/src/lib/components/input/rt-input-floating-label.scss +192 -0
  149. package/src/lib/components/input/rt-input-icons.scss +105 -0
  150. package/src/lib/components/input/rt-input.component.scss +91 -13
  151. package/src/lib/components/input-number/CONTEXT.md +7 -0
  152. package/src/lib/components/input-number/rt-input-number.component.scss +58 -1
  153. package/src/lib/components/menu/CONTEXT.md +1 -0
  154. package/src/lib/components/multiselect/CONTEXT.md +2 -1
  155. package/src/lib/components/multiselect/rt-multiselect.component.scss +7 -0
  156. package/src/lib/components/pagination/CONTEXT.md +3 -0
  157. package/src/lib/components/pagination/rt-pagination.component.scss +7 -0
  158. package/src/lib/components/progress-bar/CONTEXT.md +22 -0
  159. package/src/lib/components/progress-bar/rt-progress-bar.component.scss +77 -0
  160. package/src/lib/components/radio-button/CONTEXT.md +9 -0
  161. package/src/lib/components/radio-button/rt-radio-group.component.scss +13 -0
  162. package/src/lib/components/select/CONTEXT.md +28 -0
  163. package/src/lib/components/select/rt-select-clear.scss +88 -0
  164. package/src/lib/components/select/rt-select-floating-label.scss +155 -0
  165. package/src/lib/components/select/rt-select-material.scss +54 -0
  166. package/src/lib/components/select/rt-select.component.scss +54 -16
  167. package/src/lib/components/side-menu/CONTEXT.md +5 -0
  168. package/src/lib/components/speed-menu/rt-speed-menu.component.scss +5 -5
  169. package/src/lib/components/stepper/CONTEXT.md +13 -5
  170. package/src/lib/components/stepper/rt-stepper.component.scss +93 -0
  171. package/src/lib/components/tabs/CONTEXT.md +61 -9
  172. package/src/lib/components/tabs/rt-tabs.component.scss +201 -5
  173. package/src/lib/components/textarea/CONTEXT.md +12 -1
  174. package/src/lib/components/textarea/rt-textarea.component.scss +116 -1
  175. package/src/lib/components/toast/CONTEXT.md +23 -0
  176. package/src/lib/components/toast/rt-toast.component.scss +37 -0
  177. package/src/lib/components/toggle-button-group/CONTEXT.md +24 -4
  178. package/src/lib/components/toggle-button-group/rt-toggle-button-group-chips.scss +151 -0
  179. package/src/lib/components/toggle-button-group/rt-toggle-button-group.component.scss +35 -0
  180. package/src/lib/components/tooltip/CONTEXT.md +7 -1
  181. package/src/lib/components/tree/rt-tree.component.scss +2 -2
  182. package/src/styles/_color-scheme.scss +1 -1
  183. package/src/styles/_density.scss +48 -0
  184. package/src/styles/_index.scss +8 -0
  185. package/src/styles/_preset-material.scss +160 -70
  186. package/src/styles/_primitives.scss +1 -0
  187. package/src/styles/_semantic-navigation.scss +117 -0
  188. package/src/styles/_semantic.scss +29 -98
  189. package/src/styles/_theme-dark.scss +8 -0
  190. package/styles/tokens.css +2066 -1134
  191. package/types/rt-tools-ui-kit-v2-autocomplete.d.ts +34 -0
  192. package/types/rt-tools-ui-kit-v2-badge.d.ts +71 -0
  193. package/types/rt-tools-ui-kit-v2-checkbox.d.ts +17 -3
  194. package/types/rt-tools-ui-kit-v2-container.d.ts +65 -9
  195. package/types/rt-tools-ui-kit-v2-copy-value.d.ts +11 -1
  196. package/types/rt-tools-ui-kit-v2-core.d.ts +109 -4
  197. package/types/rt-tools-ui-kit-v2-divider.d.ts +29 -0
  198. package/types/rt-tools-ui-kit-v2-drawer.d.ts +257 -0
  199. package/types/rt-tools-ui-kit-v2-dynamic-selector.d.ts +240 -25
  200. package/types/rt-tools-ui-kit-v2-expansion-panel.d.ts +87 -3
  201. package/types/rt-tools-ui-kit-v2-field.d.ts +18 -1
  202. package/types/rt-tools-ui-kit-v2-form-control.d.ts +42 -4
  203. package/types/rt-tools-ui-kit-v2-icon-button.d.ts +2 -1
  204. package/types/rt-tools-ui-kit-v2-input-number.d.ts +1 -0
  205. package/types/rt-tools-ui-kit-v2-input.d.ts +98 -4
  206. package/types/rt-tools-ui-kit-v2-progress-bar.d.ts +53 -0
  207. package/types/rt-tools-ui-kit-v2-radio-button.d.ts +80 -1
  208. package/types/rt-tools-ui-kit-v2-select.d.ts +65 -1
  209. package/types/rt-tools-ui-kit-v2-side-menu.d.ts +3 -0
  210. package/types/rt-tools-ui-kit-v2-stepper.d.ts +57 -4
  211. package/types/rt-tools-ui-kit-v2-tabs.d.ts +337 -8
  212. package/types/rt-tools-ui-kit-v2-textarea.d.ts +16 -0
  213. package/types/rt-tools-ui-kit-v2-toast.d.ts +38 -2
  214. package/types/rt-tools-ui-kit-v2-toggle-button-group.d.ts +83 -3
  215. package/types/rt-tools-ui-kit-v2-tooltip.d.ts +17 -2
  216. package/types/rt-tools-ui-kit-v2.d.ts +4 -0
  217. package/src/lib/components/dynamic-selector/stories/component/test-dynamic-selector-popup-frame.component.scss +0 -6
@@ -0,0 +1,151 @@
1
+ @layer rt-kit.components {
2
+ /* Признак набора — на предке или на самой группе: приложение ставит его и на тег компонента. */
3
+ $preset: ':is(.rt-preset-material *, [data-preset="material"] *, .rt-preset-material, [data-preset="material"])';
4
+
5
+ /* Вид «чипы», галочка выбранного и недоступный сегмент под набором — отдельный лист стилей
6
+ компонента: одним листом с основным он перешёл бы порог в 8 КБ на лист, который Angular по
7
+ умолчанию ставит приложению. Лист подключается после основного, и при равной точности его
8
+ правила главнее. Свойства значения не дублируют: лист входит в первый пакет приложения, и
9
+ каждое промежуточное имя стоит ему места.
10
+
11
+ Свой вид кита держит высоту, отступы и шрифт сегмента своего размера; набор переназначает их
12
+ правилом сильнее. Цвета — свойства оформления корня, `--rt-toggle-chip-*`. */
13
+ rt-toggle-button-group .rt-toggle-button-group__check {
14
+ display: inline-flex;
15
+ flex: none;
16
+ align-items: center;
17
+ justify-content: center;
18
+ block-size: var(--rt-size-4);
19
+ inline-size: var(--rt-size-4);
20
+ }
21
+
22
+ rt-toggle-button-group .rt-toggle-button-group__check-svg {
23
+ display: block;
24
+ block-size: 100%;
25
+ inline-size: 100%;
26
+ stroke-width: 2px;
27
+ }
28
+
29
+ /* Дорожки нет: пункты стоят отдельно, с просветом и в строку, и между строками. Отключённая
30
+ группа не бледнеет целиком: каждый её пункт уже нарисован недоступным. */
31
+ rt-toggle-button-group.rt-toggle-button-group--chips .rt-toggle-button-group {
32
+ height: auto;
33
+ padding: 0;
34
+ border-radius: 0;
35
+ background-color: transparent;
36
+ gap: var(--rt-space-2);
37
+ opacity: 1;
38
+ }
39
+
40
+ /* Столбик чипов — столбик Material: пункты тянутся на ширину места, а не по своей подписи.
41
+ Растягивание на всю ширину их высоту не делит: в столбике ось растягивания — высота. В
42
+ строчном гибком родителе группа берёт его свободную ширину сама. */
43
+ rt-toggle-button-group.rt-toggle-button-group--chips.rt-toggle-button-group--column {
44
+ display: flex;
45
+ flex: 1 1 auto;
46
+
47
+ .rt-toggle-button-group {
48
+ flex: 1 1 auto;
49
+ }
50
+
51
+ .rt-toggle-button-group__button {
52
+ flex: none;
53
+ }
54
+ }
55
+
56
+ /* Обводка — внутренней тенью, а не рамкой: у выбранного чипа Material её нет, и рамка сузила
57
+ бы его на две точки против соседей. Цвет обводки состояние переназначает на самом пункте —
58
+ там же, где тень собрана, поэтому она его видит. Слой наведения — 8 % цвета текста пункта,
59
+ обводка недоступного — 32 % его бледного текста, то есть 12 % основного: так их считает
60
+ Material, и своих имён в наборе токенов им не нужно — каждое имя повторяется там по разу на
61
+ тему и набор. */
62
+ rt-toggle-button-group.rt-toggle-button-group--chips .rt-toggle-button-group__button {
63
+ --rt-toggle-chip-edge: var(--rt-toggle-chip-color-border);
64
+ --rt-toggle-chip-outline: inset 0 0 0 var(--rt-border-width-thin) var(--rt-toggle-chip-edge);
65
+
66
+ height: var(--rt-toggle-button-group-height);
67
+ min-height: 0;
68
+ box-sizing: border-box;
69
+ border-radius: var(--rt-toggle-button-group-track-radius);
70
+ background-color: transparent;
71
+ box-shadow: var(--rt-toggle-chip-outline);
72
+ color: var(--rt-toggle-chip-color-text);
73
+
74
+ &:hover:not(:disabled) {
75
+ --rt-toggle-chip-hover: color-mix(in srgb, currentcolor 8%, transparent);
76
+
77
+ background-image: linear-gradient(var(--rt-toggle-chip-hover), var(--rt-toggle-chip-hover));
78
+ }
79
+
80
+ /* Наведение сегмента красит текст в основной; чип под курсором держит свой. */
81
+ &:hover:not(:disabled, .rt-toggle-button-group__button--active) {
82
+ color: var(--rt-toggle-chip-color-text);
83
+ }
84
+
85
+ &.rt-toggle-button-group__button--active {
86
+ background-color: var(--rt-toggle-chip-color-bg-selected);
87
+ color: var(--rt-color-action-primary-on-surface);
88
+ }
89
+
90
+ &:focus-visible {
91
+ --rt-toggle-chip-focus: var(--rt-toggle-chip-outline), var(--rt-toggle-button-group-focus-shadow);
92
+
93
+ box-shadow: var(--rt-toggle-chip-focus);
94
+ }
95
+
96
+ /* Состояние ниже вариантов: недоступный выбранный тоже бледнеет. */
97
+ &:disabled {
98
+ --rt-toggle-chip-edge: color-mix(in srgb, currentcolor 32%, transparent);
99
+
100
+ color: var(--rt-color-text-disabled);
101
+ }
102
+ }
103
+
104
+ /* Набор: фильтр-чип Material — 28 px, отступы 12 px, шрифт 14 px / 500 с разрядкой 0.1 px, у
105
+ выбранного слот галочки 36 px: 6 px, значок 24 px, 6 px. Размер у чипа Material один, и под
106
+ набором все три размера группы рисуют его. */
107
+ rt-toggle-button-group.rt-toggle-button-group--chips#{$preset} {
108
+ /* У чипа Material поле 8 px сверху и снизу, и поля соседних строк не схлопываются: группа
109
+ на 16 px выше своих строк, строки — через 16 px, пункты в строке — через 8 px. */
110
+ .rt-toggle-button-group {
111
+ padding-block: var(--rt-space-2);
112
+ row-gap: var(--rt-space-4);
113
+ }
114
+
115
+ .rt-toggle-button-group__button {
116
+ height: 28px;
117
+ padding: 0 calc(3 * var(--rt-space-1));
118
+ font-size: var(--rt-text-sm);
119
+ font-weight: var(--rt-font-weight-medium);
120
+ letter-spacing: 0.1px;
121
+ line-height: var(--rt-size-5);
122
+ }
123
+
124
+ /* У выбранного чипа Material обводки нет, текст — on-secondary-container темы; недоступный
125
+ выбранный сохраняет обводку и бледный текст. */
126
+ .rt-toggle-button-group__button--active:not(:disabled) {
127
+ --rt-toggle-chip-edge: transparent;
128
+
129
+ color: var(--rt-sys-on-secondary-container, var(--rt-color-text-primary));
130
+ }
131
+
132
+ .rt-toggle-button-group__check {
133
+ block-size: var(--rt-size-6);
134
+ inline-size: var(--rt-size-6);
135
+ margin-inline: calc(-1.5 * var(--rt-space-1)) calc(1.5 * var(--rt-space-1) - var(--rt-toggle-button-group-btn-gap));
136
+ }
137
+
138
+ .rt-toggle-button-group__check-svg {
139
+ block-size: var(--rt-size-5);
140
+ inline-size: var(--rt-size-5);
141
+ }
142
+ }
143
+
144
+ /* Недоступный сегмент под набором бледнеет текстом, как недоступный пункт Material; в своём
145
+ виде кита он прежний. В отключённой группе бледнеет вся группа, и правило её не трогает. */
146
+ rt-toggle-button-group#{$preset}:not(.rt-toggle-button-group--chips)
147
+ .rt-toggle-button-group:not(.rt-toggle-button-group--disabled)
148
+ .rt-toggle-button-group__button:disabled {
149
+ color: var(--rt-color-text-disabled);
150
+ }
151
+ }
@@ -115,12 +115,47 @@
115
115
  &--disabled {
116
116
  opacity: 0.5;
117
117
  }
118
+
119
+ /* Перенос и столбик: дорожка растёт по сегментам, а сегмент держит высоту строки
120
+ прежней раскладки. Между строками — тот же просвет, что и внутри дорожки. */
121
+ &--wrap,
122
+ &--column {
123
+ height: auto;
124
+ gap: var(--rt-toggle-button-group-track-padding);
125
+
126
+ .rt-toggle-button-group__button {
127
+ min-height: calc(var(--rt-toggle-button-group-height) - 2 * var(--rt-toggle-button-group-track-padding));
128
+ }
129
+ }
130
+
131
+ &--wrap {
132
+ flex-wrap: wrap;
133
+ }
134
+
135
+ &--column {
136
+ flex-direction: column;
137
+
138
+ .rt-toggle-button-group__button {
139
+ justify-content: flex-start;
140
+ }
141
+ }
118
142
  }
119
143
 
120
144
  /* Шаг входа `radius` переназначает скругление дорожки; сегменты держат своё. */
121
145
  @include kv.radius-steps('--rt-toggle-button-group-track-radius');
122
146
  }
123
147
 
148
+ /* Перенос: хост занимает строку контейнера, и дорожка, не влезшая в неё, сжимается до его
149
+ ширины — тогда сегменты уходят на следующую строку. Фон дорожки по-прежнему по сегментам. */
150
+ rt-toggle-button-group.rt-toggle-button-group--wrap {
151
+ display: flex;
152
+
153
+ .rt-toggle-button-group {
154
+ min-width: 0;
155
+ flex: 0 1 auto;
156
+ }
157
+ }
158
+
124
159
  /* full-width: группа растягивается на контейнер, опции делят ширину поровну. */
125
160
  rt-toggle-button-group.rt-toggle-button-group--full-width {
126
161
  display: flex;
@@ -11,6 +11,7 @@
11
11
  | `rtTooltipPlacement` | `'top' \| 'bottom' \| 'left' \| 'right' \| null` | `null` — сверху, под материальным набором снизу |
12
12
  | `rtTooltipWhenTruncated` | `boolean` | `false` — подсказка только у обрезанного текста |
13
13
  | `rtTooltipHideOnClick` | `boolean` | `true` — клик прячет открытую подсказку |
14
+ | `rtTooltipShowDelay` | `number \| null` | `null` — задержка из настроек кита, без них 300 |
14
15
 
15
16
  Выходов нет. Панель — `rt-tooltip` в оверлее CDK, `role="tooltip"`.
16
17
 
@@ -22,7 +23,8 @@ no-op, а не пустая панель под курсором. Поэтому
22
23
  сам — так `[rtTooltip]="value | date"` не ломает строгую типизацию шаблона.
23
24
 
24
25
  **Подсказка появляется с задержкой 300 мс.** Она гасит мелькание при быстром проходе курсора по
25
- ряду кнопок. Уход курсора до истечения задержки не показывает ничего.
26
+ ряду кнопок. Уход курсора до истечения задержки не показывает ничего. Общую задержку меняет
27
+ `showDelay` в настройках кита, задержку одной подсказки — `rtTooltipShowDelay`.
26
28
 
27
29
  ## Как этим пользоваться
28
30
 
@@ -31,6 +33,10 @@ no-op, а не пустая панель под курсором. Поэтому
31
33
  - У переключателя ставят `rtTooltipHideOnClick="false"`: клик оставляет подсказку, а новый текст
32
34
  `[rtTooltip]` («Включить» → «Выключить») появляется в открытой панели на месте. Отложенный показ клик
33
35
  снимает при любом значении, поэтому касание на тач-экране подсказку не показывает.
36
+ - Приложение, которому клик не должен прятать ни одну подсказку, задаёт это один раз:
37
+ `provideRtKit({ components: { tooltip: { hideOnClick: false } } })`. Там же `placement` и
38
+ `showDelay`. Вход на элементе перебивает настройку. Сторона из настроек применяется и тогда, когда
39
+ обёртка кита передала `null`: настройка читается при выборе стороны, а не умолчанием входа.
34
40
  - Смена текста при открытой подсказке меняет его на месте при любом значении входа; пустой текст её
35
41
  прячет.
36
42
  - Фокус, поставленный мышью или кодом, подсказку не показывает: меню возвращает фокус кнопке после
@@ -75,7 +75,7 @@
75
75
  --rt-tree-row-min-height: var(--rt-size-8);
76
76
  --rt-tree-row-box-sizing: border-box;
77
77
  --rt-tree-row-radius: var(--rt-radius-ms);
78
- --rt-tree-guide-color: var(--mat-sys-outline-variant, var(--rt-color-border-subtle));
78
+ --rt-tree-guide-color: var(--rt-sys-outline-variant, var(--rt-color-border-subtle));
79
79
  --rt-tree-toggle-color: var(--rt-color-action-primary);
80
80
  --rt-tree-leaf-space-display: none;
81
81
  --rt-tree-check-size: calc(var(--rt-size-4) - 2 * var(--rt-input-border-width));
@@ -83,7 +83,7 @@
83
83
  --rt-tree-match-bg: var(--rt-mat-yellow-100);
84
84
  --rt-tree-match-font-weight: var(--rt-font-weight-semibold);
85
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));
86
+ --rt-tree-count-color: var(--rt-sys-on-primary, var(--rt-color-text-inverse));
87
87
  --rt-tree-count-font-size: var(--rt-text-xs);
88
88
  --rt-tree-count-padding-inline: calc(var(--rt-space-1) + var(--rt-space-0-5));
89
89
  --rt-tree-count-min-size: var(--rt-size-5);
@@ -14,7 +14,7 @@
14
14
  and the assignments are declared on the root: a scheme on an inner node would change the steps under
15
15
  assignments already resolved, and the piece would keep the old accent.
16
16
 
17
- A Material theme of the application wins over the scheme in the material set: its `--mat-sys-primary`
17
+ A Material theme of the application wins over the scheme in the material set: its `--rt-sys-primary`
18
18
  stands in front of the step in that set's assignments.
19
19
 
20
20
  Usage:
@@ -0,0 +1,48 @@
1
+ /* Плотность полей материального набора — как плотность Material: каждый шаг вниз снимает с
2
+ высоты поля 4 px, от 56 px при нуле до 36 px при −5. Шаг назначает атрибут `data-rt-density`
3
+ на самом поле или на любом его предке: на предке он действует на все поля внутри.
4
+
5
+ Атрибут ставит не высоту, а число шагов — свойство `--rt-input-density`, и оно наследуется.
6
+ Высоту считает материальный набор на своём узле из унаследованного шага. Поэтому атрибут на корне
7
+ приложения доходит и до поля, у которого свой признак набора: набор на поле пересчитывает высоту
8
+ из того же шага, а не возвращает 56 px.
9
+
10
+ Узел с атрибутом ниже узла с набором пересчитывает высоту сам: набор вычислил её на своём узле, и
11
+ шаг, назначенный ниже, туда не доходит. Высоту поля читает десяток компонентов, и все они получают
12
+ её отсюда, не зная о плотности.
13
+
14
+ В своём виде кита атрибут ничего не делает: шкалу высот там задаёт вход `size`, а шаг без набора
15
+ никто не читает. */
16
+
17
+ @use 'sass:math';
18
+
19
+ $-material-flag: ".rt-preset-material, [data-preset='material']";
20
+ $-material-height: var(--rt-input-height-app, calc(var(--rt-size-12) + var(--rt-size-2) - var(--rt-input-density) * var(--rt-size-1)));
21
+
22
+ /* Шаг плотности не объявлен в наборе назначений: островок набора объявляет весь набор заново на своём
23
+ узле и сбросил бы шаг, пришедший с предка, в ноль. Начальный ноль даёт регистрация свойства — она
24
+ ничего не объявляет на узлах, и шаг предка наследуется сквозь любой признак набора. */
25
+ @property --rt-input-density {
26
+ inherits: true;
27
+ initial-value: 0;
28
+ syntax: '<number>';
29
+ }
30
+
31
+ /* rt-layer-outside: высоту объявляет материальный набор вне слоёв, в `_preset-material.scss`, а
32
+ объявление вне слоя сильнее любого слоистого. В слое `rt-kit.components` плотность проигрывала бы
33
+ набору на том же узле — атрибут рядом с признаком набора ничего бы не менял. Плотность стоит вне
34
+ слоя и после набора, поэтому выигрывает местом. Островок темы с набором на том же узле объявляет
35
+ назначения правилом с `:not(:root)` — на один шаг сильнее; третий селектор равен ему по силе и
36
+ выигрывает тем же местом. */
37
+ @each $step in (0, -1, -2, -3, -4, -5) {
38
+ [data-rt-density='#{$step}'] {
39
+ --rt-input-density: #{math.abs($step)};
40
+ }
41
+ }
42
+
43
+ :where(#{$-material-flag}) [data-rt-density],
44
+ :is(#{$-material-flag})[data-rt-density],
45
+ :is(#{$-material-flag})[data-rt-density]:not(:root) {
46
+ --rt-input-height-md: #{$-material-height};
47
+ --rt-input-height: var(--rt-input-height-md);
48
+ }
@@ -29,6 +29,10 @@
29
29
  // Местный кусок темы стоит последним из наборов свойств: его правила обязаны выигрывать у
30
30
  // корневых, а выигрывают они местом, а не силой селектора.
31
31
  @forward './theme-scope';
32
+
33
+ // Плотность полей материального набора: атрибут на поле или на предке переобъявляет высоту на
34
+ // своём узле. Без этой строки атрибут ставится в разметку и ничего не меняет.
35
+ @forward './density';
32
36
  @forward './scrollbar';
33
37
 
34
38
  // Раскладка экрана входа: она объявлена классами, а не компонентом, поэтому доехать до
@@ -51,3 +55,7 @@
51
55
  // Стили волны нажатия — по той же причине: директива своего представления не имеет.
52
56
  // Без этой строки узел волны ставится в разметку и остаётся невидимым.
53
57
  @forward '../lib/components/ripple/rt-ripple.directive';
58
+
59
+ // Стили пузырька `rtBadge` — по той же причине: директива ставит узел, а правил у него без этой
60
+ // строки нет, и число рисуется голым текстом в конце хоста.
61
+ @forward '../lib/components/badge/rt-badge.directive';