@rt-tools/ui-kit-v2 0.40.0 → 0.42.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 (28) hide show
  1. package/fesm2022/rt-tools-ui-kit-v2-calendar.mjs +4 -4
  2. package/fesm2022/rt-tools-ui-kit-v2-calendar.mjs.map +1 -1
  3. package/fesm2022/rt-tools-ui-kit-v2-core.mjs.map +1 -1
  4. package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs +13 -5
  5. package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs.map +1 -1
  6. package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs +155 -100
  7. package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs.map +1 -1
  8. package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs +2 -2
  9. package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs.map +1 -1
  10. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs +51 -24
  11. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs.map +1 -1
  12. package/package.json +1 -1
  13. package/src/lib/components/calendar/CONTEXT.md +4 -2
  14. package/src/lib/components/calendar/rt-calendar.component.scss +29 -2
  15. package/src/lib/components/data-table/CONTEXT.md +5 -0
  16. package/src/lib/components/data-table/cell/rt-data-table-cell.component.scss +15 -0
  17. package/src/lib/components/data-table/stories/component/test-data-table-matrix.component.scss +10 -0
  18. package/src/lib/components/date-picker/CONTEXT.md +5 -0
  19. package/src/lib/components/date-picker/panel/CONTEXT.md +42 -0
  20. package/src/lib/components/date-picker/panel/rt-date-panel.component.scss +55 -2
  21. package/src/rich-editor/lib/components/chat/CONTEXT.md +13 -1
  22. package/src/rich-editor/lib/components/chat/rt-chat-messenger.scss +28 -14
  23. package/src/rich-editor/lib/components/chat/rt-chat.component.scss +21 -0
  24. package/types/rt-tools-ui-kit-v2-calendar.d.ts +13 -1
  25. package/types/rt-tools-ui-kit-v2-core.d.ts +7 -0
  26. package/types/rt-tools-ui-kit-v2-data-table.d.ts +11 -1
  27. package/types/rt-tools-ui-kit-v2-date-picker.d.ts +157 -5
  28. package/types/rt-tools-ui-kit-v2-rich-editor.d.ts +14 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rt-tools/ui-kit-v2",
3
- "version": "0.40.0",
3
+ "version": "0.42.0",
4
4
  "license": "Apache-2.0",
5
5
  "author": "Yauheni Krumin",
6
6
  "type": "module",
@@ -31,8 +31,10 @@
31
31
 
32
32
  **Календарь ничего не считает.** Раскладку месяца готовит потребитель: сколько пустых клеток в
33
33
  начале (`leadingBlanks`), какие дни заняты (`state`), что писать под числом (`sublabel`), какие
34
- дни недоступны (`disabled`). Компонент только показывает готовое — поэтому он одинаково годится
35
- и для выбора дат, и для витрины занятости.
34
+ дни недоступны (`disabled`). Вместо пустых клеток месяц может нести дни соседних месяцев
35
+ (`leadingDays` и `trailingDays`). Они бледные и не нажимаются, а с `crossed` ещё и зачёркнуты.
36
+ Компонент только показывает готовое — поэтому он одинаково годится и для выбора дат, и для витрины
37
+ занятости.
36
38
 
37
39
  **Это не поле ввода.** Значение он не хранит и в форму не пишет; для ввода даты есть
38
40
  [`rt-date-picker`](../date-picker/CONTEXT.md), для периода — [`rt-date-range`](../date-range/CONTEXT.md).
@@ -140,6 +140,11 @@
140
140
  box-shadow: var(--rt-calendar-today-ring);
141
141
  }
142
142
 
143
+ /* Число сегодняшнего дня — цвета действия и полужирное, пока день не залит выбором. */
144
+ &[data-today]:not([data-state='start'], [data-state='end'], [data-state='chosen'], [data-state='in-range']) {
145
+ color: var(--rt-color-action-primary);
146
+ }
147
+
143
148
  &:focus-visible {
144
149
  outline: var(--rt-focus-ring-width) solid var(--rt-focus-ring-color);
145
150
  outline-offset: var(--rt-focus-ring-offset);
@@ -175,6 +180,27 @@
175
180
  font-weight: var(--rt-font-weight-medium);
176
181
  }
177
182
 
183
+ &__day[data-today] &__day-num {
184
+ font-weight: var(--rt-font-weight-semibold);
185
+ }
186
+
187
+ /* День соседнего месяца: стоит в сетке как день, бледный, не нажимается. За границей
188
+ выбора ещё и зачёркнут, как занятый день. */
189
+ &__outside {
190
+ display: flex;
191
+ align-items: center;
192
+ justify-content: center;
193
+ color: var(--rt-color-text-muted);
194
+ font-size: var(--rt-text-sm);
195
+ font-weight: var(--rt-font-weight-medium);
196
+ min-block-size: var(--rt-calendar-day-size);
197
+ opacity: 0.45;
198
+
199
+ &[data-crossed] {
200
+ text-decoration: line-through;
201
+ }
202
+ }
203
+
178
204
  &__day-sublabel {
179
205
  font-size: var(--rt-text-2xs);
180
206
  opacity: 0.75;
@@ -185,8 +211,9 @@
185
211
  grid-template-columns: 1fr;
186
212
  }
187
213
 
188
- /* на мобиле показываем один месяц — навигация листает по одному */
189
- &__month:last-child {
214
+ /* на мобиле показываем один месяц — навигация листает по одному. Прячется только второй
215
+ из двух: единственный месяц тоже последний, и без `:not(:first-child)` пропадала сетка */
216
+ &__month:last-child:not(:first-child) {
190
217
  display: none;
191
218
  }
192
219
  }
@@ -80,6 +80,11 @@
80
80
  глифом шрифта Material Symbols, как первый кит. Шрифт кит не везёт: глиф виден, где его подключило
81
81
  приложение.
82
82
 
83
+ **Размер значка ячейки задаёт поле `icon.size` колонки:** `sm`, `md` или `lg`, без поля — `lg`;
84
+ значение не из списка, пришедшее из сохранённых настроек мимо типов, тоже рисуется как `lg`.
85
+ Ячейка сама ставит ступени значка `--rt-icon-step-*`, и глиф читает те же свойства: значок набора
86
+ и глиф в одной колонке одного размера, даже если предок сменил ступени для своих детей.
87
+
83
88
  ## Части семейства
84
89
 
85
90
  | Часть | Что делает |
@@ -8,6 +8,12 @@
8
8
  --rt-data-table-cell-transition-duration: var(--rt-duration-fast);
9
9
  --rt-data-table-cell-glyph-size: var(--rt-size-6);
10
10
 
11
+ /* Значок набора в ячейке идёт теми же ступенями, что глиф: предок, сменивший ступень
12
+ значка для своих детей, иначе развёл бы их размеры в одной колонке. */
13
+ --rt-icon-step-sm: var(--rt-size-4);
14
+ --rt-icon-step-md: var(--rt-size-5);
15
+ --rt-icon-step-lg: var(--rt-size-6);
16
+
11
17
  position: relative;
12
18
  display: flex;
13
19
  width: 100%;
@@ -34,6 +40,15 @@
34
40
  &--filled {
35
41
  font-variation-settings: 'FILL' 1;
36
42
  }
43
+
44
+ /* Размер значка из описания колонки — те же ступени, что у значка кита в ячейке. */
45
+ &--sm {
46
+ --rt-data-table-cell-glyph-size: var(--rt-icon-step-sm);
47
+ }
48
+
49
+ &--md {
50
+ --rt-data-table-cell-glyph-size: var(--rt-icon-step-md);
51
+ }
37
52
  }
38
53
 
39
54
  &__prefix,
@@ -0,0 +1,10 @@
1
+ @layer rt-kit.components {
2
+ /* Пояснение под матрицей: почему в колонке глифа видно начало слова, а не значок. Ширина —
3
+ две ступени по 400px, чтобы строка не тянулась на всю витрину. */
4
+ .app-data-table-matrix__note {
5
+ max-width: calc(var(--rt-size-100) * 2);
6
+ color: var(--rt-color-text-muted);
7
+ font-size: var(--rt-text-sm);
8
+ line-height: var(--rt-leading-relaxed);
9
+ }
10
+ }
@@ -24,6 +24,11 @@
24
24
  или «Применить». На широком экране панель стоит в поповере, на узком — в нижней шторке. Признак
25
25
  узкого экрана даёт `BreakpointsService.narrow`. Договорённость — `docs/specs/ui-kit-v2/date-panel/`.
26
26
 
27
+ **Панель выдаётся и отдельно.** `RtDatePanelComponent` идёт из этой же точки входа для выбора без
28
+ текстового поля. Поповер или шторку держит потребитель: он создаёт панель заново на каждое открытие,
29
+ закрывает её по `closed`, а значение получает из `picked`. Своей поверхности у панели нет, в поповере
30
+ фон, рамку и тень даёт потребитель. Вход `sheet` включает вид для шторки.
31
+
27
32
  **Текст в поле — дата в порядке языка интерфейса.** Под `ru` это `01.08.2026`, под `en-US` —
28
33
  «08/01/2026», время всегда `HH:mm`. Язык берётся из `RT_KIT_LOCALE`: приложение, меняющее язык на
29
34
  ходу, меняет и порядок. Подсказка в пустом поле — та же форма буквами кита (`дд.мм.гггг`). Набранный
@@ -0,0 +1,42 @@
1
+ # `rt-date-panel`
2
+
3
+ ```html
4
+ <rt-date-panel type="datetime-local" [value]="value()" (picked)="value.set($event)" (closed)="close()" />
5
+ ```
6
+
7
+ Панель выбора даты и времени. Её открывает [`rt-date-picker`](../CONTEXT.md), а для выбора без
8
+ текстового поля она идёт из той же точки входа `@rt-tools/ui-kit-v2/date-picker`.
9
+
10
+ | вход | тип | умолчание |
11
+ | -------------------- | -------------------------------------- | ---------- |
12
+ | `type` | `'date' \| 'time' \| 'datetime-local'` | обязателен |
13
+ | `value` | `string` (форма значения поля) | `''` |
14
+ | `min` / `max` | `string \| null` (форма значения) | `null` |
15
+ | `minuteStep` | `number` | `5` |
16
+ | `sheet` | `boolean` | `false` |
17
+ | `now` | `Date \| null` | `null` |
18
+ | `isTodayButtonShown` | `boolean` | `true` |
19
+
20
+ `isTodayButtonShown` показывает «Сегодня» у типа `date`. Без кнопки подвала у даты нет, день
21
+ выбирается нажатием и сразу закрывает панель. Подвал других типов этот вход не трогает.
22
+
23
+ Месяц панели дописан днями соседних месяцев до полных недель, а день за границей зачёркнут. Над
24
+ колонками времени стоят подписи «Часы» и «Минуты». В поповере даты со временем подвал несёт
25
+ «Сейчас» слева, затем «Сбросить» и «Применить». «Сбросить» отдаёт пустое значение и закрывает
26
+ панель. В шторке вместо «Сейчас» и «Сбросить» слева стоит выбранное значение.
27
+
28
+ | выход | значение | когда |
29
+ | -------- | -------- | ----------------------------------------------------------- |
30
+ | `picked` | `string` | готовое значение в форме `value` |
31
+ | `closed` | — | панель просит закрыть себя: после выбора и по Escape в днях |
32
+
33
+ ## Главное, что нужно знать
34
+
35
+ **Поповер или шторку держит потребитель.** Панель сама не открывается и не закрывается: он создаёт
36
+ её заново на каждое открытие и закрывает по `closed`. Черновик живёт, пока панель открыта.
37
+
38
+ **Своей поверхности у панели нет.** В поповере фон, рамку и тень даёт потребитель, в
39
+ `rt-bottom-sheet` их даёт шторка. Вход `sheet` включает вид для шторки: дни под палец, а у даты со
40
+ временем переключатель «Дата | Время».
41
+
42
+ Как это выглядит, показывают истории `DatePanelOpening` в разделе полей формы.
@@ -102,7 +102,46 @@
102
102
 
103
103
  &__time {
104
104
  display: flex;
105
- gap: var(--rt-space-1);
105
+ gap: var(--rt-space-2);
106
+ }
107
+
108
+ /* Колонки времени рядом с месяцем отделены чертой на всю высоту тела. */
109
+ &__time:not(:first-child) {
110
+ align-self: stretch;
111
+ border-inline-start: var(--rt-date-panel-divider-width) solid var(--rt-color-border-subtle);
112
+ padding-inline-start: var(--rt-space-4);
113
+ }
114
+
115
+ /* Переключатель «Дата | Время» по ширине своих сегментов, по центру. */
116
+ &__tabs {
117
+ align-self: center;
118
+ }
119
+
120
+ /* Колонка времени с подписью над ней: подпись не прокручивается вместе с ячейками. */
121
+ &__time-group {
122
+ display: flex;
123
+ flex-direction: column;
124
+ gap: var(--rt-space-2);
125
+ }
126
+
127
+ &__time-title {
128
+ padding: var(--rt-space-1) 0;
129
+ color: var(--rt-color-text-muted);
130
+ font-size: var(--rt-text-xs);
131
+ text-align: center;
132
+ }
133
+
134
+ /* Первая кнопка подвала прижата влево, остальные стоят справа. */
135
+ &__lead {
136
+ margin-inline-end: auto;
137
+ }
138
+
139
+ /* Выбранное значение в подвале шторки: слева, напротив «Применить». */
140
+ &__value {
141
+ align-self: center;
142
+ color: var(--rt-color-text-muted);
143
+ font-size: var(--rt-text-sm);
144
+ margin-inline-end: auto;
106
145
  }
107
146
 
108
147
  &__column {
@@ -156,6 +195,20 @@
156
195
  }
157
196
  }
158
197
 
198
+ /* Ячейка времени — полоса на ширину колонки, число у левого края. Выбранная ячейка залита
199
+ бледным цветом действия, число тёмное и полужирное. */
200
+ &__column &__cell {
201
+ min-inline-size: calc(var(--rt-size-10) * 1.5);
202
+ padding-inline: var(--rt-space-4) 0;
203
+ text-align: start;
204
+
205
+ &[aria-pressed='true'] {
206
+ background: var(--rt-color-action-primary-subtle);
207
+ color: var(--rt-color-text-primary);
208
+ font-weight: var(--rt-font-weight-semibold);
209
+ }
210
+ }
211
+
159
212
  &__footer {
160
213
  display: flex;
161
214
  justify-content: flex-end;
@@ -197,7 +250,7 @@
197
250
  justify-content: center;
198
251
  }
199
252
 
200
- &--sheet &__column {
253
+ &--sheet &__time-group {
201
254
  flex: 1 1 0;
202
255
  }
203
256
  }
@@ -47,7 +47,19 @@ rtChatMessageActions let-message>` рисуется в меню «…» у ре
47
47
  **Готовый текст подставляет метод `setDraft`.** Он заменяет черновик во всех трёх полях ответа и
48
48
  ставит курсор в конец. Файлы остаются, сигнала набора нет, закрытое поле текст не принимает.
49
49
  Работу метода показывает история `QuickReplies` страницы переписки: кнопка у поля ответа и
50
- подсказка в боковой панели ставят текст в поле, гостю ничего не уходит.
50
+ подсказка в боковой панели ставят текст в поле, гостю ничего не уходит. Метод `draftText` читает
51
+ текст поля без разметки и файлы не трогает, а метод `draftFiles` отдаёт выбранные файлы.
52
+
53
+ **Подпись на пузыре даёт приложение.** `dateLabel` стоит вместо времени, `dateIcon` на месте значка
54
+ статуса. Значки ошибки отправки и недоставки остаются: они предупреждают. Подписи дней считаются от
55
+ `createdAt`.
56
+
57
+ **Пузырь мессенджера не шире 85% ленты и не шире 320.** Предел стоит на пузыре, а не на строке:
58
+ кнопки у реплики лежат рядом и не отнимают его ширину. Значок статуса 16, подпись и значок на своём
59
+ пузыре без прозрачности, пузырь гостя белый с тенью. Боковой отступ чата 16, на узком месте 12.
60
+
61
+ **Слот `rtChatComposerBar` стоит над рамкой поля ответа** во всех видах поля. Пустой слот места не
62
+ занимает, а без поля слота нет.
51
63
 
52
64
  **Удалённое сообщение остаётся в ленте** отдельной пометкой вместо текста: иначе непонятно, на
53
65
  что отвечали соседние реплики.
@@ -1,5 +1,7 @@
1
1
  // Вид мессенджера чата: метки дней, ряд кнопок под полем, пузыри мягкие, свой — цвета действия.
2
2
  // Лежит отдельно от стилей чата, чтобы оба файла уместились в предел длины.
3
+ @use '../../../../styles/breakpoints' as bp;
4
+
3
5
  @layer rt-kit.components {
4
6
  .rt-chat {
5
7
  --rt-chat-day-label-radius: var(--rt-radius-full);
@@ -32,20 +34,25 @@
32
34
  }
33
35
  }
34
36
 
35
- // Вид мессенджера: пузырь мягкий, свой — цвета действия, пузырь гостя серый на белой ленте,
36
- // время и знак доставки справа внизу
37
+ // Вид мессенджера: пузырь мягкий, свой — цвета действия, пузырь гостя белый с тенью на белой
38
+ // ленте, время и знак доставки справа внизу
37
39
  &--messenger {
38
40
  --rt-chat-bubble-radius: var(--rt-radius-xl);
39
41
  --rt-chat-bubble-corner-radius: var(--rt-radius-sm);
40
42
  --rt-chat-messenger-border-width: var(--rt-border-width-thin);
41
43
  --rt-chat-messenger-panel-radius: var(--rt-radius-lg);
42
44
  --rt-chat-messenger-actions-shadow: var(--rt-shadow-sm);
45
+ --rt-chat-bubble-in-shadow: var(--rt-shadow-sm);
43
46
  --rt-chat-bubble-own-bg: var(--rt-color-action-primary);
44
- --rt-chat-bubble-in-bg: var(--rt-color-bg-subtle);
47
+ --rt-chat-bubble-in-bg: var(--rt-color-bg-surface);
45
48
 
46
49
  box-sizing: border-box;
47
50
  padding: var(--rt-space-4);
48
51
 
52
+ @include bp.place-max(bp.$rt-bp-md) {
53
+ padding: calc(var(--rt-space-2) + var(--rt-space-1));
54
+ }
55
+
49
56
  // Высоту шапке дают имя и строка под ним, плотная полоса панели здесь не нужна
50
57
  .rt-chat__header {
51
58
  --rt-toolbar-height: auto;
@@ -69,12 +76,29 @@
69
76
  > :first-child {
70
77
  margin-block-start: auto;
71
78
  }
79
+
80
+ @include bp.place-max(bp.$rt-bp-sm) {
81
+ padding-inline: calc(var(--rt-space-2) + var(--rt-space-1));
82
+ }
83
+ }
84
+
85
+ // Строка занимает всю ленту: кнопки у реплики стоят рядом и не отнимают ширину пузыря
86
+ .rt-chat__message-row {
87
+ width: 100%;
88
+ max-width: 100%;
89
+ }
90
+
91
+ .rt-chat__message-row--own {
92
+ justify-content: flex-end;
72
93
  }
73
94
 
74
95
  .rt-chat__message {
96
+ max-width: round(min(85%, 320px), 1px);
97
+ box-sizing: border-box;
75
98
  padding: var(--rt-space-2) calc(var(--rt-space-2) + var(--rt-space-1)) var(--rt-space-1);
76
99
  border-radius: var(--rt-chat-bubble-radius) var(--rt-chat-bubble-radius) var(--rt-chat-bubble-radius)
77
100
  var(--rt-chat-bubble-corner-radius);
101
+ box-shadow: var(--rt-chat-bubble-in-shadow);
78
102
  gap: var(--rt-space-0-5);
79
103
  }
80
104
 
@@ -103,7 +127,7 @@
103
127
 
104
128
  .rt-chat__message-text {
105
129
  font-size: var(--rt-text-sm);
106
- line-height: round(1em * var(--rt-leading-tight), 1px);
130
+ line-height: round(1em * var(--rt-leading-snug), 1px);
107
131
  }
108
132
 
109
133
  .rt-chat__message--own .rt-chat__message-text,
@@ -112,15 +136,6 @@
112
136
  color: var(--rt-color-action-on-primary);
113
137
  }
114
138
 
115
- // На своём пузыре время и галочки тише текста: время прозрачнее, галочки чуть плотнее
116
- .rt-chat__message--own .rt-chat__message-date {
117
- opacity: 0.75;
118
- }
119
-
120
- .rt-chat__message--own .rt-chat__message-status {
121
- opacity: 0.85;
122
- }
123
-
124
139
  .rt-chat__message-footer {
125
140
  justify-content: flex-end;
126
141
  }
@@ -143,7 +158,6 @@
143
158
 
144
159
  .rt-chat__message-date {
145
160
  font-size: var(--rt-text-2xs);
146
- line-height: round(1em * var(--rt-leading-tight), 1px);
147
161
  }
148
162
 
149
163
  .rt-chat__message-author {
@@ -176,6 +176,24 @@
176
176
  }
177
177
  }
178
178
 
179
+ &__composer-bar {
180
+ display: flex;
181
+ flex: 0 0 auto;
182
+ flex-direction: column;
183
+
184
+ // Колонка держит шаг `--rt-space-4`, а полоса стоит вплотную к полю: 8px по кадру
185
+ margin-block-end: calc(var(--rt-space-2) - var(--rt-space-4));
186
+
187
+ &:empty {
188
+ display: none;
189
+ }
190
+
191
+ &:not(:empty) + .rt-chat__composer,
192
+ &:not(:empty) + .rt-chat__composer-rich {
193
+ margin-top: 0;
194
+ }
195
+ }
196
+
179
197
  &__footer-slot {
180
198
  display: flex;
181
199
  flex-direction: column;
@@ -298,14 +316,17 @@
298
316
 
299
317
  &__message-footer {
300
318
  display: flex;
319
+ min-width: 0;
301
320
  align-items: center;
302
321
  gap: var(--rt-space-1);
303
322
  }
304
323
 
305
324
  &__message-date {
325
+ min-width: 0;
306
326
  color: var(--rt-chat-bubble-date);
307
327
  font-size: var(--rt-text-xs);
308
328
  line-height: var(--rt-leading-none);
329
+ overflow-wrap: anywhere;
309
330
  }
310
331
 
311
332
  // Пер-месседж статус своего сообщения: часы / двойной чек / «!»+retry.
@@ -38,12 +38,24 @@ export declare namespace IRtCalendar {
38
38
  key: string;
39
39
  day: Day;
40
40
  }
41
- /** View-модель месяца: подпись, пустые ячейки до первого дня, дни. */
41
+ /** День соседнего месяца в начале или в конце сетки: бледный, не нажимается. */
42
+ interface OutsideDay {
43
+ key: string;
44
+ dayOfMonth: number;
45
+ /** День за границей выбора — ещё и зачёркнут. */
46
+ crossed: boolean;
47
+ }
48
+ /**
49
+ * View-модель месяца: подпись, пустые ячейки до первого дня, дни. Дни соседних месяцев
50
+ * необязательны: заданы — встают на место пустых ячеек и дописывают последнюю неделю.
51
+ */
42
52
  interface Month {
43
53
  key: string;
44
54
  label: string;
45
55
  leadingBlanks: readonly number[];
46
56
  days: readonly Day[];
57
+ leadingDays?: readonly OutsideDay[];
58
+ trailingDays?: readonly OutsideDay[];
47
59
  }
48
60
  }
49
61
  export declare class RtCalendarComponent {
@@ -128,6 +128,8 @@ export declare namespace IRtDataTable {
128
128
  tooltip?: string;
129
129
  icon?: IRtDataTable.Icon;
130
130
  }
131
+ /** Размер значка ячейки — ступень значка кита. */
132
+ type IconSize = 'sm' | 'md' | 'lg';
131
133
  /**
132
134
  * Значок колонки. Имя — имя первого кита; рисует его набор кита через перечень соответствий,
133
135
  * а шаблон значка, отданный приложением, рисует его сам.
@@ -138,6 +140,11 @@ export declare namespace IRtDataTable {
138
140
  tooltip?: string;
139
141
  visible?: boolean;
140
142
  placement?: 'left' | 'right';
143
+ /**
144
+ * Размер значка в ячейке: `sm` — 16px, `md` — 20px, `lg` — 24px. Без поля значок 24px, как
145
+ * был. Шапка колонки его не читает.
146
+ */
147
+ size?: IRtDataTable.IconSize;
141
148
  /**
142
149
  * Контурный рисунок вместо залитого, как у первого кита: без признака значок колонки залит.
143
150
  * Заливку рисует материальный набор; свой набор кита рисует значок одним рисунком.
@@ -172,7 +172,17 @@ export declare class RtDataTableCellComponent<T = Record<string, unknown>> {
172
172
  * приложение, а без шрифта на месте значка стоит его имя.
173
173
  */
174
174
  protected readonly glyph: Signal<string | null>;
175
- /** Залитый глиф — как залитый значок набора: контурным его делает `outlined` колонки. */
175
+ /**
176
+ * Размер значка из описания колонки; без него 24px, как было. Описание колонки приходит и из
177
+ * сохранённых настроек, мимо типов: размер не из списка тоже даёт 24px, иначе значок набора
178
+ * взял бы свою ступень, а глиф остался бы прежним.
179
+ */
180
+ protected readonly iconSize: Signal<IRtDataTable.IconSize>;
181
+ /**
182
+ * Залитый глиф — как залитый значок набора: контурным его делает `outlined` колонки. Размер
183
+ * глифа идёт той же ступенью, что значок набора; 24px задаёт сам элемент, и для `lg` своего
184
+ * признака нет.
185
+ */
176
186
  protected readonly glyphMods: Signal<Record<string, boolean>>;
177
187
  protected readonly iconContext: Signal<IRtDataTableIconContext<T> | null>;
178
188
  /**