@rt-tools/ui-kit-v2 0.39.2 → 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-rich-editor.mjs +111 -35
- package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs.map +1 -1
- package/package.json +1 -1
- package/src/rich-editor/lib/components/chat/CONTEXT.md +5 -0
- package/types/rt-tools-ui-kit-v2-ai-prompt-input.d.ts +4 -0
- package/types/rt-tools-ui-kit-v2-rich-editor.d.ts +13 -1
package/package.json
CHANGED
|
@@ -44,6 +44,11 @@ rtChatMessageActions let-message>` рисуется в меню «…» у ре
|
|
|
44
44
|
Что печатает вторая сторона, показывает `typingText`: плашка стоит поверх низа ленты и места не
|
|
45
45
|
занимает, пустая строка её прячет. Текст и перевод даёт приложение.
|
|
46
46
|
|
|
47
|
+
**Готовый текст подставляет метод `setDraft`.** Он заменяет черновик во всех трёх полях ответа и
|
|
48
|
+
ставит курсор в конец. Файлы остаются, сигнала набора нет, закрытое поле текст не принимает.
|
|
49
|
+
Работу метода показывает история `QuickReplies` страницы переписки: кнопка у поля ответа и
|
|
50
|
+
подсказка в боковой панели ставят текст в поле, гостю ничего не уходит.
|
|
51
|
+
|
|
47
52
|
**Удалённое сообщение остаётся в ленте** отдельной пометкой вместо текста: иначе непонятно, на
|
|
48
53
|
что отвечали соседние реплики.
|
|
49
54
|
|
|
@@ -18,6 +18,8 @@ export declare namespace IRtAiPromptInput {
|
|
|
18
18
|
}
|
|
19
19
|
/** Можно ли отправить: есть непустой текст или файл, поле свободно. */
|
|
20
20
|
export declare function rtPromptCanSend(text: string, files: number, busy: boolean): boolean;
|
|
21
|
+
/** Ставит фокус в поле, а курсор — за последний символ. */
|
|
22
|
+
export declare function rtCaretToEnd(node: HTMLTextAreaElement): void;
|
|
21
23
|
/**
|
|
22
24
|
* Поле ввода ИИ-чата: одна рамка, текст сверху, ряд действий внутри рамки снизу.
|
|
23
25
|
*
|
|
@@ -102,6 +104,8 @@ export declare class RtAiPromptInputComponent {
|
|
|
102
104
|
readonly controlPicked: OutputEmitterRef<IRtAiPromptInput.Control>;
|
|
103
105
|
/** Ставит фокус в поле. */
|
|
104
106
|
focus(): void;
|
|
107
|
+
/** Заменяет черновик и ставит курсор в конец: значение пишется в узел сразу, не ждёт отрисовки. */
|
|
108
|
+
setDraft(text: string): void;
|
|
105
109
|
protected onInput(event: Event): void;
|
|
106
110
|
protected onKeydown(event: KeyboardEvent): void;
|
|
107
111
|
protected pick(control: IRtAiPromptInput.Control): void;
|
|
@@ -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`. */
|