@rt-tools/ui-kit 0.5.0 → 0.5.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.
package/package.json CHANGED
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "@rt-tools/ui-kit",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "license": "Apache-2.0",
5
5
  "author": "Yauheni Krumin",
6
6
  "type": "module",
7
7
  "dependencies": {
8
8
  "tslib": "^2.8.0",
9
- "@rt-tools/core": "^0.3.1",
10
- "@rt-tools/store": "^0.3.1",
9
+ "@rt-tools/core": "^0.4.0",
10
+ "@rt-tools/store": "^0.3.2",
11
11
  "@rt-tools/utils": "^0.4.0"
12
12
  },
13
13
  "peerDependencies": {
14
- "@rt-tools/core": "^0.3.1",
15
- "@rt-tools/store": "^0.3.1",
14
+ "@rt-tools/core": "^0.4.0",
15
+ "@rt-tools/store": "^0.3.2",
16
16
  "@rt-tools/utils": "^0.4.0",
17
17
  "@angular/cdk": "^22.0.0",
18
18
  "@angular/common": "^22.0.0",
Binary file
@@ -46,6 +46,15 @@ $side-menu: (
46
46
  track-color: var(--rt-bg-base-strong),
47
47
  thumb-color: var(--rt-bg-base-emphasis-soft),
48
48
  ),
49
+ // Ручка тяги: видимая полоса и зона, которой она захватывается курсором, — два разных числа.
50
+ // Пока они были одним, попасть в четыре пикселя удавалось не с первого раза, а промах мимо
51
+ // ручки попадает в панель подменю — то есть вместо тяги человек нажимает пункт. Зона шире
52
+ // втрое и стоит по центру прежнего места: видимое от этого не двигается ни на пиксель.
53
+ resizer: (
54
+ width: 0.25rem,
55
+ grab-width: 0.75rem,
56
+ hover-color: var(--rt-border-neutral-default),
57
+ ),
49
58
  );
50
59
 
51
60
  :host(.rtui-side-menu--pinned) {
@@ -71,6 +80,10 @@ $side-menu: (
71
80
  // и выражение, повторённое у каждого, разъезжается на первой же правке одного из них.
72
81
  --rt-side-menu-sub-menu-shown-width: max(var(--rt-side-menu-sub-menu-width), var(--rt-side-menu-sub-menu-dragged-width, 0px));
73
82
 
83
+ // Правый край панели подменю на экране: отступ полосы значков плюс её показанная ширина.
84
+ // Тем же числом стоит ручка тяги, и повторённое у неё выражение разошлось бы с этим.
85
+ --rt-side-menu-panel-edge: calc(var(--rt-side-menu-base-width) + var(--rt-side-menu-sub-menu-shown-width));
86
+
74
87
  // Полоса прокрутки обоих списков меню — полосы значков и подменю. Оформляется здесь, а не у
75
88
  // прокручиваемой области: вид остальных её экранов от этой правки не двигается. Правило
76
89
  // пробивает инкапсуляцию, потому что прокручивается внутренний узел области, а полоса
@@ -204,15 +217,36 @@ $side-menu: (
204
217
  // уносит в свою область содержимого. Снаружи ручка идёт от края экрана до края, и стоит она
205
218
  // там, где кончается панель: отступ полосы значков плюс ширина самой панели.
206
219
  .rtui-side-menu-resizer {
220
+ // Свес — половина лишней ширины, на которую зона захвата шире видимой полосы. Его
221
+ // используют два места: сам узел, сдвинутый влево на эту величину, и полоса внутри него,
222
+ // отступающая на неё же. Выражение, повторённое у обоих, расходится на первой же правке
223
+ // одного.
224
+ --rt-side-menu-resizer-overhang: calc((var(--rt-side-menu-resizer-grab-width) - var(--rt-side-menu-resizer-width)) / 2);
225
+
226
+ // Отступ узла от правого края панели: своя ширина полосы плюс свес слева от неё.
227
+ --rt-side-menu-resizer-inset: calc(var(--rt-side-menu-resizer-width) + var(--rt-side-menu-resizer-overhang));
228
+
229
+ // Узел занимает зону захвата целиком и стоит так, чтобы прежняя полоса осталась на своём
230
+ // месте: лишняя ширина расходится поровну в обе стороны от неё.
207
231
  position: fixed;
208
232
  z-index: 3;
209
- left: calc(var(--rt-side-menu-base-width) + var(--rt-side-menu-sub-menu-shown-width) - 0.25rem);
210
- width: 0.25rem;
233
+ left: calc(var(--rt-side-menu-panel-edge) - var(--rt-side-menu-resizer-inset));
234
+ width: var(--rt-side-menu-resizer-grab-width);
211
235
  cursor: col-resize;
212
236
  inset-block: 0;
213
237
 
214
- &:hover {
215
- background-color: var(--rt-border-neutral-default);
238
+ // Красится не сам узел, а полоса внутри него: закрашенная зона захвата стала бы втрое
239
+ // толще прежней линии и читалась бы другим оформлением, а не тем же с большей мишенью.
240
+ &:before {
241
+ position: absolute;
242
+ left: var(--rt-side-menu-resizer-overhang);
243
+ width: var(--rt-side-menu-resizer-width);
244
+ content: '';
245
+ inset-block: 0;
246
+ }
247
+
248
+ &:hover:before {
249
+ background-color: var(--rt-side-menu-resizer-hover-color);
216
250
  }
217
251
  }
218
252
 
Binary file