@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.
- package/README.md +4 -3
- package/fesm2022/rt-tools-ui-kit-v2-ai-run-status.mjs +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-ai-run-status.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-autocomplete.mjs +92 -5
- package/fesm2022/rt-tools-ui-kit-v2-autocomplete.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-badge.mjs +191 -0
- package/fesm2022/rt-tools-ui-kit-v2-badge.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-breadcrumbs.mjs +3 -2
- package/fesm2022/rt-tools-ui-kit-v2-breadcrumbs.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-button.mjs +6 -1
- package/fesm2022/rt-tools-ui-kit-v2-button.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-checkbox.mjs +35 -4
- package/fesm2022/rt-tools-ui-kit-v2-checkbox.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-color-palette.mjs +13 -4
- package/fesm2022/rt-tools-ui-kit-v2-color-palette.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-container.mjs +245 -60
- package/fesm2022/rt-tools-ui-kit-v2-container.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-copy-value.mjs +30 -5
- package/fesm2022/rt-tools-ui-kit-v2-copy-value.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-core.mjs +113 -2
- package/fesm2022/rt-tools-ui-kit-v2-core.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-data-list.mjs +14 -3
- package/fesm2022/rt-tools-ui-kit-v2-data-list.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs +17 -3
- package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs +6 -3
- package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs +2 -2
- package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-divider.mjs +112 -0
- package/fesm2022/rt-tools-ui-kit-v2-divider.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-draggable-tree.mjs +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-draggable-tree.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-drawer.mjs +854 -0
- package/fesm2022/rt-tools-ui-kit-v2-drawer.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-dynamic-list.mjs +16 -5
- package/fesm2022/rt-tools-ui-kit-v2-dynamic-list.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs +580 -65
- package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-expansion-panel.mjs +203 -15
- package/fesm2022/rt-tools-ui-kit-v2-expansion-panel.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-field.mjs +40 -8
- package/fesm2022/rt-tools-ui-kit-v2-field.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-file-card.mjs +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-file-card.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-filter-control.mjs +7 -3
- package/fesm2022/rt-tools-ui-kit-v2-filter-control.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-form-control.mjs +53 -2
- package/fesm2022/rt-tools-ui-kit-v2-form-control.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree-selector.mjs +14 -4
- package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree-selector.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree.mjs +6 -3
- package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-icon-button.mjs +16 -5
- package/fesm2022/rt-tools-ui-kit-v2-icon-button.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-image-upload.mjs +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-image-upload.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-inline-edit.mjs +14 -4
- package/fesm2022/rt-tools-ui-kit-v2-inline-edit.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs +3 -2
- package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-input.mjs +207 -7
- package/fesm2022/rt-tools-ui-kit-v2-input.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-menu.mjs +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-menu.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-multiselect.mjs +3 -2
- package/fesm2022/rt-tools-ui-kit-v2-multiselect.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs +2 -0
- package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-pagination.mjs +3 -2
- package/fesm2022/rt-tools-ui-kit-v2-pagination.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-profile-menu.mjs +3 -2
- package/fesm2022/rt-tools-ui-kit-v2-profile-menu.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-progress-bar.mjs +171 -0
- package/fesm2022/rt-tools-ui-kit-v2-progress-bar.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-radio-button.mjs +176 -6
- package/fesm2022/rt-tools-ui-kit-v2-radio-button.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs +2 -1
- package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-scroll-area.mjs +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-scroll-area.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-select.mjs +142 -23
- package/fesm2022/rt-tools-ui-kit-v2-select.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-side-menu.mjs +22 -9
- package/fesm2022/rt-tools-ui-kit-v2-side-menu.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-speed-menu.mjs +3 -2
- package/fesm2022/rt-tools-ui-kit-v2-speed-menu.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs +105 -8
- package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-table.mjs +13 -2
- package/fesm2022/rt-tools-ui-kit-v2-table.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs +654 -43
- package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-tag.mjs +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-tag.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-textarea.mjs +45 -7
- package/fesm2022/rt-tools-ui-kit-v2-textarea.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-theme-toggle.mjs +2 -2
- package/fesm2022/rt-tools-ui-kit-v2-theme-toggle.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs +11 -2
- package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-toast.mjs +152 -11
- package/fesm2022/rt-tools-ui-kit-v2-toast.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-toggle-button-group.mjs +199 -17
- package/fesm2022/rt-tools-ui-kit-v2-toggle-button-group.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-tooltip.mjs +35 -5
- package/fesm2022/rt-tools-ui-kit-v2-tooltip.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-tree-selector.mjs +14 -4
- package/fesm2022/rt-tools-ui-kit-v2-tree-selector.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-tree.mjs +6 -3
- package/fesm2022/rt-tools-ui-kit-v2-tree.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs +21 -6
- package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2.mjs +4 -0
- package/package.json +17 -1
- package/src/assets/icons/volume-off.svg +2 -1
- package/src/lib/components/autocomplete/CONTEXT.md +25 -14
- package/src/lib/components/autocomplete/rt-autocomplete.component.scss +19 -0
- package/src/lib/components/badge/CONTEXT.md +33 -0
- package/src/lib/components/badge/rt-badge.directive.scss +104 -0
- package/src/lib/components/breadcrumbs/rt-breadcrumbs.component.scss +2 -2
- package/src/lib/components/button/CONTEXT.md +5 -0
- package/src/lib/components/button/rt-button.directive.scss +3 -1
- package/src/lib/components/checkbox/CONTEXT.md +15 -8
- package/src/lib/components/color-palette/rt-color-palette.component.scss +2 -2
- package/src/lib/components/container/CONTEXT.md +23 -6
- package/src/lib/components/container/rt-container.component.scss +90 -1
- package/src/lib/components/copy-value/CONTEXT.md +6 -5
- package/src/lib/components/copy-value/rt-copy-value.component.scss +16 -0
- package/src/lib/components/date-picker/rt-date-picker.component.scss +7 -0
- package/src/lib/components/date-range/rt-date-range.component.scss +7 -0
- package/src/lib/components/divider/CONTEXT.md +21 -0
- package/src/lib/components/divider/rt-divider.component.scss +34 -0
- package/src/lib/components/drawer/CONTEXT.md +73 -0
- package/src/lib/components/drawer/rt-drawer-container.component.scss +19 -0
- package/src/lib/components/drawer/rt-drawer.component.scss +168 -0
- package/src/lib/components/drawer/rt-resize-handle.component.scss +42 -0
- package/src/lib/components/dynamic-selector/CONTEXT.md +5 -0
- package/src/lib/components/expansion-panel/CONTEXT.md +32 -8
- package/src/lib/components/expansion-panel/rt-expansion-panel.component.scss +67 -2
- package/src/lib/components/field/CONTEXT.md +43 -0
- package/src/lib/components/field/rt-field-label-inside.scss +179 -0
- package/src/lib/components/field/rt-field.component.scss +51 -2
- package/src/lib/components/icon-button/CONTEXT.md +17 -15
- package/src/lib/components/icon-button/rt-icon-button.component.scss +3 -1
- package/src/lib/components/inline-edit/rt-inline-edit.component.scss +4 -4
- package/src/lib/components/input/CONTEXT.md +45 -11
- package/src/lib/components/input/rt-input-floating-label.scss +192 -0
- package/src/lib/components/input/rt-input-icons.scss +105 -0
- package/src/lib/components/input/rt-input.component.scss +91 -13
- package/src/lib/components/input-number/CONTEXT.md +7 -0
- package/src/lib/components/input-number/rt-input-number.component.scss +58 -1
- package/src/lib/components/menu/CONTEXT.md +1 -0
- package/src/lib/components/multiselect/CONTEXT.md +2 -1
- package/src/lib/components/multiselect/rt-multiselect.component.scss +7 -0
- package/src/lib/components/pagination/CONTEXT.md +3 -0
- package/src/lib/components/pagination/rt-pagination.component.scss +7 -0
- package/src/lib/components/progress-bar/CONTEXT.md +22 -0
- package/src/lib/components/progress-bar/rt-progress-bar.component.scss +77 -0
- package/src/lib/components/radio-button/CONTEXT.md +9 -0
- package/src/lib/components/radio-button/rt-radio-group.component.scss +13 -0
- package/src/lib/components/select/CONTEXT.md +28 -0
- package/src/lib/components/select/rt-select-clear.scss +88 -0
- package/src/lib/components/select/rt-select-floating-label.scss +155 -0
- package/src/lib/components/select/rt-select-material.scss +54 -0
- package/src/lib/components/select/rt-select.component.scss +54 -16
- package/src/lib/components/side-menu/CONTEXT.md +5 -0
- package/src/lib/components/speed-menu/rt-speed-menu.component.scss +5 -5
- package/src/lib/components/stepper/CONTEXT.md +13 -5
- package/src/lib/components/stepper/rt-stepper.component.scss +93 -0
- package/src/lib/components/tabs/CONTEXT.md +61 -9
- package/src/lib/components/tabs/rt-tabs.component.scss +201 -5
- package/src/lib/components/textarea/CONTEXT.md +12 -1
- package/src/lib/components/textarea/rt-textarea.component.scss +116 -1
- package/src/lib/components/toast/CONTEXT.md +23 -0
- package/src/lib/components/toast/rt-toast.component.scss +37 -0
- package/src/lib/components/toggle-button-group/CONTEXT.md +24 -4
- package/src/lib/components/toggle-button-group/rt-toggle-button-group-chips.scss +151 -0
- package/src/lib/components/toggle-button-group/rt-toggle-button-group.component.scss +35 -0
- package/src/lib/components/tooltip/CONTEXT.md +7 -1
- package/src/lib/components/tree/rt-tree.component.scss +2 -2
- package/src/styles/_color-scheme.scss +1 -1
- package/src/styles/_density.scss +48 -0
- package/src/styles/_index.scss +8 -0
- package/src/styles/_preset-material.scss +160 -70
- package/src/styles/_primitives.scss +1 -0
- package/src/styles/_semantic-navigation.scss +117 -0
- package/src/styles/_semantic.scss +29 -98
- package/src/styles/_theme-dark.scss +8 -0
- package/styles/tokens.css +2066 -1134
- package/types/rt-tools-ui-kit-v2-autocomplete.d.ts +34 -0
- package/types/rt-tools-ui-kit-v2-badge.d.ts +71 -0
- package/types/rt-tools-ui-kit-v2-checkbox.d.ts +17 -3
- package/types/rt-tools-ui-kit-v2-container.d.ts +65 -9
- package/types/rt-tools-ui-kit-v2-copy-value.d.ts +11 -1
- package/types/rt-tools-ui-kit-v2-core.d.ts +109 -4
- package/types/rt-tools-ui-kit-v2-divider.d.ts +29 -0
- package/types/rt-tools-ui-kit-v2-drawer.d.ts +257 -0
- package/types/rt-tools-ui-kit-v2-dynamic-selector.d.ts +240 -25
- package/types/rt-tools-ui-kit-v2-expansion-panel.d.ts +87 -3
- package/types/rt-tools-ui-kit-v2-field.d.ts +18 -1
- package/types/rt-tools-ui-kit-v2-form-control.d.ts +42 -4
- package/types/rt-tools-ui-kit-v2-icon-button.d.ts +2 -1
- package/types/rt-tools-ui-kit-v2-input-number.d.ts +1 -0
- package/types/rt-tools-ui-kit-v2-input.d.ts +98 -4
- package/types/rt-tools-ui-kit-v2-progress-bar.d.ts +53 -0
- package/types/rt-tools-ui-kit-v2-radio-button.d.ts +80 -1
- package/types/rt-tools-ui-kit-v2-select.d.ts +65 -1
- package/types/rt-tools-ui-kit-v2-side-menu.d.ts +3 -0
- package/types/rt-tools-ui-kit-v2-stepper.d.ts +57 -4
- package/types/rt-tools-ui-kit-v2-tabs.d.ts +337 -8
- package/types/rt-tools-ui-kit-v2-textarea.d.ts +16 -0
- package/types/rt-tools-ui-kit-v2-toast.d.ts +38 -2
- package/types/rt-tools-ui-kit-v2-toggle-button-group.d.ts +83 -3
- package/types/rt-tools-ui-kit-v2-tooltip.d.ts +17 -2
- package/types/rt-tools-ui-kit-v2.d.ts +4 -0
- package/src/lib/components/dynamic-selector/stories/component/test-dynamic-selector-popup-frame.component.scss +0 -6
|
@@ -2,6 +2,7 @@ import { BooleanInput } from "@angular/cdk/coercion";
|
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import { ElementRef, InputSignal, InputSignalWithTransform, OutputEmitterRef, Signal, TemplateRef, WritableSignal } from "@angular/core";
|
|
4
4
|
import { IRtIcon } from "@rt-tools/ui-kit-v2/core";
|
|
5
|
+
import { IRtTooltip } from "@rt-tools/ui-kit-v2/tooltip";
|
|
5
6
|
/**
|
|
6
7
|
* Модель `<rt-tabs>`: один корневой неймспейс с префиксом `I`.
|
|
7
8
|
* Содержит публичные union-типы для ориентации и стороны header-контролов.
|
|
@@ -11,6 +12,28 @@ export declare namespace IRtTabs {
|
|
|
11
12
|
type Id = string | number;
|
|
12
13
|
/** Ориентация полосы вкладок. */
|
|
13
14
|
type Direction = 'horizontal' | 'vertical';
|
|
15
|
+
/**
|
|
16
|
+
* Что делают стрелки и Home/End на вкладке: `auto` — сразу открывают вкладку, `manual` — только
|
|
17
|
+
* переводят фокус, а открывают Enter и Space.
|
|
18
|
+
*/
|
|
19
|
+
type Activation = 'auto' | 'manual';
|
|
20
|
+
/**
|
|
21
|
+
* Где стоят стрелки прокрутки переполненной полосы: `overlay` — поверх вкладок, только в ту
|
|
22
|
+
* сторону, куда можно прокрутить; `inline` — обе в своих местах по краям, полоса между ними уже,
|
|
23
|
+
* стрелка в сторону, куда прокручивать некуда, неактивна.
|
|
24
|
+
*/
|
|
25
|
+
type ScrollArrows = 'overlay' | 'inline';
|
|
26
|
+
/**
|
|
27
|
+
* На сколько сдвигает полосу одно нажатие на стрелку: `fixed` — на 80 px, как прежде; `page` —
|
|
28
|
+
* на видимую ширину, `third` — на её треть, как у Material.
|
|
29
|
+
*/
|
|
30
|
+
type ScrollStep = 'fixed' | 'page' | 'third';
|
|
31
|
+
/**
|
|
32
|
+
* Длительность движения при смене вкладки: переезда полосы и сдвига панели. Число — миллисекунды,
|
|
33
|
+
* строка — значение CSS (`'500ms'`, `'0.5s'`); строка из одних цифр читается как миллисекунды.
|
|
34
|
+
* `null` — длительности берутся из токенов `--rt-tabs-indicator-duration` и `--rt-tabs-panel-duration`.
|
|
35
|
+
*/
|
|
36
|
+
type AnimationDuration = string | number | null;
|
|
14
37
|
/** Сторона размещения header-контрола относительно полосы вкладок. */
|
|
15
38
|
type ControlSide = 'left' | 'right';
|
|
16
39
|
/** Семантический цвет иконки/бейджа вкладки — маппится на палитру `rt-icon`. */
|
|
@@ -36,6 +59,11 @@ export declare class RtTabDirective {
|
|
|
36
59
|
readonly titleTemplate: InputSignal<TemplateRef<unknown> | null>;
|
|
37
60
|
/** Иконка слева от заголовка. */
|
|
38
61
|
readonly icon: InputSignal<IRtIcon.Name | null>;
|
|
62
|
+
/**
|
|
63
|
+
* Имя значка Material вместо `icon` — рисуется так же, как вход `glyph` у `rt-icon`.
|
|
64
|
+
* Задан вместе с `icon` — решает `rt-icon`.
|
|
65
|
+
*/
|
|
66
|
+
readonly glyph: InputSignal<string | null>;
|
|
39
67
|
/** Семантический цвет иконки заголовка. */
|
|
40
68
|
readonly iconColor: InputSignal<IRtTabs.TitleColor>;
|
|
41
69
|
/** Значение бейджа справа от заголовка (число/строка). `null` — без бейджа. */
|
|
@@ -58,8 +86,42 @@ export declare class RtTabDirective {
|
|
|
58
86
|
readonly invalid: InputSignalWithTransform<boolean, BooleanInput>;
|
|
59
87
|
/** Подсказка для невалидной вкладки. Пусто — берётся переведённое умолчание. */
|
|
60
88
|
readonly invalidMessage: InputSignal<string>;
|
|
89
|
+
/**
|
|
90
|
+
* Подсказка при наведении на вкладку — в том числе на отключённую, чтобы объяснить, почему она
|
|
91
|
+
* недоступна. У вкладки без подписи она же становится её именем для чтения с экрана.
|
|
92
|
+
*/
|
|
93
|
+
readonly tooltip: InputSignal<string>;
|
|
94
|
+
/** Вкладку можно закрыть: крестик в шапке и клавиша Delete поднимают `tabClose` у `rt-tabs`. */
|
|
95
|
+
readonly closable: InputSignalWithTransform<boolean, BooleanInput>;
|
|
96
|
+
/** Подсказка крестика закрываемой вкладки. Пусто — подсказки нет. */
|
|
97
|
+
readonly closeTooltip: InputSignal<string>;
|
|
98
|
+
/** Сторона подсказки крестика. Не задана — сторона подсказки по умолчанию. */
|
|
99
|
+
readonly closeTooltipPlacement: InputSignal<IRtTooltip.Placement | null>;
|
|
100
|
+
/**
|
|
101
|
+
* Указатель стоит на крестике. Выставляет `rt-tabs`: пока он там, подсказка самой вкладки
|
|
102
|
+
* молчит, и видна только подсказка крестика.
|
|
103
|
+
*/
|
|
104
|
+
readonly closeHovered: WritableSignal<boolean>;
|
|
61
105
|
/** Готовый текст подсказки: своя формулировка важнее умолчания. */
|
|
62
106
|
readonly invalidTitle: Signal<string>;
|
|
107
|
+
/**
|
|
108
|
+
* Подсказка кнопки вкладки: у неверной — объяснение ошибки, иначе своя подсказка. Пока
|
|
109
|
+
* указатель на крестике, пусто: две подсказки разом читались бы как одна. Крестик, убранный
|
|
110
|
+
* из-под указателя, ухода не сообщает, поэтому признак читается вместе с `showClose`.
|
|
111
|
+
*/
|
|
112
|
+
readonly buttonTooltip: Signal<string>;
|
|
113
|
+
/**
|
|
114
|
+
* Имя вкладки для чтения с экрана, когда видимой подписи нет: вкладка из одного значка
|
|
115
|
+
* называется своей подсказкой. С подписью или своим заголовком атрибут не ставится.
|
|
116
|
+
*/
|
|
117
|
+
readonly ariaLabel: Signal<string | null>;
|
|
118
|
+
/**
|
|
119
|
+
* Имя крестика для чтения с экрана: текст его подсказки, без подсказки — переведённое «Закрыть».
|
|
120
|
+
* Крестик — отдельная кнопка, и без имени диктор назвал бы её просто «кнопка».
|
|
121
|
+
*/
|
|
122
|
+
readonly closeLabel: Signal<string>;
|
|
123
|
+
/** Крестик рисуется только у доступной вкладки: отключённую закрыть нельзя. */
|
|
124
|
+
readonly showClose: Signal<boolean>;
|
|
63
125
|
static ɵfac: i0.ɵɵFactoryDeclaration<RtTabDirective, never>;
|
|
64
126
|
static ɵdir: i0.ɵɵDirectiveDeclaration<RtTabDirective, "[rtTab]", never, {
|
|
65
127
|
"id": {
|
|
@@ -82,6 +144,11 @@ export declare class RtTabDirective {
|
|
|
82
144
|
"required": false;
|
|
83
145
|
"isSignal": true;
|
|
84
146
|
};
|
|
147
|
+
"glyph": {
|
|
148
|
+
"alias": "glyph";
|
|
149
|
+
"required": false;
|
|
150
|
+
"isSignal": true;
|
|
151
|
+
};
|
|
85
152
|
"iconColor": {
|
|
86
153
|
"alias": "iconColor";
|
|
87
154
|
"required": false;
|
|
@@ -122,8 +189,77 @@ export declare class RtTabDirective {
|
|
|
122
189
|
"required": false;
|
|
123
190
|
"isSignal": true;
|
|
124
191
|
};
|
|
192
|
+
"tooltip": {
|
|
193
|
+
"alias": "tooltip";
|
|
194
|
+
"required": false;
|
|
195
|
+
"isSignal": true;
|
|
196
|
+
};
|
|
197
|
+
"closable": {
|
|
198
|
+
"alias": "closable";
|
|
199
|
+
"required": false;
|
|
200
|
+
"isSignal": true;
|
|
201
|
+
};
|
|
202
|
+
"closeTooltip": {
|
|
203
|
+
"alias": "closeTooltip";
|
|
204
|
+
"required": false;
|
|
205
|
+
"isSignal": true;
|
|
206
|
+
};
|
|
207
|
+
"closeTooltipPlacement": {
|
|
208
|
+
"alias": "closeTooltipPlacement";
|
|
209
|
+
"required": false;
|
|
210
|
+
"isSignal": true;
|
|
211
|
+
};
|
|
125
212
|
}, {}, never, never, true, never>;
|
|
126
213
|
}
|
|
214
|
+
/**
|
|
215
|
+
* Кривая CSS как функция доли времени в долю пути: `linear`, `ease`, `ease-in`, `ease-out`,
|
|
216
|
+
* `ease-in-out` и `cubic-bezier(…)`. Непонятное значение читается как `ease-out`.
|
|
217
|
+
*/
|
|
218
|
+
declare function rtTabsEasing(value: string): (progress: number) => number;
|
|
219
|
+
/** Куда прокрутить полосу нажатием на стрелку: на шаг `step` от `from`, не дальше края. */
|
|
220
|
+
declare function rtTabsPageTarget(list: HTMLElement, from: number, back: boolean, step: IRtTabs.ScrollStep): number;
|
|
221
|
+
/**
|
|
222
|
+
* Куда прокрутить полосу, чтобы вкладка встала целиком; `null` — она уже видна целиком. `inset` —
|
|
223
|
+
* ширина стрелки поверх края полосы: вкладка не у конца полосы отступает от края на неё, иначе
|
|
224
|
+
* встала бы под стрелку.
|
|
225
|
+
*/
|
|
226
|
+
declare function rtTabsIntoViewTarget(list: HTMLElement, tab: HTMLElement, inset?: number): number | null;
|
|
227
|
+
/**
|
|
228
|
+
* Плавная прокрутка полосы вкладок. Двигается сама прокрутка, а не сдвиг содержимого: колесо,
|
|
229
|
+
* касание и полоса прокрутки остаются у браузера. Длительность и кривая — свойства хоста
|
|
230
|
+
* `--rt-tabs-scroll-duration` и `--rt-tabs-scroll-easing`; ноль или `prefers-reduced-motion` —
|
|
231
|
+
* прокрутка сразу.
|
|
232
|
+
*/
|
|
233
|
+
declare class RtTabsScroller {
|
|
234
|
+
#private;
|
|
235
|
+
constructor(win: Window | null, host: HTMLElement, list: () => ElementRef<HTMLElement> | undefined);
|
|
236
|
+
/** Положение, от которого считать следующий шаг: цель идущей прокрутки или текущее. */
|
|
237
|
+
from(): number;
|
|
238
|
+
/** Прокручивает полосу к `left`; новая прокрутка заменяет идущую. */
|
|
239
|
+
to(left: number): void;
|
|
240
|
+
/**
|
|
241
|
+
* Тик прокрутки удержанием стрелки: сдвиг на несколько точек без плавности, остановив идущую.
|
|
242
|
+
* Отвечает, осталось ли куда ехать.
|
|
243
|
+
*/
|
|
244
|
+
nudge(back: boolean): boolean;
|
|
245
|
+
/** Останавливает идущую прокрутку там, где она есть. */
|
|
246
|
+
stop(): void;
|
|
247
|
+
}
|
|
248
|
+
type TRtTabsScrollDirection = 'before' | 'after';
|
|
249
|
+
/**
|
|
250
|
+
* Нажатие на стрелку прокрутки полосы. Отпущенная до `HOLD_DELAY_MS` стрелка сдвигает полосу на
|
|
251
|
+
* шаг `scrollStep`, удержанная дольше — прокручивает её непрерывно, пока не отпустят.
|
|
252
|
+
*/
|
|
253
|
+
declare class RtTabsArrowPress {
|
|
254
|
+
#private;
|
|
255
|
+
constructor(win: Window | null, scroller: RtTabsScroller, list: () => HTMLElement | undefined, step: () => IRtTabs.ScrollStep, moved: () => void);
|
|
256
|
+
/** Стрелку нажали: через `HOLD_DELAY_MS` нажатие становится удержанием. */
|
|
257
|
+
down(direction: TRtTabsScrollDirection): void;
|
|
258
|
+
/** Стрелку отпустили: короткое нажатие — шаг `scrollStep`, после удержания — только стоп. */
|
|
259
|
+
up(): void;
|
|
260
|
+
/** Снимает ожидание и интервал: указатель ушёл со стрелки или компонент разрушен с зажатой. */
|
|
261
|
+
stop(): void;
|
|
262
|
+
}
|
|
127
263
|
/**
|
|
128
264
|
* Декларирует header-контрол `<rt-tabs>` — произвольный шаблон (кнопка, фильтр),
|
|
129
265
|
* который рендерится слева или справа от полосы вкладок. Ставится на
|
|
@@ -150,7 +286,110 @@ export declare class RtTabsControlDirective {
|
|
|
150
286
|
};
|
|
151
287
|
}, {}, never, never, true, never>;
|
|
152
288
|
}
|
|
153
|
-
|
|
289
|
+
/** Признак, по которому пользователь просит обходиться без движения. */
|
|
290
|
+
declare const RT_TABS_REDUCED_MOTION: string;
|
|
291
|
+
/** Куда сдвигается содержимое: к вкладке правее (`forward`) или левее (`backward`). */
|
|
292
|
+
type TRtTabsPanelShift = 'forward' | 'backward';
|
|
293
|
+
/** Панель прежней вкладки, пока её уход не кончился, и место, с которого она уходит (px от хоста). */
|
|
294
|
+
interface IRtTabsLeavingPanel {
|
|
295
|
+
readonly id: IRtTabs.Id;
|
|
296
|
+
readonly shift: TRtTabsPanelShift;
|
|
297
|
+
readonly top: number;
|
|
298
|
+
readonly left: number;
|
|
299
|
+
}
|
|
300
|
+
/** Смена выбора: с какой вкладки, на какую и длительность из входа (`null` — из токена). */
|
|
301
|
+
interface IRtTabsMove {
|
|
302
|
+
readonly previous: IRtTabs.Id | null;
|
|
303
|
+
readonly next: IRtTabs.Id | null;
|
|
304
|
+
readonly duration: string | null;
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Панель в области содержимого: активная, уходящая (`leaving`) или сохранённая скрытой (`idle`) —
|
|
308
|
+
* тело посещённой вкладки при `preserveContent`.
|
|
309
|
+
*/
|
|
310
|
+
interface IRtTabsPanel {
|
|
311
|
+
readonly tab: RtTabDirective;
|
|
312
|
+
readonly leaving: IRtTabsLeavingPanel | null;
|
|
313
|
+
readonly idle: boolean;
|
|
314
|
+
}
|
|
315
|
+
/** Что показывает область содержимого: активная вкладка, длительность и сохранение посещённых. */
|
|
316
|
+
interface IRtTabsShown {
|
|
317
|
+
readonly active: Signal<RtTabDirective | null>;
|
|
318
|
+
readonly duration: () => IRtTabs.AnimationDuration;
|
|
319
|
+
readonly preserve: () => boolean;
|
|
320
|
+
}
|
|
321
|
+
/** Вкладки компонента: все объявленные, видимые и выбранная. */
|
|
322
|
+
interface IRtTabsSet {
|
|
323
|
+
readonly all: Signal<readonly RtTabDirective[]>;
|
|
324
|
+
readonly visible: Signal<readonly RtTabDirective[]>;
|
|
325
|
+
readonly selectedId: Signal<IRtTabs.Id | null>;
|
|
326
|
+
}
|
|
327
|
+
/** Место полосы выбранной вкладки внутри полосы вкладок: левый край, низ вкладки и ширина (px). */
|
|
328
|
+
interface IInkBox {
|
|
329
|
+
readonly x: number;
|
|
330
|
+
readonly bottom: number;
|
|
331
|
+
readonly width: number;
|
|
332
|
+
}
|
|
333
|
+
/** Длительность из входа в значение CSS: число и строка из одних цифр — миллисекунды. */
|
|
334
|
+
declare function rtTabsCssDuration(value: IRtTabs.AnimationDuration): string | null;
|
|
335
|
+
/** Длительность CSS в миллисекундах; то, что не читается как время, — ноль. */
|
|
336
|
+
declare function rtTabsDurationMs(value: string): number;
|
|
337
|
+
/**
|
|
338
|
+
* Уходящая панель при смене выбора. Место берётся у панели прежней вкладки, пока она ещё в потоке:
|
|
339
|
+
* уходя, она встаёт поверх области содержимого в ту же точку. Без движения — нулевая длительность
|
|
340
|
+
* или `prefers-reduced-motion` — уходящей панели нет.
|
|
341
|
+
*/
|
|
342
|
+
declare function rtTabsLeavingPanel(host: HTMLElement, win: Window | null, ids: readonly IRtTabs.Id[], move: IRtTabsMove): IRtTabsLeavingPanel | null;
|
|
343
|
+
/**
|
|
344
|
+
* Панели при сохранении посещённых: тело вкладки появляется при первом открытии и дальше живёт
|
|
345
|
+
* скрытым. Порядок — порядок вкладок, чтобы вид панели не переставлялся в разметке при смене.
|
|
346
|
+
*/
|
|
347
|
+
declare function rtTabsPreservedPanels(all: readonly RtTabDirective[], visited: ReadonlySet<IRtTabs.Id>, active: RtTabDirective, leaving: IRtTabsLeavingPanel | null): IRtTabsPanel[];
|
|
348
|
+
/**
|
|
349
|
+
* Смена панелей: уходящая панель прежней вкладки и въезжающая новая. Уходящая считается от смены
|
|
350
|
+
* выбора и гасится концом её движения. Создаётся в контексте внедрения компонента.
|
|
351
|
+
*/
|
|
352
|
+
declare class RtTabsPanels {
|
|
353
|
+
#private;
|
|
354
|
+
/** Панель прежней вкладки, пока она уходит; без движения её нет вовсе. */
|
|
355
|
+
readonly leaving: WritableSignal<IRtTabsLeavingPanel | null>;
|
|
356
|
+
/**
|
|
357
|
+
* Панели области содержимого: активная и, пока она уходит, прежняя. Прежняя стоит первой, и
|
|
358
|
+
* `track` по id сохраняет её вид — уходит та же панель, а не её новая копия. При сохранении
|
|
359
|
+
* посещённых панели стоят в порядке вкладок, и неактивные остаются скрытыми.
|
|
360
|
+
*/
|
|
361
|
+
readonly list: Signal<readonly IRtTabsPanel[]>;
|
|
362
|
+
/** Направление идущей смены панели; `null` — панель стоит на месте. */
|
|
363
|
+
readonly shift: Signal<TRtTabsPanelShift | null>;
|
|
364
|
+
/** Длительность из входа `animationDuration` в виде CSS; `null` — длительности из токенов. */
|
|
365
|
+
readonly duration: Signal<string | null>;
|
|
366
|
+
/** Длительности полосы и панели на хосте из входа; без входа их держат токены. Прокрутку полосы
|
|
367
|
+
* вход не трогает, как у `mat-tab-group`: её длительность — только токен. */
|
|
368
|
+
readonly durations: Signal<Readonly<Record<string, string>> | null>;
|
|
369
|
+
constructor(host: HTMLElement, win: Window | null, tabs: IRtTabsSet, shown: IRtTabsShown);
|
|
370
|
+
/** Конец движения панели убирает уходящую. Движение вложенных узлов сюда не считается. */
|
|
371
|
+
animationEnd(event: AnimationEvent): void;
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Полоса выбранной вкладки — один элемент на всю полосу: замер ставит её под выбранную вкладку, и
|
|
375
|
+
* при смене выбора она переезжает. Слежение за размером полосы и вкладок ловит сдвиг без смены
|
|
376
|
+
* выбора — подпись поменялась или шрифт догрузился.
|
|
377
|
+
*/
|
|
378
|
+
declare class RtTabsInk {
|
|
379
|
+
#private;
|
|
380
|
+
/** Где стоит полоса; `null` — не измерена, и полосу рисует сама вкладка. */
|
|
381
|
+
readonly box: WritableSignal<IInkBox | null>;
|
|
382
|
+
/** Полоса уже стоит на месте и дальше переезжает: первое измерение ставит её без движения. */
|
|
383
|
+
readonly animated: WritableSignal<boolean>;
|
|
384
|
+
/** Сдвиг полосы к левому краю вкладки и к её низу. */
|
|
385
|
+
readonly translate: Signal<string | null>;
|
|
386
|
+
/** Полоса красится как ошибка, когда выбранная вкладка неверна. */
|
|
387
|
+
readonly invalid: Signal<boolean>;
|
|
388
|
+
constructor(win: Window | null, list: Signal<ElementRef<HTMLElement> | undefined>, tabs: {
|
|
389
|
+
readonly visible: Signal<readonly RtTabDirective[]>;
|
|
390
|
+
readonly active: Signal<RtTabDirective | null>;
|
|
391
|
+
});
|
|
392
|
+
}
|
|
154
393
|
/**
|
|
155
394
|
* Полоса вкладок с проекцией контента. Вкладки декларируются через
|
|
156
395
|
* `<ng-template rtTab="id" label="…">…</ng-template>` (см. {@link RtTabDirective}),
|
|
@@ -162,11 +401,18 @@ type TScrollDirection = 'before' | 'after';
|
|
|
162
401
|
* эмиттят `activeIdChange`; синхронизацию `activeId` оставляем потребителю.
|
|
163
402
|
*
|
|
164
403
|
* Горизонтальная полоса при переполнении прячет вкладки под скролл и показывает
|
|
165
|
-
* стрелки-«хвосты» (`__rest`)
|
|
166
|
-
*
|
|
404
|
+
* стрелки-«хвосты» (`__rest`): нажатие сдвигает полосу на шаг `scrollStep`, удержание
|
|
405
|
+
* прокручивает непрерывно. Стрелки стоят поверх вкладок или, при `scrollArrows="inline"`, в своих
|
|
406
|
+
* местах по краям. Вертикальная ориентация раскладывает вкладки в колонку без стрелок.
|
|
407
|
+
*
|
|
408
|
+
* Смена вкладки движется: полоса выбранной вкладки — один элемент полосы, он переезжает на новую
|
|
409
|
+
* вкладку; панель прежней вкладки уходит в сторону, обратную переходу, новая въезжает следом.
|
|
410
|
+
* Длительности — токены `--rt-tabs-indicator-duration` и `--rt-tabs-panel-duration` или вход
|
|
411
|
+
* `animationDuration`; `prefers-reduced-motion` снимает движение целиком.
|
|
167
412
|
*
|
|
168
413
|
* Доступность: `role="tablist"`/`role="tab"`/`role="tabpanel"`, `aria-selected`,
|
|
169
|
-
* roving `tabindex`, навигация стрелками + Home/End
|
|
414
|
+
* roving `tabindex`, навигация стрелками + Home/End; при `activation="manual"` они только
|
|
415
|
+
* переводят фокус, а вкладку открывают Enter и Space.
|
|
170
416
|
*/
|
|
171
417
|
export declare class RtTabsComponent {
|
|
172
418
|
#private;
|
|
@@ -187,10 +433,21 @@ export declare class RtTabsComponent {
|
|
|
187
433
|
protected readonly selectedId: Signal<IRtTabs.Id | null>;
|
|
188
434
|
/** Активная вкладка целиком (для рендера панели). */
|
|
189
435
|
protected readonly activeTab: Signal<RtTabDirective | null>;
|
|
436
|
+
/**
|
|
437
|
+
* Вкладка в таб-порядке: та, на которую стрелками перевели фокус в ручном режиме, иначе
|
|
438
|
+
* активная. Фокус на вкладке, которой больше нет или которая отключилась, не держится.
|
|
439
|
+
*/
|
|
440
|
+
protected readonly focusId: Signal<IRtTabs.Id | null>;
|
|
190
441
|
/** Видны ли стрелки прокрутки слева/справа (только горизонтальная полоса). */
|
|
191
442
|
protected readonly restBeforeVisible: WritableSignal<boolean>;
|
|
192
443
|
protected readonly restAfterVisible: WritableSignal<boolean>;
|
|
444
|
+
/** Полоса шире своего места: в раскладке `inline` по этому признаку встают обе стрелки. */
|
|
445
|
+
protected readonly overflowing: Signal<boolean>;
|
|
193
446
|
protected readonly tabListRef: Signal<ElementRef<HTMLElement> | undefined>;
|
|
447
|
+
/** Смена панелей: прежняя уходит в сторону, обратную переходу, новая въезжает следом. */
|
|
448
|
+
protected readonly panels: RtTabsPanels;
|
|
449
|
+
/** Полоса выбранной вкладки: одна на всю полосу, переезжает при смене выбора. */
|
|
450
|
+
protected readonly ink: RtTabsInk;
|
|
194
451
|
/** Контролируемый активный id. `null` — компонент сам выбирает первую вкладку. */
|
|
195
452
|
readonly activeId: InputSignal<IRtTabs.Id | null>;
|
|
196
453
|
/** Ориентация полосы. */
|
|
@@ -199,15 +456,51 @@ export declare class RtTabsComponent {
|
|
|
199
456
|
readonly stretch: InputSignalWithTransform<boolean, BooleanInput>;
|
|
200
457
|
/** Скроллить область контента при переполнении. */
|
|
201
458
|
readonly contentScrollable: InputSignalWithTransform<boolean, BooleanInput>;
|
|
459
|
+
/**
|
|
460
|
+
* Только полоса, без панели: вкладки служат навигацией, а содержимое живёт в другом месте —
|
|
461
|
+
* например, полоса стоит в середине `rt-toolbar`. Панель `role="tabpanel"` не рисуется, и
|
|
462
|
+
* вкладки не ссылаются на неё.
|
|
463
|
+
*/
|
|
464
|
+
readonly headerOnly: InputSignalWithTransform<boolean, BooleanInput>;
|
|
465
|
+
/**
|
|
466
|
+
* Тело вкладки создаётся при первом открытии и дальше живёт скрытым, как у `mat-tab-group` с
|
|
467
|
+
* `preserveContent`: введённое на вкладке переживает уход с неё. Неоткрытая вкладка не создаётся.
|
|
468
|
+
*/
|
|
469
|
+
readonly preserveContent: InputSignalWithTransform<boolean, BooleanInput>;
|
|
470
|
+
/** Стрелки и Home/End открывают вкладку сразу (`auto`) или только переводят фокус (`manual`). */
|
|
471
|
+
readonly activation: InputSignal<IRtTabs.Activation>;
|
|
472
|
+
/** Стрелки прокрутки поверх вкладок (`overlay`) или в своих местах по краям полосы (`inline`). */
|
|
473
|
+
readonly scrollArrows: InputSignal<IRtTabs.ScrollArrows>;
|
|
474
|
+
/** Шаг нажатия на стрелку: 80 px (`fixed`), видимая ширина полосы (`page`) или её треть (`third`), как у Material. */
|
|
475
|
+
readonly scrollStep: InputSignal<IRtTabs.ScrollStep>;
|
|
476
|
+
/**
|
|
477
|
+
* Длительность движения при смене вкладки — и полосы, и панели, как у `mat-tab-group`: `500`,
|
|
478
|
+
* `'500ms'`, `'0.5s'`; `0` выключает движение. Без входа длительности берутся из токенов.
|
|
479
|
+
*/
|
|
480
|
+
readonly animationDuration: InputSignal<IRtTabs.AnimationDuration>;
|
|
481
|
+
/** Таб-стоп открытой панели, как `contentTabIndex` у `mat-tab-group`: `null` — Tab идёт с полосы прямо в поля панели. */
|
|
482
|
+
readonly contentTabIndex: InputSignal<number | null>;
|
|
202
483
|
/** Эмиттит id вкладки при её выборе (клик/клавиатура). */
|
|
203
484
|
readonly activeIdChange: OutputEmitterRef<IRtTabs.Id>;
|
|
485
|
+
/**
|
|
486
|
+
* Просьба закрыть вкладку с `closable`: крестик или Delete на вкладке в фокусе. Набор вкладок
|
|
487
|
+
* держит потребитель — он и убирает вкладку; закрытая активная откатывается на первую доступную.
|
|
488
|
+
*/
|
|
489
|
+
readonly tabClose: OutputEmitterRef<IRtTabs.Id>;
|
|
204
490
|
constructor();
|
|
205
491
|
protected selectTab(id: IRtTabs.Id): void;
|
|
206
|
-
/**
|
|
207
|
-
protected
|
|
208
|
-
/**
|
|
209
|
-
|
|
492
|
+
/** Крестик: нажатие не выбирает вкладку; фокус с крестика после закрытия уходит на вкладку, не на страницу. */
|
|
493
|
+
protected onCloseClick(event: MouseEvent, tab: RtTabDirective): void;
|
|
494
|
+
/**
|
|
495
|
+
* Навигация по вкладкам с клавиатуры. Шаг считается от вкладки в фокусе: в ручном режиме она
|
|
496
|
+
* не совпадает с активной. Enter и Space ловит сама кнопка — они дают click и выбор.
|
|
497
|
+
*/
|
|
498
|
+
protected onTabKeydown(event: KeyboardEvent, tab: RtTabDirective): void;
|
|
499
|
+
/** Нажатие ЛКМ на стрелку: шаг или прокрутка по удержанию — {@link RtTabsArrowPress}. */
|
|
500
|
+
protected onRestPointerDown(direction: TRtTabsScrollDirection, event: MouseEvent): void;
|
|
210
501
|
protected onRestPointerUp(): void;
|
|
502
|
+
/** Указатель ушёл со стрелки: прокрутка останавливается, шага нет. */
|
|
503
|
+
protected onRestPointerLeave(): void;
|
|
211
504
|
protected onTabListScroll(): void;
|
|
212
505
|
static ɵfac: i0.ɵɵFactoryDeclaration<RtTabsComponent, never>;
|
|
213
506
|
static ɵcmp: i0.ɵɵComponentDeclaration<RtTabsComponent, "rt-tabs", never, {
|
|
@@ -231,8 +524,44 @@ export declare class RtTabsComponent {
|
|
|
231
524
|
"required": false;
|
|
232
525
|
"isSignal": true;
|
|
233
526
|
};
|
|
527
|
+
"headerOnly": {
|
|
528
|
+
"alias": "headerOnly";
|
|
529
|
+
"required": false;
|
|
530
|
+
"isSignal": true;
|
|
531
|
+
};
|
|
532
|
+
"preserveContent": {
|
|
533
|
+
"alias": "preserveContent";
|
|
534
|
+
"required": false;
|
|
535
|
+
"isSignal": true;
|
|
536
|
+
};
|
|
537
|
+
"activation": {
|
|
538
|
+
"alias": "activation";
|
|
539
|
+
"required": false;
|
|
540
|
+
"isSignal": true;
|
|
541
|
+
};
|
|
542
|
+
"scrollArrows": {
|
|
543
|
+
"alias": "scrollArrows";
|
|
544
|
+
"required": false;
|
|
545
|
+
"isSignal": true;
|
|
546
|
+
};
|
|
547
|
+
"scrollStep": {
|
|
548
|
+
"alias": "scrollStep";
|
|
549
|
+
"required": false;
|
|
550
|
+
"isSignal": true;
|
|
551
|
+
};
|
|
552
|
+
"animationDuration": {
|
|
553
|
+
"alias": "animationDuration";
|
|
554
|
+
"required": false;
|
|
555
|
+
"isSignal": true;
|
|
556
|
+
};
|
|
557
|
+
"contentTabIndex": {
|
|
558
|
+
"alias": "contentTabIndex";
|
|
559
|
+
"required": false;
|
|
560
|
+
"isSignal": true;
|
|
561
|
+
};
|
|
234
562
|
}, {
|
|
235
563
|
"activeIdChange": "activeIdChange";
|
|
564
|
+
"tabClose": "tabClose";
|
|
236
565
|
}, ["tabs", "controls"], never, true, never>;
|
|
237
566
|
}
|
|
238
567
|
export {};
|
|
@@ -4,6 +4,8 @@ import { ElementRef, InputSignal, InputSignalWithTransform, Signal } from "@angu
|
|
|
4
4
|
import { RtFormControlBase } from "@rt-tools/ui-kit-v2/form-control";
|
|
5
5
|
import * as i1 from "@rt-tools/ui-kit-v2/radius";
|
|
6
6
|
export type TRtTextareaResize = 'none' | 'vertical';
|
|
7
|
+
/** Вид рамки: `outline` — рамка со всех сторон, `fill` — залитое поле с чертой снизу, как у `rt-input`. */
|
|
8
|
+
export type TRtTextareaAppearance = 'outline' | 'fill';
|
|
7
9
|
/**
|
|
8
10
|
* Шеренный textarea common/ui. CVA через общий `RtFormControlBase` —
|
|
9
11
|
* авто-подсветка invalid. Размерные варианты sm/md/lg через host-класс. Resize
|
|
@@ -18,11 +20,15 @@ export type TRtTextareaResize = 'none' | 'vertical';
|
|
|
18
20
|
export declare class RtTextareaComponent extends RtFormControlBase<string> {
|
|
19
21
|
protected readonly fieldEl: Signal<ElementRef<HTMLTextAreaElement> | undefined>;
|
|
20
22
|
protected readonly hasValue: Signal<boolean>;
|
|
23
|
+
readonly fieldLabelInside: boolean;
|
|
21
24
|
readonly displayText: Signal<string>;
|
|
22
25
|
readonly placeholder: InputSignal<string>;
|
|
23
26
|
readonly readonly: InputSignalWithTransform<boolean, BooleanInput>;
|
|
24
27
|
readonly rows: InputSignalWithTransform<number, NumberInput>;
|
|
25
28
|
readonly resize: InputSignal<TRtTextareaResize>;
|
|
29
|
+
readonly appearance: InputSignal<TRtTextareaAppearance>;
|
|
30
|
+
/** Предел длины значения: атрибут `maxlength` на поле, браузер не даёт набрать больше. `null` — предела нет. */
|
|
31
|
+
readonly maxlength: InputSignalWithTransform<number | null, NumberInput>;
|
|
26
32
|
protected getEmptyValue(): string;
|
|
27
33
|
protected focusAfterClear(): void;
|
|
28
34
|
protected onInput(event: Event): void;
|
|
@@ -49,6 +55,16 @@ export declare class RtTextareaComponent extends RtFormControlBase<string> {
|
|
|
49
55
|
"required": false;
|
|
50
56
|
"isSignal": true;
|
|
51
57
|
};
|
|
58
|
+
"appearance": {
|
|
59
|
+
"alias": "appearance";
|
|
60
|
+
"required": false;
|
|
61
|
+
"isSignal": true;
|
|
62
|
+
};
|
|
63
|
+
"maxlength": {
|
|
64
|
+
"alias": "maxlength";
|
|
65
|
+
"required": false;
|
|
66
|
+
"isSignal": true;
|
|
67
|
+
};
|
|
52
68
|
}, {}, never, never, true, [{
|
|
53
69
|
directive: typeof i1.RtRadiusDirective;
|
|
54
70
|
inputs: {
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { BooleanInput } from "@angular/cdk/coercion";
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
-
import { AfterViewInit, InjectionToken, InputSignal, InputSignalWithTransform, OnDestroy, OutputEmitterRef, Signal, WritableSignal } from "@angular/core";
|
|
4
|
-
import { INotification, IRtIcon, TRtKitLabelMap } from "@rt-tools/ui-kit-v2/core";
|
|
3
|
+
import { AfterViewInit, InjectionToken, Injector, InputSignal, InputSignalWithTransform, OnDestroy, OutputEmitterRef, Signal, Type, WritableSignal } from "@angular/core";
|
|
4
|
+
import { INotification, IRtIcon, NotificationRef, TRtKitLabelMap } from "@rt-tools/ui-kit-v2/core";
|
|
5
5
|
export declare const RT_TOASTER_GAP_PX: number;
|
|
6
6
|
/**
|
|
7
7
|
* Значки severity у тоста. Приложение подменяет карту целиком — например, на имена
|
|
8
8
|
* Material, — а тост со своим `icon` берёт свой значок мимо карты.
|
|
9
9
|
*/
|
|
10
10
|
export declare const RT_TOAST_SEVERITY_ICONS: InjectionToken<Readonly<Record<INotification.Severity, IRtIcon.Name>>>;
|
|
11
|
+
/** Данные своего компонента тоста — то, что приложение передало в `openFromComponent`. */
|
|
12
|
+
export declare const RT_TOAST_DATA: InjectionToken<unknown>;
|
|
11
13
|
export declare namespace IRtToaster {
|
|
12
14
|
type Position = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
|
|
13
15
|
type PositionY = 'top' | 'bottom';
|
|
@@ -29,6 +31,21 @@ export declare namespace IRtToaster {
|
|
|
29
31
|
readonly onDismiss?: (reason: INotification.DismissReason) => void;
|
|
30
32
|
/** Тост вытеснен новым в режиме `replace` и уходит своей анимацией. */
|
|
31
33
|
readonly replaced?: boolean;
|
|
34
|
+
readonly progressValue?: number | null;
|
|
35
|
+
readonly details?: string;
|
|
36
|
+
readonly component?: Type<unknown>;
|
|
37
|
+
readonly data?: unknown;
|
|
38
|
+
/** Голый тост: оболочки нет, свой компонент рисует карточку сам. */
|
|
39
|
+
readonly bare?: boolean;
|
|
40
|
+
/** Ручка тоста: тост сообщает ей, почему ушёл. */
|
|
41
|
+
readonly ref?: NotificationRef;
|
|
42
|
+
/** Приложение закрыло тост ручкой: он уходит своей анимацией, как вытесненный. */
|
|
43
|
+
readonly dismissRequested?: boolean;
|
|
44
|
+
}
|
|
45
|
+
/** Изменение показанного тоста от его ручки. */
|
|
46
|
+
interface Change {
|
|
47
|
+
readonly toastId: number;
|
|
48
|
+
readonly patch: INotification.Update & Pick<Toast, 'dismissRequested'>;
|
|
32
49
|
}
|
|
33
50
|
interface Height {
|
|
34
51
|
readonly toastId: number;
|
|
@@ -42,6 +59,14 @@ export declare class RtToastComponent implements AfterViewInit, OnDestroy {
|
|
|
42
59
|
protected readonly icon: Signal<IRtIcon.Name | null>;
|
|
43
60
|
/** Срок жизни тоста: свой, если задан, иначе тостера; `null` — таймера нет. */
|
|
44
61
|
protected readonly lifetime: Signal<number | null>;
|
|
62
|
+
/** Инжектор своего компонента: данные токеном `RT_TOAST_DATA` и ручка `NotificationRef`. */
|
|
63
|
+
protected readonly componentInjector: Signal<Injector>;
|
|
64
|
+
/** Живая доля задачи: число 0–100 — полоса стоит, `null` и пусто — её нет. */
|
|
65
|
+
protected readonly progressValue: Signal<number | null>;
|
|
66
|
+
/** Подробности раскрыты. */
|
|
67
|
+
protected readonly detailsOpen: WritableSignal<boolean>;
|
|
68
|
+
/** Голый тост: значка, крестика и полосы срока нет, оболочку снимает модификатор. */
|
|
69
|
+
protected readonly bare: Signal<boolean>;
|
|
45
70
|
protected readonly showProgress: Signal<boolean>;
|
|
46
71
|
/** Таймер и полоса срока встают от одного признака, чтобы не разойтись. */
|
|
47
72
|
protected readonly paused: Signal<boolean>;
|
|
@@ -66,6 +91,7 @@ export declare class RtToastComponent implements AfterViewInit, OnDestroy {
|
|
|
66
91
|
protected onAction(): void;
|
|
67
92
|
protected onSecondaryAction(): void;
|
|
68
93
|
protected onClose(): void;
|
|
94
|
+
protected toggleDetails(): void;
|
|
69
95
|
static ɵfac: i0.ɵɵFactoryDeclaration<RtToastComponent, never>;
|
|
70
96
|
static ɵcmp: i0.ɵɵComponentDeclaration<RtToastComponent, "rt-toast", never, {
|
|
71
97
|
"toast": {
|
|
@@ -139,6 +165,11 @@ export declare class RtToasterComponent {
|
|
|
139
165
|
/** `replace` — новый тост уводит прежние их же анимацией ухода, а не копится стопкой. */
|
|
140
166
|
readonly mode: InputSignal<IRtToaster.Mode>;
|
|
141
167
|
readonly expand: InputSignalWithTransform<boolean, boolean | string>;
|
|
168
|
+
/**
|
|
169
|
+
* Канал тостера: он показывает только события с этим `channel`. Второй тостер со своим каналом
|
|
170
|
+
* держит закреплённые тосты в своём углу и своей стопке.
|
|
171
|
+
*/
|
|
172
|
+
readonly channel: InputSignal<string>;
|
|
142
173
|
get hostModifierClasses(): Record<string, boolean>;
|
|
143
174
|
get hostStackStyles(): Record<string, string>;
|
|
144
175
|
constructor();
|
|
@@ -176,5 +207,10 @@ export declare class RtToasterComponent {
|
|
|
176
207
|
"required": false;
|
|
177
208
|
"isSignal": true;
|
|
178
209
|
};
|
|
210
|
+
"channel": {
|
|
211
|
+
"alias": "channel";
|
|
212
|
+
"required": false;
|
|
213
|
+
"isSignal": true;
|
|
214
|
+
};
|
|
179
215
|
}, {}, never, never, true, never>;
|
|
180
216
|
}
|