@rt-tools/ui-kit-v2 0.4.0 → 0.6.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.
- package/README.md +71 -0
- package/fesm2022/rt-tools-ui-kit-v2.mjs +395 -188
- package/fesm2022/rt-tools-ui-kit-v2.mjs.map +1 -1
- package/package.json +1 -1
- package/rt-tools-ui-kit-v2-0.6.0.tgz +0 -0
- package/src/lib/components/aside/_rt-aside-overlay.scss +73 -71
- package/src/lib/components/aside/footer/rt-aside-footer.component.scss +20 -16
- package/src/lib/components/aside/header/rt-aside-header.component.scss +72 -70
- package/src/lib/components/aside/rt-aside.component.scss +107 -105
- package/src/lib/components/aside/unsaved-dialog/rt-aside-unsaved-dialog.component.scss +33 -31
- package/src/lib/components/aside-section/rt-aside-section.component.scss +27 -23
- package/src/lib/components/autocomplete/rt-autocomplete.component.scss +124 -118
- package/src/lib/components/bar-list/rt-bar-list.component.scss +85 -81
- package/src/lib/components/bottom-sheet/rt-bottom-sheet.component.scss +64 -57
- package/src/lib/components/button/rt-button.directive.scss +319 -280
- package/src/lib/components/calendar/rt-calendar.component.scss +106 -102
- package/src/lib/components/card/rt-card.component.scss +53 -45
- package/src/lib/components/chat/rt-chat.component.scss +312 -306
- package/src/lib/components/checkbox/rt-checkbox.component.scss +61 -54
- package/src/lib/components/collapsible-text/rt-collapsible-text.component.scss +36 -34
- package/src/lib/components/confirm-popover/rt-confirm-popover.component.scss +36 -30
- package/src/lib/components/container/CONTEXT.md +22 -0
- package/src/lib/components/container/rt-container.component.scss +91 -87
- package/src/lib/components/counter/rt-counter.component.scss +14 -12
- package/src/lib/components/counter-row/rt-counter-row.component.scss +31 -27
- package/src/lib/components/date-picker/rt-date-picker.component.scss +73 -71
- package/src/lib/components/delta-view/rt-delta-view.component.scss +27 -25
- package/src/lib/components/detail-list/rt-detail-list.component.scss +8 -6
- package/src/lib/components/detail-list/rt-detail-row.component.scss +18 -16
- package/src/lib/components/dialog/footer/rt-dialog-footer.component.scss +19 -17
- package/src/lib/components/dialog/header/rt-dialog-header.component.scss +27 -25
- package/src/lib/components/dialog/rt-dialog.component.scss +59 -56
- package/src/lib/components/download-link/rt-download-link.component.scss +32 -27
- package/src/lib/components/empty-state/rt-empty-state.component.scss +50 -46
- package/src/lib/components/field/rt-field.component.scss +63 -61
- package/src/lib/components/file-card/rt-file-card.component.scss +84 -78
- package/src/lib/components/file-drop/rt-file-drop.component.scss +83 -77
- package/src/lib/components/file-input/rt-file-input.component.scss +20 -18
- package/src/lib/components/file-list/rt-file-list.component.scss +9 -7
- package/src/lib/components/filter-control/rt-filter-control.component.scss +16 -14
- package/src/lib/components/header/rt-header.component.scss +61 -55
- package/src/lib/components/icon/rt-icon.component.scss +14 -12
- package/src/lib/components/icon-button/CONTEXT.md +4 -2
- package/src/lib/components/icon-button/rt-icon-button.component.scss +128 -112
- package/src/lib/components/info-item/rt-info-item.component.scss +38 -36
- package/src/lib/components/input/rt-input.component.scss +102 -98
- package/src/lib/components/input-number/rt-input-number.component.scss +84 -82
- package/src/lib/components/live-badge/rt-live-badge.component.scss +27 -23
- package/src/lib/components/logo/rt-logo.component.scss +54 -52
- package/src/lib/components/menu/rt-menu-confirm-dialog.component.scss +30 -28
- package/src/lib/components/menu/rt-menu-item.component.scss +47 -42
- package/src/lib/components/menu/rt-menu.component.scss +23 -15
- package/src/lib/components/message/rt-message.component.scss +53 -49
- package/src/lib/components/message-composer/rt-message-composer.component.scss +55 -49
- package/src/lib/components/money-list/rt-money-list.component.scss +13 -9
- package/src/lib/components/money-list/rt-money-row.component.scss +23 -19
- package/src/lib/components/multiselect/rt-multiselect.component.scss +169 -161
- package/src/lib/components/night-grid/rt-night-grid.component.scss +47 -42
- package/src/lib/components/note/rt-note.component.scss +15 -11
- package/src/lib/components/notifications-bell/rt-notifications-bell.component.scss +34 -27
- package/src/lib/components/page-header/rt-page-header-mobile.scss +142 -134
- package/src/lib/components/page-header/rt-page-header-submenu.scss +130 -123
- package/src/lib/components/page-header/rt-page-header.component.scss +221 -210
- package/src/lib/components/pagination/rt-pagination.component.scss +88 -81
- package/src/lib/components/photo-viewer/rt-photo-viewer.component.scss +109 -105
- package/src/lib/components/rich-editor/rt-rich-editor.component.scss +63 -59
- package/src/lib/components/section-nav/rt-section-nav.component.scss +53 -47
- package/src/lib/components/select/rt-select.component.scss +146 -138
- package/src/lib/components/skeleton/rt-skeleton.component.scss +50 -41
- package/src/lib/components/skeleton-wrapper/rt-skeleton-wrapper.component.scss +8 -6
- package/src/lib/components/spinner/rt-spinner.component.scss +35 -32
- package/src/lib/components/split-button/rt-split-button.component.scss +74 -62
- package/src/lib/components/stat-tile/rt-stat-tile.component.scss +95 -91
- package/src/lib/components/stepper/rt-stepper.component.scss +107 -101
- package/src/lib/components/table/copy-cell/rt-copy-cell.component.scss +34 -30
- package/src/lib/components/table/rt-table.component.scss +260 -252
- package/src/lib/components/table/settings-aside/rt-table-settings-aside.component.scss +7 -5
- package/src/lib/components/table/settings-panel/rt-table-settings-panel.component.scss +71 -61
- package/src/lib/components/table/sort-header/CONTEXT.md +40 -0
- package/src/lib/components/table/sort-header/rt-table-sort-header.component.scss +31 -29
- package/src/lib/components/tabs/CONTEXT.md +5 -0
- package/src/lib/components/tabs/rt-tabs.component.scss +184 -175
- package/src/lib/components/tag/rt-tag.component.scss +97 -92
- package/src/lib/components/textarea/rt-textarea.component.scss +62 -60
- package/src/lib/components/theme-toggle/rt-theme-toggle.component.scss +7 -5
- package/src/lib/components/thread-list/rt-thread-list.component.scss +221 -212
- package/src/lib/components/timeline/rt-timeline.component.scss +82 -76
- package/src/lib/components/toast/CONTEXT.md +8 -0
- package/src/lib/components/toast/rt-toast.component.scss +169 -160
- package/src/lib/components/toast/rt-toaster.component.scss +37 -35
- package/src/lib/components/toggle-button-group/rt-toggle-button-group.component.scss +129 -122
- package/src/lib/components/toggle-switch/rt-toggle-switch.component.scss +97 -91
- package/src/lib/components/toolbar/rt-toolbar.component.scss +56 -54
- package/src/lib/components/tooltip/rt-tooltip.component.scss +20 -15
- package/src/lib/components/welcome-dialog/rt-welcome-dialog.component.scss +46 -44
- package/src/lib/components/workspace/rt-workspace.component.scss +139 -131
- package/src/lib/components/workspace-details/rt-workspace-details.component.scss +105 -101
- package/src/styles/_index.scss +4 -0
- package/src/styles/_layers.scss +22 -0
- package/src/styles/_login.scss +87 -85
- package/src/styles/_mixins.scss +1 -1
- package/src/styles/_primitives.scss +126 -67
- package/src/styles/_scrollbar.scss +21 -19
- package/src/styles/_semantic.scss +140 -56
- package/src/styles/_theme-dark.scss +60 -27
- package/styles/tokens.css +628 -408
- package/types/rt-tools-ui-kit-v2.d.ts +9 -16
- package/rt-tools-ui-kit-v2-0.4.0.tgz +0 -0
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
@layer rt-kit.components {
|
|
2
|
+
/* rt-table-settings-aside — ViewEncapsulation.None (common/ui). Своей раскладки нет:
|
|
3
|
+
chrome даёт rt-aside, тело — rt-table-settings-panel. `.rt-table-settings-aside` —
|
|
4
|
+
сам хост, и он не должен добавлять бокс между асайдом и его местом в overlay. */
|
|
4
5
|
|
|
5
|
-
.rt-table-settings-aside {
|
|
6
|
-
|
|
6
|
+
.rt-table-settings-aside {
|
|
7
|
+
display: contents;
|
|
8
|
+
}
|
|
7
9
|
}
|
|
@@ -1,77 +1,87 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
padding: 0;
|
|
9
|
-
margin: 0;
|
|
10
|
-
gap: var(--rt-space-2xs);
|
|
11
|
-
list-style: none;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
&__row {
|
|
15
|
-
display: flex;
|
|
16
|
-
align-items: center;
|
|
17
|
-
padding: var(--rt-space-2xs) var(--rt-space-xs);
|
|
18
|
-
border: var(--rt-border-width-thin) solid var(--rt-color-border-default);
|
|
19
|
-
border-radius: var(--rt-radius-md);
|
|
20
|
-
background-color: var(--rt-color-bg-surface);
|
|
21
|
-
gap: var(--rt-space-sm);
|
|
1
|
+
@layer rt-kit.components {
|
|
2
|
+
/* rt-table-settings-panel — ViewEncapsulation.None (common/ui): правила таргетируют
|
|
3
|
+
BEM-класс блока, как во всём ките. */
|
|
4
|
+
.rt-table-settings-panel {
|
|
5
|
+
--rt-table-settings-panel-row-radius: var(--rt-radius-md);
|
|
6
|
+
--rt-table-settings-panel-row-border-width: var(--rt-border-width-thin);
|
|
7
|
+
--rt-table-settings-panel-row-shadow: var(--rt-shadow-card);
|
|
22
8
|
|
|
23
|
-
|
|
24
|
-
|
|
9
|
+
&__list {
|
|
10
|
+
display: flex;
|
|
11
|
+
min-width: 320px;
|
|
12
|
+
flex-direction: column;
|
|
13
|
+
padding: 0;
|
|
14
|
+
margin: 0;
|
|
15
|
+
gap: var(--rt-space-2xs);
|
|
16
|
+
list-style: none;
|
|
25
17
|
}
|
|
26
18
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
19
|
+
&__row {
|
|
20
|
+
/* Строка при перетаскивании уезжает в .cdk-drag-preview вне блока:
|
|
21
|
+
свойство объявляется на ней самой, а не в корне. */
|
|
22
|
+
--rt-table-settings-panel-drag-duration: var(--rt-duration-base);
|
|
30
23
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
24
|
+
display: flex;
|
|
25
|
+
align-items: center;
|
|
26
|
+
padding: var(--rt-space-2xs) var(--rt-space-xs);
|
|
27
|
+
border: var(--rt-table-settings-panel-row-border-width) solid var(--rt-color-border-default);
|
|
28
|
+
border-radius: var(--rt-table-settings-panel-row-radius);
|
|
29
|
+
background-color: var(--rt-color-bg-surface);
|
|
30
|
+
gap: var(--rt-space-sm);
|
|
31
|
+
|
|
32
|
+
&--hidden {
|
|
33
|
+
color: var(--rt-color-text-muted);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
&.cdk-drag-preview {
|
|
37
|
+
box-shadow: var(--rt-table-settings-panel-row-shadow);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
&.cdk-drag-placeholder {
|
|
41
|
+
opacity: 0.4;
|
|
42
|
+
}
|
|
34
43
|
|
|
35
|
-
|
|
36
|
-
|
|
44
|
+
&.cdk-drag-animating {
|
|
45
|
+
transition: transform var(--rt-table-settings-panel-drag-duration) cubic-bezier(0, 0, 0.2, 1);
|
|
46
|
+
}
|
|
37
47
|
}
|
|
38
|
-
}
|
|
39
48
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
49
|
+
&__handle {
|
|
50
|
+
display: inline-flex;
|
|
51
|
+
width: 24px;
|
|
52
|
+
height: 24px;
|
|
53
|
+
align-items: center;
|
|
54
|
+
justify-content: center;
|
|
55
|
+
padding: 0;
|
|
56
|
+
border: none;
|
|
57
|
+
background: none;
|
|
58
|
+
cursor: grab;
|
|
59
|
+
|
|
60
|
+
&:active {
|
|
61
|
+
cursor: grabbing;
|
|
62
|
+
}
|
|
50
63
|
|
|
51
|
-
|
|
52
|
-
|
|
64
|
+
&--placeholder {
|
|
65
|
+
cursor: default;
|
|
66
|
+
}
|
|
53
67
|
}
|
|
54
68
|
|
|
55
|
-
|
|
56
|
-
|
|
69
|
+
&__label {
|
|
70
|
+
overflow: hidden;
|
|
71
|
+
min-width: 0;
|
|
72
|
+
flex: 1;
|
|
73
|
+
font-size: var(--rt-text-sm);
|
|
74
|
+
text-overflow: ellipsis;
|
|
75
|
+
white-space: nowrap;
|
|
57
76
|
}
|
|
58
|
-
}
|
|
59
77
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
flex: 1;
|
|
64
|
-
font-size: var(--rt-text-sm);
|
|
65
|
-
text-overflow: ellipsis;
|
|
66
|
-
white-space: nowrap;
|
|
78
|
+
&__toggle {
|
|
79
|
+
margin-left: auto;
|
|
80
|
+
}
|
|
67
81
|
}
|
|
68
82
|
|
|
69
|
-
|
|
70
|
-
|
|
83
|
+
/* Плавающий клон строки во время перетаскивания (CDK монтирует его в body). */
|
|
84
|
+
.cdk-drop-list-dragging .rt-table-settings-panel__row:not(.cdk-drag-placeholder) {
|
|
85
|
+
transition: transform var(--rt-table-settings-panel-drag-duration) cubic-bezier(0, 0, 0.2, 1);
|
|
71
86
|
}
|
|
72
87
|
}
|
|
73
|
-
|
|
74
|
-
/* Плавающий клон строки во время перетаскивания (CDK монтирует его в body). */
|
|
75
|
-
.cdk-drop-list-dragging .rt-table-settings-panel__row:not(.cdk-drag-placeholder) {
|
|
76
|
-
transition: transform var(--rt-duration-base) cubic-bezier(0, 0, 0.2, 1);
|
|
77
|
-
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# `rt-table-sort-header`
|
|
2
|
+
|
|
3
|
+
Заголовок сортируемой колонки. Ставится атрибутом на ячейку шапки таблицы, а ключ колонки —
|
|
4
|
+
тот же, что в `cdkColumnDef` и в `[columnsConfig]`.
|
|
5
|
+
|
|
6
|
+
```html
|
|
7
|
+
<th *cdkHeaderCellDef cdk-header-cell rtSortHeader="checkIn">Заезд</th>
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
| вход | тип | умолчание |
|
|
11
|
+
| -------------- | -------- | ------------ |
|
|
12
|
+
| `rtSortHeader` | `string` | обязательный |
|
|
13
|
+
|
|
14
|
+
## Главное, что нужно знать
|
|
15
|
+
|
|
16
|
+
**Сортируемость объявляет таблица, а не заголовок.** Колонка получает кнопку только когда
|
|
17
|
+
помечена `sortable` в `[columnsConfig]`; иначе заголовок остаётся обычной подписью, и лишнего
|
|
18
|
+
элемента управления в шапке не появляется.
|
|
19
|
+
|
|
20
|
+
**Направление читается с самой ячейки.** `aria-sort` стоит на `<th>`, а не на кнопке внутри:
|
|
21
|
+
скринридер объявляет порядок вместе с колонкой. Глазами то же самое показывает стрелка — обе
|
|
22
|
+
стрелки без сортировки, одна выбранная при ней.
|
|
23
|
+
|
|
24
|
+
**Порядок ходит по кругу из трёх состояний:** по возрастанию → по убыванию → без сортировки.
|
|
25
|
+
Третье нужно, чтобы вернуть исходный порядок, не перезагружая список.
|
|
26
|
+
|
|
27
|
+
**Подпись проецируется внутрь кнопки** и служит её доступным именем — отдельного `aria-label`
|
|
28
|
+
у кнопки нет и не должно быть.
|
|
29
|
+
|
|
30
|
+
## Края
|
|
31
|
+
|
|
32
|
+
- Блок BEM объявлен в шаблоне, а не только классом на хосте: `rtElem` внутри требует блока в
|
|
33
|
+
своём инжекторе, и без него компонент не поднимался вовсе — потребитель получал `NG0201`.
|
|
34
|
+
- Сортировка по соседней колонке эту не помечает: `aria-sort` у неё остаётся `none`, а стрелка
|
|
35
|
+
возвращается к нейтральной.
|
|
36
|
+
|
|
37
|
+
## Рядом
|
|
38
|
+
|
|
39
|
+
- [`rt-table`](../CONTEXT.md) — таблица, у которой заголовок спрашивает порядок и которой
|
|
40
|
+
сообщает о нажатии.
|
|
@@ -1,39 +1,41 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
@layer rt-kit.components {
|
|
2
|
+
/* rt-table-sort-header — заголовок сортируемой колонки внутри rt-table.
|
|
3
|
+
ViewEncapsulation.None: классы доступны без scope-attrs, токены --rt-* наследуются. */
|
|
3
4
|
|
|
4
|
-
.rt-table-sort-header {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
5
|
+
.rt-table-sort-header {
|
|
6
|
+
&__button {
|
|
7
|
+
display: inline-flex;
|
|
8
|
+
align-items: center;
|
|
9
|
+
padding: 0;
|
|
10
|
+
border: none;
|
|
11
|
+
background: none;
|
|
12
|
+
color: inherit;
|
|
13
|
+
cursor: pointer;
|
|
14
|
+
font: inherit;
|
|
15
|
+
gap: var(--rt-space-xs);
|
|
16
|
+
text-align: inherit;
|
|
16
17
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
&:hover {
|
|
19
|
+
color: var(--rt-color-text-primary);
|
|
20
|
+
}
|
|
20
21
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
&:focus-visible {
|
|
23
|
+
outline: 2px solid var(--rt-color-action-primary);
|
|
24
|
+
outline-offset: 2px;
|
|
25
|
+
}
|
|
24
26
|
}
|
|
25
|
-
}
|
|
26
27
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
&__icon {
|
|
29
|
+
flex: 0 0 auto;
|
|
30
|
+
color: var(--rt-color-text-muted);
|
|
31
|
+
}
|
|
31
32
|
|
|
32
|
-
|
|
33
|
-
|
|
33
|
+
&__button--active {
|
|
34
|
+
color: var(--rt-color-text-primary);
|
|
34
35
|
|
|
35
|
-
|
|
36
|
-
|
|
36
|
+
.rt-table-sort-header__icon {
|
|
37
|
+
color: var(--rt-color-action-primary);
|
|
38
|
+
}
|
|
37
39
|
}
|
|
38
40
|
}
|
|
39
41
|
}
|
|
@@ -41,6 +41,11 @@
|
|
|
41
41
|
**Идентификатор, которого нет, откатывается на первую доступную вкладку.** То же с отключённой:
|
|
42
42
|
активной она стать не может. Так вкладка из старой ссылки не оставляет пустой экран.
|
|
43
43
|
|
|
44
|
+
**Контрол шапки объявляется `[rtTabsControl]` на `<ng-template>`.** Сторона задаётся значением
|
|
45
|
+
директивы: `rtTabsControl="left"` слева, `[rtTabsControl]="side"` — вычисленной стороной. Без
|
|
46
|
+
значения контрол встаёт справа — пустая строка приводится к правой стороне намеренно, иначе
|
|
47
|
+
`<ng-template rtTabsControl>` не попадал бы ни в один слот и пропадал из шапки вовсе.
|
|
48
|
+
|
|
44
49
|
## Клавиатура и доступность
|
|
45
50
|
|
|
46
51
|
- Стрелки (влево/вправо, а в вертикальной раскладке вверх/вниз) перешагивают отключённые вкладки
|