@rt-tools/ui-kit-v2 0.39.1 → 0.40.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/fesm2022/rt-tools-ui-kit-v2-ai-prompt-input.mjs +13 -1
- package/fesm2022/rt-tools-ui-kit-v2-ai-prompt-input.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-core.mjs +12 -0
- package/fesm2022/rt-tools-ui-kit-v2-core.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs +3 -1
- package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs +60 -7
- package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs +91 -10
- package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-detail-list.mjs +2 -2
- package/fesm2022/rt-tools-ui-kit-v2-detail-list.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs +76 -5
- package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs +111 -35
- package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-stat-tile.mjs +37 -16
- package/fesm2022/rt-tools-ui-kit-v2-stat-tile.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-table.mjs +94 -5
- package/fesm2022/rt-tools-ui-kit-v2-table.mjs.map +1 -1
- package/package.json +1 -1
- package/src/lib/components/date-picker/panel/rt-date-panel.component.scss +51 -2
- package/src/lib/components/date-range/panel/rt-date-range-panel.component.scss +95 -2
- package/src/lib/components/detail-list/CONTEXT.md +3 -0
- package/src/lib/components/detail-list/rt-detail-row.component.scss +1 -0
- package/src/lib/components/input-number/CONTEXT.md +8 -0
- package/src/lib/components/input-number/rt-input-number.component.scss +50 -0
- package/src/lib/components/stat-tile/CONTEXT.md +11 -6
- package/src/lib/components/stat-tile/rt-stat-tile.component.scss +21 -0
- package/src/lib/components/stat-tile/stories/component/test-stat-tile-matrix.component.scss +15 -0
- package/src/lib/components/table/CONTEXT.md +20 -0
- package/src/lib/components/table/rt-table.component.scss +77 -22
- package/src/lib/components/table/stories/component/test-table-pinned.component.scss +76 -0
- package/src/rich-editor/lib/components/chat/CONTEXT.md +5 -0
- package/src/styles/_primitives.scss +2 -0
- package/src/styles/_semantic.scss +9 -0
- package/src/styles/_theme-dark.scss +2 -0
- package/styles/tokens.css +66 -0
- package/types/rt-tools-ui-kit-v2-ai-prompt-input.d.ts +4 -0
- package/types/rt-tools-ui-kit-v2-core.d.ts +9 -1
- package/types/rt-tools-ui-kit-v2-date-picker.d.ts +14 -0
- package/types/rt-tools-ui-kit-v2-input-number.d.ts +30 -2
- package/types/rt-tools-ui-kit-v2-rich-editor.d.ts +13 -1
- package/types/rt-tools-ui-kit-v2-stat-tile.d.ts +29 -6
- package/types/rt-tools-ui-kit-v2-table.d.ts +31 -0
|
@@ -33,6 +33,8 @@ export declare class RtRichEditorComponent extends RtFormControlBase<IQuillDelta
|
|
|
33
33
|
ngAfterViewInit(): Promise<void>;
|
|
34
34
|
/** Ставит фокус в редактор; до загрузки Quill ничего не делает. */
|
|
35
35
|
focus(): void;
|
|
36
|
+
/** Ставит фокус в редактор, а курсор — за последний символ; до загрузки Quill ничего не делает. */
|
|
37
|
+
focusAtEnd(): void;
|
|
36
38
|
ngOnDestroy(): void;
|
|
37
39
|
writeValue(value: IQuillDelta | null): void;
|
|
38
40
|
setDisabledState(isDisabled: boolean): void;
|
|
@@ -142,6 +144,8 @@ export declare class RtMessageComposerComponent {
|
|
|
142
144
|
constructor();
|
|
143
145
|
/** Ставит фокус в поле: в textarea, а в режиме форматирования — в rich-редактор. */
|
|
144
146
|
focus(): void;
|
|
147
|
+
/** Заменяет черновик и ставит курсор в конец; выбранные файлы остаются. */
|
|
148
|
+
setDraft(text: string): void;
|
|
145
149
|
protected onKeydown(event: KeyboardEvent): void;
|
|
146
150
|
protected stop(): void;
|
|
147
151
|
protected openPicker(): void;
|
|
@@ -401,6 +405,10 @@ export declare class RtChatComponent {
|
|
|
401
405
|
protected readonly thread: Signal<ElementRef<HTMLElement> | undefined>;
|
|
402
406
|
/** Скрытый нативный input — открывается кнопкой-скрепкой внутри поля ввода. */
|
|
403
407
|
protected readonly composerFileEl: Signal<ElementRef<HTMLInputElement> | undefined>;
|
|
408
|
+
/** Поля ответа трёх видов: метод `setDraft` пишет в то, которое сейчас стоит. */
|
|
409
|
+
protected readonly composerInputEl: Signal<ElementRef<HTMLTextAreaElement> | undefined>;
|
|
410
|
+
protected readonly messageComposer: Signal<RtMessageComposerComponent | undefined>;
|
|
411
|
+
protected readonly promptInput: Signal<RtAiPromptInputComponent | undefined>;
|
|
404
412
|
protected readonly attachmentFallbackName: Signal<string>;
|
|
405
413
|
/** Подписи с учётом того, что передал хозяин компонента: своё важнее умолчания */
|
|
406
414
|
protected readonly titleText: Signal<string>;
|
|
@@ -488,7 +496,6 @@ export declare class RtChatComponent {
|
|
|
488
496
|
* Требует, чтобы родитель давал высоту (flex-цепочка).
|
|
489
497
|
*/
|
|
490
498
|
readonly fill: InputSignalWithTransform<boolean, BooleanInput>;
|
|
491
|
-
/** Показать иконку refresh в шапке. */
|
|
492
499
|
/**
|
|
493
500
|
* Вид мессенджера: без подписи автора, свой пузырь цвета действия, время без даты, над
|
|
494
501
|
* сообщениями дня — его подпись, поле ответа в одну строку с рядом кнопок под ним.
|
|
@@ -522,6 +529,11 @@ export declare class RtChatComponent {
|
|
|
522
529
|
*/
|
|
523
530
|
readonly messageHasActions: InputSignal<IRtChat.MessageActionsPredicate | null>;
|
|
524
531
|
constructor();
|
|
532
|
+
/**
|
|
533
|
+
* Заменяет черновик в поле ответа и ставит курсор в конец: так приложение подставляет готовый
|
|
534
|
+
* текст. Выбранные файлы остаются, сигнала набора нет, закрытое поле не меняется.
|
|
535
|
+
*/
|
|
536
|
+
setDraft(text: string): void;
|
|
525
537
|
protected onSubmit(): void;
|
|
526
538
|
protected onComposerKeydown(event: KeyboardEvent): void;
|
|
527
539
|
/** Релей submit'а от `rt-message-composer` (rich-режим) наружу как `send`. */
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { BooleanInput } from "@angular/cdk/coercion";
|
|
1
2
|
import * as i0 from "@angular/core";
|
|
2
|
-
import { InputSignal, Signal } from "@angular/core";
|
|
3
|
+
import { InputSignal, InputSignalWithTransform, Signal } from "@angular/core";
|
|
3
4
|
import { IRtIcon, TRtKitLabelMap } from "@rt-tools/ui-kit-v2/core";
|
|
4
5
|
/**
|
|
5
6
|
* Контракты `rt-stat-tile` — KPI-плитка с базой сравнения.
|
|
@@ -9,16 +10,23 @@ import { IRtIcon, TRtKitLabelMap } from "@rt-tools/ui-kit-v2/core";
|
|
|
9
10
|
export declare namespace IRtStatTile {
|
|
10
11
|
/** Направление изменения — определяет цвет и иконку строки дельты. */
|
|
11
12
|
type Direction = 'up' | 'down' | 'flat' | 'unknown';
|
|
13
|
+
/**
|
|
14
|
+
* Единица изменения: проценты к базе или процентные пункты — разница двух
|
|
15
|
+
* долей (занятость с 68 % до 78 % выросла на 10 п.п., а не на 15 %).
|
|
16
|
+
*/
|
|
17
|
+
type Unit = 'percent' | 'points';
|
|
12
18
|
/**
|
|
13
19
|
* Изменение к одной базе сравнения.
|
|
14
20
|
*
|
|
15
|
-
* - `percent` — уже посчитанное изменение в
|
|
16
|
-
* «база нулевая или данных нет», и
|
|
21
|
+
* - `percent` — уже посчитанное изменение в единицах `unit`; `null` означает
|
|
22
|
+
* «база нулевая или данных нет», и строка не рисуется вовсе.
|
|
23
|
+
* - `unit` — единица числа, по умолчанию проценты.
|
|
17
24
|
* - `label` — подпись базы («к прошлому периоду», «к прошлому году»).
|
|
18
25
|
* - `baseline` — необязательное «было X» той же строкой.
|
|
19
26
|
*/
|
|
20
27
|
interface Delta {
|
|
21
28
|
readonly percent: number | null;
|
|
29
|
+
readonly unit?: Unit;
|
|
22
30
|
readonly label: string;
|
|
23
31
|
readonly baseline?: string;
|
|
24
32
|
}
|
|
@@ -40,17 +48,22 @@ interface IDeltaRow {
|
|
|
40
48
|
* готовыми строками, `percent` — посчитанным числом. Так плитка не знает ни про
|
|
41
49
|
* валюты, ни про методику метрик и остаётся общей для любого домена.
|
|
42
50
|
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
51
|
+
* Строка с неизвестной базой не рисуется: «+100 %» от нуля вводит в
|
|
52
|
+
* заблуждение, а «—» рядом с цифрой читается как поломка.
|
|
53
|
+
*
|
|
54
|
+
* Цвет строки говорит, хорошо изменение или плохо, а стрелка — только знак
|
|
55
|
+
* числа: у метрики, где рост хуже (отмены, потерянная выручка), рост красный и
|
|
56
|
+
* со стрелкой вверх.
|
|
45
57
|
*/
|
|
46
58
|
export declare class RtStatTileComponent {
|
|
47
59
|
#private;
|
|
60
|
+
/** Подписи кита для шаблона — приставка годового чипа. */
|
|
61
|
+
protected readonly t: Signal<TRtKitLabelMap>;
|
|
48
62
|
/**
|
|
49
63
|
* Дельта к предыдущему периоду — рядом со значением. Пустая база (`percent`
|
|
50
64
|
* = null) не рисуется вовсе: «—» рядом с цифрой читается как поломка, а не
|
|
51
65
|
* как «сравнивать не с чем».
|
|
52
66
|
*/
|
|
53
|
-
protected readonly t: Signal<TRtKitLabelMap>;
|
|
54
67
|
protected readonly primaryDelta: Signal<IDeltaRow | null>;
|
|
55
68
|
/** Годовое сравнение — отдельным компактным чипом, без слов в строке. */
|
|
56
69
|
protected readonly yearDelta: Signal<IDeltaRow | null>;
|
|
@@ -72,6 +85,11 @@ export declare class RtStatTileComponent {
|
|
|
72
85
|
readonly deltaSecondary: InputSignal<IRtStatTile.Delta | null>;
|
|
73
86
|
/** Пояснение методики — нативный title на иконке подсказки. */
|
|
74
87
|
readonly hint: InputSignal<string | null>;
|
|
88
|
+
/**
|
|
89
|
+
* Рост метрики плох для владельца (отмены, потерянная выручка): рост обеих
|
|
90
|
+
* строк красный, падение зелёное. Стрелка по-прежнему показывает знак числа.
|
|
91
|
+
*/
|
|
92
|
+
readonly growthIsWorse: InputSignalWithTransform<boolean, BooleanInput>;
|
|
75
93
|
static ɵfac: i0.ɵɵFactoryDeclaration<RtStatTileComponent, never>;
|
|
76
94
|
static ɵcmp: i0.ɵɵComponentDeclaration<RtStatTileComponent, "rt-stat-tile", never, {
|
|
77
95
|
"label": {
|
|
@@ -104,6 +122,11 @@ export declare class RtStatTileComponent {
|
|
|
104
122
|
"required": false;
|
|
105
123
|
"isSignal": true;
|
|
106
124
|
};
|
|
125
|
+
"growthIsWorse": {
|
|
126
|
+
"alias": "growthIsWorse";
|
|
127
|
+
"required": false;
|
|
128
|
+
"isSignal": true;
|
|
129
|
+
};
|
|
107
130
|
}, {}, never, never, true, never>;
|
|
108
131
|
}
|
|
109
132
|
export {};
|
|
@@ -405,6 +405,35 @@ declare function hasRowsIn(dataSource: unknown): boolean;
|
|
|
405
405
|
* её значение нечем.
|
|
406
406
|
*/
|
|
407
407
|
declare function cardColumnsOf<TRow>(displayedColumns: ReadonlyArray<string>, columnDefs: ReadonlyArray<CdkColumnDef>, columnsConfig: ReadonlyArray<IRtTable.ColumnConfig>): ReadonlyArray<IRtTableCardColumn<TRow>>;
|
|
408
|
+
/** С какой стороны под закреплённой колонкой лежит прокрученное содержимое. */
|
|
409
|
+
interface IRtTablePinnedEdges {
|
|
410
|
+
/** Прокручено от начала: под колонкой, закреплённой у начала, есть скрытые колонки. */
|
|
411
|
+
start: boolean;
|
|
412
|
+
/** Прокручено не до конца: под колонкой, закреплённой у конца, есть скрытые колонки. */
|
|
413
|
+
end: boolean;
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* Скрытые края по положению прокрутки. При письме справа налево браузер отдаёт отрицательный
|
|
417
|
+
* сдвиг, поэтому берётся его величина: «начало» — сторона, откуда прокрутка началась.
|
|
418
|
+
*/
|
|
419
|
+
declare function hiddenEdges(scrollLeft: number, scrollWidth: number, clientWidth: number): IRtTablePinnedEdges;
|
|
420
|
+
/**
|
|
421
|
+
* Ближайший предок, который прокручивается вбок. Таблица сама не прокручивается: её прокручивает
|
|
422
|
+
* контейнер потребителя, и тень у края зависит от его положения.
|
|
423
|
+
*/
|
|
424
|
+
declare function horizontalScrollParentOf(element: Element, view: Window): HTMLElement | null;
|
|
425
|
+
/**
|
|
426
|
+
* Следит за прокруткой контейнера таблицы и за его размерами: тень у края нужна, пока под
|
|
427
|
+
* закреплённой колонкой есть скрытое содержимое, а оно меняется и при прокрутке, и при смене
|
|
428
|
+
* ширины окна или набора колонок.
|
|
429
|
+
*/
|
|
430
|
+
declare class RtTablePinnedEdges {
|
|
431
|
+
#private;
|
|
432
|
+
constructor(changed: (edges: IRtTablePinnedEdges) => void);
|
|
433
|
+
/** Находит контейнер прокрутки над `table` и сообщает скрытые края сразу и после каждой перемены. */
|
|
434
|
+
watch(table: HTMLElement, view: Window): void;
|
|
435
|
+
stop(): void;
|
|
436
|
+
}
|
|
408
437
|
/**
|
|
409
438
|
* Таблица — стилизованная обёртка над `cdk-table` (`@angular/cdk/table`).
|
|
410
439
|
*
|
|
@@ -428,6 +457,8 @@ export declare class RtTableComponent<TRow> extends CdkTable<TRow> {
|
|
|
428
457
|
* остаются висеть вне таблицы. Считается один раз — тег хоста по ходу жизни не меняется.
|
|
429
458
|
*/
|
|
430
459
|
protected readonly hostRole: 'table' | null;
|
|
460
|
+
/** Скрытые края для модификаторов хоста `--hidden-start` и `--hidden-end`. */
|
|
461
|
+
protected readonly hiddenEdges: Signal<IRtTablePinnedEdges>;
|
|
431
462
|
/** `true` когда initial-load в полёте и entities ещё нет — рендерим skeleton rows. */
|
|
432
463
|
protected readonly isInitialLoading: Signal<boolean>;
|
|
433
464
|
/** `true` когда загрузка завершена и entities пустые — рендерим empty placeholder. */
|