@rt-tools/ui-kit-v2 0.19.1 → 0.20.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-core.mjs +18 -0
- package/fesm2022/rt-tools-ui-kit-v2-core.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs +129 -18
- package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-empty-state.mjs +2 -2
- package/fesm2022/rt-tools-ui-kit-v2-empty-state.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-icon.mjs +14 -8
- package/fesm2022/rt-tools-ui-kit-v2-icon.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs +4 -3
- package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-input.mjs +4 -3
- package/fesm2022/rt-tools-ui-kit-v2-input.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs +9 -4
- package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs +15 -9
- package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs.map +1 -1
- package/package.json +1 -1
- package/rt-tools-ui-kit-v2-0.20.0.tgz +0 -0
- package/src/lib/components/dynamic-selector/CONTEXT.md +24 -3
- package/src/lib/components/dynamic-selector/dynamic-input/rt-dynamic-input.component.scss +4 -5
- package/src/lib/components/dynamic-selector/list/rt-dynamic-selector-list.component.scss +50 -6
- package/src/lib/components/dynamic-selector/popup/rt-dynamic-selector-popup-options.scss +108 -0
- package/src/lib/components/dynamic-selector/popup/rt-dynamic-selector-popup.component.scss +28 -23
- package/src/lib/components/dynamic-selector/rt-dynamic-selector.component.scss +4 -5
- package/src/lib/components/empty-state/CONTEXT.md +3 -1
- package/src/lib/components/empty-state/rt-empty-state.component.scss +9 -5
- package/src/lib/components/input/rt-input.component.scss +17 -0
- package/src/lib/components/input-number/rt-input-number.component.scss +15 -0
- package/src/lib/components/thread-list/CONTEXT.md +3 -1
- package/src/rich-editor/lib/components/ai-chat/CONTEXT.md +2 -0
- package/types/rt-tools-ui-kit-v2-core.d.ts +69 -4
- package/types/rt-tools-ui-kit-v2-dynamic-selector.d.ts +45 -3
- package/types/rt-tools-ui-kit-v2-icon.d.ts +3 -1
- package/types/rt-tools-ui-kit-v2-rich-editor.d.ts +4 -2
- package/types/rt-tools-ui-kit-v2-thread-list.d.ts +13 -8
- package/rt-tools-ui-kit-v2-0.19.1.tgz +0 -0
|
@@ -13,16 +13,25 @@ declare namespace IRtDynamicSelector {
|
|
|
13
13
|
type SelectAllState = 'none' | 'some' | 'all';
|
|
14
14
|
/** Как выбирает всплывающий список: один пункт переключателем или несколько флажками. */
|
|
15
15
|
type Mode = 'single' | 'multi';
|
|
16
|
+
/** Регистр подписи кнопки: как есть, каждое слово с заглавной или вся заглавными. */
|
|
17
|
+
type LabelCase = 'none' | 'title' | 'upper';
|
|
16
18
|
/** Строки всплывающего выбора: отмеченные раньше над разделителем и найденные под ним. */
|
|
17
19
|
interface PopupRows<T> {
|
|
18
20
|
readonly ticked: ReadonlyArray<T>;
|
|
19
21
|
readonly found: ReadonlyArray<T>;
|
|
20
22
|
}
|
|
23
|
+
/** Кусок подписи пункта: совпал ли он со словом поиска. */
|
|
24
|
+
interface MatchPart {
|
|
25
|
+
readonly text: string;
|
|
26
|
+
readonly matched: boolean;
|
|
27
|
+
}
|
|
21
28
|
/** Строка всплывающего выбора, готовая для разметки. */
|
|
22
29
|
interface PopupRow<T> {
|
|
23
30
|
readonly entity: T;
|
|
24
31
|
readonly key: unknown;
|
|
25
32
|
readonly label: string;
|
|
33
|
+
/** Подпись по кускам; без подсветки поиска — один кусок без отметки. */
|
|
34
|
+
readonly parts: ReadonlyArray<MatchPart>;
|
|
26
35
|
readonly ticked: boolean;
|
|
27
36
|
/** Под строкой стоит разделитель. */
|
|
28
37
|
readonly separated: boolean;
|
|
@@ -233,6 +242,7 @@ declare const RT_DYNAMIC_SELECTOR_SEARCH_DEBOUNCE: number;
|
|
|
233
242
|
declare class RtDynamicSelectorPopupComponent<TEntity extends object> implements OnInit {
|
|
234
243
|
#private;
|
|
235
244
|
protected readonly searchLabel: Signal<string>;
|
|
245
|
+
protected readonly searchField: Signal<ElementRef<HTMLElement> | undefined>;
|
|
236
246
|
protected readonly selectAllLabel: Signal<string>;
|
|
237
247
|
protected readonly multiLabel: Signal<string>;
|
|
238
248
|
protected readonly multiHintLabel: Signal<string>;
|
|
@@ -240,9 +250,13 @@ declare class RtDynamicSelectorPopupComponent<TEntity extends object> implements
|
|
|
240
250
|
/** Подпись пустого результата: своя у приложения, иначе словарь кита. */
|
|
241
251
|
protected readonly emptyText: Signal<string>;
|
|
242
252
|
protected readonly cancelLabel: Signal<string>;
|
|
243
|
-
protected readonly
|
|
253
|
+
protected readonly applyKitLabel: Signal<string>;
|
|
254
|
+
/** Подпись кнопки применения: своя у приложения, иначе словарь кита, — в заданном регистре. */
|
|
255
|
+
protected readonly applyText: Signal<string>;
|
|
244
256
|
/** Отмеченные ключи — ещё не применённые. */
|
|
245
257
|
protected readonly ticked: WritableSignal<unknown[]>;
|
|
258
|
+
/** Отметки на минуту последней смены запроса: только они стоят над разделителем, отмеченное потом — на месте. */
|
|
259
|
+
protected readonly raised: WritableSignal<unknown[]>;
|
|
246
260
|
protected readonly query: WritableSignal<string>;
|
|
247
261
|
/** Выбор нескольких включён: без него простое нажатие оставляет одну отметку. */
|
|
248
262
|
protected readonly isMultiOn: WritableSignal<boolean>;
|
|
@@ -252,6 +266,8 @@ declare class RtDynamicSelectorPopupComponent<TEntity extends object> implements
|
|
|
252
266
|
protected readonly visibleKeys: Signal<unknown[]>;
|
|
253
267
|
/** Строки для разметки: отмеченные раньше над разделителем, найденные — под ним. */
|
|
254
268
|
protected readonly rowItems: Signal<IRtDynamicSelector.PopupRow<TEntity>[]>;
|
|
269
|
+
/** Подпись выбора одной записи рисует окно, а не кнопка: без переноса и при подсветке поиска. */
|
|
270
|
+
protected readonly ownLabel: Signal<boolean>;
|
|
255
271
|
protected readonly hasRows: Signal<boolean>;
|
|
256
272
|
protected readonly selectAllState: Signal<IRtDynamicSelector.SelectAllState>;
|
|
257
273
|
protected readonly isSingle: Signal<boolean>;
|
|
@@ -264,6 +280,8 @@ declare class RtDynamicSelectorPopupComponent<TEntity extends object> implements
|
|
|
264
280
|
readonly entities: InputSignal<ReadonlyArray<TEntity>>;
|
|
265
281
|
readonly keyExp: InputSignal<keyof TEntity & string>;
|
|
266
282
|
readonly displayExp: InputSignal<keyof TEntity & string>;
|
|
283
|
+
/** Подпись записи для строки, пункта окна и поиска; не задана — поле `displayExp`. */
|
|
284
|
+
readonly displayWith: InputSignal<((entity: TEntity) => string) | null>;
|
|
267
285
|
readonly mode: InputSignal<IRtDynamicSelector.Mode>;
|
|
268
286
|
readonly multiToggleShown: InputSignalWithTransform<boolean, unknown>;
|
|
269
287
|
readonly selectAllShown: InputSignalWithTransform<boolean, unknown>;
|
|
@@ -278,8 +296,20 @@ declare class RtDynamicSelectorPopupComponent<TEntity extends object> implements
|
|
|
278
296
|
readonly searchTerm: InputSignal<string>;
|
|
279
297
|
/** Вид поля поиска — тот же вход, что у поля кита. */
|
|
280
298
|
readonly searchAppearance: InputSignal<IRtInput.Appearance>;
|
|
299
|
+
/** Шаг скругления поля поиска; null — скругление самого поля. */
|
|
300
|
+
readonly searchRadius: InputSignal<TRtRadius | null>;
|
|
281
301
|
/** Подпись пустого результата поиска; пустая строка оставляет подпись кита. */
|
|
282
302
|
readonly emptyResultsText: InputSignal<string>;
|
|
303
|
+
/** Подпись кнопки применения; пустая строка оставляет подпись кита. */
|
|
304
|
+
readonly applyLabel: InputSignal<string>;
|
|
305
|
+
/** Регистр подписи кнопки применения; `none` оставляет её как есть. */
|
|
306
|
+
readonly applyLabelCase: InputSignal<IRtDynamicSelector.LabelCase>;
|
|
307
|
+
/** Поле поиска получает фокус при открытии окна; по умолчанию фокус остаётся там, где был. */
|
|
308
|
+
readonly autofocusSearch: InputSignalWithTransform<boolean, unknown>;
|
|
309
|
+
/** Подпись пункта переносится; `false` ведёт её одной строкой с многоточием и подсказкой при обрезке. */
|
|
310
|
+
readonly titleWrap: InputSignalWithTransform<boolean, unknown>;
|
|
311
|
+
/** Символы подписи пункта, совпавшие со словами поиска, выделены. */
|
|
312
|
+
readonly highlightSearch: InputSignalWithTransform<boolean, unknown>;
|
|
283
313
|
/** Применённые ключи в порядке отметок. */
|
|
284
314
|
readonly applied: OutputEmitterRef<unknown[]>;
|
|
285
315
|
readonly cancelled: OutputEmitterRef<void>;
|
|
@@ -298,7 +328,7 @@ declare class RtDynamicSelectorPopupComponent<TEntity extends object> implements
|
|
|
298
328
|
protected onApply(): void;
|
|
299
329
|
protected onCancel(): void;
|
|
300
330
|
static ɵfac: i0.ɵɵFactoryDeclaration<RtDynamicSelectorPopupComponent<any>, never>;
|
|
301
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<RtDynamicSelectorPopupComponent<any>, "rt-dynamic-selector-popup", never, { "entities": { "alias": "entities"; "required": false; "isSignal": true; }; "keyExp": { "alias": "keyExp"; "required": true; "isSignal": true; }; "displayExp": { "alias": "displayExp"; "required": true; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "multiToggleShown": { "alias": "multiToggleShown"; "required": false; "isSignal": true; }; "selectAllShown": { "alias": "selectAllShown"; "required": false; "isSignal": true; }; "localSearch": { "alias": "localSearch"; "required": false; "isSignal": true; }; "lazyLoad": { "alias": "lazyLoad"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "fetching": { "alias": "fetching"; "required": false; "isSignal": true; }; "pinnedKeys": { "alias": "pinnedKeys"; "required": false; "isSignal": true; }; "navigateTitle": { "alias": "navigateTitle"; "required": false; "isSignal": true; }; "navigateLink": { "alias": "navigateLink"; "required": false; "isSignal": true; }; "searchTerm": { "alias": "searchTerm"; "required": false; "isSignal": true; }; "searchAppearance": { "alias": "searchAppearance"; "required": false; "isSignal": true; }; "emptyResultsText": { "alias": "emptyResultsText"; "required": false; "isSignal": true; }; }, { "applied": "applied"; "cancelled": "cancelled"; "searchChange": "searchChange"; "loadMore": "loadMore"; "temporaryChoiceChange": "temporaryChoiceChange"; }, never, never, true, never>;
|
|
331
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtDynamicSelectorPopupComponent<any>, "rt-dynamic-selector-popup", never, { "entities": { "alias": "entities"; "required": false; "isSignal": true; }; "keyExp": { "alias": "keyExp"; "required": true; "isSignal": true; }; "displayExp": { "alias": "displayExp"; "required": true; "isSignal": true; }; "displayWith": { "alias": "displayWith"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "multiToggleShown": { "alias": "multiToggleShown"; "required": false; "isSignal": true; }; "selectAllShown": { "alias": "selectAllShown"; "required": false; "isSignal": true; }; "localSearch": { "alias": "localSearch"; "required": false; "isSignal": true; }; "lazyLoad": { "alias": "lazyLoad"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "fetching": { "alias": "fetching"; "required": false; "isSignal": true; }; "pinnedKeys": { "alias": "pinnedKeys"; "required": false; "isSignal": true; }; "navigateTitle": { "alias": "navigateTitle"; "required": false; "isSignal": true; }; "navigateLink": { "alias": "navigateLink"; "required": false; "isSignal": true; }; "searchTerm": { "alias": "searchTerm"; "required": false; "isSignal": true; }; "searchAppearance": { "alias": "searchAppearance"; "required": false; "isSignal": true; }; "searchRadius": { "alias": "searchRadius"; "required": false; "isSignal": true; }; "emptyResultsText": { "alias": "emptyResultsText"; "required": false; "isSignal": true; }; "applyLabel": { "alias": "applyLabel"; "required": false; "isSignal": true; }; "applyLabelCase": { "alias": "applyLabelCase"; "required": false; "isSignal": true; }; "autofocusSearch": { "alias": "autofocusSearch"; "required": false; "isSignal": true; }; "titleWrap": { "alias": "titleWrap"; "required": false; "isSignal": true; }; "highlightSearch": { "alias": "highlightSearch"; "required": false; "isSignal": true; }; }, { "applied": "applied"; "cancelled": "cancelled"; "searchChange": "searchChange"; "loadMore": "loadMore"; "temporaryChoiceChange": "temporaryChoiceChange"; }, never, never, true, never>;
|
|
302
332
|
}
|
|
303
333
|
|
|
304
334
|
/**
|
|
@@ -340,6 +370,8 @@ declare class RtDynamicSelectorComponent<TEntity extends object> extends RtFormC
|
|
|
340
370
|
readonly entities: InputSignal<ReadonlyArray<TEntity>>;
|
|
341
371
|
readonly keyExp: InputSignal<keyof TEntity & string>;
|
|
342
372
|
readonly displayExp: InputSignal<keyof TEntity & string>;
|
|
373
|
+
/** Подпись записи для строки, пункта окна и поиска; не задана — поле `displayExp`. */
|
|
374
|
+
readonly displayWith: InputSignal<((entity: TEntity) => string) | null>;
|
|
343
375
|
readonly mode: InputSignal<IRtDynamicSelector.Mode>;
|
|
344
376
|
/** Название кнопки добавления; пустое — «Add» из словаря кита. */
|
|
345
377
|
readonly buttonTitle: InputSignal<string>;
|
|
@@ -378,8 +410,18 @@ declare class RtDynamicSelectorComponent<TEntity extends object> extends RtFormC
|
|
|
378
410
|
readonly titleWrap: InputSignalWithTransform<boolean, unknown>;
|
|
379
411
|
/** Вид поля поиска в окне выбора. */
|
|
380
412
|
readonly searchAppearance: InputSignal<IRtInput.Appearance>;
|
|
413
|
+
/** Шаг скругления поля поиска в окне выбора; null — скругление самого поля. */
|
|
414
|
+
readonly searchRadius: InputSignal<TRtRadius | null>;
|
|
415
|
+
/** Символы подписи пункта окна выбора, совпавшие со словами поиска, выделены. */
|
|
416
|
+
readonly highlightSearch: InputSignalWithTransform<boolean, unknown>;
|
|
381
417
|
/** Подпись пустого результата поиска; пустая строка оставляет подпись кита. */
|
|
382
418
|
readonly emptyResultsText: InputSignal<string>;
|
|
419
|
+
/** Подпись кнопки применения в окне выбора; пустая строка оставляет подпись кита. */
|
|
420
|
+
readonly applyLabel: InputSignal<string>;
|
|
421
|
+
/** Регистр подписи кнопки применения; `none` оставляет её как есть. */
|
|
422
|
+
readonly applyLabelCase: InputSignal<IRtDynamicSelector.LabelCase>;
|
|
423
|
+
/** Поле поиска получает фокус при открытии окна выбора. */
|
|
424
|
+
readonly autofocusSearch: InputSignalWithTransform<boolean, unknown>;
|
|
383
425
|
readonly multiToggleShown: InputSignalWithTransform<boolean, unknown>;
|
|
384
426
|
readonly selectAllShown: InputSignalWithTransform<boolean, unknown>;
|
|
385
427
|
readonly localSearch: InputSignalWithTransform<boolean, unknown>;
|
|
@@ -417,7 +459,7 @@ declare class RtDynamicSelectorComponent<TEntity extends object> extends RtFormC
|
|
|
417
459
|
protected getEmptyValue(): unknown[];
|
|
418
460
|
protected focusAfterClear(): void;
|
|
419
461
|
static ɵfac: i0.ɵɵFactoryDeclaration<RtDynamicSelectorComponent<any>, never>;
|
|
420
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<RtDynamicSelectorComponent<any>, "rt-dynamic-selector", never, { "entities": { "alias": "entities"; "required": false; "isSignal": true; }; "keyExp": { "alias": "keyExp"; "required": true; "isSignal": true; }; "displayExp": { "alias": "displayExp"; "required": true; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "buttonTitle": { "alias": "buttonTitle"; "required": false; "isSignal": true; }; "addShown": { "alias": "addShown"; "required": false; "isSignal": true; }; "removeShown": { "alias": "removeShown"; "required": false; "isSignal": true; }; "listActionsShown": { "alias": "listActionsShown"; "required": false; "isSignal": true; }; "extraChanged": { "alias": "extraChanged"; "required": false; "isSignal": true; }; "searchTerm": { "alias": "searchTerm"; "required": false; "isSignal": true; }; "readonlyKeys": { "alias": "readonlyKeys"; "required": false; "isSignal": true; }; "pinnedKeys": { "alias": "pinnedKeys"; "required": false; "isSignal": true; }; "draggable": { "alias": "draggable"; "required": false; "isSignal": true; }; "buttonRadius": { "alias": "buttonRadius"; "required": false; "isSignal": true; }; "invitation": { "alias": "invitation"; "required": false; "isSignal": true; }; "invitationIcon": { "alias": "invitationIcon"; "required": false; "isSignal": true; }; "invitationGlyph": { "alias": "invitationGlyph"; "required": false; "isSignal": true; }; "invitationDescription": { "alias": "invitationDescription"; "required": false; "isSignal": true; }; "invitationButtonIcon": { "alias": "invitationButtonIcon"; "required": false; "isSignal": true; }; "invitationButtonAppearance": { "alias": "invitationButtonAppearance"; "required": false; "isSignal": true; }; "clearIcon": { "alias": "clearIcon"; "required": false; "isSignal": true; }; "titleWrap": { "alias": "titleWrap"; "required": false; "isSignal": true; }; "searchAppearance": { "alias": "searchAppearance"; "required": false; "isSignal": true; }; "emptyResultsText": { "alias": "emptyResultsText"; "required": false; "isSignal": true; }; "multiToggleShown": { "alias": "multiToggleShown"; "required": false; "isSignal": true; }; "selectAllShown": { "alias": "selectAllShown"; "required": false; "isSignal": true; }; "localSearch": { "alias": "localSearch"; "required": false; "isSignal": true; }; "lazyLoad": { "alias": "lazyLoad"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "fetching": { "alias": "fetching"; "required": false; "isSignal": true; }; "navigateTitle": { "alias": "navigateTitle"; "required": false; "isSignal": true; }; "navigateLink": { "alias": "navigateLink"; "required": false; "isSignal": true; }; "sortFn": { "alias": "sortFn"; "required": false; "isSignal": true; }; "chosenEntities": { "alias": "chosenEntities"; "required": false; "isSignal": true; }; }, { "chosenEntities": "chosenEntitiesChange"; "selectionChange": "selectionChange"; "listReset": "listReset"; "listCleared": "listCleared"; "popupOpenChange": "popupOpenChange"; "searchChange": "searchChange"; "loadMore": "loadMore"; "temporaryChoiceChange": "temporaryChoiceChange"; }, ["rowTitle", "rowControls"], never, true, never>;
|
|
462
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtDynamicSelectorComponent<any>, "rt-dynamic-selector", never, { "entities": { "alias": "entities"; "required": false; "isSignal": true; }; "keyExp": { "alias": "keyExp"; "required": true; "isSignal": true; }; "displayExp": { "alias": "displayExp"; "required": true; "isSignal": true; }; "displayWith": { "alias": "displayWith"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "buttonTitle": { "alias": "buttonTitle"; "required": false; "isSignal": true; }; "addShown": { "alias": "addShown"; "required": false; "isSignal": true; }; "removeShown": { "alias": "removeShown"; "required": false; "isSignal": true; }; "listActionsShown": { "alias": "listActionsShown"; "required": false; "isSignal": true; }; "extraChanged": { "alias": "extraChanged"; "required": false; "isSignal": true; }; "searchTerm": { "alias": "searchTerm"; "required": false; "isSignal": true; }; "readonlyKeys": { "alias": "readonlyKeys"; "required": false; "isSignal": true; }; "pinnedKeys": { "alias": "pinnedKeys"; "required": false; "isSignal": true; }; "draggable": { "alias": "draggable"; "required": false; "isSignal": true; }; "buttonRadius": { "alias": "buttonRadius"; "required": false; "isSignal": true; }; "invitation": { "alias": "invitation"; "required": false; "isSignal": true; }; "invitationIcon": { "alias": "invitationIcon"; "required": false; "isSignal": true; }; "invitationGlyph": { "alias": "invitationGlyph"; "required": false; "isSignal": true; }; "invitationDescription": { "alias": "invitationDescription"; "required": false; "isSignal": true; }; "invitationButtonIcon": { "alias": "invitationButtonIcon"; "required": false; "isSignal": true; }; "invitationButtonAppearance": { "alias": "invitationButtonAppearance"; "required": false; "isSignal": true; }; "clearIcon": { "alias": "clearIcon"; "required": false; "isSignal": true; }; "titleWrap": { "alias": "titleWrap"; "required": false; "isSignal": true; }; "searchAppearance": { "alias": "searchAppearance"; "required": false; "isSignal": true; }; "searchRadius": { "alias": "searchRadius"; "required": false; "isSignal": true; }; "highlightSearch": { "alias": "highlightSearch"; "required": false; "isSignal": true; }; "emptyResultsText": { "alias": "emptyResultsText"; "required": false; "isSignal": true; }; "applyLabel": { "alias": "applyLabel"; "required": false; "isSignal": true; }; "applyLabelCase": { "alias": "applyLabelCase"; "required": false; "isSignal": true; }; "autofocusSearch": { "alias": "autofocusSearch"; "required": false; "isSignal": true; }; "multiToggleShown": { "alias": "multiToggleShown"; "required": false; "isSignal": true; }; "selectAllShown": { "alias": "selectAllShown"; "required": false; "isSignal": true; }; "localSearch": { "alias": "localSearch"; "required": false; "isSignal": true; }; "lazyLoad": { "alias": "lazyLoad"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "fetching": { "alias": "fetching"; "required": false; "isSignal": true; }; "navigateTitle": { "alias": "navigateTitle"; "required": false; "isSignal": true; }; "navigateLink": { "alias": "navigateLink"; "required": false; "isSignal": true; }; "sortFn": { "alias": "sortFn"; "required": false; "isSignal": true; }; "chosenEntities": { "alias": "chosenEntities"; "required": false; "isSignal": true; }; }, { "chosenEntities": "chosenEntitiesChange"; "selectionChange": "selectionChange"; "listReset": "listReset"; "listCleared": "listCleared"; "popupOpenChange": "popupOpenChange"; "searchChange": "searchChange"; "loadMore": "loadMore"; "temporaryChoiceChange": "temporaryChoiceChange"; }, ["rowTitle", "rowControls"], never, true, never>;
|
|
421
463
|
}
|
|
422
464
|
|
|
423
465
|
export { IRtDynamicSelector, RT_DYNAMIC_SELECTOR_SEARCH_DEBOUNCE, RtDynamicInputComponent, RtDynamicSelectorComponent, RtDynamicSelectorListComponent, RtDynamicSelectorPopupComponent, RtDynamicSelectorRowControlsDirective, RtDynamicSelectorRowTitleDirective };
|
|
@@ -64,7 +64,9 @@ declare function materialPairOf(glyph: string | null | undefined): IRtIcon.Name
|
|
|
64
64
|
* Чем рисуется значок: своим рисунком кита или лигатурой шрифта Material.
|
|
65
65
|
*
|
|
66
66
|
* Имя кита выигрывает у имени Material, если названы оба. Имя Material по способу `map-first`
|
|
67
|
-
* берёт пару из перечня, а без пары — шрифт; по способу `font` — шрифт сразу.
|
|
67
|
+
* берёт пару из перечня, а без пары — шрифт; по способу `font` — шрифт сразу. Имя кита, которое шрифт
|
|
68
|
+
* нарисовать не может (`ico-plus`, `docBox`), и по способу `font` рисуется рисунком кита: иначе в
|
|
69
|
+
* значке стоит текст имени. Имя кита, совпавшее с лигатурой (`search`), по `font` — шрифт. Материальный рисунок
|
|
68
70
|
* для пары выбирает уже сам значок по признаку набора над собой: это не дело разбора.
|
|
69
71
|
*
|
|
70
72
|
* `null` — значку нечего рисовать.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { AfterViewInit, OnDestroy, Signal, ElementRef, WritableSignal, InputSignal, OutputEmitterRef, InputSignalWithTransform, ModelSignal, TemplateRef, PipeTransform } from '@angular/core';
|
|
3
|
-
import { RtFormControlBase, IQuillDelta, TRtKitLabelMap, IRtAiRunStatus, IRtTimeline, IRtThreadList, IRtSideMenu } from '@rt-tools/ui-kit-v2';
|
|
3
|
+
import { RtFormControlBase, IQuillDelta, TRtKitLabelMap, IRtAiRunStatus, IRtTimeline, IRtThreadList, IRtSideMenu, IRtIcon } from '@rt-tools/ui-kit-v2';
|
|
4
4
|
import { BooleanInput, NumberInput } from '@angular/cdk/coercion';
|
|
5
5
|
import { FormGroup, FormControl } from '@angular/forms';
|
|
6
6
|
|
|
@@ -668,6 +668,8 @@ declare class RtAiChatComponent {
|
|
|
668
668
|
readonly threadsLoading: InputSignalWithTransform<boolean, BooleanInput>;
|
|
669
669
|
readonly threadsFetching: InputSignalWithTransform<boolean, BooleanInput>;
|
|
670
670
|
readonly threadsHasMore: InputSignalWithTransform<boolean, BooleanInput>;
|
|
671
|
+
/** Значки декоративных строк-превью пустого списка бесед, по строке на значок. */
|
|
672
|
+
readonly emptyPreviewIcons: InputSignal<readonly IRtIcon.Name[]>;
|
|
671
673
|
/** Кнопка «Full screen» в шапке. */
|
|
672
674
|
readonly fullScreenable: InputSignalWithTransform<boolean, BooleanInput>;
|
|
673
675
|
/** Кнопка закрытия в шапке. */
|
|
@@ -703,7 +705,7 @@ declare class RtAiChatComponent {
|
|
|
703
705
|
protected onSearchThreads(query: string): void;
|
|
704
706
|
protected onSelectThread(id: IRtThreadList.TRowId): void;
|
|
705
707
|
static ɵfac: i0.ɵɵFactoryDeclaration<RtAiChatComponent, never>;
|
|
706
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<RtAiChatComponent, "rt-ai-chat", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "messages": { "alias": "messages"; "required": false; "isSignal": true; }; "suggestions": { "alias": "suggestions"; "required": false; "isSignal": true; }; "emptyTitle": { "alias": "emptyTitle"; "required": false; "isSignal": true; }; "emptyDescription": { "alias": "emptyDescription"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disclaimer": { "alias": "disclaimer"; "required": false; "isSignal": true; }; "sending": { "alias": "sending"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "threads": { "alias": "threads"; "required": false; "isSignal": true; }; "activeThreadId": { "alias": "activeThreadId"; "required": false; "isSignal": true; }; "threadsLoading": { "alias": "threadsLoading"; "required": false; "isSignal": true; }; "threadsFetching": { "alias": "threadsFetching"; "required": false; "isSignal": true; }; "threadsHasMore": { "alias": "threadsHasMore"; "required": false; "isSignal": true; }; "fullScreenable": { "alias": "fullScreenable"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "draft": { "alias": "draft"; "required": false; "isSignal": true; }; "threadsOpen": { "alias": "threadsOpen"; "required": false; "isSignal": true; }; "fullScreen": { "alias": "fullScreen"; "required": false; "isSignal": true; }; }, { "draft": "draftChange"; "threadsOpen": "threadsOpenChange"; "fullScreen": "fullScreenChange"; "send": "send"; "stop": "stop"; "retry": "retry"; "newThread": "newThread"; "closed": "closed"; "selectThread": "selectThread"; "deleteThread": "deleteThread"; "searchThreads": "searchThreads"; "loadMoreThreads": "loadMoreThreads"; "feedbackChange": "feedbackChange"; }, ["extraTemplate"], never, true, never>;
|
|
708
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtAiChatComponent, "rt-ai-chat", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "messages": { "alias": "messages"; "required": false; "isSignal": true; }; "suggestions": { "alias": "suggestions"; "required": false; "isSignal": true; }; "emptyTitle": { "alias": "emptyTitle"; "required": false; "isSignal": true; }; "emptyDescription": { "alias": "emptyDescription"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disclaimer": { "alias": "disclaimer"; "required": false; "isSignal": true; }; "sending": { "alias": "sending"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "threads": { "alias": "threads"; "required": false; "isSignal": true; }; "activeThreadId": { "alias": "activeThreadId"; "required": false; "isSignal": true; }; "threadsLoading": { "alias": "threadsLoading"; "required": false; "isSignal": true; }; "threadsFetching": { "alias": "threadsFetching"; "required": false; "isSignal": true; }; "threadsHasMore": { "alias": "threadsHasMore"; "required": false; "isSignal": true; }; "emptyPreviewIcons": { "alias": "emptyPreviewIcons"; "required": false; "isSignal": true; }; "fullScreenable": { "alias": "fullScreenable"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "draft": { "alias": "draft"; "required": false; "isSignal": true; }; "threadsOpen": { "alias": "threadsOpen"; "required": false; "isSignal": true; }; "fullScreen": { "alias": "fullScreen"; "required": false; "isSignal": true; }; }, { "draft": "draftChange"; "threadsOpen": "threadsOpenChange"; "fullScreen": "fullScreenChange"; "send": "send"; "stop": "stop"; "retry": "retry"; "newThread": "newThread"; "closed": "closed"; "selectThread": "selectThread"; "deleteThread": "deleteThread"; "searchThreads": "searchThreads"; "loadMoreThreads": "loadMoreThreads"; "feedbackChange": "feedbackChange"; }, ["extraTemplate"], never, true, never>;
|
|
707
709
|
}
|
|
708
710
|
|
|
709
711
|
/**
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { TemplateRef, InputSignal, OnInit, Signal, InputSignalWithTransform, OutputEmitterRef } from '@angular/core';
|
|
3
3
|
import { FormControl } from '@angular/forms';
|
|
4
|
-
import {
|
|
4
|
+
import { IRtIcon, TRtKitLabelMap } from '@rt-tools/ui-kit-v2/core';
|
|
5
5
|
import * as i1 from '@rt-tools/ui-kit-v2/radius';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Модель `<rt-thread-list>`: один корневой неймспейс с префиксом `I`.
|
|
9
9
|
*/
|
|
10
|
+
|
|
10
11
|
declare namespace IRtThreadList {
|
|
11
12
|
/** Номер строки: список ведёт записи и с числовым ключом, и со строковым. */
|
|
12
13
|
type TRowId = number | string;
|
|
@@ -27,6 +28,12 @@ declare namespace IRtThreadList {
|
|
|
27
28
|
interface RowContext<TRow extends Row> {
|
|
28
29
|
$implicit: TRow;
|
|
29
30
|
}
|
|
31
|
+
/** Декоративная строка-превью пустого состояния. */
|
|
32
|
+
interface PreviewRow {
|
|
33
|
+
id: number;
|
|
34
|
+
icon: IRtIcon.Name;
|
|
35
|
+
offset: boolean;
|
|
36
|
+
}
|
|
30
37
|
}
|
|
31
38
|
|
|
32
39
|
/**
|
|
@@ -90,12 +97,8 @@ declare class RtThreadListComponent<TRow extends IRtThreadList.Row> implements O
|
|
|
90
97
|
protected readonly searchPlaceholderText: Signal<string>;
|
|
91
98
|
protected readonly emptyTitle: Signal<string>;
|
|
92
99
|
protected readonly skeletonRows: number[];
|
|
93
|
-
/** Декоративные строки-превью
|
|
94
|
-
protected readonly emptyPreviewRows: readonly
|
|
95
|
-
id: number;
|
|
96
|
-
icon: IRtIcon.Name;
|
|
97
|
-
offset: boolean;
|
|
98
|
-
}[];
|
|
100
|
+
/** Декоративные строки-превью пустого состояния: значок строки из `emptyPreviewIcons`, каждая вторая сдвинута. */
|
|
101
|
+
protected readonly emptyPreviewRows: Signal<readonly IRtThreadList.PreviewRow[]>;
|
|
99
102
|
protected readonly searchControl: FormControl<string>;
|
|
100
103
|
protected readonly rowTemplate: Signal<RtThreadListRowDirective<TRow> | undefined>;
|
|
101
104
|
protected readonly rowActionsTemplate: Signal<RtThreadListRowActionsDirective<TRow> | undefined>;
|
|
@@ -106,6 +109,8 @@ declare class RtThreadListComponent<TRow extends IRtThreadList.Row> implements O
|
|
|
106
109
|
/** Пусто — берётся переведённая подпись по умолчанию */
|
|
107
110
|
readonly searchPlaceholder: InputSignal<string>;
|
|
108
111
|
readonly emptyText: InputSignal<string>;
|
|
112
|
+
/** Значки декоративных строк-превью пустого состояния, по строке на значок */
|
|
113
|
+
readonly emptyPreviewIcons: InputSignal<readonly IRtIcon.Name[]>;
|
|
109
114
|
readonly loading: InputSignalWithTransform<boolean, boolean | string>;
|
|
110
115
|
readonly fetching: InputSignalWithTransform<boolean, boolean | string>;
|
|
111
116
|
readonly hasMore: InputSignalWithTransform<boolean, boolean | string>;
|
|
@@ -118,7 +123,7 @@ declare class RtThreadListComponent<TRow extends IRtThreadList.Row> implements O
|
|
|
118
123
|
protected onSelect(id: IRtThreadList.TRowId, event: MouseEvent): void;
|
|
119
124
|
protected onLoadMore(): void;
|
|
120
125
|
static ɵfac: i0.ɵɵFactoryDeclaration<RtThreadListComponent<any>, never>;
|
|
121
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<RtThreadListComponent<any>, "rt-thread-list", never, { "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "activeId": { "alias": "activeId"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "fetching": { "alias": "fetching"; "required": false; "isSignal": true; }; "hasMore": { "alias": "hasMore"; "required": false; "isSignal": true; }; "filtersActive": { "alias": "filtersActive"; "required": false; "isSignal": true; }; }, { "selectRow": "selectRow"; "openInNewTab": "openInNewTab"; "searchChange": "searchChange"; "loadMore": "loadMore"; }, ["rowTemplate", "rowActionsTemplate", "filtersTemplate", "searchTemplate"], never, true, [{ directive: typeof i1.RtRadiusDirective; inputs: { "radius": "radius"; }; outputs: {}; }]>;
|
|
126
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtThreadListComponent<any>, "rt-thread-list", never, { "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "activeId": { "alias": "activeId"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "emptyPreviewIcons": { "alias": "emptyPreviewIcons"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "fetching": { "alias": "fetching"; "required": false; "isSignal": true; }; "hasMore": { "alias": "hasMore"; "required": false; "isSignal": true; }; "filtersActive": { "alias": "filtersActive"; "required": false; "isSignal": true; }; }, { "selectRow": "selectRow"; "openInNewTab": "openInNewTab"; "searchChange": "searchChange"; "loadMore": "loadMore"; }, ["rowTemplate", "rowActionsTemplate", "filtersTemplate", "searchTemplate"], never, true, [{ directive: typeof i1.RtRadiusDirective; inputs: { "radius": "radius"; }; outputs: {}; }]>;
|
|
122
127
|
}
|
|
123
128
|
|
|
124
129
|
export { IRtThreadList, RtThreadListComponent, RtThreadListFiltersDirective, RtThreadListRowActionsDirective, RtThreadListRowDirective, RtThreadListSearchDirective };
|
|
Binary file
|