@rt-tools/ui-kit-v2 0.7.0 → 0.8.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/fesm2022/rt-tools-ui-kit-v2.mjs +794 -609
- package/fesm2022/rt-tools-ui-kit-v2.mjs.map +1 -1
- package/package.json +3 -3
- package/rt-tools-ui-kit-v2-0.8.1.tgz +0 -0
- package/src/lib/components/chat/CONTEXT.md +5 -0
- package/src/lib/components/chat/rt-chat.component.scss +12 -1
- package/src/lib/components/form-control/CONTEXT.md +7 -0
- package/src/lib/components/photo-viewer/rt-photo-viewer.component.scss +11 -4
- package/types/rt-tools-ui-kit-v2.d.ts +195 -115
- package/rt-tools-ui-kit-v2-0.7.0.tgz +0 -0
package/package.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rt-tools/ui-kit-v2",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.1",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"author": "Yauheni Krumin",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"dependencies": {
|
|
8
8
|
"tslib": "^2.8.0",
|
|
9
9
|
"@rt-tools/core": "^0.3.1",
|
|
10
|
-
"@rt-tools/utils": "^0.
|
|
10
|
+
"@rt-tools/utils": "^0.4.0"
|
|
11
11
|
},
|
|
12
12
|
"peerDependencies": {
|
|
13
13
|
"@rt-tools/core": "^0.3.1",
|
|
14
|
-
"@rt-tools/utils": "^0.
|
|
14
|
+
"@rt-tools/utils": "^0.4.0",
|
|
15
15
|
"@angular/cdk": "^22.0.0",
|
|
16
16
|
"@angular/common": "^22.0.0",
|
|
17
17
|
"@angular/compiler": "^22.0.0",
|
|
Binary file
|
|
@@ -21,6 +21,11 @@
|
|
|
21
21
|
|
|
22
22
|
## Главное, что нужно знать
|
|
23
23
|
|
|
24
|
+
**Своё действие у реплики объявляется шаблоном, а не правкой кита.** `<ng-template
|
|
25
|
+
rtChatMessageActions let-message>` рисуется в меню «…» у реплики, видимость держит предикат
|
|
26
|
+
`messageHasActions`; не задан — точка показывается у каждой. Точечные действия — удаление, повтор
|
|
27
|
+
отправки, скачивание — остаются своими входами и выходами: они общи для любой переписки.
|
|
28
|
+
|
|
24
29
|
**Без `hasThread` чат рисует только подсказку выбора.** Ни ленты, ни поля ответа не будет —
|
|
25
30
|
это состояние «переписка не выбрана», а не «переписка пустая».
|
|
26
31
|
|
|
@@ -147,7 +147,9 @@
|
|
|
147
147
|
|
|
148
148
|
// Кнопка проявляется по наведению/фокусу в пределах всей строки.
|
|
149
149
|
&:hover .rt-chat__message-delete,
|
|
150
|
-
&:focus-within .rt-chat__message-delete
|
|
150
|
+
&:focus-within .rt-chat__message-delete,
|
|
151
|
+
&:hover .rt-chat__message-actions,
|
|
152
|
+
&:focus-within .rt-chat__message-actions {
|
|
151
153
|
opacity: 1;
|
|
152
154
|
pointer-events: auto;
|
|
153
155
|
}
|
|
@@ -219,6 +221,15 @@
|
|
|
219
221
|
transition: opacity var(--rt-chat-transition-duration) ease;
|
|
220
222
|
}
|
|
221
223
|
|
|
224
|
+
// Точка действий потребителя: тот же flex-сосед пузыря, что и кнопка удаления, и то же
|
|
225
|
+
// зарезервированное место — тред не «прыгает» при наведении.
|
|
226
|
+
&__message-actions {
|
|
227
|
+
flex: 0 0 auto;
|
|
228
|
+
opacity: 0;
|
|
229
|
+
pointer-events: none;
|
|
230
|
+
transition: opacity var(--rt-chat-transition-duration) ease;
|
|
231
|
+
}
|
|
232
|
+
|
|
222
233
|
&__message-attachment {
|
|
223
234
|
display: block;
|
|
224
235
|
}
|
|
@@ -25,6 +25,13 @@
|
|
|
25
25
|
[`rt-field`](../field/CONTEXT.md)), не создавая цикла самоссылки, на котором Angular падает
|
|
26
26
|
с NG0200.
|
|
27
27
|
|
|
28
|
+
**Поле работает с обеими привязками формы, и род привязки выбирает не потребитель.** Прежняя
|
|
29
|
+
форма отдаёт контрол, рассылающий состояние событиями; сигнальная форма Angular 22 объявляет тот
|
|
30
|
+
же провайдер `NgControl` и отдаёт свой переходник — событий у него нет вовсе, а состояние
|
|
31
|
+
читается его геттерами. Поле смотрит, рассылает ли контрол состояние: рассылает — подписка,
|
|
32
|
+
не рассылает — вычисление. Подписка на несуществующие события роняла поле из запуска, и вместе
|
|
33
|
+
с ним не рисовалось всё поддерево разметки.
|
|
34
|
+
|
|
28
35
|
**Подсветка ошибки включается только после касания или правки**: `invalid && (touched || dirty)`.
|
|
29
36
|
Пустое обязательное поле невалидно с самого начала, но краснеть до первого касания не должно.
|
|
30
37
|
|
|
@@ -3,7 +3,12 @@
|
|
|
3
3
|
`.rt-photo-viewer` — сам хост (шаблон начинается с ng-container, класс ставит host). */
|
|
4
4
|
|
|
5
5
|
.rt-photo-viewer {
|
|
6
|
+
// Вид управляющего элемента поверх кадра — своими свойствами: их делят кнопки панели и
|
|
7
|
+
// обе стрелки, и потребитель перекрывает их правилом той же цели.
|
|
6
8
|
--rt-photo-viewer-control-radius: var(--rt-radius-md);
|
|
9
|
+
--rt-photo-viewer-control-color: var(--rt-color-text-inverse);
|
|
10
|
+
--rt-photo-viewer-control-bg: color-mix(in srgb, var(--rt-color-bg-inverse) 55%, transparent);
|
|
11
|
+
--rt-photo-viewer-control-bg-hover: color-mix(in srgb, var(--rt-color-text-inverse) 24%, transparent);
|
|
7
12
|
|
|
8
13
|
display: block;
|
|
9
14
|
width: 100vw;
|
|
@@ -87,15 +92,17 @@
|
|
|
87
92
|
color: var(--rt-color-text-primary);
|
|
88
93
|
}
|
|
89
94
|
|
|
90
|
-
|
|
95
|
+
// Общий вид управляющего элемента поверх кадра: кнопки панели и обе стрелки лежат на
|
|
96
|
+
// самом снимке, а не на подложке, и читаются только инверсным цветом на своей заливке.
|
|
97
|
+
// Перечень един намеренно — разойдясь, три места дадут три разных вида поверх одного кадра.
|
|
91
98
|
&__bar rt-icon-button,
|
|
92
99
|
&__arrow-prev,
|
|
93
100
|
&__arrow-next {
|
|
94
|
-
--rt-icon-button-color: var(--rt-
|
|
95
|
-
--rt-icon-button-color-bg-hover:
|
|
101
|
+
--rt-icon-button-color: var(--rt-photo-viewer-control-color);
|
|
102
|
+
--rt-icon-button-color-bg-hover: var(--rt-photo-viewer-control-bg-hover);
|
|
96
103
|
|
|
97
104
|
border-radius: var(--rt-photo-viewer-control-radius);
|
|
98
|
-
background:
|
|
105
|
+
background: var(--rt-photo-viewer-control-bg);
|
|
99
106
|
}
|
|
100
107
|
|
|
101
108
|
&__arrow-prev,
|
|
@@ -772,20 +772,6 @@ declare namespace IRtInput {
|
|
|
772
772
|
type Size = 'sm' | 'md' | 'lg';
|
|
773
773
|
}
|
|
774
774
|
|
|
775
|
-
/**
|
|
776
|
-
* Базовый класс input-семейства common/ui. Владеет единым CVA-ядром:
|
|
777
|
-
* - self-injected `NgControl` + ручная привязка `valueAccessor` (без
|
|
778
|
-
* `NG_VALUE_ACCESSOR` provider — иначе NG0200 cycle при self-reference),
|
|
779
|
-
* что даёт доступ к `control.invalid/touched` для авто-подсветки ошибки;
|
|
780
|
-
* - сигнал значения `value`, состояния `isDisabled`/`isInvalid` (отключение
|
|
781
|
-
* складывается из входа `disabled` и слова формы — см. `isDisabled`);
|
|
782
|
-
* - общие инпуты `size`/`disabled`/`controlId`/`ariaLabel`/`clearable`;
|
|
783
|
-
* - оркестрацию очистки (`clear`) через абстрактные хуки конкретного поля.
|
|
784
|
-
*
|
|
785
|
-
* Конкретные поля реализуют `getEmptyValue`/`hasValue`/`focusAfterClear`. Поля
|
|
786
|
-
* с отдельным display-состоянием (autocomplete, input-number) дополнительно
|
|
787
|
-
* переопределяют `writeValue`/`clearValue`, синхронизируя свой display-сигнал.
|
|
788
|
-
*/
|
|
789
775
|
declare abstract class RtFormControlBase<TValue> implements ControlValueAccessor, OnInit {
|
|
790
776
|
#private;
|
|
791
777
|
protected readonly value: WritableSignal<TValue>;
|
|
@@ -797,7 +783,7 @@ declare abstract class RtFormControlBase<TValue> implements ControlValueAccessor
|
|
|
797
783
|
* контрол, созданный отключённым, оказывался бы редактируемым.
|
|
798
784
|
*/
|
|
799
785
|
protected readonly isDisabled: Signal<boolean>;
|
|
800
|
-
protected readonly isInvalid:
|
|
786
|
+
protected readonly isInvalid: Signal<boolean>;
|
|
801
787
|
/** Видимость кнопки очистки: включена, есть значение, поле активно. */
|
|
802
788
|
protected readonly showClearButton: Signal<boolean>;
|
|
803
789
|
/** Есть ли в поле значение — гейт видимости крестика. */
|
|
@@ -817,7 +803,7 @@ declare abstract class RtFormControlBase<TValue> implements ControlValueAccessor
|
|
|
817
803
|
readonly effectiveControlId: Signal<string | null>;
|
|
818
804
|
/** Read-only режим (плоский текст вместо контрола); включается rt-field'ом. */
|
|
819
805
|
readonly isReadonly: Signal<boolean>;
|
|
820
|
-
/** Публичный invalid для rt-field (touched/dirty
|
|
806
|
+
/** Публичный invalid для rt-field (touched/dirty учтён в состоянии). */
|
|
821
807
|
readonly invalid: Signal<boolean>;
|
|
822
808
|
/** Текущие ошибки связанного контрола — источник текста ошибки в rt-field. */
|
|
823
809
|
readonly errors: Signal<ValidationErrors | null>;
|
|
@@ -1184,23 +1170,6 @@ declare class RtCardComponent {
|
|
|
1184
1170
|
static ɵcmp: i0.ɵɵComponentDeclaration<RtCardComponent, "rt-card", never, { "header": { "alias": "header"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "clickable": { "alias": "clickable"; "required": false; "isSignal": true; }; }, { "cardClick": "cardClick"; }, never, ["[rtCardHeader]", "*", "[rtCardFooter]"], true, never>;
|
|
1185
1171
|
}
|
|
1186
1172
|
|
|
1187
|
-
/**
|
|
1188
|
-
* Модель `<rt-message-composer>`: один корневой неймспейс с
|
|
1189
|
-
* префиксом `I`.
|
|
1190
|
-
*/
|
|
1191
|
-
declare namespace IRtMessageComposer {
|
|
1192
|
-
/** Полезная нагрузка отправки: текст сообщения + прикреплённые файлы. */
|
|
1193
|
-
interface SubmitPayload {
|
|
1194
|
-
text: string;
|
|
1195
|
-
files: File[];
|
|
1196
|
-
/**
|
|
1197
|
-
* Rich-тело строкой JSON (при `formatting`-режиме) — взаимоисключимо с
|
|
1198
|
-
* непустым `text`. `null`/отсутствует ⇒ отправляется plain-текст.
|
|
1199
|
-
*/
|
|
1200
|
-
delta?: string | null;
|
|
1201
|
-
}
|
|
1202
|
-
}
|
|
1203
|
-
|
|
1204
1173
|
/**
|
|
1205
1174
|
* Извлекает имя файла из URL: последний сегмент пути без query/fragment,
|
|
1206
1175
|
* декодированный из percent-encoding. Нужен для вложений, у которых источник
|
|
@@ -1385,43 +1354,6 @@ declare const SEARCH_DEBOUNCE_MS: number;
|
|
|
1385
1354
|
*/
|
|
1386
1355
|
declare function searchDebounce(): MonoTypeOperatorFunction<string>;
|
|
1387
1356
|
|
|
1388
|
-
/**
|
|
1389
|
-
* Режим тулбара: `full` — весь whitelist, `minimal` — жирный + два списка
|
|
1390
|
-
* (G113: чаты оператора/админа/саппорта).
|
|
1391
|
-
*/
|
|
1392
|
-
type TRtRichEditorToolbar = 'full' | 'minimal';
|
|
1393
|
-
/**
|
|
1394
|
-
* Rich-редактор чата на Quill. Наследует CVA-ядро input-семейства
|
|
1395
|
-
* (`RtFormControlBase`) — плагается в reactive-форму. Quill грузится **лениво**
|
|
1396
|
-
* (`import("quill")` в `ngAfterViewInit`), тип импортируется `import type` и в
|
|
1397
|
-
* бандл не попадает. Значение CVA — `IQuillDelta` (или `null`, когда пусто).
|
|
1398
|
-
*/
|
|
1399
|
-
declare class RtRichEditorComponent extends RtFormControlBase<IQuillDelta | null> implements AfterViewInit, OnDestroy {
|
|
1400
|
-
#private;
|
|
1401
|
-
protected readonly editorHost: Signal<ElementRef<HTMLElement>>;
|
|
1402
|
-
/**
|
|
1403
|
-
* Смонтирована ли начинка редактора. Пока нет, хост несёт признак недостроенности: съёмке
|
|
1404
|
-
* витрины и любой другой проверке снаружи иначе нечем отличить недостроенный редактор от
|
|
1405
|
-
* достроенного пустого — оба выглядят пустым местом.
|
|
1406
|
-
*/
|
|
1407
|
-
protected readonly mounted: WritableSignal<boolean>;
|
|
1408
|
-
protected readonly hasValue: Signal<boolean>;
|
|
1409
|
-
readonly placeholder: InputSignal<string>;
|
|
1410
|
-
/** Набор кнопок форматирования; сужает и принимаемые форматы (вставка из буфера). */
|
|
1411
|
-
readonly toolbar: InputSignal<TRtRichEditorToolbar>;
|
|
1412
|
-
/** Enter без Shift в редакторе — сигнал отправки (Shift+Enter остаётся переносом). */
|
|
1413
|
-
readonly enterPressed: OutputEmitterRef<void>;
|
|
1414
|
-
readonly displayText: Signal<string>;
|
|
1415
|
-
ngAfterViewInit(): Promise<void>;
|
|
1416
|
-
ngOnDestroy(): void;
|
|
1417
|
-
writeValue(value: IQuillDelta | null): void;
|
|
1418
|
-
setDisabledState(isDisabled: boolean): void;
|
|
1419
|
-
protected getEmptyValue(): IQuillDelta | null;
|
|
1420
|
-
protected focusAfterClear(): void;
|
|
1421
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<RtRichEditorComponent, never>;
|
|
1422
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<RtRichEditorComponent, "rt-rich-editor", never, { "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "toolbar": { "alias": "toolbar"; "required": false; "isSignal": true; }; }, { "enterPressed": "enterPressed"; }, never, never, true, never>;
|
|
1423
|
-
}
|
|
1424
|
-
|
|
1425
1357
|
/**
|
|
1426
1358
|
* Модель общего чат-компонента `rt-chat`: один корневой неймспейс
|
|
1427
1359
|
* с префиксом `I`. Доменные стора маппят свою модель сообщения в `Message`, а сам
|
|
@@ -1441,6 +1373,13 @@ declare enum ERtChatMessageStatus {
|
|
|
1441
1373
|
declare namespace IRtChat {
|
|
1442
1374
|
/** Алиас enum'а для доменных мапперов, работающих через неймспейс. */
|
|
1443
1375
|
type MessageStatus = ERtChatMessageStatus;
|
|
1376
|
+
/**
|
|
1377
|
+
* Есть ли у реплики доступные действия потребителя — гейт кнопки «…» у неё.
|
|
1378
|
+
*
|
|
1379
|
+
* Признак приходит предикатом, а не полем модели: действие, которого кит не знает,
|
|
1380
|
+
* его моделью и не описывается.
|
|
1381
|
+
*/
|
|
1382
|
+
type MessageActionsPredicate = (message: Message) => boolean;
|
|
1444
1383
|
/** Вложение сообщения — домен маппит свой ресурс, скачивание по `public_id`. */
|
|
1445
1384
|
interface Attachment {
|
|
1446
1385
|
id: number;
|
|
@@ -1514,6 +1453,96 @@ declare namespace IRtChat {
|
|
|
1514
1453
|
}
|
|
1515
1454
|
}
|
|
1516
1455
|
|
|
1456
|
+
/**
|
|
1457
|
+
* Контекст шаблона `[rtChatMessageActions]`: `$implicit` — реплика треда.
|
|
1458
|
+
*/
|
|
1459
|
+
interface IRtChatMessageActionsContext {
|
|
1460
|
+
$implicit: IRtChat.Message;
|
|
1461
|
+
}
|
|
1462
|
+
/**
|
|
1463
|
+
* Захватывает `<ng-template rtChatMessageActions let-message>` — содержимое «…»-меню
|
|
1464
|
+
* действий у реплики. `rt-chat` рисует этот шаблон рядом с точечными действиями реплики,
|
|
1465
|
+
* прокидывая её через `$implicit`.
|
|
1466
|
+
*
|
|
1467
|
+
* Точечные действия остаются на месте: удаление, повтор отправки и скачивание общи для
|
|
1468
|
+
* любой переписки. Шаблон нужен тем действиям, которых кит не знает и знать не должен, —
|
|
1469
|
+
* без него потребителю оставалось ждать правки кита либо ставить кнопку над диалогом, то
|
|
1470
|
+
* есть не там, где читают реплику.
|
|
1471
|
+
*
|
|
1472
|
+
* Дженерика у контекста нет: тип реплики у переписки один, и type-carrier, который у
|
|
1473
|
+
* строки таблицы несёт тип строки, здесь не нужен.
|
|
1474
|
+
*
|
|
1475
|
+
* @example
|
|
1476
|
+
* ```html
|
|
1477
|
+
* <rt-chat [messages]="messages()" [messageHasActions]="canAct">
|
|
1478
|
+
* <ng-template rtChatMessageActions let-message>
|
|
1479
|
+
* <rt-menu-item icon="link" label="Скопировать ссылку" (selected)="copy(message)" />
|
|
1480
|
+
* </ng-template>
|
|
1481
|
+
* </rt-chat>
|
|
1482
|
+
* ```
|
|
1483
|
+
*/
|
|
1484
|
+
declare class RtChatMessageActionsDirective {
|
|
1485
|
+
readonly template: TemplateRef<IRtChatMessageActionsContext>;
|
|
1486
|
+
/** Type-guard: сужает контекст шаблона до реплики при проверке шаблонов. */
|
|
1487
|
+
static ngTemplateContextGuard(_directive: RtChatMessageActionsDirective, context: unknown): context is IRtChatMessageActionsContext;
|
|
1488
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtChatMessageActionsDirective, never>;
|
|
1489
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RtChatMessageActionsDirective, "ng-template[rtChatMessageActions]", never, {}, {}, never, never, true, never>;
|
|
1490
|
+
}
|
|
1491
|
+
|
|
1492
|
+
/**
|
|
1493
|
+
* Модель `<rt-message-composer>`: один корневой неймспейс с
|
|
1494
|
+
* префиксом `I`.
|
|
1495
|
+
*/
|
|
1496
|
+
declare namespace IRtMessageComposer {
|
|
1497
|
+
/** Полезная нагрузка отправки: текст сообщения + прикреплённые файлы. */
|
|
1498
|
+
interface SubmitPayload {
|
|
1499
|
+
text: string;
|
|
1500
|
+
files: File[];
|
|
1501
|
+
/**
|
|
1502
|
+
* Rich-тело строкой JSON (при `formatting`-режиме) — взаимоисключимо с
|
|
1503
|
+
* непустым `text`. `null`/отсутствует ⇒ отправляется plain-текст.
|
|
1504
|
+
*/
|
|
1505
|
+
delta?: string | null;
|
|
1506
|
+
}
|
|
1507
|
+
}
|
|
1508
|
+
|
|
1509
|
+
/**
|
|
1510
|
+
* Режим тулбара: `full` — весь whitelist, `minimal` — жирный + два списка
|
|
1511
|
+
* (G113: чаты оператора/админа/саппорта).
|
|
1512
|
+
*/
|
|
1513
|
+
type TRtRichEditorToolbar = 'full' | 'minimal';
|
|
1514
|
+
/**
|
|
1515
|
+
* Rich-редактор чата на Quill. Наследует CVA-ядро input-семейства
|
|
1516
|
+
* (`RtFormControlBase`) — плагается в reactive-форму. Quill грузится **лениво**
|
|
1517
|
+
* (`import("quill")` в `ngAfterViewInit`), тип импортируется `import type` и в
|
|
1518
|
+
* бандл не попадает. Значение CVA — `IQuillDelta` (или `null`, когда пусто).
|
|
1519
|
+
*/
|
|
1520
|
+
declare class RtRichEditorComponent extends RtFormControlBase<IQuillDelta | null> implements AfterViewInit, OnDestroy {
|
|
1521
|
+
#private;
|
|
1522
|
+
protected readonly editorHost: Signal<ElementRef<HTMLElement>>;
|
|
1523
|
+
/**
|
|
1524
|
+
* Смонтирована ли начинка редактора. Пока нет, хост несёт признак недостроенности: съёмке
|
|
1525
|
+
* витрины и любой другой проверке снаружи иначе нечем отличить недостроенный редактор от
|
|
1526
|
+
* достроенного пустого — оба выглядят пустым местом.
|
|
1527
|
+
*/
|
|
1528
|
+
protected readonly mounted: WritableSignal<boolean>;
|
|
1529
|
+
protected readonly hasValue: Signal<boolean>;
|
|
1530
|
+
readonly placeholder: InputSignal<string>;
|
|
1531
|
+
/** Набор кнопок форматирования; сужает и принимаемые форматы (вставка из буфера). */
|
|
1532
|
+
readonly toolbar: InputSignal<TRtRichEditorToolbar>;
|
|
1533
|
+
/** Enter без Shift в редакторе — сигнал отправки (Shift+Enter остаётся переносом). */
|
|
1534
|
+
readonly enterPressed: OutputEmitterRef<void>;
|
|
1535
|
+
readonly displayText: Signal<string>;
|
|
1536
|
+
ngAfterViewInit(): Promise<void>;
|
|
1537
|
+
ngOnDestroy(): void;
|
|
1538
|
+
writeValue(value: IQuillDelta | null): void;
|
|
1539
|
+
setDisabledState(isDisabled: boolean): void;
|
|
1540
|
+
protected getEmptyValue(): IQuillDelta | null;
|
|
1541
|
+
protected focusAfterClear(): void;
|
|
1542
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtRichEditorComponent, never>;
|
|
1543
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtRichEditorComponent, "rt-rich-editor", never, { "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "toolbar": { "alias": "toolbar"; "required": false; "isSignal": true; }; }, { "enterPressed": "enterPressed"; }, never, never, true, never>;
|
|
1544
|
+
}
|
|
1545
|
+
|
|
1517
1546
|
/**
|
|
1518
1547
|
* Общий презентационный чат: тред сообщений + композер. Никакого data-access/api —
|
|
1519
1548
|
* история приходит готовым массивом `IRtChat.Message[]`, отправка/обновление/
|
|
@@ -1587,6 +1616,12 @@ declare class RtChatComponent {
|
|
|
1587
1616
|
* принимает drop напрямую в свой `replyForm`.
|
|
1588
1617
|
*/
|
|
1589
1618
|
protected readonly droppedFiles: WritableSignal<File[] | null>;
|
|
1619
|
+
/**
|
|
1620
|
+
* Шаблон действий у реплики: `<ng-template rtChatMessageActions let-message>`.
|
|
1621
|
+
*
|
|
1622
|
+
* Не объявлен — разметка реплики прежняя, и лишней кнопки у неё не появляется.
|
|
1623
|
+
*/
|
|
1624
|
+
protected readonly messageActions: Signal<RtChatMessageActionsDirective | undefined>;
|
|
1590
1625
|
/** История сообщений (consumer уже смаппил из доменной модели). */
|
|
1591
1626
|
readonly messages: InputSignal<readonly IRtChat.Message[]>;
|
|
1592
1627
|
/** Первичная загрузка — скелетоны вместо треда. */
|
|
@@ -1641,7 +1676,8 @@ declare class RtChatComponent {
|
|
|
1641
1676
|
readonly send: OutputEmitterRef<IRtChat.SendPayload>;
|
|
1642
1677
|
/** Клик refresh — consumer перетягивает тред. */
|
|
1643
1678
|
readonly refresh: OutputEmitterRef<void>;
|
|
1644
|
-
/** Клик по вложению — consumer качает blob своим api.
|
|
1679
|
+
/** Клик по вложению — consumer качает blob своим api. Шаблон зовёт выход прямо: релей-метод,
|
|
1680
|
+
* который только повторял `emit`, ничего не добавлял, а файл при этом рос. */
|
|
1645
1681
|
readonly downloadFile: OutputEmitterRef<IRtChat.Message>;
|
|
1646
1682
|
/** Клик по карточке вложения из `attachments[]` — консюмер качает по `publicId`. */
|
|
1647
1683
|
readonly downloadAttachment: OutputEmitterRef<IRtChat.Attachment>;
|
|
@@ -1650,6 +1686,13 @@ declare class RtChatComponent {
|
|
|
1650
1686
|
readonly deleteMessage: OutputEmitterRef<IRtChat.Message>;
|
|
1651
1687
|
/** Повторная отправка своего сообщения со статусом `failed`. */
|
|
1652
1688
|
readonly retryMessage: OutputEmitterRef<IRtChat.Message>;
|
|
1689
|
+
/**
|
|
1690
|
+
* Есть ли у реплики действия потребителя — гейт кнопки «…» у неё.
|
|
1691
|
+
*
|
|
1692
|
+
* Не задан — точка действий показывается у каждой реплики: экран, который ничего не
|
|
1693
|
+
* гейтит, показывает её так же, как это делает строка таблицы.
|
|
1694
|
+
*/
|
|
1695
|
+
readonly messageHasActions: InputSignal<IRtChat.MessageActionsPredicate | null>;
|
|
1653
1696
|
constructor();
|
|
1654
1697
|
protected onSubmit(): void;
|
|
1655
1698
|
protected onComposerKeydown(event: KeyboardEvent): void;
|
|
@@ -1663,27 +1706,37 @@ declare class RtChatComponent {
|
|
|
1663
1706
|
protected openFilePicker(): void;
|
|
1664
1707
|
protected onFilesPicked(event: Event): void;
|
|
1665
1708
|
protected removeFile(index: number): void;
|
|
1666
|
-
/**
|
|
1667
|
-
* Обновляем «у нижнего ли края» по скроллу — основа решения об автоскролле.
|
|
1668
|
-
* Прилипание к низу снимаем ТОЛЬКО когда пользователь прокрутил ВВЕРХ (scrollTop
|
|
1669
|
-
* уменьшился). Событие от программной прокрутки и рост контента идут при том же
|
|
1670
|
-
* или большем scrollTop — тогда прилипание лишь усиливаем, но не снимаем. Иначе
|
|
1671
|
-
* async-событие от нашего же `scrollTop = scrollHeight`, долетающее уже после
|
|
1672
|
-
* поздней дорисовки rich-контента (высота выросла, scrollTop прежний → мнимый
|
|
1673
|
-
* «отрыв от низа»), сбрасывало бы `#atBottom` и ломало до-прокрутку.
|
|
1674
|
-
*/
|
|
1709
|
+
/** Признак «читатель у нижнего края» обновляется по прокрутке: на нём стоит автопрокрутка. */
|
|
1675
1710
|
protected onThreadScroll(): void;
|
|
1676
|
-
protected onRefresh(): void;
|
|
1677
|
-
protected onDownload(message: IRtChat.Message): void;
|
|
1678
|
-
/** Релей клика по вложению наружу — сам компонент файлов не качает. */
|
|
1679
|
-
protected onDownloadAttachment(attachment: IRtChat.Attachment): void;
|
|
1680
|
-
/** Релей запроса на удаление сообщения — удаляет домен, компонент только рисует. */
|
|
1681
|
-
protected onDeleteMessage(message: IRtChat.Message): void;
|
|
1682
|
-
/** Релей повтора отправки упавшего сообщения — переотправляет домен. */
|
|
1683
|
-
protected onRetryMessage(message: IRtChat.Message): void;
|
|
1684
1711
|
protected toggleExpand(): void;
|
|
1685
1712
|
static ɵfac: i0.ɵɵFactoryDeclaration<RtChatComponent, never>;
|
|
1686
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<RtChatComponent, "rt-chat", never, { "messages": { "alias": "messages"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "fetching": { "alias": "fetching"; "required": false; "isSignal": true; }; "canReply": { "alias": "canReply"; "required": false; "isSignal": true; }; "replyBlockReason": { "alias": "replyBlockReason"; "required": false; "isSignal": true; }; "sending": { "alias": "sending"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "emptyHint": { "alias": "emptyHint"; "required": false; "isSignal": true; }; "hasThread": { "alias": "hasThread"; "required": false; "isSignal": true; }; "attachments": { "alias": "attachments"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "richComposer": { "alias": "richComposer"; "required": false; "isSignal": true; }; "formatting": { "alias": "formatting"; "required": false; "isSignal": true; }; "formattingToolbar": { "alias": "formattingToolbar"; "required": false; "isSignal": true; }; "fill": { "alias": "fill"; "required": false; "isSignal": true; }; "showRefresh": { "alias": "showRefresh"; "required": false; "isSignal": true; }; "showExpand": { "alias": "showExpand"; "required": false; "isSignal": true; }; }, { "send": "send"; "refresh": "refresh"; "downloadFile": "downloadFile"; "downloadAttachment": "downloadAttachment"; "expandedChange": "expandedChange"; "deleteMessage": "deleteMessage"; "retryMessage": "retryMessage"; },
|
|
1713
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtChatComponent, "rt-chat", never, { "messages": { "alias": "messages"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "fetching": { "alias": "fetching"; "required": false; "isSignal": true; }; "canReply": { "alias": "canReply"; "required": false; "isSignal": true; }; "replyBlockReason": { "alias": "replyBlockReason"; "required": false; "isSignal": true; }; "sending": { "alias": "sending"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "emptyHint": { "alias": "emptyHint"; "required": false; "isSignal": true; }; "hasThread": { "alias": "hasThread"; "required": false; "isSignal": true; }; "attachments": { "alias": "attachments"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "richComposer": { "alias": "richComposer"; "required": false; "isSignal": true; }; "formatting": { "alias": "formatting"; "required": false; "isSignal": true; }; "formattingToolbar": { "alias": "formattingToolbar"; "required": false; "isSignal": true; }; "fill": { "alias": "fill"; "required": false; "isSignal": true; }; "showRefresh": { "alias": "showRefresh"; "required": false; "isSignal": true; }; "showExpand": { "alias": "showExpand"; "required": false; "isSignal": true; }; "messageHasActions": { "alias": "messageHasActions"; "required": false; "isSignal": true; }; }, { "send": "send"; "refresh": "refresh"; "downloadFile": "downloadFile"; "downloadAttachment": "downloadAttachment"; "expandedChange": "expandedChange"; "deleteMessage": "deleteMessage"; "retryMessage": "retryMessage"; }, ["messageActions"], ["[rtChatHeaderActions]", "[rtChatFooter]"], true, never>;
|
|
1714
|
+
}
|
|
1715
|
+
|
|
1716
|
+
/**
|
|
1717
|
+
* Есть ли у реплики хотя бы одно доступное действие потребителя.
|
|
1718
|
+
*
|
|
1719
|
+
* Признак приходит предикатом от экрана, а не подсчётом отрисованных пунктов меню:
|
|
1720
|
+
* содержимое спроецированного шаблона известно только после отрисовки, и кнопка
|
|
1721
|
+
* успевала бы мигнуть на первом кадре.
|
|
1722
|
+
*
|
|
1723
|
+
* Предикат не задан — у реплики есть действия: экран, который ничего не гейтит,
|
|
1724
|
+
* показывает кнопку меню. Так же это устроено у строки таблицы, и расхождение между
|
|
1725
|
+
* двумя точками проекции одного кита читалось бы дефектом.
|
|
1726
|
+
*/
|
|
1727
|
+
declare function messageHasAvailableActions(message: IRtChat.Message, hasActions: IRtChat.MessageActionsPredicate | null): boolean;
|
|
1728
|
+
|
|
1729
|
+
/**
|
|
1730
|
+
* Есть ли у реплики доступные действия — гейт кнопки «…» у неё.
|
|
1731
|
+
*
|
|
1732
|
+
* Pure-pipe: пересчитывается только при смене реплики или предиката, а не на каждом
|
|
1733
|
+
* цикле проверки. Значение приходит из контекста шаблона (реплика треда), поэтому
|
|
1734
|
+
* `computed()` здесь неприменим.
|
|
1735
|
+
*/
|
|
1736
|
+
declare class RtChatMessageHasActionsPipe implements PipeTransform {
|
|
1737
|
+
transform(message: IRtChat.Message, hasActions: IRtChat.MessageActionsPredicate | null): boolean;
|
|
1738
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtChatMessageHasActionsPipe, never>;
|
|
1739
|
+
static ɵpipe: i0.ɵɵPipeDeclaration<RtChatMessageHasActionsPipe, "rtChatMessageHasActions", true>;
|
|
1687
1740
|
}
|
|
1688
1741
|
|
|
1689
1742
|
/**
|
|
@@ -2218,6 +2271,14 @@ declare abstract class RtRouteAsideComponent<T> implements OnInit {
|
|
|
2218
2271
|
*/
|
|
2219
2272
|
protected readonly pristine: Signal<boolean>;
|
|
2220
2273
|
protected readonly submitError: WritableSignal<string | null>;
|
|
2274
|
+
/**
|
|
2275
|
+
* Удача мутации — тем же способом, что и отказ. Человек, работающий в панели,
|
|
2276
|
+
* смотрит в панель, а не на экран за её краем: тост об успехе всплывает там,
|
|
2277
|
+
* куда он в эту минуту не смотрит. Оба сигнала гасятся в начале каждой
|
|
2278
|
+
* попытки и гасят друг друга — это ответы на один вопрос, и двух сразу не
|
|
2279
|
+
* бывает.
|
|
2280
|
+
*/
|
|
2281
|
+
protected readonly submitSuccess: WritableSignal<string | null>;
|
|
2221
2282
|
protected readonly idParamName: string;
|
|
2222
2283
|
/** id-only режим: нужен только id (например, смена пароля по userId), сущность не грузится. */
|
|
2223
2284
|
protected readonly idOnly: boolean;
|
|
@@ -2233,11 +2294,7 @@ declare abstract class RtRouteAsideComponent<T> implements OnInit {
|
|
|
2233
2294
|
*/
|
|
2234
2295
|
canDeactivate(): Observable<boolean>;
|
|
2235
2296
|
protected setEntity(entity: T | null): void;
|
|
2236
|
-
/**
|
|
2237
|
-
* Признак нетронутой формы. Контрол принимается и сигналом: форма панели
|
|
2238
|
-
* собрана директивой `ngForm` и до отрисовки шаблона её ещё нет, поэтому
|
|
2239
|
-
* `viewChild(NgForm)` отдаёт её только сигналом.
|
|
2240
|
-
*/
|
|
2297
|
+
/** Признак нетронутой формы — тот же, что гейтит кнопку записи. */
|
|
2241
2298
|
protected pristineSignal(control: AbstractControl | Signal<AbstractControl | undefined>): Signal<boolean>;
|
|
2242
2299
|
/**
|
|
2243
2300
|
* Ставит гард закрытия: пока форма тронута, любой из четырёх путей закрытия
|
|
@@ -2272,10 +2329,18 @@ declare abstract class RtRouteAsideComponent<T> implements OnInit {
|
|
|
2272
2329
|
* `errorText` принимается и функцией: причина отказа известна только после
|
|
2273
2330
|
* него — стор кладёт её в свой сигнал, а панель без стора выводит из ответа
|
|
2274
2331
|
* сервера, — и готовой строкой на момент запуска мутации её не передать.
|
|
2332
|
+
*
|
|
2333
|
+
* `successMessage` — текст удачи, который панель показывает внутри себя,
|
|
2334
|
+
* рядом с формой. Довод отделён от `successText` намеренно: переезд текста
|
|
2335
|
+
* из тоста в панель сломал бы всякого потребителя, который тост и хотел, а
|
|
2336
|
+
* сказать «мне нужен тост» ему после этого было бы нечем. Назван он по месту
|
|
2337
|
+
* показа, а не по исходу: два довода с разницей в одном слоге читались бы
|
|
2338
|
+
* как опечатка.
|
|
2275
2339
|
*/
|
|
2276
2340
|
protected runMutation(op$: Observable<unknown>, opts?: {
|
|
2277
2341
|
onSuccess?: () => void;
|
|
2278
2342
|
successText?: string;
|
|
2343
|
+
successMessage?: string;
|
|
2279
2344
|
errorText?: string | ((error: unknown) => string);
|
|
2280
2345
|
closeOnSuccess?: boolean;
|
|
2281
2346
|
refreshOnSuccess?: boolean;
|
|
@@ -4762,15 +4827,42 @@ declare class RtTableRowDirective {
|
|
|
4762
4827
|
/** Имя внутренней «…»-колонки действий, добавляемой при `[showRowActions]`. */
|
|
4763
4828
|
declare const RT_TABLE_ROW_ACTIONS_COLUMN: string;
|
|
4764
4829
|
/**
|
|
4765
|
-
*
|
|
4766
|
-
*
|
|
4767
|
-
|
|
4830
|
+
* Колонки конфига без применённых настроек пользователя — источник для кнопки
|
|
4831
|
+
* «Сбросить» в панели. Закрытая колонка видима всегда: скрыть её панель не даёт.
|
|
4832
|
+
*/
|
|
4833
|
+
declare function defaultColumnItems(config: ReadonlyArray<IRtTable.ColumnConfig>): ReadonlyArray<IRtTable.ColumnSettingItem>;
|
|
4834
|
+
/**
|
|
4835
|
+
* Разрешённые колонки настраиваемой таблицы: конфиг в применённом порядке с текущим
|
|
4836
|
+
* признаком скрытия.
|
|
4837
|
+
*
|
|
4838
|
+
* Порядок берётся из сохранённых настроек, а колонки, появившиеся в конфиге после
|
|
4839
|
+
* сохранения, встают в конец: настройки, снятые с прежнего состава, иначе прятали бы
|
|
4840
|
+
* новую колонку молча. Настроек нет — порядок и скрытие берутся из самого конфига.
|
|
4841
|
+
*/
|
|
4842
|
+
declare function resolveColumns(config: ReadonlyArray<IRtTable.ColumnConfig>, settings: IRtTable.ColumnSettings | null): ReadonlyArray<IRtTable.ColumnSettingItem>;
|
|
4843
|
+
/**
|
|
4844
|
+
* Имена колонок для строк CDK: у настраиваемой таблицы — видимые в применённом порядке,
|
|
4845
|
+
* у остальных — то, что назвал вход `[columns]`. Колонка действий встаёт последней, когда
|
|
4846
|
+
* действия строки включены.
|
|
4847
|
+
*/
|
|
4848
|
+
declare function displayedColumnKeys(resolved: ReadonlyArray<IRtTable.ColumnSettingItem>, legacyColumns: ReadonlyArray<string>, configurable: boolean, showRowActions: boolean): ReadonlyArray<string>;
|
|
4849
|
+
/**
|
|
4850
|
+
* Настройки панели, приведённые к конфигу: ключи закрытых колонок из списка скрытых
|
|
4851
|
+
* вычищаются. Панель их не предлагает, но настройки приезжают и из хранилища — снятые с
|
|
4852
|
+
* той поры, когда колонка закрытой ещё не была.
|
|
4853
|
+
*/
|
|
4854
|
+
declare function withoutLockedHidden(config: ReadonlyArray<IRtTable.ColumnConfig>, settings: IRtTable.ColumnSettings): IRtTable.ColumnSettings;
|
|
4855
|
+
|
|
4856
|
+
/**
|
|
4857
|
+
* Поле авто-карточки узкого экрана: подпись колонки и её шаблон ячейки. Значение рисуется
|
|
4858
|
+
* тем же шаблоном, что и в строке таблицы, — второй разметки у карточки нет.
|
|
4768
4859
|
*/
|
|
4769
4860
|
interface IRtTableCardColumn<TRow> {
|
|
4770
4861
|
key: string;
|
|
4771
4862
|
label: string;
|
|
4772
4863
|
cell: TemplateRef<IRtTableCardContext<TRow>>;
|
|
4773
4864
|
}
|
|
4865
|
+
|
|
4774
4866
|
/**
|
|
4775
4867
|
* Таблица — стилизованная обёртка над `cdk-table` (`@angular/cdk/table`).
|
|
4776
4868
|
*
|
|
@@ -4843,17 +4935,11 @@ declare class RtTableComponent<TRow> extends CdkTable<TRow> {
|
|
|
4843
4935
|
/** Карточки показываются только когда card-режим включён (`[cards]`) и экран узкий. */
|
|
4844
4936
|
protected readonly showCards: Signal<boolean>;
|
|
4845
4937
|
/**
|
|
4846
|
-
* Строки для
|
|
4847
|
-
*
|
|
4848
|
-
* для остальных типов пусто (карточки не поддерживаются). `#dataSourceVersion`
|
|
4849
|
-
* инвалидирует computed при смене источника.
|
|
4938
|
+
* Строки для карточек узкого экрана. Признак `#dataSourceVersion` пересчитывает список
|
|
4939
|
+
* при смене источника: CDK хранит его полем, а не сигналом.
|
|
4850
4940
|
*/
|
|
4851
4941
|
protected readonly cardRows: Signal<ReadonlyArray<TRow>>;
|
|
4852
|
-
/**
|
|
4853
|
-
* Поля авто-карточки: видимые колонки (кроме «…»-действий) с лейблом из
|
|
4854
|
-
* `columnsConfig` (fallback — ключ колонки) и cell-шаблоном из `cdkColumnDef`.
|
|
4855
|
-
* Колонки без cell-шаблона пропускаются.
|
|
4856
|
-
*/
|
|
4942
|
+
/** Поля авто-карточки узкого экрана: видимые колонки с подписью и шаблоном ячейки. */
|
|
4857
4943
|
protected readonly cardColumns: Signal<ReadonlyArray<IRtTableCardColumn<TRow>>>;
|
|
4858
4944
|
/** ContentChild template для кастом empty-placeholder'а. Опционален; fallback — emptyMessage. */
|
|
4859
4945
|
readonly emptyTemplate: Signal<TemplateRef<unknown> | undefined>;
|
|
@@ -4929,8 +5015,7 @@ declare class RtTableComponent<TRow> extends CdkTable<TRow> {
|
|
|
4929
5015
|
readonly canConfigure: Signal<boolean>;
|
|
4930
5016
|
/** Сколько skeleton-строк рендерить во время initial-load. Default 5. */
|
|
4931
5017
|
readonly skeletonRows: InputSignalWithTransform<number, NumberInput>;
|
|
4932
|
-
/**
|
|
4933
|
-
/** Пусто — берётся переведённая подпись по умолчанию */
|
|
5018
|
+
/** Подпись пустой таблицы; пусто — берётся переведённое умолчание. */
|
|
4934
5019
|
readonly emptyMessage: InputSignal<string>;
|
|
4935
5020
|
/** Своя подпись пустой таблицы важнее умолчания */
|
|
4936
5021
|
readonly emptyText: Signal<string>;
|
|
@@ -4938,13 +5023,8 @@ declare class RtTableComponent<TRow> extends CdkTable<TRow> {
|
|
|
4938
5023
|
readonly emptyIcon: InputSignal<IRtIcon.Name | null>;
|
|
4939
5024
|
/** Описание под заголовком дефолтного empty-placeholder'а. Опционально. */
|
|
4940
5025
|
readonly emptyDescription: InputSignal<string | null>;
|
|
4941
|
-
constructor();
|
|
4942
5026
|
ngOnInit(): void;
|
|
4943
5027
|
ngOnDestroy(): void;
|
|
4944
|
-
/**
|
|
4945
|
-
* Применяет новые настройки колонок (из панели настроек): порядок + скрытые.
|
|
4946
|
-
* Locked-колонки принудительно остаются видимыми (их ключи вычищаются из hidden).
|
|
4947
|
-
*/
|
|
4948
5028
|
/**
|
|
4949
5029
|
* Переключает порядок по колонке: по возрастанию → по убыванию → без сортировки.
|
|
4950
5030
|
* Выбранное состояние уходит наружу — выборку делает потребитель.
|
|
@@ -6129,5 +6209,5 @@ declare const RT_DESIGN_TOKEN_NAMES: readonly TRtDesignTokenName[];
|
|
|
6129
6209
|
/** Все ручки потребителя: значение приходит от приложения, до него работает запасное. */
|
|
6130
6210
|
declare const RT_CONSUMER_HANDLE_NAMES: readonly TRtConsumerHandleName[];
|
|
6131
6211
|
|
|
6132
|
-
export { BreakpointsService, CATEGORY_ORDER, ERtCalendarDayState, ERtChatMessageStatus, ERtMarkdownBlock, ERtMarkdownInline, ERtStorageKeys, IButton, ICON_CATEGORY_RULES, INotification, IRtAsideHeader, IRtAutocomplete, IRtBarList, IRtCalendar, IRtChat, IRtConfirmPopover, IRtDatePicker, IRtField, IRtFileCard, IRtFileDrop, IRtFileInput, IRtFilterControl, IRtIcon, IRtIconButton, IRtInput, IRtLogo, IRtMenu, IRtMessageComposer, IRtNightGrid, IRtPageHeader, IRtPagination, IRtPhotoViewer, IRtPopover, IRtSectionNav, IRtSelect, IRtSpinner, IRtSplitButton, IRtStatTile, IRtStepper, IRtTable, IRtTabs, IRtTag, IRtThemeToggle, IRtThreadList, IRtTimeline, IRtToaster, IRtToggleButtonGroup, IRtToggleSwitch, IRtTooltip, IRtWelcomeDialog, IRtWorkspace, IRtWorkspaceDetails, ITheme, MessageBus, NotificationBus, RT_ASIDE_DATA, RT_CONSUMER_HANDLE_NAMES, RT_COUNTER_DECREASE_KEY, RT_COUNTER_INCREASE_KEY, RT_DESIGN_TOKEN_NAMES, RT_DIALOG_DATA, RT_FIELD_DEFAULT_ERROR_KEYS, RT_FIELD_EMPTY_VALUE, RT_ICONS_BASE_URL, RT_ICON_SPRITE_ID, RT_ICON_SYMBOL_ID_PREFIX, RT_KIT_LABELS, RT_KIT_LABELS_EN, RT_KIT_LOCALE, RT_KIT_TRANSLATOR, RT_MENU_SELECT_EVENT, RT_TABLE_ROW_ACTIONS_COLUMN, RT_TOASTER_GAP_PX, RtAsideComponent, RtAsideFooterComponent, RtAsideHeaderComponent, RtAsideRef, RtAsideSectionComponent, RtAsideService, RtAutocompleteComponent, RtBarListComponent, RtBottomSheetComponent, RtButtonDirective, RtCalendarComponent, RtCardComponent, RtChatComponent, RtChatStatusLabelPipe, RtCheckboxComponent, RtCollapsibleTextComponent, RtConfirmDirective, RtConfirmPopoverComponent, RtContainerComponent, RtContainerContentDirective, RtContainerContentPanelDirective, RtContainerHeaderDirective, RtContainerLeftSidenavDirective, RtContainerLeftSidenavPanelDirective, RtContainerRightSidenavDirective, RtContainerRightSidenavPanelDirective, RtContainerStateService, RtContainerToolbarCenterDirective, RtContainerToolbarLeftDirective, RtContainerToolbarRightDirective, RtCopyCellComponent, RtCounterComponent, RtCounterRowComponent, RtDatePickerComponent, RtDayStampPipe, RtDeltaViewComponent, RtDetailListComponent, RtDetailRowComponent, RtDialogComponent, RtDialogFooterComponent, RtDialogHeaderComponent, RtDialogRef, RtDialogService, RtDownloadLinkComponent, RtEmptyStateComponent, RtFieldComponent, RtFieldHintDirective, RtFileCardComponent, RtFileDropComponent, RtFileInputComponent, RtFileListComponent, RtFilterControlComponent, RtFormControlBase, RtHeaderComponent, RtIconButtonComponent, RtIconComponent, RtIconRegistry, RtInfiniteScrollDirective, RtInfoItemComponent, RtInputComponent, RtInputNumberComponent, RtKitLabelPipe, RtLiveBadgeComponent, RtLogoComponent, RtMarkdownTextComponent, RtMenuComponent, RtMenuItemComponent, RtMessageComponent, RtMessageComposerComponent, RtMoneyListComponent, RtMoneyRowComponent, RtMultiselectComponent, RtNightGridComponent, RtNoteComponent, RtNotificationsBellComponent, RtPageHeaderComponent, RtPaginationComponent, RtPhotoViewerComponent, RtPopoverDirective, RtRichEditorComponent, RtRouteAsideComponent, RtRowHasActionsPipe, RtSectionNavComponent, RtSelectComponent, RtSkeletonComponent, RtSkeletonWrapperComponent, RtSpinnerComponent, RtSplitButtonComponent, RtStatTileComponent, RtStepperComponent, RtTabDirective, RtTableCardDirective, RtTableComponent, RtTableRowActionsDirective, RtTableRowDirective, RtTableSettingsAsideComponent, RtTableSettingsPanelComponent, RtTableSettingsRegistry, RtTableSortHeaderComponent, RtTabsComponent, RtTabsControlDirective, RtTagComponent, RtTextareaComponent, RtThemeToggleComponent, RtThreadListComponent, RtThreadListFiltersDirective, RtThreadListRowDirective, RtThreadListSearchDirective, RtTimelineComponent, RtToastComponent, RtToasterComponent, RtToggleButtonGroupComponent, RtToggleSwitchComponent, RtToolbarCenterDirective, RtToolbarComponent, RtToolbarLeftDirective, RtToolbarRightDirective, RtTooltipComponent, RtTooltipDirective, RtTruncateMiddlePipe, RtWelcomeDialogComponent, RtWorkspaceAsideDirective, RtWorkspaceCenterDirective, RtWorkspaceComponent, RtWorkspaceDesktopOnlyDirective, RtWorkspaceDetailsComponent, RtWorkspaceListDirective, SEARCH_DEBOUNCE_MS, ThemeService, ariaSortOf, breakNode, categoryOf, coerceQuillDeltaOutput, deliveryStatus, deriveFileTitle, fileNameFromUrl, formatFileSize, getFileTypeIcon, iconsName, indexFromParam, indexFromScroll, isColumnSortable, nextPhotoIndex, nextSort, normalizeQuillDelta, paramFromIndex, parseInline, parseMarkdown, pendingToRtMessage, provideRtIcons, provideRtKitLabels, rowHasAvailableActions, rtAsideUnsavedGuard, rtKitLabel, searchDebounce, shouldRenderPhoto, sortDirectionOf, toRtMessage };
|
|
6133
|
-
export type { IMessageBusEvent, IQuillDelta, IQuillDeltaAttributes, IQuillDeltaOp, IRtAsideConfig, IRtDialogConfig, IRtMappableMessage, IRtMarkdownBlockNode, IRtMarkdownInlineNode, IRtMarkdownListItem, IRtPendingMessage, IRtPicture, IRtPictureSource, IRtTableCardContext, IRtTableRowActionsContext, IRtTableSettingsRegistration, IToRtMessageOptions, TIconCategory, TRtAsideContentLayout, TRtAsidePosition, TRtAsideSize, TRtConsumerHandleName, TRtDesignTokenName, TRtDialogSize, TRtKitLabelKey, TRtKitLabelMap, TRtKitLabelParams, TRtKitTranslator, TRtRichEditorToolbar, TRtSkeletonRadius, TRtSkeletonShape, TRtSkeletonSize, TRtTableAriaSort, TRtTextareaResize };
|
|
6212
|
+
export { BreakpointsService, CATEGORY_ORDER, ERtCalendarDayState, ERtChatMessageStatus, ERtMarkdownBlock, ERtMarkdownInline, ERtStorageKeys, IButton, ICON_CATEGORY_RULES, INotification, IRtAsideHeader, IRtAutocomplete, IRtBarList, IRtCalendar, IRtChat, IRtConfirmPopover, IRtDatePicker, IRtField, IRtFileCard, IRtFileDrop, IRtFileInput, IRtFilterControl, IRtIcon, IRtIconButton, IRtInput, IRtLogo, IRtMenu, IRtMessageComposer, IRtNightGrid, IRtPageHeader, IRtPagination, IRtPhotoViewer, IRtPopover, IRtSectionNav, IRtSelect, IRtSpinner, IRtSplitButton, IRtStatTile, IRtStepper, IRtTable, IRtTabs, IRtTag, IRtThemeToggle, IRtThreadList, IRtTimeline, IRtToaster, IRtToggleButtonGroup, IRtToggleSwitch, IRtTooltip, IRtWelcomeDialog, IRtWorkspace, IRtWorkspaceDetails, ITheme, MessageBus, NotificationBus, RT_ASIDE_DATA, RT_CONSUMER_HANDLE_NAMES, RT_COUNTER_DECREASE_KEY, RT_COUNTER_INCREASE_KEY, RT_DESIGN_TOKEN_NAMES, RT_DIALOG_DATA, RT_FIELD_DEFAULT_ERROR_KEYS, RT_FIELD_EMPTY_VALUE, RT_ICONS_BASE_URL, RT_ICON_SPRITE_ID, RT_ICON_SYMBOL_ID_PREFIX, RT_KIT_LABELS, RT_KIT_LABELS_EN, RT_KIT_LOCALE, RT_KIT_TRANSLATOR, RT_MENU_SELECT_EVENT, RT_TABLE_ROW_ACTIONS_COLUMN, RT_TOASTER_GAP_PX, RtAsideComponent, RtAsideFooterComponent, RtAsideHeaderComponent, RtAsideRef, RtAsideSectionComponent, RtAsideService, RtAutocompleteComponent, RtBarListComponent, RtBottomSheetComponent, RtButtonDirective, RtCalendarComponent, RtCardComponent, RtChatComponent, RtChatMessageActionsDirective, RtChatMessageHasActionsPipe, RtChatStatusLabelPipe, RtCheckboxComponent, RtCollapsibleTextComponent, RtConfirmDirective, RtConfirmPopoverComponent, RtContainerComponent, RtContainerContentDirective, RtContainerContentPanelDirective, RtContainerHeaderDirective, RtContainerLeftSidenavDirective, RtContainerLeftSidenavPanelDirective, RtContainerRightSidenavDirective, RtContainerRightSidenavPanelDirective, RtContainerStateService, RtContainerToolbarCenterDirective, RtContainerToolbarLeftDirective, RtContainerToolbarRightDirective, RtCopyCellComponent, RtCounterComponent, RtCounterRowComponent, RtDatePickerComponent, RtDayStampPipe, RtDeltaViewComponent, RtDetailListComponent, RtDetailRowComponent, RtDialogComponent, RtDialogFooterComponent, RtDialogHeaderComponent, RtDialogRef, RtDialogService, RtDownloadLinkComponent, RtEmptyStateComponent, RtFieldComponent, RtFieldHintDirective, RtFileCardComponent, RtFileDropComponent, RtFileInputComponent, RtFileListComponent, RtFilterControlComponent, RtFormControlBase, RtHeaderComponent, RtIconButtonComponent, RtIconComponent, RtIconRegistry, RtInfiniteScrollDirective, RtInfoItemComponent, RtInputComponent, RtInputNumberComponent, RtKitLabelPipe, RtLiveBadgeComponent, RtLogoComponent, RtMarkdownTextComponent, RtMenuComponent, RtMenuItemComponent, RtMessageComponent, RtMessageComposerComponent, RtMoneyListComponent, RtMoneyRowComponent, RtMultiselectComponent, RtNightGridComponent, RtNoteComponent, RtNotificationsBellComponent, RtPageHeaderComponent, RtPaginationComponent, RtPhotoViewerComponent, RtPopoverDirective, RtRichEditorComponent, RtRouteAsideComponent, RtRowHasActionsPipe, RtSectionNavComponent, RtSelectComponent, RtSkeletonComponent, RtSkeletonWrapperComponent, RtSpinnerComponent, RtSplitButtonComponent, RtStatTileComponent, RtStepperComponent, RtTabDirective, RtTableCardDirective, RtTableComponent, RtTableRowActionsDirective, RtTableRowDirective, RtTableSettingsAsideComponent, RtTableSettingsPanelComponent, RtTableSettingsRegistry, RtTableSortHeaderComponent, RtTabsComponent, RtTabsControlDirective, RtTagComponent, RtTextareaComponent, RtThemeToggleComponent, RtThreadListComponent, RtThreadListFiltersDirective, RtThreadListRowDirective, RtThreadListSearchDirective, RtTimelineComponent, RtToastComponent, RtToasterComponent, RtToggleButtonGroupComponent, RtToggleSwitchComponent, RtToolbarCenterDirective, RtToolbarComponent, RtToolbarLeftDirective, RtToolbarRightDirective, RtTooltipComponent, RtTooltipDirective, RtTruncateMiddlePipe, RtWelcomeDialogComponent, RtWorkspaceAsideDirective, RtWorkspaceCenterDirective, RtWorkspaceComponent, RtWorkspaceDesktopOnlyDirective, RtWorkspaceDetailsComponent, RtWorkspaceListDirective, SEARCH_DEBOUNCE_MS, ThemeService, ariaSortOf, breakNode, categoryOf, coerceQuillDeltaOutput, defaultColumnItems, deliveryStatus, deriveFileTitle, displayedColumnKeys, fileNameFromUrl, formatFileSize, getFileTypeIcon, iconsName, indexFromParam, indexFromScroll, isColumnSortable, messageHasAvailableActions, nextPhotoIndex, nextSort, normalizeQuillDelta, paramFromIndex, parseInline, parseMarkdown, pendingToRtMessage, provideRtIcons, provideRtKitLabels, resolveColumns, rowHasAvailableActions, rtAsideUnsavedGuard, rtKitLabel, searchDebounce, shouldRenderPhoto, sortDirectionOf, toRtMessage, withoutLockedHidden };
|
|
6213
|
+
export type { IMessageBusEvent, IQuillDelta, IQuillDeltaAttributes, IQuillDeltaOp, IRtAsideConfig, IRtChatMessageActionsContext, IRtDialogConfig, IRtMappableMessage, IRtMarkdownBlockNode, IRtMarkdownInlineNode, IRtMarkdownListItem, IRtPendingMessage, IRtPicture, IRtPictureSource, IRtTableCardContext, IRtTableRowActionsContext, IRtTableSettingsRegistration, IToRtMessageOptions, TIconCategory, TRtAsideContentLayout, TRtAsidePosition, TRtAsideSize, TRtConsumerHandleName, TRtDesignTokenName, TRtDialogSize, TRtKitLabelKey, TRtKitLabelMap, TRtKitLabelParams, TRtKitTranslator, TRtRichEditorToolbar, TRtSkeletonRadius, TRtSkeletonShape, TRtSkeletonSize, TRtTableAriaSort, TRtTextareaResize };
|
|
Binary file
|