@rt-tools/ui-kit-v2 0.14.0 → 0.16.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-rich-editor.mjs +49 -7
- package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2.mjs +5885 -2414
- package/fesm2022/rt-tools-ui-kit-v2.mjs.map +1 -1
- package/package.json +1 -1
- package/rt-tools-ui-kit-v2-0.16.0.tgz +0 -0
- package/src/assets/icons/chat-error.svg +9 -0
- package/src/assets/icons/fork-spoon.svg +9 -0
- package/src/assets/icons/fullscreen.svg +9 -0
- package/src/assets/icons/home.svg +9 -0
- package/src/assets/icons/layers.svg +9 -0
- package/src/assets/icons/pin.svg +5 -0
- package/src/assets/icons/troubleshoot.svg +9 -0
- package/src/assets/icons-material/chart-bar.fill.svg +5 -0
- package/src/assets/icons-material/chart-bar.svg +5 -0
- package/src/assets/icons-material/chart-line.fill.svg +5 -0
- package/src/assets/icons-material/chart-line.svg +5 -0
- package/src/assets/icons-material/chat-error.fill.svg +5 -0
- package/src/assets/icons-material/chat-error.svg +5 -0
- package/src/assets/icons-material/comment.fill.svg +5 -0
- package/src/assets/icons-material/comment.svg +5 -0
- package/src/assets/icons-material/fork-spoon.fill.svg +5 -0
- package/src/assets/icons-material/fork-spoon.svg +5 -0
- package/src/assets/icons-material/fullscreen.fill.svg +5 -0
- package/src/assets/icons-material/fullscreen.svg +5 -0
- package/src/assets/icons-material/home.fill.svg +3 -0
- package/src/assets/icons-material/home.svg +5 -0
- package/src/assets/icons-material/ico-exit.fill.svg +5 -0
- package/src/assets/icons-material/ico-exit.svg +5 -0
- package/src/assets/icons-material/ico-sun.fill.svg +5 -0
- package/src/assets/icons-material/ico-sun.svg +5 -0
- package/src/assets/icons-material/ico-user.fill.svg +5 -0
- package/src/assets/icons-material/ico-user.svg +5 -0
- package/src/assets/icons-material/layers.fill.svg +3 -0
- package/src/assets/icons-material/layers.svg +5 -0
- package/src/assets/icons-material/minus.fill.svg +3 -0
- package/src/assets/icons-material/minus.svg +3 -0
- package/src/assets/icons-material/moon.fill.svg +5 -0
- package/src/assets/icons-material/moon.svg +5 -0
- package/src/assets/icons-material/pin.fill.svg +3 -0
- package/src/assets/icons-material/pin.svg +5 -0
- package/src/assets/icons-material/search-plus.fill.svg +5 -0
- package/src/assets/icons-material/search-plus.svg +5 -0
- package/src/assets/icons-material/th-large.fill.svg +3 -0
- package/src/assets/icons-material/th-large.svg +5 -0
- package/src/assets/icons-material/troubleshoot.fill.svg +5 -0
- package/src/assets/icons-material/troubleshoot.svg +5 -0
- package/src/lib/components/CONTEXT.md +1 -1
- package/src/lib/components/aside/CONTEXT.md +9 -0
- package/src/lib/components/aside/error-box/rt-aside-error-box.component.scss +37 -0
- package/src/lib/components/aside/rt-aside.component.scss +14 -2
- package/src/lib/components/dynamic-selector/CONTEXT.md +44 -0
- package/src/lib/components/dynamic-selector/dynamic-input/rt-dynamic-input.component.scss +19 -0
- package/src/lib/components/dynamic-selector/list/rt-dynamic-selector-list.component.scss +108 -0
- package/src/lib/components/dynamic-selector/popup/rt-dynamic-selector-popup.component.scss +170 -0
- package/src/lib/components/dynamic-selector/rt-dynamic-selector.component.scss +23 -0
- package/src/lib/components/dynamic-selector/stories/component/test-dynamic-selector-matrix.component.scss +8 -0
- package/src/lib/components/dynamic-selector/stories/component/test-dynamic-selector.component.scss +7 -0
- package/src/lib/components/empty-state/CONTEXT.md +3 -0
- package/src/lib/components/empty-state/rt-empty-state.component.scss +9 -0
- package/src/lib/components/expansion-panel/CONTEXT.md +45 -0
- package/src/lib/components/expansion-panel/rt-expansion-panel.component.scss +134 -0
- package/src/lib/components/expansion-panel/stories/component/test-expansion-panel-matrix.component.scss +31 -0
- package/src/lib/components/image-cropper/CONTEXT.md +54 -0
- package/src/lib/components/image-cropper/rt-image-cropper.component.scss +220 -0
- package/src/lib/components/image-upload/CONTEXT.md +65 -0
- package/src/lib/components/image-upload/rt-image-upload.component.scss +77 -0
- package/src/lib/components/menu/CONTEXT.md +27 -0
- package/src/lib/components/menu/rt-menu-item.component.scss +42 -0
- package/src/lib/components/side-menu/CONTEXT.md +38 -0
- package/src/lib/components/side-menu/favorites/rt-side-menu-favorites.component.scss +126 -0
- package/src/lib/components/side-menu/rt-side-menu.component.scss +303 -0
- package/src/lib/components/side-menu/stories/component/test-side-menu-cell.component.scss +27 -0
- package/src/lib/components/side-menu/stories/component/test-side-menu.component.scss +39 -0
- package/src/lib/components/side-menu/sub-item/rt-side-menu-sub-item.component.scss +203 -0
- package/src/lib/components/table/CONTEXT.md +6 -0
- package/src/lib/components/table/rt-table.component.scss +4 -2
- package/src/lib/components/tooltip/CONTEXT.md +7 -4
- package/src/rich-editor/lib/components/message-composer/CONTEXT.md +15 -1
- package/src/styles/_color-scheme.scss +50 -0
- package/types/rt-tools-ui-kit-v2-rich-editor.d.ts +22 -2
- package/types/rt-tools-ui-kit-v2.d.ts +1236 -13
- package/rt-tools-ui-kit-v2-0.14.0.tgz +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { WritableSignal, InputSignal, InjectionToken, Signal, OutputEmitterRef, Renderer2, EnvironmentProviders, PipeTransform, InputSignalWithTransform, OnInit, OnDestroy, TemplateRef, ElementRef, DestroyRef, AfterViewChecked,
|
|
2
|
+
import { WritableSignal, InputSignal, InjectionToken, Signal, OutputEmitterRef, Renderer2, EnvironmentProviders, PipeTransform, InputSignalWithTransform, OnInit, OnDestroy, TemplateRef, ElementRef, DestroyRef, AfterViewChecked, ModelSignal, AfterContentInit, AfterViewInit } from '@angular/core';
|
|
3
3
|
import { OverlayRef, ComponentType, CdkConnectedOverlay, CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';
|
|
4
4
|
import { Observable, MonoTypeOperatorFunction } from 'rxjs';
|
|
5
5
|
import { BooleanInput, NumberInput } from '@angular/cdk/coercion';
|
|
6
6
|
import { ControlValueAccessor, ValidationErrors, AbstractControl, FormControl, FormGroup } from '@angular/forms';
|
|
7
|
-
import { Router, ActivatedRoute, Params, CanDeactivateFn } from '@angular/router';
|
|
7
|
+
import { Router, ActivatedRoute, Params, CanDeactivateFn, RouterLink } from '@angular/router';
|
|
8
8
|
import { TNullable, IPageModel, ISortModel, TFilterOperatorType, IFilterModel, TListSortOrderType } from '@rt-tools/utils';
|
|
9
9
|
import { CdkDragDrop } from '@angular/cdk/drag-drop';
|
|
10
10
|
import { SafeStyle } from '@angular/platform-browser';
|
|
@@ -51,7 +51,7 @@ declare class RtAccordionComponent {
|
|
|
51
51
|
* литеральный тип, нужный для `IRtIcon.Name` (см. `rt-icon.model.ts`). `as const`
|
|
52
52
|
* сохраняет литеральные ключи.
|
|
53
53
|
*/
|
|
54
|
-
declare const iconsName: readonly ["alarm-clock", "align-center", "align-justify", "align-left", "align-right", "angle-double-down", "angle-double-left", "angle-double-right", "angle-double-up", "angle-down", "angle-left", "angle-right", "angle-up", "arrow-bottom-old", "arrow-circle-down", "arrow-circle-left", "arrow-circle-right", "arrow-circle-up", "arrow-down", "arrow-down-left", "arrow-down-long", "arrow-down-right", "arrow-left", "arrow-left-old", "arrow-leftlong", "arrow-right", "arrow-right-old", "arrow-rightlong", "arrow-top-old", "arrow-up", "arrow-up-left", "arrow-up-long", "arrow-up-right", "arrows", "arrows-h", "arrows-v", "at", "attach-docx-doc", "attach-eml", "attach-folder", "attach-jpg-png", "attach-msg", "attach-other", "attach-pdf", "attach-ppt-pptx", "attach-txt", "attach-webp", "attach-xlsx-xls", "attach-zip-rar", "ban", "bars", "bell", "bolt", "book", "bookmark", "bookmark-fill", "bot", "box", "briefcase", "building", "burger", "calendar", "calendar-minus", "calendar-plus", "calendar-times", "camera", "chart-bar", "chart-line", "chart-line-2", "chart-pie", "check", "check-circle", "check-double", "check-square", "chevron-circle-down", "chevron-circle-left", "chevron-circle-right", "chevron-circle-up", "chevron-down", "chevron-left", "chevron-right", "chevron-up", "chevron-up-down", "clock", "clone", "close", "cloud", "cloud-download", "cloud-upload", "code", "cog", "comment", "comments", "copy", "credit-card", "database", "desktop", "directions", "directions-alt", "doc-success", "docBox", "ellipsis-h", "ellipsis-v", "email", "equals", "exclamation-circle", "external-link", "eye", "eye-slash", "file", "file-excel", "file-o", "file-pdf", "filter", "filter-fill", "filter-slash", "flag", "flag-fill", "flagman-a", "flagman-b", "flagman-c", "flagman-q", "folder", "folder-open", "globe", "groupen", "hashtag", "heart", "heart-fill", "help", "history", "historyUpdate", "ico-age", "ico-alert", "ico-b", "ico-babyPacifier", "ico-bank", "ico-bill", "ico-bill-striked", "ico-bookmark-right", "ico-books", "ico-burger", "ico-businessman", "ico-c", "ico-calendar", "ico-case", "ico-change", "ico-change-2", "ico-check", "ico-checked", "ico-checked-alert", "ico-cheker", "ico-chevron", "ico-chevron-down", "ico-close", "ico-config", "ico-contragents", "ico-control", "ico-copy", "ico-counterparty", "ico-coworkers", "ico-debt", "ico-director", "ico-doc", "ico-docDocprimary", "ico-docs", "ico-door", "ico-dotted-more-horizontal", "ico-doubleArrows", "ico-download", "ico-eagle", "ico-edit", "ico-edo", "ico-email", "ico-email1", "ico-error", "ico-exit", "ico-eye", "ico-eyeClose", "ico-faq", "ico-farm", "ico-filter", "ico-fine", "ico-gasket", "ico-generator", "ico-grade", "ico-grade-2", "ico-ground-area-transport", "ico-groundArea", "ico-groupen", "ico-hands", "ico-help", "ico-ico-history", "ico-info", "ico-infoFill", "ico-invite", "ico-key", "ico-keyFill", "ico-letter", "ico-level", "ico-level-down", "ico-level-up", "ico-licence", "ico-limit", "ico-link", "ico-link-2", "ico-listadd", "ico-listing", "ico-lock", "ico-locked", "ico-megafon", "ico-new-window", "ico-notification", "ico-notificationOff", "ico-percent-alert", "ico-plus", "ico-referal", "ico-repeat", "ico-reset", "ico-return", "ico-search", "ico-setting", "ico-settings", "ico-site", "ico-snowflake", "ico-spec", "ico-statement", "ico-subuser", "ico-sun", "ico-sunrise", "ico-support", "ico-target", "ico-team", "ico-tech", "ico-telegram", "ico-time", "ico-trash", "ico-try", "ico-txt", "ico-unlock", "ico-upload", "ico-user", "ico-user-2", "ico-users", "ico-users-2", "ico-video-play", "ico-warning", "ico-warranty", "ico-warranty-shield", "ico-xml", "id-card", "image", "images", "inbox", "info", "info-circle", "link", "list", "lock", "lock-open", "map", "mapYandex", "microsoft", "minus", "minus-circle", "mobile", "money-bill", "moon", "paperclip", "pause", "pencil", "percentage", "phone", "pie-chart", "plus-circle", "power-off", "print", "qrcode", "question-circle", "refresh", "replay", "reply", "reset", "search", "search-minus", "search-plus", "send", "server", "share-alt", "shield", "sitemap", "sliders-v", "social-facebook", "social-instagram", "social-kakaotalk", "social-line", "social-naver", "social-pinterest", "social-tiktok", "social-vk", "social-wechat", "social-x", "social-xiaohongshu", "social-youtube", "sort-alpha-alt-down", "sort-alpha-alt-up", "sort-alpha-down", "sort-alpha-up", "sort-alt", "sort-alt-slash", "sort-amount-down", "sort-amount-down-alt", "sort-amount-up", "sort-amount-up-alt", "sort-numeric-alt-down", "sort-numeric-alt-up", "sort-numeric-down", "sort-numeric-up", "spinner", "star", "star-fill", "stock", "stop", "sync", "table", "tablet", "tag", "tags", "telegram", "th-large", "ticket", "times-circle", "trash", "undo", "unlock", "user", "user-edit", "user-minus", "user-off", "user-plus", "users", "video", "volume-down", "volume-off", "volume-up", "wallet", "warning", "wifi", "window-maximize", "window-minimize"];
|
|
54
|
+
declare const iconsName: readonly ["alarm-clock", "align-center", "align-justify", "align-left", "align-right", "angle-double-down", "angle-double-left", "angle-double-right", "angle-double-up", "angle-down", "angle-left", "angle-right", "angle-up", "arrow-bottom-old", "arrow-circle-down", "arrow-circle-left", "arrow-circle-right", "arrow-circle-up", "arrow-down", "arrow-down-left", "arrow-down-long", "arrow-down-right", "arrow-left", "arrow-left-old", "arrow-leftlong", "arrow-right", "arrow-right-old", "arrow-rightlong", "arrow-top-old", "arrow-up", "arrow-up-left", "arrow-up-long", "arrow-up-right", "arrows", "arrows-h", "arrows-v", "at", "attach-docx-doc", "attach-eml", "attach-folder", "attach-jpg-png", "attach-msg", "attach-other", "attach-pdf", "attach-ppt-pptx", "attach-txt", "attach-webp", "attach-xlsx-xls", "attach-zip-rar", "ban", "bars", "bell", "bolt", "book", "bookmark", "bookmark-fill", "bot", "box", "briefcase", "building", "burger", "calendar", "calendar-minus", "calendar-plus", "calendar-times", "camera", "chart-bar", "chart-line", "chart-line-2", "chart-pie", "chat-error", "check", "check-circle", "check-double", "check-square", "chevron-circle-down", "chevron-circle-left", "chevron-circle-right", "chevron-circle-up", "chevron-down", "chevron-left", "chevron-right", "chevron-up", "chevron-up-down", "clock", "clone", "close", "cloud", "cloud-download", "cloud-upload", "code", "cog", "comment", "comments", "copy", "credit-card", "database", "desktop", "directions", "directions-alt", "doc-success", "docBox", "ellipsis-h", "ellipsis-v", "email", "equals", "exclamation-circle", "external-link", "eye", "eye-slash", "file", "file-excel", "file-o", "file-pdf", "filter", "filter-fill", "filter-slash", "flag", "flag-fill", "flagman-a", "flagman-b", "flagman-c", "flagman-q", "folder", "folder-open", "fork-spoon", "fullscreen", "globe", "groupen", "hashtag", "heart", "heart-fill", "help", "history", "historyUpdate", "home", "ico-age", "ico-alert", "ico-b", "ico-babyPacifier", "ico-bank", "ico-bill", "ico-bill-striked", "ico-bookmark-right", "ico-books", "ico-burger", "ico-businessman", "ico-c", "ico-calendar", "ico-case", "ico-change", "ico-change-2", "ico-check", "ico-checked", "ico-checked-alert", "ico-cheker", "ico-chevron", "ico-chevron-down", "ico-close", "ico-config", "ico-contragents", "ico-control", "ico-copy", "ico-counterparty", "ico-coworkers", "ico-debt", "ico-director", "ico-doc", "ico-docDocprimary", "ico-docs", "ico-door", "ico-dotted-more-horizontal", "ico-doubleArrows", "ico-download", "ico-eagle", "ico-edit", "ico-edo", "ico-email", "ico-email1", "ico-error", "ico-exit", "ico-eye", "ico-eyeClose", "ico-faq", "ico-farm", "ico-filter", "ico-fine", "ico-gasket", "ico-generator", "ico-grade", "ico-grade-2", "ico-ground-area-transport", "ico-groundArea", "ico-groupen", "ico-hands", "ico-help", "ico-ico-history", "ico-info", "ico-infoFill", "ico-invite", "ico-key", "ico-keyFill", "ico-letter", "ico-level", "ico-level-down", "ico-level-up", "ico-licence", "ico-limit", "ico-link", "ico-link-2", "ico-listadd", "ico-listing", "ico-lock", "ico-locked", "ico-megafon", "ico-new-window", "ico-notification", "ico-notificationOff", "ico-percent-alert", "ico-plus", "ico-referal", "ico-repeat", "ico-reset", "ico-return", "ico-search", "ico-setting", "ico-settings", "ico-site", "ico-snowflake", "ico-spec", "ico-statement", "ico-subuser", "ico-sun", "ico-sunrise", "ico-support", "ico-target", "ico-team", "ico-tech", "ico-telegram", "ico-time", "ico-trash", "ico-try", "ico-txt", "ico-unlock", "ico-upload", "ico-user", "ico-user-2", "ico-users", "ico-users-2", "ico-video-play", "ico-warning", "ico-warranty", "ico-warranty-shield", "ico-xml", "id-card", "image", "images", "inbox", "info", "info-circle", "layers", "link", "list", "lock", "lock-open", "map", "mapYandex", "microsoft", "minus", "minus-circle", "mobile", "money-bill", "moon", "paperclip", "pause", "pencil", "percentage", "phone", "pie-chart", "pin", "plus-circle", "power-off", "print", "qrcode", "question-circle", "refresh", "replay", "reply", "reset", "search", "search-minus", "search-plus", "send", "server", "share-alt", "shield", "sitemap", "sliders-v", "social-facebook", "social-instagram", "social-kakaotalk", "social-line", "social-naver", "social-pinterest", "social-tiktok", "social-vk", "social-wechat", "social-x", "social-xiaohongshu", "social-youtube", "sort-alpha-alt-down", "sort-alpha-alt-up", "sort-alpha-down", "sort-alpha-up", "sort-alt", "sort-alt-slash", "sort-amount-down", "sort-amount-down-alt", "sort-amount-up", "sort-amount-up-alt", "sort-numeric-alt-down", "sort-numeric-alt-up", "sort-numeric-down", "sort-numeric-up", "spinner", "star", "star-fill", "stock", "stop", "sync", "table", "tablet", "tag", "tags", "telegram", "th-large", "ticket", "times-circle", "trash", "troubleshoot", "undo", "unlock", "user", "user-edit", "user-minus", "user-off", "user-plus", "users", "video", "volume-down", "volume-off", "volume-up", "wallet", "warning", "wifi", "window-maximize", "window-minimize"];
|
|
55
55
|
|
|
56
56
|
/**
|
|
57
57
|
* Модель `<rt-icon>`: один корневой неймспейс с префиксом `I`.
|
|
@@ -288,12 +288,18 @@ type TRtAsideContentLayout = 'default' | 'tabs';
|
|
|
288
288
|
* cross-encapsulation хака.
|
|
289
289
|
*/
|
|
290
290
|
declare class RtAsideComponent {
|
|
291
|
+
protected readonly hasRequestError: Signal<boolean>;
|
|
291
292
|
readonly size: InputSignal<TRtAsideSize>;
|
|
292
293
|
readonly contentLayout: InputSignal<TRtAsideContentLayout>;
|
|
293
294
|
readonly width: InputSignal<string | null>;
|
|
294
295
|
readonly ariaLabel: InputSignal<string | null>;
|
|
296
|
+
/**
|
|
297
|
+
* Ошибка неудавшегося запроса. Пока она есть, между шапкой и содержимым стоит блок ошибки с
|
|
298
|
+
* кнопкой копирования; `null` и `undefined` — ошибки нет, любое другое значение её показывает.
|
|
299
|
+
*/
|
|
300
|
+
readonly requestError: InputSignal<unknown>;
|
|
295
301
|
static ɵfac: i0.ɵɵFactoryDeclaration<RtAsideComponent, never>;
|
|
296
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<RtAsideComponent, "rt-aside", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "contentLayout": { "alias": "contentLayout"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, ["rt-aside-header", "*", "rt-aside-footer"], true, never>;
|
|
302
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtAsideComponent, "rt-aside", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "contentLayout": { "alias": "contentLayout"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "requestError": { "alias": "requestError"; "required": false; "isSignal": true; }; }, {}, never, ["rt-aside-header", "*", "rt-aside-footer"], true, never>;
|
|
297
303
|
}
|
|
298
304
|
|
|
299
305
|
/**
|
|
@@ -435,6 +441,8 @@ declare class RtAsideService {
|
|
|
435
441
|
declare const RT_ASIDE_DATA: InjectionToken<unknown>;
|
|
436
442
|
|
|
437
443
|
declare const RT_KIT_LABELS_EN: {
|
|
444
|
+
readonly asideCopyErrorInfo: "Copy error info";
|
|
445
|
+
readonly asideRequestError: "Request Error";
|
|
438
446
|
readonly bottomSheetClose: "Close";
|
|
439
447
|
readonly chatAttachAria: "Attach a file";
|
|
440
448
|
readonly chatAttachTooltip: "Attach a file";
|
|
@@ -460,6 +468,8 @@ declare const RT_KIT_LABELS_EN: {
|
|
|
460
468
|
readonly chatStatusRead: "Read";
|
|
461
469
|
readonly chatStatusSending: "Sending";
|
|
462
470
|
readonly chatStatusSent: "Delivered";
|
|
471
|
+
readonly chatStopAria: "Stop the answer";
|
|
472
|
+
readonly chatStopLabel: "Stop";
|
|
463
473
|
readonly chatTitle: "Chat";
|
|
464
474
|
readonly counterDecrease: "Decrease";
|
|
465
475
|
readonly counterIncrease: "Increase";
|
|
@@ -474,6 +484,19 @@ declare const RT_KIT_LABELS_EN: {
|
|
|
474
484
|
readonly dataListSettingsTitle: "Edit table configuration";
|
|
475
485
|
readonly dataListTableConfig: "Table configuration";
|
|
476
486
|
readonly dataListVerticalScrollbar: "Vertical scrollbar shown";
|
|
487
|
+
readonly dynamicInputPlaceholder: "Type and press Enter";
|
|
488
|
+
readonly dynamicSelectorAdd: "Add";
|
|
489
|
+
readonly dynamicSelectorApply: "Apply";
|
|
490
|
+
readonly dynamicSelectorClear: "Clear list";
|
|
491
|
+
readonly dynamicSelectorDrag: "Hold to drag";
|
|
492
|
+
readonly dynamicSelectorEdit: "Edit";
|
|
493
|
+
readonly dynamicSelectorMulti: "Multi selection";
|
|
494
|
+
readonly dynamicSelectorMultiHint: "Hold Ctrl or Cmd to tick several rows";
|
|
495
|
+
readonly dynamicSelectorNoResults: "No results";
|
|
496
|
+
readonly dynamicSelectorNothingToChoose: "There are no available items to choose";
|
|
497
|
+
readonly dynamicSelectorRemove: "Remove the item";
|
|
498
|
+
readonly dynamicSelectorReset: "Reset to initial list";
|
|
499
|
+
readonly dynamicSelectorSearch: "Search...";
|
|
477
500
|
readonly dataTableActions: "Actions";
|
|
478
501
|
readonly dataTableCopied: "Copied!";
|
|
479
502
|
readonly dataTableCopy: "Copy";
|
|
@@ -497,6 +520,18 @@ declare const RT_KIT_LABELS_EN: {
|
|
|
497
520
|
readonly photoViewerClose: "Close viewer";
|
|
498
521
|
readonly photoViewerNext: "Next photo";
|
|
499
522
|
readonly photoViewerPrev: "Previous photo";
|
|
523
|
+
readonly sideMenuBack: "Main menu";
|
|
524
|
+
readonly sideMenuFavoriteAdd: "Add to favourites";
|
|
525
|
+
readonly sideMenuFavoriteDrag: "Hold button to drag";
|
|
526
|
+
readonly sideMenuFavoriteRemove: "Remove from favourites";
|
|
527
|
+
readonly sideMenuFavorites: "Favourites";
|
|
528
|
+
readonly sideMenuFavoritesCollapse: "Collapse favourites";
|
|
529
|
+
readonly sideMenuFavoritesExpand: "Expand favourites";
|
|
530
|
+
readonly sideMenuNothingFound: "Nothing found";
|
|
531
|
+
readonly sideMenuPin: "Pin submenu";
|
|
532
|
+
readonly sideMenuResize: "Resize submenu";
|
|
533
|
+
readonly sideMenuSearch: "Search";
|
|
534
|
+
readonly sideMenuUnpin: "Unpin submenu";
|
|
500
535
|
readonly themeToggleLabel: "Switch theme";
|
|
501
536
|
readonly uiActions: "Actions";
|
|
502
537
|
readonly uiApply: "Apply";
|
|
@@ -552,6 +587,23 @@ declare const RT_KIT_LABELS_EN: {
|
|
|
552
587
|
readonly uiHint: "Hint";
|
|
553
588
|
readonly uiHistory: "History";
|
|
554
589
|
readonly uiHours: "Hours";
|
|
590
|
+
readonly uiImageCropperFrame: "Crop frame";
|
|
591
|
+
readonly uiImageCropperHandleE: "Right edge of the crop frame";
|
|
592
|
+
readonly uiImageCropperHandleN: "Top edge of the crop frame";
|
|
593
|
+
readonly uiImageCropperHandleNe: "Top right corner of the crop frame";
|
|
594
|
+
readonly uiImageCropperHandleNw: "Top left corner of the crop frame";
|
|
595
|
+
readonly uiImageCropperHandleS: "Bottom edge of the crop frame";
|
|
596
|
+
readonly uiImageCropperHandleSe: "Bottom right corner of the crop frame";
|
|
597
|
+
readonly uiImageCropperHandleSw: "Bottom left corner of the crop frame";
|
|
598
|
+
readonly uiImageCropperHandleW: "Left edge of the crop frame";
|
|
599
|
+
readonly uiImageCropperPlaceholder: "Choose an image to crop";
|
|
600
|
+
readonly uiImageCropperRefusal: "The image could not be read";
|
|
601
|
+
readonly uiImageUploadApply: "Apply";
|
|
602
|
+
readonly uiImageUploadCancel: "Cancel";
|
|
603
|
+
readonly uiImageUploadChange: "Click to change the image";
|
|
604
|
+
readonly uiImageUploadChoose: "Choose file";
|
|
605
|
+
readonly uiImageUploadDrop: "Drag and drop an image here or";
|
|
606
|
+
readonly uiImageUploadImage: "Current image";
|
|
555
607
|
readonly uiInviteUser: "Invite user";
|
|
556
608
|
readonly uiItemsPerPage: "Items per page";
|
|
557
609
|
readonly uiLast30Days: "Last 30 days";
|
|
@@ -1050,6 +1102,27 @@ declare class RtAsideFooterComponent {
|
|
|
1050
1102
|
static ɵcmp: i0.ɵɵComponentDeclaration<RtAsideFooterComponent, "rt-aside-footer", never, {}, {}, never, ["[asideDismiss]", "[asidePrimary]"], true, never>;
|
|
1051
1103
|
}
|
|
1052
1104
|
|
|
1105
|
+
/**
|
|
1106
|
+
* Блок ошибки запроса боковой панели: надпись и кнопка, которая кладёт в буфер обмена время и
|
|
1107
|
+
* ошибку. Перенос `rtui-aside-error-box` первого кита без Material.
|
|
1108
|
+
*
|
|
1109
|
+
* Обычно его рисует сама панель по входу `requestError`; отдельно он нужен приложению, которое
|
|
1110
|
+
* показывает ошибку в другом месте.
|
|
1111
|
+
*/
|
|
1112
|
+
declare class RtAsideErrorBoxComponent {
|
|
1113
|
+
#private;
|
|
1114
|
+
protected readonly title: Signal<string>;
|
|
1115
|
+
protected readonly copied: WritableSignal<boolean>;
|
|
1116
|
+
protected readonly buttonLabel: Signal<string>;
|
|
1117
|
+
protected readonly buttonIcon: Signal<string | null>;
|
|
1118
|
+
/** Ошибка, пришедшая от неудавшегося запроса: уходит в копию как JSON. */
|
|
1119
|
+
readonly error: InputSignal<unknown>;
|
|
1120
|
+
constructor();
|
|
1121
|
+
protected onCopy(): void;
|
|
1122
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtAsideErrorBoxComponent, never>;
|
|
1123
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtAsideErrorBoxComponent, "rt-aside-error-box", never, { "error": { "alias": "error"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1124
|
+
}
|
|
1125
|
+
|
|
1053
1126
|
/**
|
|
1054
1127
|
* Смысловая секция внутри асайда: единый вертикальный ритм между полями и
|
|
1055
1128
|
* необязательный заголовок одного стиля. Заменяет разнобой из `fieldset`,
|
|
@@ -3905,6 +3978,342 @@ declare class RtDynamicListComponent implements OnInit {
|
|
|
3905
3978
|
static ɵcmp: i0.ɵɵComponentDeclaration<RtDynamicListComponent, "rt-dynamic-list", never, { "pageModel": { "alias": "pageModel"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "fetching": { "alias": "fetching"; "required": false; "isSignal": true; }; "empty": { "alias": "empty"; "required": false; "isSignal": true; }; "filtered": { "alias": "filtered"; "required": false; "isSignal": true; }; "showClearFilters": { "alias": "showClearFilters"; "required": false; "isSignal": true; }; "showRefresh": { "alias": "showRefresh"; "required": false; "isSignal": true; }; "showColumnSettings": { "alias": "showColumnSettings"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "allSelected": { "alias": "allSelected"; "required": false; "isSignal": true; }; "someSelected": { "alias": "someSelected"; "required": false; "isSignal": true; }; "selectAllDisabled": { "alias": "selectAllDisabled"; "required": false; "isSignal": true; }; "selectedCount": { "alias": "selectedCount"; "required": false; "isSignal": true; }; "emptyTitle": { "alias": "emptyTitle"; "required": false; "isSignal": true; }; "emptyDescription": { "alias": "emptyDescription"; "required": false; "isSignal": true; }; "searchTerm": { "alias": "searchTerm"; "required": false; "isSignal": true; }; }, { "searchChange": "searchChange"; "refreshed": "refreshed"; "filtersCleared": "filtersCleared"; "columnSettingsOpened": "columnSettingsOpened"; "pageChange": "pageChange"; "perPageChange": "perPageChange"; "allSelectedChange": "allSelectedChange"; }, ["selectorsTpl", "actionsTpl"], ["*"], true, never>;
|
|
3906
3979
|
}
|
|
3907
3980
|
|
|
3981
|
+
/**
|
|
3982
|
+
* Модель `rt-dynamic-selector`: один корневой неймспейс с префиксом `I`.
|
|
3983
|
+
*/
|
|
3984
|
+
declare namespace IRtDynamicSelector {
|
|
3985
|
+
/** Состояние флажка «Выбрать всё» по видимым пунктам. */
|
|
3986
|
+
type SelectAllState = 'none' | 'some' | 'all';
|
|
3987
|
+
/** Как выбирает всплывающий список: один пункт переключателем или несколько флажками. */
|
|
3988
|
+
type Mode = 'single' | 'multi';
|
|
3989
|
+
/** Строки всплывающего выбора: отмеченные раньше над разделителем и найденные под ним. */
|
|
3990
|
+
interface PopupRows<T> {
|
|
3991
|
+
readonly ticked: ReadonlyArray<T>;
|
|
3992
|
+
readonly found: ReadonlyArray<T>;
|
|
3993
|
+
}
|
|
3994
|
+
/** Строка всплывающего выбора, готовая для разметки. */
|
|
3995
|
+
interface PopupRow<T> {
|
|
3996
|
+
readonly entity: T;
|
|
3997
|
+
readonly key: unknown;
|
|
3998
|
+
readonly label: string;
|
|
3999
|
+
readonly ticked: boolean;
|
|
4000
|
+
/** Под строкой стоит разделитель. */
|
|
4001
|
+
readonly separated: boolean;
|
|
4002
|
+
}
|
|
4003
|
+
/** Строка списка выбранного, готовая для разметки. */
|
|
4004
|
+
interface ListRow<T> {
|
|
4005
|
+
readonly item: T;
|
|
4006
|
+
readonly key: unknown;
|
|
4007
|
+
readonly label: string;
|
|
4008
|
+
/** Строку нельзя убрать из списка. */
|
|
4009
|
+
readonly locked: boolean;
|
|
4010
|
+
}
|
|
4011
|
+
/** Перенос строки списка выбранного: откуда и куда. */
|
|
4012
|
+
interface Move {
|
|
4013
|
+
readonly from: number;
|
|
4014
|
+
readonly to: number;
|
|
4015
|
+
}
|
|
4016
|
+
/** Обстановка шаблона строки, который принёс вызывающий. */
|
|
4017
|
+
interface RowContext<T> {
|
|
4018
|
+
readonly $implicit: T;
|
|
4019
|
+
}
|
|
4020
|
+
/** Правка строки поля списка строк: прежнее значение и новое. */
|
|
4021
|
+
interface TextEdit {
|
|
4022
|
+
readonly previous: string;
|
|
4023
|
+
readonly next: string;
|
|
4024
|
+
}
|
|
4025
|
+
}
|
|
4026
|
+
|
|
4027
|
+
/**
|
|
4028
|
+
* Маркеры частей строки списка выбранного — своим файлом, как у соседних семей.
|
|
4029
|
+
*
|
|
4030
|
+
* Маркер держит свой шаблон и о списке не знает ничего: селектор и поле списка строк читают его
|
|
4031
|
+
* среди своего содержимого и отдают шаблон списку. Удаление и ручка перетаскивания остаются
|
|
4032
|
+
* за китом.
|
|
4033
|
+
*/
|
|
4034
|
+
/**
|
|
4035
|
+
* Свои кнопки у каждой строки: стоят перед кнопкой удаления.
|
|
4036
|
+
*
|
|
4037
|
+
* @example
|
|
4038
|
+
* ```html
|
|
4039
|
+
* <rt-dynamic-selector keyExp="id" displayExp="name" [entities]="people()">
|
|
4040
|
+
* <ng-template rtDynamicSelectorRowControls let-person>
|
|
4041
|
+
* <rt-icon-button icon="info" ariaLabel="About" (clicked)="open(person)" />
|
|
4042
|
+
* </ng-template>
|
|
4043
|
+
* </rt-dynamic-selector>
|
|
4044
|
+
* ```
|
|
4045
|
+
*/
|
|
4046
|
+
declare class RtDynamicSelectorRowControlsDirective<T = unknown> {
|
|
4047
|
+
readonly templateRef: TemplateRef<IRtDynamicSelector.RowContext<T>>;
|
|
4048
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtDynamicSelectorRowControlsDirective<any>, never>;
|
|
4049
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RtDynamicSelectorRowControlsDirective<any>, "[rtDynamicSelectorRowControls]", never, {}, {}, never, never, true, never>;
|
|
4050
|
+
}
|
|
4051
|
+
/** Своё название строки вместо подписи из поля записи. */
|
|
4052
|
+
declare class RtDynamicSelectorRowTitleDirective<T = unknown> {
|
|
4053
|
+
readonly templateRef: TemplateRef<IRtDynamicSelector.RowContext<T>>;
|
|
4054
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtDynamicSelectorRowTitleDirective<any>, never>;
|
|
4055
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RtDynamicSelectorRowTitleDirective<any>, "[rtDynamicSelectorRowTitle]", never, {}, {}, never, never, true, never>;
|
|
4056
|
+
}
|
|
4057
|
+
|
|
4058
|
+
/**
|
|
4059
|
+
* Поле списка строк: строки человек набирает сам. Значение — массив строк в порядке списка.
|
|
4060
|
+
* Enter или уход из поля добавляют срезанный по краям текст в конец; пустой и повторный не
|
|
4061
|
+
* добавляются. Сброс, очистка, удаление строки и перетаскивание — те же, что у селектора.
|
|
4062
|
+
*
|
|
4063
|
+
* @example
|
|
4064
|
+
* ```html
|
|
4065
|
+
* <rt-dynamic-input editable [formControl]="tags" />
|
|
4066
|
+
* ```
|
|
4067
|
+
*/
|
|
4068
|
+
declare class RtDynamicInputComponent extends RtFormControlBase<string[]> {
|
|
4069
|
+
#private;
|
|
4070
|
+
protected readonly addLabel: Signal<string>;
|
|
4071
|
+
protected readonly placeholderLabel: Signal<string>;
|
|
4072
|
+
protected readonly field: Signal<ElementRef<HTMLElement> | undefined>;
|
|
4073
|
+
protected readonly rowControls: Signal<RtDynamicSelectorRowControlsDirective<string> | undefined>;
|
|
4074
|
+
protected readonly controlsTpl: Signal<TemplateRef<IRtDynamicSelector.RowContext<string>> | null>;
|
|
4075
|
+
/** Поле набора открыто, и в нём текст. */
|
|
4076
|
+
protected readonly isFieldShown: WritableSignal<boolean>;
|
|
4077
|
+
protected readonly draft: WritableSignal<string>;
|
|
4078
|
+
/** Приглашение снимается нажатием его кнопки и до новой записи формы не возвращается. */
|
|
4079
|
+
protected readonly isInvitationDismissed: WritableSignal<boolean>;
|
|
4080
|
+
protected readonly rows: Signal<IRtDynamicSelector.ListRow<string>[]>;
|
|
4081
|
+
protected readonly isInvitationShown: Signal<boolean>;
|
|
4082
|
+
protected readonly isAddShown: Signal<boolean>;
|
|
4083
|
+
protected readonly isResetDisabled: Signal<boolean>;
|
|
4084
|
+
protected readonly isClearDisabled: Signal<boolean>;
|
|
4085
|
+
protected readonly addTitle: Signal<string>;
|
|
4086
|
+
protected readonly fieldPlaceholder: Signal<string>;
|
|
4087
|
+
protected readonly hasValue: Signal<boolean>;
|
|
4088
|
+
readonly buttonTitle: InputSignal<string>;
|
|
4089
|
+
readonly placeholder: InputSignal<string>;
|
|
4090
|
+
/** Строки, которые нельзя убрать из списка. */
|
|
4091
|
+
readonly readonlyKeys: InputSignal<ReadonlyArray<string>>;
|
|
4092
|
+
readonly draggable: InputSignalWithTransform<boolean, unknown>;
|
|
4093
|
+
/** Шаг скругления кнопок-иконок списка; по умолчанию они круглые. */
|
|
4094
|
+
readonly buttonRadius: InputSignal<TRtRadius | null>;
|
|
4095
|
+
readonly editable: InputSignalWithTransform<boolean, unknown>;
|
|
4096
|
+
readonly invitation: InputSignalWithTransform<boolean, unknown>;
|
|
4097
|
+
readonly invitationIcon: InputSignal<IRtIcon.Name | null>;
|
|
4098
|
+
readonly invitationDescription: InputSignal<string>;
|
|
4099
|
+
readonly displayText: Signal<string>;
|
|
4100
|
+
/** Записанное формой становится и списком, и значением для сброса; пустой массив список опустошает. */
|
|
4101
|
+
writeValue(value: string[] | null): void;
|
|
4102
|
+
protected onAdd(): void;
|
|
4103
|
+
/** Enter или уход из поля: пустой текст поле не закрывает, повторный закрывает без изменений. */
|
|
4104
|
+
protected onCommit(): void;
|
|
4105
|
+
protected onRemoved(key: unknown): void;
|
|
4106
|
+
protected onMoved(move: IRtDynamicSelector.Move): void;
|
|
4107
|
+
protected onEdited(edit: IRtDynamicSelector.TextEdit): void;
|
|
4108
|
+
protected onReset(): void;
|
|
4109
|
+
protected onCleared(): void;
|
|
4110
|
+
protected getEmptyValue(): string[];
|
|
4111
|
+
protected focusAfterClear(): void;
|
|
4112
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtDynamicInputComponent, never>;
|
|
4113
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtDynamicInputComponent, "rt-dynamic-input", never, { "buttonTitle": { "alias": "buttonTitle"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "readonlyKeys": { "alias": "readonlyKeys"; "required": false; "isSignal": true; }; "draggable": { "alias": "draggable"; "required": false; "isSignal": true; }; "buttonRadius": { "alias": "buttonRadius"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "invitation": { "alias": "invitation"; "required": false; "isSignal": true; }; "invitationIcon": { "alias": "invitationIcon"; "required": false; "isSignal": true; }; "invitationDescription": { "alias": "invitationDescription"; "required": false; "isSignal": true; }; }, {}, ["rowControls"], never, true, never>;
|
|
4114
|
+
}
|
|
4115
|
+
|
|
4116
|
+
/**
|
|
4117
|
+
* Список выбранного семьи динамических селекторов: строки с удалением, ручкой перетаскивания и
|
|
4118
|
+
* правкой, под ними полоса с кнопкой добавления вызывающего, сбросом и очисткой. Значения список
|
|
4119
|
+
* не держит: он сообщает, что человек сделал, а селектор и поле списка строк решают, что из этого
|
|
4120
|
+
* выходит.
|
|
4121
|
+
*/
|
|
4122
|
+
declare class RtDynamicSelectorListComponent<TItem> {
|
|
4123
|
+
#private;
|
|
4124
|
+
/** На узком экране подсказки кнопок не показываются: наведения там нет. */
|
|
4125
|
+
protected readonly isNarrow: Signal<boolean>;
|
|
4126
|
+
protected readonly dragLabel: Signal<string>;
|
|
4127
|
+
protected readonly removeLabel: Signal<string>;
|
|
4128
|
+
protected readonly editLabel: Signal<string>;
|
|
4129
|
+
protected readonly applyLabel: Signal<string>;
|
|
4130
|
+
protected readonly cancelLabel: Signal<string>;
|
|
4131
|
+
protected readonly resetLabel: Signal<string>;
|
|
4132
|
+
protected readonly clearLabel: Signal<string>;
|
|
4133
|
+
/** Строка, открытая для правки, и текст в её поле. */
|
|
4134
|
+
protected readonly editedIndex: WritableSignal<number | null>;
|
|
4135
|
+
protected readonly draft: WritableSignal<string>;
|
|
4136
|
+
readonly rows: InputSignal<ReadonlyArray<IRtDynamicSelector.ListRow<TItem>>>;
|
|
4137
|
+
readonly draggable: InputSignalWithTransform<boolean, unknown>;
|
|
4138
|
+
readonly editable: InputSignalWithTransform<boolean, unknown>;
|
|
4139
|
+
readonly disabled: InputSignalWithTransform<boolean, unknown>;
|
|
4140
|
+
/** Полоса под строками; приглашение вызывающего встаёт на её место. */
|
|
4141
|
+
readonly actionsShown: InputSignalWithTransform<boolean, unknown>;
|
|
4142
|
+
readonly resetDisabled: InputSignalWithTransform<boolean, unknown>;
|
|
4143
|
+
readonly clearDisabled: InputSignalWithTransform<boolean, unknown>;
|
|
4144
|
+
/** Шаг скругления кнопок-иконок списка; по умолчанию они круглые. */
|
|
4145
|
+
readonly buttonRadius: InputSignal<TRtRadius | null>;
|
|
4146
|
+
readonly titleTpl: InputSignal<TemplateRef<IRtDynamicSelector.RowContext<TItem>> | null>;
|
|
4147
|
+
readonly controlsTpl: InputSignal<TemplateRef<IRtDynamicSelector.RowContext<TItem>> | null>;
|
|
4148
|
+
readonly removed: OutputEmitterRef<unknown>;
|
|
4149
|
+
readonly moved: OutputEmitterRef<IRtDynamicSelector.Move>;
|
|
4150
|
+
readonly edited: OutputEmitterRef<IRtDynamicSelector.TextEdit>;
|
|
4151
|
+
readonly resetClicked: OutputEmitterRef<void>;
|
|
4152
|
+
readonly cleared: OutputEmitterRef<void>;
|
|
4153
|
+
/** Строка, взятая из чужого списка, ничего не меняет; брошенная на своё место — тоже. */
|
|
4154
|
+
protected onDrop(event: CdkDragDrop<unknown>): void;
|
|
4155
|
+
protected onRemove(row: IRtDynamicSelector.ListRow<TItem>): void;
|
|
4156
|
+
protected onEditStart(index: number, row: IRtDynamicSelector.ListRow<TItem>): void;
|
|
4157
|
+
protected onEditApply(row: IRtDynamicSelector.ListRow<TItem>): void;
|
|
4158
|
+
protected onEditCancel(): void;
|
|
4159
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtDynamicSelectorListComponent<any>, never>;
|
|
4160
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtDynamicSelectorListComponent<any>, "rt-dynamic-selector-list", never, { "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "draggable": { "alias": "draggable"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "actionsShown": { "alias": "actionsShown"; "required": false; "isSignal": true; }; "resetDisabled": { "alias": "resetDisabled"; "required": false; "isSignal": true; }; "clearDisabled": { "alias": "clearDisabled"; "required": false; "isSignal": true; }; "buttonRadius": { "alias": "buttonRadius"; "required": false; "isSignal": true; }; "titleTpl": { "alias": "titleTpl"; "required": false; "isSignal": true; }; "controlsTpl": { "alias": "controlsTpl"; "required": false; "isSignal": true; }; }, { "removed": "removed"; "moved": "moved"; "edited": "edited"; "resetClicked": "resetClicked"; "cleared": "cleared"; }, never, ["*"], true, never>;
|
|
4161
|
+
}
|
|
4162
|
+
|
|
4163
|
+
/** Сколько ждёт поиск на сервере после последней нажатой клавиши. */
|
|
4164
|
+
declare const RT_DYNAMIC_SELECTOR_SEARCH_DEBOUNCE: number;
|
|
4165
|
+
/**
|
|
4166
|
+
* Всплывающий выбор динамического селектора: поиск, флажки или переключатели, «Выбрать всё»,
|
|
4167
|
+
* догрузка при прокрутке, «Отмена» и «Применить». Отметки живут в самом окне и уходят наружу
|
|
4168
|
+
* только по «Применить»: окно создаётся заново при каждом открытии, и закрытие их сбрасывает.
|
|
4169
|
+
*/
|
|
4170
|
+
declare class RtDynamicSelectorPopupComponent<TEntity extends object> implements OnInit {
|
|
4171
|
+
#private;
|
|
4172
|
+
protected readonly searchLabel: Signal<string>;
|
|
4173
|
+
protected readonly selectAllLabel: Signal<string>;
|
|
4174
|
+
protected readonly multiLabel: Signal<string>;
|
|
4175
|
+
protected readonly multiHintLabel: Signal<string>;
|
|
4176
|
+
protected readonly noResultsLabel: Signal<string>;
|
|
4177
|
+
protected readonly cancelLabel: Signal<string>;
|
|
4178
|
+
protected readonly applyLabel: Signal<string>;
|
|
4179
|
+
/** Отмеченные ключи — ещё не применённые. */
|
|
4180
|
+
protected readonly ticked: WritableSignal<unknown[]>;
|
|
4181
|
+
protected readonly query: WritableSignal<string>;
|
|
4182
|
+
/** Выбор нескольких включён: без него простое нажатие оставляет одну отметку. */
|
|
4183
|
+
protected readonly isMultiOn: WritableSignal<boolean>;
|
|
4184
|
+
/** Найденные строки: местный поиск отбирает сам, серверный отдаёт запрос наружу. */
|
|
4185
|
+
protected readonly found: Signal<TEntity[]>;
|
|
4186
|
+
protected readonly rows: Signal<IRtDynamicSelector.PopupRows<TEntity>>;
|
|
4187
|
+
protected readonly visibleKeys: Signal<unknown[]>;
|
|
4188
|
+
/** Строки для разметки: отмеченные раньше над разделителем, найденные — под ним. */
|
|
4189
|
+
protected readonly rowItems: Signal<IRtDynamicSelector.PopupRow<TEntity>[]>;
|
|
4190
|
+
protected readonly hasRows: Signal<boolean>;
|
|
4191
|
+
protected readonly selectAllState: Signal<IRtDynamicSelector.SelectAllState>;
|
|
4192
|
+
protected readonly isSingle: Signal<boolean>;
|
|
4193
|
+
protected readonly isSelectAllShown: Signal<boolean>;
|
|
4194
|
+
protected readonly isMultiToggleVisible: Signal<boolean>;
|
|
4195
|
+
protected readonly lastPinnedKey: Signal<unknown>;
|
|
4196
|
+
protected readonly isApplyDisabled: Signal<boolean>;
|
|
4197
|
+
protected readonly isNavShown: Signal<boolean>;
|
|
4198
|
+
/** Предлагаемые записи: ещё не выбранные, отсортированные селектором. */
|
|
4199
|
+
readonly entities: InputSignal<ReadonlyArray<TEntity>>;
|
|
4200
|
+
readonly keyExp: InputSignal<keyof TEntity & string>;
|
|
4201
|
+
readonly displayExp: InputSignal<keyof TEntity & string>;
|
|
4202
|
+
readonly mode: InputSignal<IRtDynamicSelector.Mode>;
|
|
4203
|
+
readonly multiToggleShown: InputSignalWithTransform<boolean, unknown>;
|
|
4204
|
+
readonly selectAllShown: InputSignalWithTransform<boolean, unknown>;
|
|
4205
|
+
readonly localSearch: InputSignalWithTransform<boolean, unknown>;
|
|
4206
|
+
readonly lazyLoad: InputSignalWithTransform<boolean, unknown>;
|
|
4207
|
+
readonly loading: InputSignalWithTransform<boolean, unknown>;
|
|
4208
|
+
readonly fetching: InputSignalWithTransform<boolean, unknown>;
|
|
4209
|
+
readonly pinnedKeys: InputSignal<ReadonlyArray<unknown>>;
|
|
4210
|
+
readonly navigateTitle: InputSignal<string>;
|
|
4211
|
+
readonly navigateLink: InputSignal<string>;
|
|
4212
|
+
/** Применённые ключи в порядке отметок. */
|
|
4213
|
+
readonly applied: OutputEmitterRef<unknown[]>;
|
|
4214
|
+
readonly cancelled: OutputEmitterRef<void>;
|
|
4215
|
+
/** Запрос для поиска на сервере: через паузу после последней клавиши, стёртый — пустой строкой. */
|
|
4216
|
+
readonly searchChange: OutputEmitterRef<string>;
|
|
4217
|
+
readonly loadMore: OutputEmitterRef<void>;
|
|
4218
|
+
/** Отмеченные записи: пустой список при открытии и текущие отметки после каждого поиска. */
|
|
4219
|
+
readonly temporaryChoiceChange: OutputEmitterRef<TEntity[]>;
|
|
4220
|
+
ngOnInit(): void;
|
|
4221
|
+
protected onQueryChange(value: string | null): void;
|
|
4222
|
+
/** Нажатие строки флажков: при выключенном выборе нескольких без Ctrl или Cmd остаётся одна отметка. */
|
|
4223
|
+
protected onRowClick(event: MouseEvent, item: TEntity): void;
|
|
4224
|
+
protected onRadioChange(item: TEntity): void;
|
|
4225
|
+
protected onSelectAll(checked: boolean): void;
|
|
4226
|
+
protected onMultiToggle(value: boolean): void;
|
|
4227
|
+
protected onApply(): void;
|
|
4228
|
+
protected onCancel(): void;
|
|
4229
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtDynamicSelectorPopupComponent<any>, never>;
|
|
4230
|
+
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; }; }, { "applied": "applied"; "cancelled": "cancelled"; "searchChange": "searchChange"; "loadMore": "loadMore"; "temporaryChoiceChange": "temporaryChoiceChange"; }, never, never, true, never>;
|
|
4231
|
+
}
|
|
4232
|
+
|
|
4233
|
+
/**
|
|
4234
|
+
* Динамический селектор: поле формы со списком выбранных записей. Значение — массив ключей в
|
|
4235
|
+
* порядке списка. Записи добавляются всплывающим выбором, убираются корзиной строки, список
|
|
4236
|
+
* возвращается к записанному формой сбросом и пустеет очисткой — кроме строк только для чтения.
|
|
4237
|
+
*
|
|
4238
|
+
* @example
|
|
4239
|
+
* ```html
|
|
4240
|
+
* <rt-dynamic-selector keyExp="id" displayExp="name" [entities]="people()" [formControl]="team" />
|
|
4241
|
+
* ```
|
|
4242
|
+
*/
|
|
4243
|
+
declare class RtDynamicSelectorComponent<TEntity extends object> extends RtFormControlBase<unknown[]> {
|
|
4244
|
+
#private;
|
|
4245
|
+
protected readonly addLabel: Signal<string>;
|
|
4246
|
+
protected readonly nothingToChooseLabel: Signal<string>;
|
|
4247
|
+
/** Всплывающий выбор открывается от нажатой кнопки добавления: у полосы и у приглашения — свой. */
|
|
4248
|
+
protected readonly popovers: Signal<readonly RtPopoverDirective[]>;
|
|
4249
|
+
protected readonly rowTitle: Signal<RtDynamicSelectorRowTitleDirective<TEntity> | undefined>;
|
|
4250
|
+
protected readonly rowControls: Signal<RtDynamicSelectorRowControlsDirective<TEntity> | undefined>;
|
|
4251
|
+
protected readonly titleTpl: Signal<TemplateRef<IRtDynamicSelector.RowContext<TEntity>> | null>;
|
|
4252
|
+
protected readonly controlsTpl: Signal<TemplateRef<IRtDynamicSelector.RowContext<TEntity>> | null>;
|
|
4253
|
+
/** Выбранные записи в порядке значения; ключ, которого нет среди записей, строки не рисует. */
|
|
4254
|
+
protected readonly chosen: Signal<TEntity[]>;
|
|
4255
|
+
protected readonly rows: Signal<IRtDynamicSelector.ListRow<TEntity>[]>;
|
|
4256
|
+
/** Что предлагает всплывающий выбор: ещё не выбранное, в порядке вызывающего или по алфавиту. */
|
|
4257
|
+
protected readonly offered: Signal<TEntity[]>;
|
|
4258
|
+
protected readonly hasOffer: Signal<boolean>;
|
|
4259
|
+
protected readonly isNothingToChoose: Signal<boolean>;
|
|
4260
|
+
protected readonly isAddShown: Signal<boolean>;
|
|
4261
|
+
protected readonly isResetDisabled: Signal<boolean>;
|
|
4262
|
+
protected readonly isClearDisabled: Signal<boolean>;
|
|
4263
|
+
protected readonly addTitle: Signal<string>;
|
|
4264
|
+
protected readonly hasValue: Signal<boolean>;
|
|
4265
|
+
/** Записи, из которых выбирают; у каждой есть поле ключа и поле подписи. */
|
|
4266
|
+
readonly entities: InputSignal<ReadonlyArray<TEntity>>;
|
|
4267
|
+
readonly keyExp: InputSignal<keyof TEntity & string>;
|
|
4268
|
+
readonly displayExp: InputSignal<keyof TEntity & string>;
|
|
4269
|
+
readonly mode: InputSignal<IRtDynamicSelector.Mode>;
|
|
4270
|
+
/** Название кнопки добавления; пустое — «Add» из словаря кита. */
|
|
4271
|
+
readonly buttonTitle: InputSignal<string>;
|
|
4272
|
+
readonly addShown: InputSignalWithTransform<boolean, unknown>;
|
|
4273
|
+
/** Ключи, которые нельзя убрать из списка. */
|
|
4274
|
+
readonly readonlyKeys: InputSignal<ReadonlyArray<unknown>>;
|
|
4275
|
+
/** Ключи строк всплывающего выбора, под последней из которых стоит разделитель. */
|
|
4276
|
+
readonly pinnedKeys: InputSignal<ReadonlyArray<unknown>>;
|
|
4277
|
+
readonly draggable: InputSignalWithTransform<boolean, unknown>;
|
|
4278
|
+
/** Шаг скругления кнопок-иконок списка; по умолчанию они круглые. */
|
|
4279
|
+
readonly buttonRadius: InputSignal<TRtRadius | null>;
|
|
4280
|
+
/** Приглашение вместо полосы кнопок: значок, описание и кнопка добавления. */
|
|
4281
|
+
readonly invitation: InputSignalWithTransform<boolean, unknown>;
|
|
4282
|
+
readonly invitationIcon: InputSignal<IRtIcon.Name | null>;
|
|
4283
|
+
readonly invitationDescription: InputSignal<string>;
|
|
4284
|
+
readonly multiToggleShown: InputSignalWithTransform<boolean, unknown>;
|
|
4285
|
+
readonly selectAllShown: InputSignalWithTransform<boolean, unknown>;
|
|
4286
|
+
readonly localSearch: InputSignalWithTransform<boolean, unknown>;
|
|
4287
|
+
readonly lazyLoad: InputSignalWithTransform<boolean, unknown>;
|
|
4288
|
+
readonly loading: InputSignalWithTransform<boolean, unknown>;
|
|
4289
|
+
readonly fetching: InputSignalWithTransform<boolean, unknown>;
|
|
4290
|
+
readonly navigateTitle: InputSignal<string>;
|
|
4291
|
+
readonly navigateLink: InputSignal<string>;
|
|
4292
|
+
readonly sortFn: InputSignal<((a: TEntity, b: TEntity) => number) | null>;
|
|
4293
|
+
/** Выбранные записи: те же, что уходят событием изменения выбора. */
|
|
4294
|
+
readonly chosenEntities: ModelSignal<TEntity[]>;
|
|
4295
|
+
readonly selectionChange: OutputEmitterRef<TEntity[]>;
|
|
4296
|
+
readonly listReset: OutputEmitterRef<void>;
|
|
4297
|
+
readonly searchChange: OutputEmitterRef<string>;
|
|
4298
|
+
readonly loadMore: OutputEmitterRef<void>;
|
|
4299
|
+
readonly temporaryChoiceChange: OutputEmitterRef<TEntity[]>;
|
|
4300
|
+
readonly displayText: Signal<string>;
|
|
4301
|
+
/** Записанное формой становится и списком, и значением для сброса; пустой массив список опустошает. */
|
|
4302
|
+
writeValue(value: unknown[] | null): void;
|
|
4303
|
+
protected onAdd(popover: RtPopoverDirective): void;
|
|
4304
|
+
protected onApplied(keys: unknown[]): void;
|
|
4305
|
+
protected onCancelled(): void;
|
|
4306
|
+
protected onRemoved(key: unknown): void;
|
|
4307
|
+
protected onMoved(move: IRtDynamicSelector.Move): void;
|
|
4308
|
+
protected onReset(): void;
|
|
4309
|
+
protected onCleared(): void;
|
|
4310
|
+
protected onClosed(): void;
|
|
4311
|
+
protected getEmptyValue(): unknown[];
|
|
4312
|
+
protected focusAfterClear(): void;
|
|
4313
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtDynamicSelectorComponent<any>, never>;
|
|
4314
|
+
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; }; "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; }; "invitationDescription": { "alias": "invitationDescription"; "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"; "searchChange": "searchChange"; "loadMore": "loadMore"; "temporaryChoiceChange": "temporaryChoiceChange"; }, ["rowTitle", "rowControls"], never, true, never>;
|
|
4315
|
+
}
|
|
4316
|
+
|
|
3908
4317
|
/**
|
|
3909
4318
|
* Заглушка пустого состояния: центрированная иконка в круглой подложке, заголовок,
|
|
3910
4319
|
* опциональное описание и проецируемый слот для действия (кнопка «Прикрепить»,
|
|
@@ -3919,8 +4328,63 @@ declare class RtEmptyStateComponent {
|
|
|
3919
4328
|
readonly icon: InputSignal<IRtIcon.Name | null>;
|
|
3920
4329
|
readonly title: InputSignal<string>;
|
|
3921
4330
|
readonly description: InputSignal<string | null>;
|
|
4331
|
+
/** Пунктирная рамка вокруг заглушки — так она читается как зона, куда бросают файл. */
|
|
4332
|
+
readonly framed: InputSignalWithTransform<boolean, BooleanInput>;
|
|
3922
4333
|
static ɵfac: i0.ɵɵFactoryDeclaration<RtEmptyStateComponent, never>;
|
|
3923
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<RtEmptyStateComponent, "rt-empty-state", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; }, {}, never, ["[rtEmptyIllustration]", "*"], true, [{ directive: typeof RtRadiusDirective; inputs: { "radius": "radius"; }; outputs: {}; }]>;
|
|
4334
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtEmptyStateComponent, "rt-empty-state", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "framed": { "alias": "framed"; "required": false; "isSignal": true; }; }, {}, never, ["[rtEmptyIllustration]", "*"], true, [{ directive: typeof RtRadiusDirective; inputs: { "radius": "radius"; }; outputs: {}; }]>;
|
|
4335
|
+
}
|
|
4336
|
+
|
|
4337
|
+
/**
|
|
4338
|
+
* Тело `rt-expansion-panel`, собираемое лениво: ставится на `<ng-template>` внутри панели, и его
|
|
4339
|
+
* содержимое создаётся при раскрытии и уходит после сворачивания. Сворачивание при этом доигрывает
|
|
4340
|
+
* движение до конца: тело уходит вместе со своим содержимым, а не пустым.
|
|
4341
|
+
*/
|
|
4342
|
+
declare class RtExpansionPanelContentDirective {
|
|
4343
|
+
readonly templateRef: TemplateRef<unknown>;
|
|
4344
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtExpansionPanelContentDirective, never>;
|
|
4345
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RtExpansionPanelContentDirective, "ng-template[rtExpansionPanelContent]", never, {}, {}, never, never, true, never>;
|
|
4346
|
+
}
|
|
4347
|
+
|
|
4348
|
+
declare namespace IRtExpansionPanel {
|
|
4349
|
+
/**
|
|
4350
|
+
* Вид панели: `card` — отдельная карточка на фоне поверхности с тенью, как панель Material;
|
|
4351
|
+
* `plain` — без фона, тени и отступов, для панели внутри списка, который рисует строки сам.
|
|
4352
|
+
*/
|
|
4353
|
+
type Appearance = 'card' | 'plain';
|
|
4354
|
+
}
|
|
4355
|
+
|
|
4356
|
+
/**
|
|
4357
|
+
* Раскрывающаяся панель: заголовок-кнопка во всю ширину с шевроном у правого края и тело под ним.
|
|
4358
|
+
* Нажатие на заголовок раскрывает и сворачивает тело, раскрытие и сворачивание идут с движением.
|
|
4359
|
+
* Заменяет во втором ките панель раскрытия Material первого кита.
|
|
4360
|
+
*
|
|
4361
|
+
* Заголовок — содержимое панели без отметки. Тело — узел с `rtExpansionPanelBody`, созданный сразу,
|
|
4362
|
+
* или `<ng-template rtExpansionPanelContent>`, созданный при раскрытии.
|
|
4363
|
+
*
|
|
4364
|
+
* Состояние раскрытия — `expanded`, двусторонняя привязка: панель пишет в него сама, а владелец
|
|
4365
|
+
* может держать его в своём сигнале и менять извне.
|
|
4366
|
+
*/
|
|
4367
|
+
declare class RtExpansionPanelComponent {
|
|
4368
|
+
#private;
|
|
4369
|
+
/** Ленивое тело: шаблон создаётся при раскрытии. */
|
|
4370
|
+
protected readonly lazyContent: Signal<RtExpansionPanelContentDirective | undefined>;
|
|
4371
|
+
protected readonly bodyId: string;
|
|
4372
|
+
protected readonly headerDomId: Signal<string>;
|
|
4373
|
+
/** Тело раскрыто. Двусторонняя привязка: нажатие на заголовок пишет сюда. */
|
|
4374
|
+
readonly expanded: ModelSignal<boolean>;
|
|
4375
|
+
/** Заголовок не нажимается, тело остаётся как было. */
|
|
4376
|
+
readonly disabled: InputSignalWithTransform<boolean, unknown>;
|
|
4377
|
+
/** Шеврона нет: раскрытие читается по содержимому или его нечего раскрывать. */
|
|
4378
|
+
readonly hideToggle: InputSignalWithTransform<boolean, unknown>;
|
|
4379
|
+
readonly appearance: InputSignal<IRtExpansionPanel.Appearance>;
|
|
4380
|
+
/** Id кнопки заголовка. Нужен владельцу, который ищет заголовок по своему номеру; иначе — свой. */
|
|
4381
|
+
readonly headerId: InputSignal<string | null>;
|
|
4382
|
+
/** Имя кнопки заголовка для вспомогательных средств, когда видимой подписи мало. */
|
|
4383
|
+
readonly ariaLabel: InputSignal<string | null>;
|
|
4384
|
+
/** Нажатие на заголовок: раскрывает свёрнутую панель и сворачивает раскрытую. */
|
|
4385
|
+
toggle(): void;
|
|
4386
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtExpansionPanelComponent, never>;
|
|
4387
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtExpansionPanelComponent, "rt-expansion-panel", never, { "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "hideToggle": { "alias": "hideToggle"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "headerId": { "alias": "headerId"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "expanded": "expandedChange"; }, ["lazyContent"], ["*", "[rtExpansionPanelBody]"], true, never>;
|
|
3924
4388
|
}
|
|
3925
4389
|
|
|
3926
4390
|
/**
|
|
@@ -4414,6 +4878,257 @@ declare class RtIconButtonComponent {
|
|
|
4414
4878
|
static ɵcmp: i0.ɵɵComponentDeclaration<RtIconButtonComponent, "rt-icon-button", never, { "icon": { "alias": "icon"; "required": true; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": true; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "iconColor": { "alias": "iconColor"; "required": false; "isSignal": true; }; "iconFill": { "alias": "iconFill"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "iconSize": { "alias": "iconSize"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "tabIndex": { "alias": "tabIndex"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "indicator": { "alias": "indicator"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, never, true, [{ directive: typeof RtRadiusDirective; inputs: { "radius": "radius"; }; outputs: {}; }]>;
|
|
4415
4879
|
}
|
|
4416
4880
|
|
|
4881
|
+
/**
|
|
4882
|
+
* Контракты обрезки изображения. Один корневой неймспейс с префиксом `I`.
|
|
4883
|
+
*/
|
|
4884
|
+
declare namespace IRtImageCropper {
|
|
4885
|
+
/** Прямоугольник в пикселях исходника: рамка, границы картинки */
|
|
4886
|
+
interface Rect {
|
|
4887
|
+
readonly x: number;
|
|
4888
|
+
readonly y: number;
|
|
4889
|
+
readonly width: number;
|
|
4890
|
+
readonly height: number;
|
|
4891
|
+
}
|
|
4892
|
+
/** Размер исходника или поля */
|
|
4893
|
+
interface Size {
|
|
4894
|
+
readonly width: number;
|
|
4895
|
+
readonly height: number;
|
|
4896
|
+
}
|
|
4897
|
+
/**
|
|
4898
|
+
* Как исходник вписан в поле: масштаб — сколько пикселей поля приходится на
|
|
4899
|
+
* пиксель исходника, отступы — где картинка начинается внутри поля.
|
|
4900
|
+
*/
|
|
4901
|
+
interface Fit {
|
|
4902
|
+
readonly scale: number;
|
|
4903
|
+
readonly offsetX: number;
|
|
4904
|
+
readonly offsetY: number;
|
|
4905
|
+
readonly width: number;
|
|
4906
|
+
readonly height: number;
|
|
4907
|
+
}
|
|
4908
|
+
/** Сдвиг в пикселях исходника */
|
|
4909
|
+
interface Delta {
|
|
4910
|
+
readonly dx: number;
|
|
4911
|
+
readonly dy: number;
|
|
4912
|
+
}
|
|
4913
|
+
/** Направление ручки по осям: −1 — к началу оси, 1 — к концу, 0 — ось ручкой не тянется */
|
|
4914
|
+
interface Direction {
|
|
4915
|
+
readonly x: number;
|
|
4916
|
+
readonly y: number;
|
|
4917
|
+
}
|
|
4918
|
+
/** Ручка рамки: четыре угла и четыре стороны, по сторонам света */
|
|
4919
|
+
type Handle = 'n' | 's' | 'e' | 'w' | 'ne' | 'nw' | 'se' | 'sw';
|
|
4920
|
+
/** Форматы результата */
|
|
4921
|
+
type Format = 'png' | 'jpeg' | 'webp';
|
|
4922
|
+
/** Результат обрезки: файл и рамка, которой он вырезан */
|
|
4923
|
+
interface Result {
|
|
4924
|
+
readonly file: File;
|
|
4925
|
+
readonly frame: Rect;
|
|
4926
|
+
}
|
|
4927
|
+
}
|
|
4928
|
+
|
|
4929
|
+
/** Состояние поля: пусто, читается, не прочиталось, готово */
|
|
4930
|
+
type TCropperState = 'empty' | 'loading' | 'refusal' | 'ready';
|
|
4931
|
+
/**
|
|
4932
|
+
* Обрезка изображения: исходник вписан в поле целиком, поверх — рамка с восемью
|
|
4933
|
+
* ручками. Рамка живёт в пикселях исходника и двигается указателем, пальцем и
|
|
4934
|
+
* стрелками; после прочтения исходника и после каждого законченного изменения
|
|
4935
|
+
* компонент отдаёт файл, вырезанный рамкой, в выбранном формате и качестве.
|
|
4936
|
+
*
|
|
4937
|
+
* Поворот снимка по EXIF делает сам браузер: картинка и холст читают исходник с
|
|
4938
|
+
* `image-orientation: from-image`, и размеры, которые видит логика, уже
|
|
4939
|
+
* повёрнутые.
|
|
4940
|
+
*/
|
|
4941
|
+
declare class RtImageCropperComponent {
|
|
4942
|
+
#private;
|
|
4943
|
+
protected readonly field: Signal<ElementRef<HTMLElement>>;
|
|
4944
|
+
protected readonly t: Signal<TRtKitLabelMap>;
|
|
4945
|
+
protected readonly handles: readonly IRtImageCropper.Handle[];
|
|
4946
|
+
protected readonly handleLabels: Readonly<Record<IRtImageCropper.Handle, TRtKitLabelKey>>;
|
|
4947
|
+
protected readonly state: WritableSignal<TCropperState>;
|
|
4948
|
+
/** Текст пустого поля: свой, если задан, иначе подпись кита */
|
|
4949
|
+
protected readonly placeholderText: Signal<string>;
|
|
4950
|
+
/** Адрес исходника для картинки в поле */
|
|
4951
|
+
protected readonly url: WritableSignal<string | null>;
|
|
4952
|
+
/** Где картинка лежит в поле, в пикселях поля */
|
|
4953
|
+
protected readonly image: Signal<IRtImageCropper.Rect>;
|
|
4954
|
+
/** Рамка в пикселях поля */
|
|
4955
|
+
protected readonly frameBox: Signal<IRtImageCropper.Rect>;
|
|
4956
|
+
/** Подсказка пустого поля; пусто — подпись кита `uiImageCropperPlaceholder` */
|
|
4957
|
+
readonly placeholder: InputSignal<string>;
|
|
4958
|
+
/** Исходник: файл, который надо обрезать; пусто — поле с подсказкой */
|
|
4959
|
+
readonly file: InputSignal<Blob | null>;
|
|
4960
|
+
/** Пропорция рамки, ширина к высоте; пусто — рамка свободная */
|
|
4961
|
+
readonly ratio: InputSignalWithTransform<number | null, NumberInput>;
|
|
4962
|
+
/** Круглый вид: маска на экране и пропорция один к одному; результат — квадрат */
|
|
4963
|
+
readonly round: InputSignalWithTransform<boolean, BooleanInput>;
|
|
4964
|
+
/** Наименьший размер рамки в пикселях исходника */
|
|
4965
|
+
readonly minSize: InputSignalWithTransform<number, NumberInput>;
|
|
4966
|
+
/** Формат результата; пусто — формат исходника, png, когда он не из трёх */
|
|
4967
|
+
readonly format: InputSignal<IRtImageCropper.Format | null>;
|
|
4968
|
+
/** Качество результата в процентах — для jpeg и webp */
|
|
4969
|
+
readonly quality: InputSignalWithTransform<number, NumberInput>;
|
|
4970
|
+
/** Недоступна: рамка видна, но не меняется ни указателем, ни клавишами */
|
|
4971
|
+
readonly disabled: InputSignalWithTransform<boolean, BooleanInput>;
|
|
4972
|
+
/** Файл, вырезанный рамкой: после прочтения исходника и после каждого законченного изменения */
|
|
4973
|
+
readonly cropped: OutputEmitterRef<IRtImageCropper.Result>;
|
|
4974
|
+
/** Исходник не прочитался */
|
|
4975
|
+
readonly loadFailed: OutputEmitterRef<void>;
|
|
4976
|
+
constructor();
|
|
4977
|
+
protected onPointerDown(event: PointerEvent, handle: IRtImageCropper.Handle | null): void;
|
|
4978
|
+
protected onPointerMove(event: PointerEvent): void;
|
|
4979
|
+
protected onPointerUp(event: PointerEvent): void;
|
|
4980
|
+
protected onKeyDown(event: KeyboardEvent, handle: IRtImageCropper.Handle | null): void;
|
|
4981
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtImageCropperComponent, never>;
|
|
4982
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtImageCropperComponent, "rt-image-cropper", never, { "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "file": { "alias": "file"; "required": false; "isSignal": true; }; "ratio": { "alias": "ratio"; "required": false; "isSignal": true; }; "round": { "alias": "round"; "required": false; "isSignal": true; }; "minSize": { "alias": "minSize"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "quality": { "alias": "quality"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "cropped": "cropped"; "loadFailed": "loadFailed"; }, never, never, true, never>;
|
|
4983
|
+
}
|
|
4984
|
+
|
|
4985
|
+
/**
|
|
4986
|
+
* Чистая логика обрезки: вписывание исходника в поле, рамка в пикселях
|
|
4987
|
+
* исходника, её движение и растяжение, перевод клавиш и выбор формата.
|
|
4988
|
+
* Компонент только переводит указатель в сдвиги и рисует то, что вернулось.
|
|
4989
|
+
*/
|
|
4990
|
+
/** Все восемь ручек по часовой стрелке от левого верхнего угла */
|
|
4991
|
+
declare const RT_IMAGE_CROPPER_HANDLES: readonly IRtImageCropper.Handle[];
|
|
4992
|
+
/** Шаг клавиш в пикселях поля: стрелка и стрелка с Shift */
|
|
4993
|
+
declare const RT_IMAGE_CROPPER_KEY_STEP: number;
|
|
4994
|
+
declare const RT_IMAGE_CROPPER_KEY_STEP_LARGE: number;
|
|
4995
|
+
/** Качество по умолчанию — то же, что у загрузчика первого кита */
|
|
4996
|
+
declare const RT_IMAGE_CROPPER_QUALITY: number;
|
|
4997
|
+
/**
|
|
4998
|
+
* Вписывает исходник в поле целиком, с его пропорциями, по центру. Ни одна часть
|
|
4999
|
+
* картинки не срезается полем, и ни одна не растянута.
|
|
5000
|
+
*/
|
|
5001
|
+
declare function fitSource(source: IRtImageCropper.Size, field: IRtImageCropper.Size): IRtImageCropper.Fit;
|
|
5002
|
+
/**
|
|
5003
|
+
* Пропорция, которую держит рамка. Круглый вид держит один к одному при любой
|
|
5004
|
+
* заданной; заданная не числом или не больше нуля значит свободную рамку.
|
|
5005
|
+
*/
|
|
5006
|
+
declare function frameRatio(ratio: number | null | undefined, round: boolean): number | null;
|
|
5007
|
+
/**
|
|
5008
|
+
* Начальная рамка — наибольшая, какую позволяет пропорция, по центру исходника.
|
|
5009
|
+
* Свободная начинается как весь исходник.
|
|
5010
|
+
*/
|
|
5011
|
+
declare function initialFrame(source: IRtImageCropper.Size, ratio: number | null): IRtImageCropper.Rect;
|
|
5012
|
+
/** Сдвиг рамки целиком: размер тот же, у края исходника рамка останавливается */
|
|
5013
|
+
declare function moveFrame(frame: IRtImageCropper.Rect, delta: IRtImageCropper.Delta, source: IRtImageCropper.Size): IRtImageCropper.Rect;
|
|
5014
|
+
/** По каким осям и в какую сторону тянет ручка */
|
|
5015
|
+
declare function handleDirection(handle: IRtImageCropper.Handle): IRtImageCropper.Direction;
|
|
5016
|
+
/**
|
|
5017
|
+
* Растяжение рамки за ручку. Сторона или угол напротив ручки стоит на месте;
|
|
5018
|
+
* рамка не выходит за исходник и не становится меньше наименьшего размера; рамка
|
|
5019
|
+
* с пропорцией держит её, а боковая ручка тянет её вокруг центра второй оси.
|
|
5020
|
+
*/
|
|
5021
|
+
declare function resizeFrame(frame: IRtImageCropper.Rect, handle: IRtImageCropper.Handle, delta: IRtImageCropper.Delta, source: IRtImageCropper.Size, ratio: number | null, minSize: number): IRtImageCropper.Rect;
|
|
5022
|
+
/**
|
|
5023
|
+
* Сдвиг от стрелки клавиатуры в пикселях исходника. Одно нажатие — пиксель поля,
|
|
5024
|
+
* с Shift десять; не стрелка даёт `null`.
|
|
5025
|
+
*/
|
|
5026
|
+
declare function keyDelta(key: string, isLarge: boolean, scale: number): IRtImageCropper.Delta | null;
|
|
5027
|
+
/** Сдвиг указателя в пикселях поля переводится в пиксели исходника */
|
|
5028
|
+
declare function fieldDelta(dx: number, dy: number, scale: number): IRtImageCropper.Delta;
|
|
5029
|
+
/** Рамка в пикселях поля — для рисования поверх вписанной картинки */
|
|
5030
|
+
declare function frameInField(frame: IRtImageCropper.Rect, fit: IRtImageCropper.Fit): IRtImageCropper.Rect;
|
|
5031
|
+
/** Рамка в целых пикселях исходника — то, что вырезает холст; не меньше пикселя */
|
|
5032
|
+
declare function cropArea(frame: IRtImageCropper.Rect, source: IRtImageCropper.Size): IRtImageCropper.Rect;
|
|
5033
|
+
/**
|
|
5034
|
+
* Тип результата. Без выбранного формата берётся формат исходника, и png, когда
|
|
5035
|
+
* он не из трёх.
|
|
5036
|
+
*/
|
|
5037
|
+
declare function resultType(format: IRtImageCropper.Format | null | undefined, sourceType: string): string;
|
|
5038
|
+
/** Качество холста — доля единицы; вход берёт проценты */
|
|
5039
|
+
declare function resultQuality(quality: number): number;
|
|
5040
|
+
/** Имя файла результата: основа имени исходника и расширение по типу результата */
|
|
5041
|
+
declare function resultFileName(sourceName: string, type: string): string;
|
|
5042
|
+
|
|
5043
|
+
declare namespace IRtImageUpload {
|
|
5044
|
+
/** Что стоит в месте загрузчика: одно состояние за раз */
|
|
5045
|
+
type State = 'loading' | 'cropping' | 'image' | 'empty';
|
|
5046
|
+
/** Форма кнопки скачивания: круглая, как у первого кита, или квадратная */
|
|
5047
|
+
type DownloadShape = 'circle' | 'square';
|
|
5048
|
+
}
|
|
5049
|
+
|
|
5050
|
+
/**
|
|
5051
|
+
* Загрузчик одного изображения: одно место, в котором по очереди стоят зона загрузки, обрезка и
|
|
5052
|
+
* сама картинка. Файл выбирают кнопкой зоны или бросают на неё; выбранный открывает обрезку, а
|
|
5053
|
+
* «Применить» ставит результат на место картинки и отдаёт файл приложению. Нажатие на картинку
|
|
5054
|
+
* выбирает другой файл.
|
|
5055
|
+
*
|
|
5056
|
+
* Картинка — адрес: приложение даёт свой, а адрес применённого файла загрузчик делает сам и
|
|
5057
|
+
* отпускает его, когда картинку сменили или компонент ушёл. Файл приложение получает в
|
|
5058
|
+
* `imageChanged`.
|
|
5059
|
+
*/
|
|
5060
|
+
declare class RtImageUploadComponent {
|
|
5061
|
+
#private;
|
|
5062
|
+
protected readonly picker: Signal<ElementRef<HTMLInputElement>>;
|
|
5063
|
+
protected readonly t: Signal<TRtKitLabelMap>;
|
|
5064
|
+
/** Выбранный файл, который сейчас режет обрезка */
|
|
5065
|
+
protected readonly source: WritableSignal<File | null>;
|
|
5066
|
+
/** Последний результат обрезки — его берёт «Применить» */
|
|
5067
|
+
protected readonly result: WritableSignal<IRtImageCropper.Result | null>;
|
|
5068
|
+
/** Что сейчас стоит в месте загрузчика */
|
|
5069
|
+
protected readonly state: Signal<IRtImageUpload.State>;
|
|
5070
|
+
/** Подсказка над картинкой: своя приложения или подпись кита */
|
|
5071
|
+
protected readonly hint: Signal<string>;
|
|
5072
|
+
/** Круглая ли кнопка скачивания: подложка под размытием повторяет её скругление */
|
|
5073
|
+
protected readonly downloadRound: Signal<boolean>;
|
|
5074
|
+
/** Шаг скругления кнопки скачивания: круг — полный шаг, квадрат — скругление кнопки по умолчанию */
|
|
5075
|
+
protected readonly downloadRadius: Signal<TRtRadius | null>;
|
|
5076
|
+
/**
|
|
5077
|
+
* Адрес текущей картинки: данный приложением или сделанный под применённый файл. Новый адрес от
|
|
5078
|
+
* приложения снова берёт верх над применённым.
|
|
5079
|
+
*/
|
|
5080
|
+
protected readonly image: WritableSignal<string | null>;
|
|
5081
|
+
/** Адрес картинки от приложения */
|
|
5082
|
+
readonly imageUrl: InputSignal<string | null>;
|
|
5083
|
+
/** Имя файла, под которым картинку скачивают и отдают приложению */
|
|
5084
|
+
readonly fileName: InputSignal<string>;
|
|
5085
|
+
/** Подсказка над картинкой; пустая — подпись кита */
|
|
5086
|
+
readonly tooltip: InputSignal<string>;
|
|
5087
|
+
/** Кнопка скачивания рядом с картинкой */
|
|
5088
|
+
readonly downloadable: InputSignalWithTransform<boolean, BooleanInput>;
|
|
5089
|
+
/** Форма кнопки скачивания; она заходит за правый верхний угол картинки при любой форме */
|
|
5090
|
+
readonly downloadShape: InputSignal<IRtImageUpload.DownloadShape>;
|
|
5091
|
+
/** Без кнопок «Отмена» и «Применить»: каждый результат обрезки применяется сразу */
|
|
5092
|
+
readonly autoApply: InputSignalWithTransform<boolean, BooleanInput>;
|
|
5093
|
+
/** Приложение загружает картинку: на месте стоит индикатор */
|
|
5094
|
+
readonly loading: InputSignalWithTransform<boolean, BooleanInput>;
|
|
5095
|
+
/** Недоступный загрузчик не берёт файлов и не отзывается на нажатие картинки */
|
|
5096
|
+
readonly disabled: InputSignalWithTransform<boolean, BooleanInput>;
|
|
5097
|
+
/** Соотношение рамки обрезки; пусто — свободная рамка */
|
|
5098
|
+
readonly ratio: InputSignalWithTransform<number | null, NumberInput>;
|
|
5099
|
+
/** Круглая маска обрезки для аватара */
|
|
5100
|
+
readonly round: InputSignalWithTransform<boolean, BooleanInput>;
|
|
5101
|
+
/** Формат результата; пусто — формат исходника */
|
|
5102
|
+
readonly format: InputSignal<IRtImageCropper.Format | null>;
|
|
5103
|
+
/** Качество результата, от 0 до 100 */
|
|
5104
|
+
readonly quality: InputSignalWithTransform<number, NumberInput>;
|
|
5105
|
+
/** Применённый файл — его приложение отправляет, куда ему надо */
|
|
5106
|
+
readonly imageChanged: OutputEmitterRef<File>;
|
|
5107
|
+
/** Картинку скачали */
|
|
5108
|
+
readonly downloaded: OutputEmitterRef<void>;
|
|
5109
|
+
constructor();
|
|
5110
|
+
/** Открывает выбор файла, если загрузчик доступен */
|
|
5111
|
+
pick(): void;
|
|
5112
|
+
/** Файл выбран кнопкой или брошен: изображение открывает обрезку, остальное пропускается */
|
|
5113
|
+
choose(file: File | null | undefined): void;
|
|
5114
|
+
protected onPicked(event: Event): void;
|
|
5115
|
+
protected onSpace(event: Event): void;
|
|
5116
|
+
protected onCropped(result: IRtImageCropper.Result): void;
|
|
5117
|
+
protected apply(): void;
|
|
5118
|
+
protected cancel(): void;
|
|
5119
|
+
protected download(): void;
|
|
5120
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtImageUploadComponent, never>;
|
|
5121
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtImageUploadComponent, "rt-image-upload", never, { "imageUrl": { "alias": "imageUrl"; "required": false; "isSignal": true; }; "fileName": { "alias": "fileName"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "downloadable": { "alias": "downloadable"; "required": false; "isSignal": true; }; "downloadShape": { "alias": "downloadShape"; "required": false; "isSignal": true; }; "autoApply": { "alias": "autoApply"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ratio": { "alias": "ratio"; "required": false; "isSignal": true; }; "round": { "alias": "round"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "quality": { "alias": "quality"; "required": false; "isSignal": true; }; }, { "imageChanged": "imageChanged"; "downloaded": "downloaded"; }, never, never, true, never>;
|
|
5122
|
+
}
|
|
5123
|
+
|
|
5124
|
+
/**
|
|
5125
|
+
* Какое состояние занимает место. Загрузка приложения важнее всего, выбранный исходник важнее
|
|
5126
|
+
* картинки, картинка важнее зоны загрузки.
|
|
5127
|
+
*/
|
|
5128
|
+
declare function uploadState(loading: boolean, hasSource: boolean, image: string | null): IRtImageUpload.State;
|
|
5129
|
+
/** Берётся только файл изображения: брошенный файл другого типа загрузчик пропускает */
|
|
5130
|
+
declare function isImageFile(file: File | null | undefined): file is File;
|
|
5131
|
+
|
|
4417
5132
|
declare class RtInfoItemComponent {
|
|
4418
5133
|
readonly label: InputSignal<string>;
|
|
4419
5134
|
readonly loading: InputSignalWithTransform<boolean, BooleanInput>;
|
|
@@ -4694,6 +5409,23 @@ declare class RtMarkdownTextComponent {
|
|
|
4694
5409
|
static ɵcmp: i0.ɵɵComponentDeclaration<RtMarkdownTextComponent, "rt-markdown-text", never, { "text": { "alias": "text"; "required": true; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof RtRadiusDirective; inputs: { "radius": "radius"; }; outputs: {}; }]>;
|
|
4695
5410
|
}
|
|
4696
5411
|
|
|
5412
|
+
/**
|
|
5413
|
+
* Помечает `<ng-template>` своего значка пункта меню. Кит ставит содержимое на место значка
|
|
5414
|
+
* `rt-menu-item__icon` его размером и цветом тона пункта — так приложение рисует значок, которого
|
|
5415
|
+
* нет ни в наборе кита, ни в перечне имён Material. Свой значок сильнее `icon` и `glyph`.
|
|
5416
|
+
*
|
|
5417
|
+
* ```html
|
|
5418
|
+
* <rt-menu-item label="Сделать активным">
|
|
5419
|
+
* <ng-template rtMenuItemIcon><svg viewBox="0 0 24 24">…</svg></ng-template>
|
|
5420
|
+
* </rt-menu-item>
|
|
5421
|
+
* ```
|
|
5422
|
+
*/
|
|
5423
|
+
declare class RtMenuItemIconDirective {
|
|
5424
|
+
readonly templateRef: TemplateRef<unknown>;
|
|
5425
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtMenuItemIconDirective, never>;
|
|
5426
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RtMenuItemIconDirective, "ng-template[rtMenuItemIcon]", never, {}, {}, never, never, true, never>;
|
|
5427
|
+
}
|
|
5428
|
+
|
|
4697
5429
|
/**
|
|
4698
5430
|
* Контракты `rt-menu` — dropdown-меню действий (триггер «…» + плавающая панель
|
|
4699
5431
|
* с пунктами `rt-menu-item`). Один корневой неймспейс с префиксом `I`.
|
|
@@ -4748,8 +5480,10 @@ declare namespace IRtTooltip {
|
|
|
4748
5480
|
* (авто-flip у края viewport, reposition при скролле), так что подсказка не
|
|
4749
5481
|
* режется `overflow: hidden` предками (таблицы, aside, карточки).
|
|
4750
5482
|
*
|
|
4751
|
-
* Триггеры: `mouseenter
|
|
4752
|
-
* `mouseleave`/`focusout`/`click` прячут.
|
|
5483
|
+
* Триггеры: `mouseenter` и фокус с клавиатуры показывают (с задержкой `SHOW_DELAY_MS`),
|
|
5484
|
+
* `mouseleave`/`focusout`/`click` прячут. Фокус, поставленный мышью или кодом, подсказку не
|
|
5485
|
+
* показывает, как у Material: меню возвращает фокус кнопке после выбора пункта мышью, и
|
|
5486
|
+
* подсказка кнопки всплывала поверх того, что пункт открыл. Пустой текст → no-op (директива
|
|
4753
5487
|
* выключена), поэтому её можно безусловно вешать на icon-кнопки и включать
|
|
4754
5488
|
* выставлением строки.
|
|
4755
5489
|
*
|
|
@@ -4770,11 +5504,18 @@ declare class RtTooltipDirective implements OnDestroy {
|
|
|
4770
5504
|
readonly text: InputSignalWithTransform<string, string | null | undefined>;
|
|
4771
5505
|
/** Сторона подсказки. Не задана — сверху, а под материальным набором снизу, как у первого кита. */
|
|
4772
5506
|
readonly placement: InputSignal<IRtTooltip.Placement | null>;
|
|
5507
|
+
/**
|
|
5508
|
+
* Подсказка только у обрезанного текста: хост меряется в момент показа, и подсказка не
|
|
5509
|
+
* появляется, пока его содержимое помещается целиком. Мерить заранее не нужно — показ идёт
|
|
5510
|
+
* только отсюда, и признак в эту минуту всегда свежий.
|
|
5511
|
+
*/
|
|
5512
|
+
readonly whenTruncated: InputSignalWithTransform<boolean, unknown>;
|
|
5513
|
+
constructor();
|
|
4773
5514
|
ngOnDestroy(): void;
|
|
4774
5515
|
protected show(): void;
|
|
4775
5516
|
protected hide(): void;
|
|
4776
5517
|
static ɵfac: i0.ɵɵFactoryDeclaration<RtTooltipDirective, never>;
|
|
4777
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<RtTooltipDirective, "[rtTooltip]", ["rtTooltip"], { "text": { "alias": "rtTooltip"; "required": false; "isSignal": true; }; "placement": { "alias": "rtTooltipPlacement"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5518
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RtTooltipDirective, "[rtTooltip]", ["rtTooltip"], { "text": { "alias": "rtTooltip"; "required": false; "isSignal": true; }; "placement": { "alias": "rtTooltipPlacement"; "required": false; "isSignal": true; }; "whenTruncated": { "alias": "rtTooltipWhenTruncated"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4778
5519
|
}
|
|
4779
5520
|
|
|
4780
5521
|
/**
|
|
@@ -4799,8 +5540,14 @@ declare class RtTooltipDirective implements OnDestroy {
|
|
|
4799
5540
|
*/
|
|
4800
5541
|
declare class RtMenuItemComponent {
|
|
4801
5542
|
#private;
|
|
5543
|
+
/** Свой значок приложения — `<ng-template rtMenuItemIcon>` внутри пункта. */
|
|
5544
|
+
protected readonly ownIcon: Signal<RtMenuItemIconDirective | undefined>;
|
|
4802
5545
|
/** Значок пункта: свой `icon`, а без него — пара имени Material из перечня кита. */
|
|
4803
5546
|
protected readonly iconName: Signal<IRtIcon.Name | null>;
|
|
5547
|
+
/** Пункт — ссылка: задан `link`. Роль пункта меню и фокус тогда несёт ссылка внутри. */
|
|
5548
|
+
protected readonly isLink: Signal<boolean>;
|
|
5549
|
+
/** Адрес для ссылки: у недоступного пункта его нет, и ссылка не переходит. */
|
|
5550
|
+
protected readonly linkTarget: Signal<RouterLink['routerLink']>;
|
|
4804
5551
|
/** Иконка слева от лейбла. `null` — без иконки. */
|
|
4805
5552
|
readonly icon: InputSignal<IRtIcon.Name | null>;
|
|
4806
5553
|
/** Текст пункта. */
|
|
@@ -4814,6 +5561,12 @@ declare class RtMenuItemComponent {
|
|
|
4814
5561
|
* кита через перечень соответствий; `icon` сильнее, а имя без пары рисует пункт без значка.
|
|
4815
5562
|
*/
|
|
4816
5563
|
readonly glyph: InputSignal<string | null>;
|
|
5564
|
+
/**
|
|
5565
|
+
* Залитый значок вместо контурного — как значки пунктов меню первого кита. Уходит в `fill`
|
|
5566
|
+
* значка: действует в материальном наборе, свой набор рисует значок одним рисунком. Свой
|
|
5567
|
+
* значок `rtMenuItemIcon` приложение рисует само, и заливка его не касается.
|
|
5568
|
+
*/
|
|
5569
|
+
readonly fill: InputSignalWithTransform<boolean, BooleanInput>;
|
|
4817
5570
|
/** Пункт — нынешнее значение выбора, который открыл меню: подсвечен фоном и объявлен скринридеру. */
|
|
4818
5571
|
readonly current: InputSignalWithTransform<boolean, BooleanInput>;
|
|
4819
5572
|
/** Недоступный пункт — приглушён, не эмитит `(selected)` и не закрывает меню. */
|
|
@@ -4832,13 +5585,21 @@ declare class RtMenuItemComponent {
|
|
|
4832
5585
|
readonly confirmCancelLabel: InputSignal<string>;
|
|
4833
5586
|
/** Тон подтверждающей кнопки в модалке. */
|
|
4834
5587
|
readonly confirmTone: InputSignal<IRtMenu.ConfirmTone>;
|
|
5588
|
+
/**
|
|
5589
|
+
* Команды маршрута приложения, как у `routerLink`. Задан — пункт рисует ссылку с `href`: Enter и
|
|
5590
|
+
* клик переходят по ней, а Ctrl/Cmd-click, Shift-click и средняя кнопка открывают новую вкладку
|
|
5591
|
+
* или окно силами браузера. Меню закрывается во всех этих случаях; подтверждение не спрашивается.
|
|
5592
|
+
*/
|
|
5593
|
+
readonly link: InputSignal<RouterLink['routerLink']>;
|
|
4835
5594
|
/** Пункт выбран (клик/Enter/Space и не `disabled`; после подтверждения, если задано). */
|
|
4836
5595
|
readonly selected: OutputEmitterRef<void>;
|
|
4837
5596
|
constructor();
|
|
4838
5597
|
protected onActivate(event: Event): void;
|
|
4839
5598
|
protected onKey(event: Event): void;
|
|
5599
|
+
/** Средняя кнопка не даёт `click`: вкладку открывает браузер, а меню закрываем сами. */
|
|
5600
|
+
protected onAuxClick(event: MouseEvent): void;
|
|
4840
5601
|
static ɵfac: i0.ɵɵFactoryDeclaration<RtMenuItemComponent, never>;
|
|
4841
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<RtMenuItemComponent, "rt-menu-item", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "danger": { "alias": "danger"; "required": false; "isSignal": true; }; "success": { "alias": "success"; "required": false; "isSignal": true; }; "glyph": { "alias": "glyph"; "required": false; "isSignal": true; }; "current": { "alias": "current"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "confirmMessage": { "alias": "confirmMessage"; "required": false; "isSignal": true; }; "confirmTitle": { "alias": "confirmTitle"; "required": false; "isSignal": true; }; "confirmLabel": { "alias": "confirmLabel"; "required": false; "isSignal": true; }; "confirmCancelLabel": { "alias": "confirmCancelLabel"; "required": false; "isSignal": true; }; "confirmTone": { "alias": "confirmTone"; "required": false; "isSignal": true; }; }, { "selected": "selected"; },
|
|
5602
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtMenuItemComponent, "rt-menu-item", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "danger": { "alias": "danger"; "required": false; "isSignal": true; }; "success": { "alias": "success"; "required": false; "isSignal": true; }; "glyph": { "alias": "glyph"; "required": false; "isSignal": true; }; "fill": { "alias": "fill"; "required": false; "isSignal": true; }; "current": { "alias": "current"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "confirmMessage": { "alias": "confirmMessage"; "required": false; "isSignal": true; }; "confirmTitle": { "alias": "confirmTitle"; "required": false; "isSignal": true; }; "confirmLabel": { "alias": "confirmLabel"; "required": false; "isSignal": true; }; "confirmCancelLabel": { "alias": "confirmCancelLabel"; "required": false; "isSignal": true; }; "confirmTone": { "alias": "confirmTone"; "required": false; "isSignal": true; }; "link": { "alias": "link"; "required": false; "isSignal": true; }; }, { "selected": "selected"; }, ["ownIcon"], never, true, [{ directive: typeof RtTooltipDirective; inputs: { "rtTooltip": "tooltip"; }; outputs: {}; }, { directive: typeof RtRadiusDirective; inputs: { "radius": "radius"; }; outputs: {}; }]>;
|
|
4842
5603
|
}
|
|
4843
5604
|
|
|
4844
5605
|
/**
|
|
@@ -5676,6 +6437,467 @@ declare class RtSectionNavComponent {
|
|
|
5676
6437
|
static ɵcmp: i0.ɵɵComponentDeclaration<RtSectionNavComponent, "rt-section-nav", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; }, { "itemSelect": "itemSelect"; }, never, never, true, [{ directive: typeof RtRadiusDirective; inputs: { "radius": "radius"; }; outputs: {}; }]>;
|
|
5677
6438
|
}
|
|
5678
6439
|
|
|
6440
|
+
declare namespace IRtSideMenu {
|
|
6441
|
+
type ItemData = string | number | object;
|
|
6442
|
+
/**
|
|
6443
|
+
* Чем подменю держится открытым: наведением или закреплением — тогда оно стоит открытым, пока
|
|
6444
|
+
* человек сам его не свернёт.
|
|
6445
|
+
*/
|
|
6446
|
+
type SubMenuMode = 'hover' | 'pinned';
|
|
6447
|
+
/** Номер пункта в списке избранного — тот же, что `id` пункта меню. */
|
|
6448
|
+
type FavoriteId = Item['id'];
|
|
6449
|
+
/**
|
|
6450
|
+
* Место под скрытые кнопки строки: `always` — кнопка, ждущая наведения, держит свою ширину;
|
|
6451
|
+
* `none` — в покое ширины не занимает, и подпись идёт до края.
|
|
6452
|
+
*/
|
|
6453
|
+
type FavoriteActionsReserve = 'always' | 'none';
|
|
6454
|
+
/**
|
|
6455
|
+
* Число строк в заголовке блока избранного: `always` — всегда; `collapsed` — только у свёрнутого
|
|
6456
|
+
* блока; `never` — никогда.
|
|
6457
|
+
*/
|
|
6458
|
+
type FavoritesCount = 'always' | 'collapsed' | 'never';
|
|
6459
|
+
/**
|
|
6460
|
+
* Настройки одного меню под его номером в хранилище. Незнакомые поля кит не удаляет: их могло
|
|
6461
|
+
* положить приложение или следующая версия кита.
|
|
6462
|
+
*/
|
|
6463
|
+
interface Settings {
|
|
6464
|
+
favorites?: FavoriteId[];
|
|
6465
|
+
/** Пункты полосы, чей блок избранного свёрнут; блок по умолчанию развёрнут. */
|
|
6466
|
+
favoritesCollapsed?: Array<Item['id']>;
|
|
6467
|
+
subMenuMode?: SubMenuMode;
|
|
6468
|
+
subMenuWidth?: number;
|
|
6469
|
+
[field: string]: unknown;
|
|
6470
|
+
}
|
|
6471
|
+
interface Item {
|
|
6472
|
+
id: string | number;
|
|
6473
|
+
icon?: string;
|
|
6474
|
+
name?: string;
|
|
6475
|
+
link?: string;
|
|
6476
|
+
submenu?: Item[];
|
|
6477
|
+
/** Избранное в подменю этого пункта полосы. По умолчанию выключено. */
|
|
6478
|
+
favorites?: boolean;
|
|
6479
|
+
/**
|
|
6480
|
+
* Пункт со ссылкой, который в избранное не ставится: своя страница раздела, дашборд,
|
|
6481
|
+
* действие «Создать». Звезды у него нет, и номер, сохранённый раньше, в блок не попадает.
|
|
6482
|
+
*/
|
|
6483
|
+
favoriteDisabled?: boolean;
|
|
6484
|
+
iconButton?: {
|
|
6485
|
+
icon: string;
|
|
6486
|
+
data?: ItemData;
|
|
6487
|
+
};
|
|
6488
|
+
}
|
|
6489
|
+
/** Кусок подписи: отмеченный — тот, которым она совпала с запросом. */
|
|
6490
|
+
interface TitlePart {
|
|
6491
|
+
text: string;
|
|
6492
|
+
matched: boolean;
|
|
6493
|
+
}
|
|
6494
|
+
}
|
|
6495
|
+
|
|
6496
|
+
/** Шапка бокового меню: над полосой пунктов. */
|
|
6497
|
+
declare class RtSideMenuHeaderDirective {
|
|
6498
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtSideMenuHeaderDirective, never>;
|
|
6499
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RtSideMenuHeaderDirective, "[rtSideMenuHeader]", never, {}, {}, never, never, true, never>;
|
|
6500
|
+
}
|
|
6501
|
+
/** Подвал бокового меню: под полосой пунктов. */
|
|
6502
|
+
declare class RtSideMenuFooterDirective {
|
|
6503
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtSideMenuFooterDirective, never>;
|
|
6504
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RtSideMenuFooterDirective, "[rtSideMenuFooter]", never, {}, {}, never, never, true, never>;
|
|
6505
|
+
}
|
|
6506
|
+
/** Контекст своего значка пункта: сам пункт — по нему приложение выбирает рисунок. */
|
|
6507
|
+
interface IRtSideMenuIconContext {
|
|
6508
|
+
$implicit: IRtSideMenu.Item;
|
|
6509
|
+
}
|
|
6510
|
+
/**
|
|
6511
|
+
* Помечает `<ng-template>` своего значка пунктов меню — для имён, которых нет ни в наборе кита, ни
|
|
6512
|
+
* в перечне имён Material. Шаблон один на меню и получает пункт; кит ставит его на место значка
|
|
6513
|
+
* размером значка и цветом строки. Значок, который кит рисует сам, шаблон не перебивает.
|
|
6514
|
+
*
|
|
6515
|
+
* ```html
|
|
6516
|
+
* <rt-side-menu [menuItems]="items">
|
|
6517
|
+
* <ng-template rtSideMenuIcon let-item><img [src]="'/icons/' + item.icon + '.svg'" alt="" /></ng-template>
|
|
6518
|
+
* </rt-side-menu>
|
|
6519
|
+
* ```
|
|
6520
|
+
*/
|
|
6521
|
+
declare class RtSideMenuIconDirective {
|
|
6522
|
+
readonly templateRef: TemplateRef<IRtSideMenuIconContext>;
|
|
6523
|
+
static ngTemplateContextGuard(_directive: RtSideMenuIconDirective, context: unknown): context is IRtSideMenuIconContext;
|
|
6524
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtSideMenuIconDirective, never>;
|
|
6525
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RtSideMenuIconDirective, "ng-template[rtSideMenuIcon]", never, {}, {}, never, never, true, never>;
|
|
6526
|
+
}
|
|
6527
|
+
|
|
6528
|
+
/**
|
|
6529
|
+
* Меню, в котором стоит подпункт. Токен вместо самого компонента: меню объявляет подпункт в своих
|
|
6530
|
+
* импортах, и прямая ссылка замкнула бы круг «меню → подпункт → меню».
|
|
6531
|
+
*
|
|
6532
|
+
* Активность и раскрытость — два значения: активным остаётся адрес, на котором человек стоит, а
|
|
6533
|
+
* раскрытой — всякая папка, в которой нашлось совпадение.
|
|
6534
|
+
*/
|
|
6535
|
+
interface IRtSideMenuHost {
|
|
6536
|
+
readonly activeMenuIds: Signal<ReadonlyArray<string | number>>;
|
|
6537
|
+
readonly expandedMenuIds: Signal<ReadonlyArray<string | number>>;
|
|
6538
|
+
readonly highlightedMenuId: Signal<string | number | null>;
|
|
6539
|
+
readonly subMenuQuery: Signal<string>;
|
|
6540
|
+
/** Номер, под которым меню хранит настройки, и пункты полосы: по ним избранное находит свой раздел. */
|
|
6541
|
+
readonly menuId: Signal<string>;
|
|
6542
|
+
readonly menuItems: Signal<ReadonlyArray<IRtSideMenu.Item>>;
|
|
6543
|
+
/** Набор, который подменю наполняет сейчас, до отбора поиском. */
|
|
6544
|
+
readonly shownSubMenu: Signal<IRtSideMenu.Item[]>;
|
|
6545
|
+
readonly favoritesCount: Signal<IRtSideMenu.FavoritesCount>;
|
|
6546
|
+
/** Поиск показывает совпавшие строки избранного; выключено — на время поиска блока нет. */
|
|
6547
|
+
readonly isFavoritesSearchShown: Signal<boolean>;
|
|
6548
|
+
/** Свой значок пунктов, чьё имя кит не рисует: шаблон `rtSideMenuIcon` меню. */
|
|
6549
|
+
readonly ownIconTpl: Signal<TemplateRef<IRtSideMenuIconContext> | undefined>;
|
|
6550
|
+
/** Раскрыть или свернуть папку нажатием её заголовка. */
|
|
6551
|
+
toggleFolder(item: IRtSideMenu.Item): void;
|
|
6552
|
+
/** Уход указателя с панели: подменю, открытое наведением, закрывается. */
|
|
6553
|
+
toggleSubMenu(): void;
|
|
6554
|
+
/** Строку избранного тянут: подменю, открытое наведением, не закрывается уходом указателя. */
|
|
6555
|
+
holdSubMenu(held: boolean): void;
|
|
6556
|
+
}
|
|
6557
|
+
|
|
6558
|
+
/**
|
|
6559
|
+
* Боковая навигация: полоса пунктов и подменю раздела рядом. Перенос бокового меню первого кита на
|
|
6560
|
+
* части второго; `rt-menu` — другое семейство, выпадающее меню действий.
|
|
6561
|
+
*/
|
|
6562
|
+
declare class RtSideMenuComponent implements IRtSideMenuHost {
|
|
6563
|
+
#private;
|
|
6564
|
+
protected readonly searchControl: FormControl<string | null>;
|
|
6565
|
+
protected readonly panelRef: Signal<ElementRef<HTMLElement> | undefined>;
|
|
6566
|
+
protected readonly headerTpl: Signal<TemplateRef<unknown> | undefined>;
|
|
6567
|
+
protected readonly footerTpl: Signal<TemplateRef<unknown> | undefined>;
|
|
6568
|
+
protected readonly searchLabel: Signal<string>;
|
|
6569
|
+
protected readonly pinLabel: Signal<string>;
|
|
6570
|
+
protected readonly unpinLabel: Signal<string>;
|
|
6571
|
+
protected readonly nothingFoundLabel: Signal<string>;
|
|
6572
|
+
protected readonly resizeLabel: Signal<string>;
|
|
6573
|
+
protected readonly backLabel: Signal<string>;
|
|
6574
|
+
/** Экран узкий: замер кита, и другого источника у этого признака нет. */
|
|
6575
|
+
protected readonly narrow: Signal<boolean>;
|
|
6576
|
+
protected readonly resizeValueNow: Signal<number | null>;
|
|
6577
|
+
protected readonly resizeValueMin: number;
|
|
6578
|
+
protected readonly resizeValueMax: number;
|
|
6579
|
+
/** Натянутая ширина панели. Своего выбора нет — свойство не ставится, и ширину берёт оформление. */
|
|
6580
|
+
protected readonly panelWidthStyle: Signal<string | null>;
|
|
6581
|
+
/** Закрепление действует только на широком экране: на узком подменю занимает экран целиком. */
|
|
6582
|
+
protected readonly isPinned: Signal<boolean>;
|
|
6583
|
+
/** Подменю держится набором запроса: уходом указателя не закрывается. */
|
|
6584
|
+
protected readonly isSearchHeld: Signal<boolean>;
|
|
6585
|
+
/** Закреплённое подменю открыто, пока ему есть что показать: указатель на это не влияет. */
|
|
6586
|
+
protected readonly subMenuOpened: Signal<boolean>;
|
|
6587
|
+
protected readonly visibleSubMenuItems: Signal<IRtSideMenu.Item[]>;
|
|
6588
|
+
protected readonly isNothingFound: Signal<boolean>;
|
|
6589
|
+
/** Пункт полосы подсвечен активным: выбранный человеком, а без выбора — пункт текущего адреса. */
|
|
6590
|
+
protected readonly activeRailIds: Signal<ReadonlyArray<string | number>>;
|
|
6591
|
+
/** Набор, который подменю наполняет сейчас, до отбора поиском. */
|
|
6592
|
+
readonly shownSubMenu: Signal<IRtSideMenu.Item[]>;
|
|
6593
|
+
readonly selectedItem: WritableSignal<IRtSideMenu.Item | null>;
|
|
6594
|
+
readonly selectedSubMenu: WritableSignal<IRtSideMenu.Item[] | null>;
|
|
6595
|
+
/** Что набрано в поиске: строка берёт запрос отсюда, чтобы отметить совпавшее. */
|
|
6596
|
+
readonly subMenuQuery: WritableSignal<string>;
|
|
6597
|
+
readonly highlightedMenuId: Signal<string | number | null>;
|
|
6598
|
+
/**
|
|
6599
|
+
* Какие папки раскрыты. Пустой запрос оставляет раздел текущего адреса; непустой добавляет
|
|
6600
|
+
* папки с совпадением — иначе найденное лежит за закрытым заголовком.
|
|
6601
|
+
*/
|
|
6602
|
+
readonly expandedMenuIds: Signal<ReadonlyArray<string | number>>;
|
|
6603
|
+
readonly activeMenuIds: InputSignal<ReadonlyArray<string | number>>;
|
|
6604
|
+
readonly menuItems: InputSignal<ReadonlyArray<IRtSideMenu.Item>>;
|
|
6605
|
+
/** Режим подменю от приложения. Задан — важнее сохранённого; нет ни того, ни другого — наведение. */
|
|
6606
|
+
readonly subMenuMode: InputSignal<IRtSideMenu.SubMenuMode | undefined>;
|
|
6607
|
+
/** Ширина закреплённого подменю в пикселях. Пусто — сохранённая, её нет — оформление. */
|
|
6608
|
+
readonly subMenuWidth: InputSignal<number | null | undefined>;
|
|
6609
|
+
/** Номер, под которым меню хранит свои настройки: у двух меню приложения — два номера. */
|
|
6610
|
+
readonly menuId: InputSignalWithTransform<string, string | null | undefined>;
|
|
6611
|
+
/** Число строк в заголовке блока избранного: всегда, у свёрнутого блока или никогда. */
|
|
6612
|
+
readonly favoritesCount: InputSignal<IRtSideMenu.FavoritesCount>;
|
|
6613
|
+
/** Место под кнопки избранного, ждущие наведения: держать всегда или отдавать подписи. */
|
|
6614
|
+
readonly favoriteActionsReserve: InputSignal<IRtSideMenu.FavoriteActionsReserve>;
|
|
6615
|
+
/** Поиск показывает совпавшие строки избранного; выключено — на время поиска блока нет. */
|
|
6616
|
+
readonly isFavoritesSearchShown: InputSignalWithTransform<boolean, unknown>;
|
|
6617
|
+
readonly subMenuModeChange: OutputEmitterRef<IRtSideMenu.SubMenuMode>;
|
|
6618
|
+
readonly subMenuWidthChange: OutputEmitterRef<number>;
|
|
6619
|
+
/** Начало и конец тяги: по ним потребитель накрывает чужие кадры и снимает накрытие. */
|
|
6620
|
+
readonly subMenuResizeStart: OutputEmitterRef<void>;
|
|
6621
|
+
readonly subMenuResizeEnd: OutputEmitterRef<void>;
|
|
6622
|
+
readonly closeMobileMenuAction: OutputEmitterRef<void>;
|
|
6623
|
+
readonly clickSubMenuAction: OutputEmitterRef<{
|
|
6624
|
+
item: IRtSideMenu.Item;
|
|
6625
|
+
event: MouseEvent;
|
|
6626
|
+
}>;
|
|
6627
|
+
readonly clickSubMenuAdditionalAction: OutputEmitterRef<{
|
|
6628
|
+
data: IRtSideMenu.ItemData | undefined;
|
|
6629
|
+
event: MouseEvent;
|
|
6630
|
+
}>;
|
|
6631
|
+
/** Свой значок пунктов, чьё имя кит не рисует; подпункты читают его через токен меню. */
|
|
6632
|
+
readonly ownIconTpl: Signal<TemplateRef<IRtSideMenuIconContext> | undefined>;
|
|
6633
|
+
constructor();
|
|
6634
|
+
onClickMenu(item: IRtSideMenu.Item): void;
|
|
6635
|
+
onClickSubMenu({ item, event }: {
|
|
6636
|
+
item: IRtSideMenu.Item;
|
|
6637
|
+
event: MouseEvent;
|
|
6638
|
+
}): void;
|
|
6639
|
+
onClickSubMenuAdditional(payload: {
|
|
6640
|
+
data: IRtSideMenu.ItemData | undefined;
|
|
6641
|
+
event: MouseEvent;
|
|
6642
|
+
}): void;
|
|
6643
|
+
onBackToMainMenu(): void;
|
|
6644
|
+
/** Наведение на пункт полосы открывает его подменю; уход указателя с панели — без пункта. */
|
|
6645
|
+
toggleSubMenu(item?: IRtSideMenu.Item): void;
|
|
6646
|
+
closeSubMenu(): void;
|
|
6647
|
+
holdSubMenu(held: boolean): void;
|
|
6648
|
+
toggleFolder(item: IRtSideMenu.Item): void;
|
|
6649
|
+
/** Человек взялся за поле поиска: дальше подменю закрывает нажатие снаружи, а не уход указателя. */
|
|
6650
|
+
onSearchHold(): void;
|
|
6651
|
+
/** Клавиши поля поиска раздаются списку; умолчание отменяется только у съеденной. */
|
|
6652
|
+
onSearchKeydown(event: KeyboardEvent): void;
|
|
6653
|
+
/** Нажат переключатель режима: выбор уходит в настройки меню и наружу. */
|
|
6654
|
+
onSubMenuModeToggle(): void;
|
|
6655
|
+
onResizeStart(event: PointerEvent): void;
|
|
6656
|
+
onResizeKeydown(event: KeyboardEvent): void;
|
|
6657
|
+
closeMobileMenu(): void;
|
|
6658
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtSideMenuComponent, never>;
|
|
6659
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtSideMenuComponent, "rt-side-menu", never, { "activeMenuIds": { "alias": "activeMenuIds"; "required": true; "isSignal": true; }; "menuItems": { "alias": "menuItems"; "required": false; "isSignal": true; }; "subMenuMode": { "alias": "subMenuMode"; "required": false; "isSignal": true; }; "subMenuWidth": { "alias": "subMenuWidth"; "required": false; "isSignal": true; }; "menuId": { "alias": "menuId"; "required": false; "isSignal": true; }; "favoritesCount": { "alias": "favoritesCount"; "required": false; "isSignal": true; }; "favoriteActionsReserve": { "alias": "favoriteActionsReserve"; "required": false; "isSignal": true; }; "isFavoritesSearchShown": { "alias": "isFavoritesSearchShown"; "required": false; "isSignal": true; }; }, { "subMenuModeChange": "subMenuModeChange"; "subMenuWidthChange": "subMenuWidthChange"; "subMenuResizeStart": "subMenuResizeStart"; "subMenuResizeEnd": "subMenuResizeEnd"; "closeMobileMenuAction": "closeMobileMenuAction"; "clickSubMenuAction": "clickSubMenuAction"; "clickSubMenuAdditionalAction": "clickSubMenuAdditionalAction"; }, ["headerTpl", "footerTpl", "ownIconTpl"], never, true, never>;
|
|
6660
|
+
}
|
|
6661
|
+
|
|
6662
|
+
/**
|
|
6663
|
+
* Отбор пунктов подменю по подстроке подписи.
|
|
6664
|
+
*
|
|
6665
|
+
* Отбор спускается внутрь папок на любую глубину: потребитель кладёт в папки то, что человек и ищет
|
|
6666
|
+
* по имени, и по одному верхнему уровню такой пункт не нашёлся бы.
|
|
6667
|
+
*
|
|
6668
|
+
* В выдаче стоят только строки, содержащие запрос. Папка остаётся путём к совпавшим детям, а её
|
|
6669
|
+
* состав отбирается тем же правилом: иначе одно совпадение по имени папки вытаскивало бы весь её
|
|
6670
|
+
* состав. Папка, совпавшая только по имени, остаётся одной строкой без детей.
|
|
6671
|
+
*
|
|
6672
|
+
* Отобранная папка — новый объект: правка на месте переписала бы набор потребителя, и стёртый
|
|
6673
|
+
* запрос вернул бы урезанное меню.
|
|
6674
|
+
*/
|
|
6675
|
+
declare function filterSideMenuItems(items: ReadonlyArray<IRtSideMenu.Item>, query: string): IRtSideMenu.Item[];
|
|
6676
|
+
/**
|
|
6677
|
+
* Папки отобранного списка — те, что должны стоять раскрытыми. Возвращаются номера, а не пункты:
|
|
6678
|
+
* отобранный список пересобирается на каждую букву запроса, и ссылка на пункт этого не переживает.
|
|
6679
|
+
*/
|
|
6680
|
+
declare function sideMenuIdsToExpand(items: ReadonlyArray<IRtSideMenu.Item>): Array<string | number>;
|
|
6681
|
+
/**
|
|
6682
|
+
* Пределы ширины подменю в пикселях. Уже нижнего не помещается ни одна подпись пункта, шире
|
|
6683
|
+
* верхнего подменю закрывает содержимое страницы.
|
|
6684
|
+
*/
|
|
6685
|
+
declare const RT_SIDE_MENU_WIDTH_MIN: number;
|
|
6686
|
+
declare const RT_SIDE_MENU_WIDTH_MAX: number;
|
|
6687
|
+
/** Шаг ширины с клавиатуры: стрелку держат нажатой, и крупный шаг проскакивал бы подпись целиком. */
|
|
6688
|
+
declare const RT_SIDE_MENU_WIDTH_STEP: number;
|
|
6689
|
+
/** Приведение ширины к пределам. */
|
|
6690
|
+
declare function clampSideMenuWidth(width: number): number;
|
|
6691
|
+
/**
|
|
6692
|
+
* Резка подписи на совпавшие и несовпавшие куски.
|
|
6693
|
+
*
|
|
6694
|
+
* Отмечаются все вхождения: отмеченное одно первое читается как «второго нет». Сравнение без учёта
|
|
6695
|
+
* регистра, а куски режутся из оригинала — приведение к нижнему регистру переписало бы названия.
|
|
6696
|
+
*/
|
|
6697
|
+
declare function splitSideMenuTitle(name: string, query: string): IRtSideMenu.TitlePart[];
|
|
6698
|
+
/**
|
|
6699
|
+
* Пункты подменю в том порядке, в каком они стоят на экране. Внутрь папки список спускается, только
|
|
6700
|
+
* если та раскрыта: ходьба стрелками идёт по видимому, а не по всему набору.
|
|
6701
|
+
*/
|
|
6702
|
+
declare function walkSideMenuItems(items: ReadonlyArray<IRtSideMenu.Item>, expandedIds: ReadonlyArray<string | number>): IRtSideMenu.Item[];
|
|
6703
|
+
/**
|
|
6704
|
+
* Куда уходит подсветка на шаг стрелкой. Считается по номеру пункта: видимый список пересобирается
|
|
6705
|
+
* на каждую букву запроса. Без подсветки вниз берёт первый пункт, вверх — последний. У краёв ходьба
|
|
6706
|
+
* останавливается: заворот уводил бы взгляд через всю панель.
|
|
6707
|
+
*/
|
|
6708
|
+
declare function stepSideMenuHighlight(walk: ReadonlyArray<IRtSideMenu.Item>, highlightedId: string | number | null, step: number): string | number | null;
|
|
6709
|
+
/** Чем вешается слушатель. У кита это `Renderer2.listen`, у проверки — своя функция. */
|
|
6710
|
+
type TRtPointerListen = (target: HTMLElement, event: string, handler: (event: PointerEvent) => void) => () => void;
|
|
6711
|
+
/** Что тяга сообщает меню: новую ширину по ходу и конец — отпусканием или отнятием указателя. */
|
|
6712
|
+
interface IRtSubMenuWidthDragHooks {
|
|
6713
|
+
readonly onWidth: (width: number) => void;
|
|
6714
|
+
readonly onEnd: () => void;
|
|
6715
|
+
}
|
|
6716
|
+
/**
|
|
6717
|
+
* Тяга ширины подменю указательными событиями: мышиных палец и перо не дают. Слушатели висят на
|
|
6718
|
+
* ручке, а держит их захват указателя — слушатель на документе терял бы движение над чужим кадром.
|
|
6719
|
+
* Указатель, отнятый средой, кончает тягу так же, как отпускание.
|
|
6720
|
+
*
|
|
6721
|
+
* Возвращает снятие слушателей. Пустое значение — тянуть нечем.
|
|
6722
|
+
*/
|
|
6723
|
+
declare function startSideMenuWidthDrag(event: PointerEvent, startWidth: number, listen: TRtPointerListen, hooks: IRtSubMenuWidthDragHooks): (() => void) | null;
|
|
6724
|
+
/**
|
|
6725
|
+
* Ширина, которой панель нарисована. Панели нет или раскладка не посчитана — нижний предел: с нуля
|
|
6726
|
+
* тяга уводила бы ширину в отрицательные числа.
|
|
6727
|
+
*/
|
|
6728
|
+
declare function drawnSideMenuWidth(panel: HTMLElement | null): number;
|
|
6729
|
+
/**
|
|
6730
|
+
* Число, которое уходит наружу по концу тяги: большее из натянутого и нарисованного. Нижний предел
|
|
6731
|
+
* держит оформление, и панель не бывает уже его, даже если рука ушла левее.
|
|
6732
|
+
*/
|
|
6733
|
+
declare function reportedSideMenuWidth(dragged: number, panel: HTMLElement | null): number;
|
|
6734
|
+
/**
|
|
6735
|
+
* Новая ширина по нажатой клавише. Пустое значение — клавиша не о ширине, и умолчание не отменяется:
|
|
6736
|
+
* иначе ручка съедала бы табуляцию. Влево значит уже при любом направлении письма: ручка стоит у
|
|
6737
|
+
* правого края панели.
|
|
6738
|
+
*/
|
|
6739
|
+
declare function sideMenuWidthByKey(key: string, width: number): number | null;
|
|
6740
|
+
/**
|
|
6741
|
+
* Что показывает закреплённое подменю: выбранный человеком раздел, а пока выбора нет — раздел
|
|
6742
|
+
* активного адреса. Выбор впереди активности: иначе до соседнего раздела не добраться.
|
|
6743
|
+
*/
|
|
6744
|
+
declare function pinnedSideMenuItems(picked: IRtSideMenu.Item[] | null | undefined, activeIds: ReadonlyArray<string | number>, items: ReadonlyArray<IRtSideMenu.Item>): IRtSideMenu.Item[];
|
|
6745
|
+
|
|
6746
|
+
/**
|
|
6747
|
+
* Значок пункта по его `icon`: имя кита как есть, имя Material первого кита — его парой из перечня
|
|
6748
|
+
* кита, как у `rt-menu-item`. `null` — кит такой значок не рисует: пункт берёт свой шаблон меню или
|
|
6749
|
+
* стоит без значка.
|
|
6750
|
+
*/
|
|
6751
|
+
declare function sideMenuIconName(icon: string | undefined): IRtIcon.Name | null;
|
|
6752
|
+
/**
|
|
6753
|
+
* Имена значков меню, о которых оно должно предупредить: ни имени кита, ни пары в перечне. Значок
|
|
6754
|
+
* пункта закрывает свой шаблон меню; значок кнопки строки шаблона не берёт и предупреждает всегда.
|
|
6755
|
+
* Без предупреждения такой значок пуст, и пропуск не заметен. Обходит пункты на любую глубину;
|
|
6756
|
+
* каждое имя — один раз.
|
|
6757
|
+
*/
|
|
6758
|
+
declare function unpairedSideMenuIcons(items: ReadonlyArray<IRtSideMenu.Item>, hasOwnIcon: boolean): string[];
|
|
6759
|
+
|
|
6760
|
+
/** Номер меню, которому приложение своего не задало. */
|
|
6761
|
+
declare const RT_SIDE_MENU_DEFAULT_ID: string;
|
|
6762
|
+
/**
|
|
6763
|
+
* Номер меню, под которым лежат его настройки. Пустой — тот же, что не заданный: атрибут без
|
|
6764
|
+
* значения даёт пустую строку, и настройки легли бы под ключ, которого никто не называл.
|
|
6765
|
+
*/
|
|
6766
|
+
declare function normalizeSideMenuId(menuId: string | null | undefined): string;
|
|
6767
|
+
/** Запись хранилища как есть: номер меню — и что под ним лежит, в том числе сломанное. */
|
|
6768
|
+
type TRtSideMenuSettingsRecord = Record<string, unknown>;
|
|
6769
|
+
/**
|
|
6770
|
+
* Настройки одного меню из того, что лежит под его номером. Недопустимое поле читается как
|
|
6771
|
+
* отсутствие значения, соседние поля остаются: сломанная ширина не стирает режим. Незнакомые поля
|
|
6772
|
+
* не удаляются. Ширина приводится к пределам подменю, списки избранного — к номерам без повторов.
|
|
6773
|
+
*/
|
|
6774
|
+
declare function normalizeSideMenuSettings(value: unknown): IRtSideMenu.Settings;
|
|
6775
|
+
/** Запись хранилища как объект. Не JSON, не объект, пустое хранилище — одинаково пустая запись. */
|
|
6776
|
+
declare function parseSideMenuSettingsRecord(raw: string | null): TRtSideMenuSettingsRecord;
|
|
6777
|
+
/**
|
|
6778
|
+
* Настройки всех меню из записи. Меню, чьё значение не объект, пропускается: сломанный угол одного
|
|
6779
|
+
* меню не стирает соседние.
|
|
6780
|
+
*/
|
|
6781
|
+
declare function readSideMenuSettings(record: TRtSideMenuSettingsRecord): Record<string, IRtSideMenu.Settings>;
|
|
6782
|
+
/**
|
|
6783
|
+
* Запись с правкой полей одного меню. Остальные меню и поля уходят такими, какими лежали, даже
|
|
6784
|
+
* сломанные: кит правит только то, о чём его попросили.
|
|
6785
|
+
*/
|
|
6786
|
+
declare function patchSideMenuSettings(record: TRtSideMenuSettingsRecord, menuId: string, patch: Partial<IRtSideMenu.Settings>): TRtSideMenuSettingsRecord;
|
|
6787
|
+
/** Запись без настроек одного меню. */
|
|
6788
|
+
declare function omitSideMenuSettings(record: TRtSideMenuSettingsRecord, menuId: string): TRtSideMenuSettingsRecord;
|
|
6789
|
+
|
|
6790
|
+
/** Значки кнопок строки избранного: «убрать» и ручка перетаскивания. */
|
|
6791
|
+
interface IRtSideMenuFavoritesIcons {
|
|
6792
|
+
readonly remove: IRtIcon.Name;
|
|
6793
|
+
readonly drag: IRtIcon.Name;
|
|
6794
|
+
}
|
|
6795
|
+
interface IRtSideMenuSettingsConfig {
|
|
6796
|
+
/** Свой ключ хранилища, если приложению нужен не общий ключ кита. */
|
|
6797
|
+
readonly storageKey?: string;
|
|
6798
|
+
/** Свои значки кнопок избранного; не названный берётся из набора кита. */
|
|
6799
|
+
readonly icons?: Partial<IRtSideMenuFavoritesIcons>;
|
|
6800
|
+
}
|
|
6801
|
+
declare const RT_SIDE_MENU_SETTINGS_CONFIG: InjectionToken<IRtSideMenuSettingsConfig>;
|
|
6802
|
+
/**
|
|
6803
|
+
* Настройки боковых меню в хранилище браузера: режим и ширина подменю, избранное и свёрнутые блоки
|
|
6804
|
+
* избранного под номером каждого меню.
|
|
6805
|
+
*
|
|
6806
|
+
* Перед каждой записью ключ читается заново: соседняя вкладка или приложение могли записать своё,
|
|
6807
|
+
* и запись из копии затёрла бы их. Правится одно поле одного меню, остальное уходит как лежало.
|
|
6808
|
+
* Изменения из других вкладок приходят событием `storage` и обновляют сигналы.
|
|
6809
|
+
*
|
|
6810
|
+
* Хранилище берётся токеном `@rt-tools/core` напрямую, а не общим сервисом хранилища: сервису
|
|
6811
|
+
* нужно знать, что запись не удалась, и держать правду в памяти до перезагрузки. Без хранилища, вне
|
|
6812
|
+
* браузера, закрытое или полное — настройки живут в памяти, и ни чтение, ни запись не бросают.
|
|
6813
|
+
*
|
|
6814
|
+
* Сервис ставится провайдером окружения — `provideRtSideMenuSettings()`, — а меню берёт его
|
|
6815
|
+
* необязательно: не поставлен — меню ничего не хранит, режим и ширина приходят входами.
|
|
6816
|
+
*/
|
|
6817
|
+
declare class RtSideMenuSettingsService {
|
|
6818
|
+
#private;
|
|
6819
|
+
/** Значки кнопок избранного: из настроек провайдера, иначе из набора кита. */
|
|
6820
|
+
readonly favoritesIcons: IRtSideMenuFavoritesIcons;
|
|
6821
|
+
/** Номера меню, чьи настройки лежат в хранилище. */
|
|
6822
|
+
readonly menuIds: Signal<string[]>;
|
|
6823
|
+
constructor();
|
|
6824
|
+
/** Настройки одного меню целиком, с незнакомыми полями; не сохранены — пустой объект. */
|
|
6825
|
+
settings(menuId: string): Signal<IRtSideMenu.Settings>;
|
|
6826
|
+
subMenuMode(menuId: string): Signal<IRtSideMenu.SubMenuMode>;
|
|
6827
|
+
subMenuWidth(menuId: string): Signal<number | null>;
|
|
6828
|
+
/** Избранное меню в порядке списка; пусто — пустой список. */
|
|
6829
|
+
favoriteIds(menuId: string): Signal<ReadonlyArray<IRtSideMenu.FavoriteId>>;
|
|
6830
|
+
/** Пункты полосы, чей блок избранного свёрнут; ничего не свёрнуто — пустой список. */
|
|
6831
|
+
favoritesCollapsed(menuId: string): Signal<ReadonlyArray<IRtSideMenu.Item['id']>>;
|
|
6832
|
+
/** Сворачивает или разворачивает блок одного раздела; остальные разделы остаются как были. */
|
|
6833
|
+
setFavoritesCollapsed(menuId: string, sectionId: IRtSideMenu.Item['id'], collapsed: boolean): void;
|
|
6834
|
+
/** Звезда: нет в списке — встаёт последним, есть — уходит. */
|
|
6835
|
+
toggleFavorite(menuId: string, id: IRtSideMenu.FavoriteId): void;
|
|
6836
|
+
removeFavorite(menuId: string, id: IRtSideMenu.FavoriteId): void;
|
|
6837
|
+
/** Перенос строки блока: места в блоке, скрытые номера остаются на своих. */
|
|
6838
|
+
moveVisibleSideMenuFavorite(menuId: string, visibleIds: ReadonlyArray<IRtSideMenu.FavoriteId>, from: number, to: number): void;
|
|
6839
|
+
/** Список целиком: приложение заводит избранное само, например по умолчанию для роли. */
|
|
6840
|
+
setFavorites(menuId: string, ids: ReadonlyArray<IRtSideMenu.FavoriteId>): void;
|
|
6841
|
+
setSubMenuMode(menuId: string, mode: IRtSideMenu.SubMenuMode): void;
|
|
6842
|
+
setSubMenuWidth(menuId: string, width: number): void;
|
|
6843
|
+
/** Настройки меню уходят только по вызову приложения: кит сам ничего не удаляет. */
|
|
6844
|
+
deleteSettings(menuId: string): void;
|
|
6845
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtSideMenuSettingsService, never>;
|
|
6846
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
6847
|
+
}
|
|
6848
|
+
/**
|
|
6849
|
+
* Сервис настроек бокового меню для приложения.
|
|
6850
|
+
*
|
|
6851
|
+
* ```ts
|
|
6852
|
+
* bootstrapApplication(App, { providers: [provideRtSideMenuSettings()] });
|
|
6853
|
+
* ```
|
|
6854
|
+
*/
|
|
6855
|
+
declare function provideRtSideMenuSettings(config?: IRtSideMenuSettingsConfig): EnvironmentProviders;
|
|
6856
|
+
|
|
6857
|
+
/**
|
|
6858
|
+
* Строка подменю: пункт со ссылкой или папка со своими пунктами. Раскрытость, подсветку и запрос
|
|
6859
|
+
* строка берёт у меню — своего состояния у неё нет.
|
|
6860
|
+
*
|
|
6861
|
+
* В разделе, где приложение включило избранное, у пункта со ссылкой стоит звезда; в строке блока
|
|
6862
|
+
* избранного — кнопка «убрать» и слот `[rtSideMenuSubItemAction]`, куда блок кладёт ручку.
|
|
6863
|
+
*/
|
|
6864
|
+
declare class RtSideMenuSubItemComponent {
|
|
6865
|
+
#private;
|
|
6866
|
+
protected readonly menuRef: IRtSideMenuHost;
|
|
6867
|
+
protected readonly narrow: Signal<boolean>;
|
|
6868
|
+
/** Значки кнопок избранного: из настроек провайдера, иначе из набора кита. */
|
|
6869
|
+
protected readonly favoritesIcons: RtSideMenuSettingsService['favoritesIcons'] | null;
|
|
6870
|
+
protected readonly addLabel: Signal<string>;
|
|
6871
|
+
protected readonly removeLabel: Signal<string>;
|
|
6872
|
+
/** Избранное включено у раздела, чьё подменю показано, и приложение поставило настройки меню. */
|
|
6873
|
+
protected readonly favoritesOn: Signal<boolean>;
|
|
6874
|
+
protected readonly favoriteIds: Signal<ReadonlyArray<IRtSideMenu.FavoriteId>>;
|
|
6875
|
+
readonly item: InputSignal<IRtSideMenu.Item>;
|
|
6876
|
+
/** Строка стоит в блоке избранного: вместо звезды — «убрать», без номера и подсветки клавиатуры. */
|
|
6877
|
+
readonly inFavorites: InputSignalWithTransform<boolean, unknown>;
|
|
6878
|
+
readonly clickSubMenuAction: OutputEmitterRef<{
|
|
6879
|
+
item: IRtSideMenu.Item;
|
|
6880
|
+
event: MouseEvent;
|
|
6881
|
+
}>;
|
|
6882
|
+
readonly clickSubMenuAdditionalAction: OutputEmitterRef<{
|
|
6883
|
+
data: IRtSideMenu.ItemData | undefined;
|
|
6884
|
+
event: MouseEvent;
|
|
6885
|
+
}>;
|
|
6886
|
+
onClickSubMenu(item: IRtSideMenu.Item, event: MouseEvent): void;
|
|
6887
|
+
/** Кнопка потребителя в строке: ни перехода по ссылке строки, ни закрытия подменю. */
|
|
6888
|
+
onClickSubMenuAdditional(item: IRtSideMenu.Item, event: MouseEvent): void;
|
|
6889
|
+
/** Звезда переключает избранное и больше ничего: ни перехода, ни закрытия подменю. */
|
|
6890
|
+
onToggleFavorite(item: IRtSideMenu.Item, event: MouseEvent): void;
|
|
6891
|
+
/**
|
|
6892
|
+
* «Убрать» в строке блока. Фокус уходит на такую же кнопку соседней строки до того, как строка
|
|
6893
|
+
* исчезнет: иначе он падал бы на страницу, и человек с клавиатуры терял бы место.
|
|
6894
|
+
*/
|
|
6895
|
+
onRemoveFavorite(item: IRtSideMenu.Item, event: MouseEvent): void;
|
|
6896
|
+
onToggleFolder(item: IRtSideMenu.Item): void;
|
|
6897
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtSideMenuSubItemComponent, never>;
|
|
6898
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtSideMenuSubItemComponent, "rt-side-menu-sub-item", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; "inFavorites": { "alias": "inFavorites"; "required": false; "isSignal": true; }; }, { "clickSubMenuAction": "clickSubMenuAction"; "clickSubMenuAdditionalAction": "clickSubMenuAdditionalAction"; }, never, ["[rtSideMenuSubItemAction]"], true, never>;
|
|
6899
|
+
}
|
|
6900
|
+
|
|
5679
6901
|
/**
|
|
5680
6902
|
* Маркеры частей области прокрутки — своим файлом, как у соседних семей.
|
|
5681
6903
|
*
|
|
@@ -6345,7 +7567,6 @@ declare class RtRowHasActionsPipe implements PipeTransform {
|
|
|
6345
7567
|
* Визуальный аффорданс (cursor/hover/focus-ring) включает `[clickable]` на rt-table.
|
|
6346
7568
|
*/
|
|
6347
7569
|
declare class RtTableRowDirective {
|
|
6348
|
-
#private;
|
|
6349
7570
|
readonly activated: OutputEmitterRef<void>;
|
|
6350
7571
|
protected onClick(event: MouseEvent): void;
|
|
6351
7572
|
protected onKey(event: Event): void;
|
|
@@ -7321,7 +8542,9 @@ declare enum ERtStorageKeys {
|
|
|
7321
8542
|
/** Выбранная тема оформления: переживает перезагрузку и смену пользователя */
|
|
7322
8543
|
Theme = "rt.theme",
|
|
7323
8544
|
/** Префикс, а не полный ключ: итоговый вид — `rt.table.columns.<tableId>`. */
|
|
7324
|
-
TableColumnsPrefix = "rt.table.columns."
|
|
8545
|
+
TableColumnsPrefix = "rt.table.columns.",
|
|
8546
|
+
/** Настройки боковых меню: один объект, в нём каждое меню под своим номером. */
|
|
8547
|
+
SideMenu = "rt.side-menu"
|
|
7325
8548
|
}
|
|
7326
8549
|
|
|
7327
8550
|
/**
|
|
@@ -8063,5 +9286,5 @@ declare const RT_DESIGN_TOKEN_NAMES: readonly TRtDesignTokenName[];
|
|
|
8063
9286
|
/** All the consumer's handles: the value comes from the application, until then the fallback works. */
|
|
8064
9287
|
declare const RT_CONSUMER_HANDLE_NAMES: readonly TRtConsumerHandleName[];
|
|
8065
9288
|
|
|
8066
|
-
export { BreakpointsService, CATEGORY_ORDER, DATA_LIST_PAGE_SIZES, DATA_TABLE_FILTER_MENU_OPERATORS, DATA_TABLE_FILTER_OPERATOR_GLYPHS, ERtCalendarDayState, ERtDataTableCellColor, ERtDataTableColumnType, ERtDataTableFilterType, ERtDateRangePreset, ERtMarkdownBlock, ERtMarkdownInline, ERtStorageKeys, IButton, ICON_CATEGORY_RULES, INotification, IRtAccordion, IRtActionBar, IRtAsideHeader, IRtAutocomplete, IRtBarList, IRtCalendar, IRtConfirmPopover, IRtDataTable, IRtDatePicker, IRtDateRange, IRtDynamicList, IRtField, IRtFileCard, IRtFileDrop, IRtFileInput, IRtFilterControl, IRtIcon, IRtIconButton, IRtInput, IRtKitConfig, IRtLogo, IRtMenu, 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_ACTION_BAR_LEAVE_MS, RT_ASIDE_DATA, RT_CONSUMER_HANDLE_NAMES, RT_COUNTER_DECREASE_KEY, RT_COUNTER_INCREASE_KEY, RT_DATA_TABLE_PRESET_FROM_HOST, RT_DATA_TABLE_ROW_HOST, RT_DATA_TABLE_STOP_ROW_CLICK_ATTRIBUTE, RT_DESIGN_TOKEN_NAMES, RT_DIALOG_DATA, RT_FIELD_DEFAULT_ERROR_KEYS, RT_FIELD_EMPTY_VALUE, RT_ICONS_BASE_URL, RT_ICONS_MATERIAL_BASE_URL, RT_ICON_MATERIAL_FILL_SYMBOL_ID_PREFIX, RT_ICON_MATERIAL_PRESET_SELECTOR, RT_ICON_MATERIAL_SYMBOL_ID_PREFIX, RT_ICON_SPRITE_ID, RT_ICON_SYMBOL_ID_PREFIX, RT_KIT_CONFIG, RT_KIT_LABELS, RT_KIT_LABELS_EN, RT_KIT_LOCALE, RT_KIT_TRANSLATOR, RT_MENU_SELECT_EVENT, RT_PRESET_MATERIAL_CLASS, RT_RADIUS_DEFAULT, RT_RADIUS_STEPS, RT_TABLE_ROW_ACTIONS_COLUMN, RT_TOASTER_GAP_PX, RtAccordionComponent, RtActionBarComponent, RtActionBarHolderComponent, RtActionBarService, RtAsideComponent, RtAsideFooterComponent, RtAsideHeaderComponent, RtAsideRef, RtAsideSectionComponent, RtAsideService, RtAutocompleteComponent, RtBarListComponent, RtBottomSheetComponent, RtButtonDirective, RtCalendarComponent, RtCardComponent, RtCheckboxComponent, RtCollapsibleTextComponent, RtConfirmDirective, RtConfirmPopoverComponent, RtContainerComponent, RtContainerContentDirective, RtContainerContentPanelDirective, RtContainerHeaderDirective, RtContainerLeftSidenavDirective, RtContainerLeftSidenavPanelDirective, RtContainerRightSidenavDirective, RtContainerRightSidenavPanelDirective, RtContainerStateService, RtContainerToolbarCenterDirective, RtContainerToolbarLeftDirective, RtContainerToolbarRightDirective, RtCopyCellComponent, RtCounterComponent, RtCounterRowComponent, RtDataListAdditionalRowActionsDirective, RtDataListComponent, RtDataListCustomCellsDirective, RtDataListRowActionsDirective, RtDataListSelectorsDirective, RtDataListSettingsAsideComponent, RtDataListToolbarActionsDirective, RtDataListToolbarComponent, RtDataListToolbarSelectorsDirective, RtDataTableAdditionalRowActionsDirective, RtDataTableCellComponent, RtDataTableComponent, RtDataTableConfigService, RtDataTableCustomCellsDirective, RtDataTableFilterCellComponent, RtDataTableHeaderCellComponent, RtDataTableIconDirective, RtDataTableRowActionsDirective, RtDataTableRowClickDirective, RtDataTableSelectorsDirective, RtDataTableStopRowClickDirective, RtDatePickerComponent, RtDateRangeComponent, RtDayStampPipe, RtDeltaViewComponent, RtDetailListComponent, RtDetailRowComponent, RtDialogComponent, RtDialogFooterComponent, RtDialogHeaderComponent, RtDialogRef, RtDialogService, RtDownloadLinkComponent, RtDynamicListComponent, RtDynamicListToolbarActionsDirective, RtDynamicListToolbarSelectorsDirective, RtEmptyStateComponent, RtFieldComponent, RtFieldHintDirective, RtFileCardComponent, RtFileDropComponent, RtFileInputComponent, RtFileListComponent, RtFilterControlComponent, RtFormControlBase, RtHeaderComponent, RtIconButtonComponent, RtIconComponent, RtIconRegistry, RtInfiniteScrollDirective, RtInfoItemComponent, RtInputComponent, RtInputNumberComponent, RtKitLabelPipe, RtLiveBadgeComponent, RtLogoComponent, RtMarkdownTextComponent, RtMenuComponent, RtMenuItemComponent, RtMessageComponent, RtMoneyListComponent, RtMoneyRowComponent, RtMultiselectComponent, RtNightGridComponent, RtNoteComponent, RtNotificationsBellComponent, RtPageHeaderComponent, RtPaginationComponent, RtPhotoViewerComponent, RtPopoverDirective, RtRadioButtonComponent, RtRadiusDirective, RtRippleDirective, RtRouteAsideComponent, RtRowHasActionsPipe, RtScrollAreaComponent, RtScrollAreaContentDirective, RtScrollAreaFooterDirective, RtScrollAreaHeaderDirective, RtSectionNavComponent, RtSelectComponent, RtSelectTriggerDirective, RtSkeletonComponent, RtSkeletonWrapperComponent, RtSpinnerComponent, RtSplitButtonComponent, RtStatTileComponent, RtStepperComponent, RtTabDirective, RtTableCardDirective, RtTableComponent, RtTableFilterHeaderComponent, RtTableRowActionsDirective, RtTableRowDirective, RtTableSettingsAsideComponent, RtTableSettingsPanelComponent, RtTableSettingsRegistry, RtTableSortHeaderComponent, RtTabsComponent, RtTabsControlDirective, RtTagComponent, RtTextareaComponent, RtThemeScopeDirective, 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, comparePropNames, dataListColumnsFromItems, dataListExcludedAfterEntity, dataListExcludedAfterPageMarked, dataListExcludedAfterPageUnmarked, dataListMoveItem, dataListPageAfterSizeChange, dataListPageCount, dataListPageSizes, dataListSelectedAfterPage, dataListSettingItems, dataListSettingsChanged, dataListToggleHidden, dataTableAllOnPage, dataTableAnyOnPage, dataTableAriaSort, dataTableCellText, dataTableCellValue, dataTableColumnFilter, dataTableCopyButtonSide, dataTableDayToIso, dataTableDefaultOperator, dataTableFiltersWithOperator, dataTableFiltersWithValue, dataTableIconName, dataTableIsoToDay, dataTableKeysOf, dataTableNextSortOrder, dataTablePresetEntities, dataTableSortActive, dataTableWithEntity, dataTableWithPageEntities, dataTableWithoutPageEntities, defaultColumnItems, deriveFileTitle, displayedColumnKeys, fileNameFromUrl, filterCellsOf, filterOf, filterValueOf, filtersWithOperator, filtersWithValue, formatFileSize, getFileTypeIcon, iconsName, indexFromParam, indexFromScroll, isColumnSortable, nextPhotoIndex, nextSort, normalizeQuillDelta, paramFromIndex, parseInline, parseMarkdown, provideRtIcons, provideRtKit, provideRtKitLabels, resolveColumns, rowHasAvailableActions, rtAsideUnsavedGuard, rtKitDefault, rtKitLabel, searchDebounce, shouldRenderPhoto, sortDirectionOf, startOperatorOf, withoutLockedHidden };
|
|
8067
|
-
export type { IMessageBusEvent, IQuillDelta, IQuillDeltaAttributes, IQuillDeltaOp, IRtAsideConfig, IRtDataTableIconContext, IRtDataTableRowContext, IRtDataTableRowHost, IRtDialogConfig, IRtMarkdownBlockNode, IRtMarkdownInlineNode, IRtMarkdownListItem, IRtPicture, IRtPictureSource, IRtTableCardContext, IRtTableRowActionsContext, IRtTableSettingsRegistration, TIconCategory, TRtAsideContentLayout, TRtAsidePosition, TRtAsideSize, TRtConsumerHandleName, TRtDataTableAriaSort, TRtDataTableFilterValue, TRtDataTableFilters, TRtDesignTokenName, TRtDialogSize, TRtKitLabelKey, TRtKitLabelMap, TRtKitLabelParams, TRtKitTranslator, TRtRadius, TRtSkeletonShape, TRtSkeletonSize, TRtTableAriaSort, TRtTableFilterInput, TRtTableFilterValue, TRtTextareaResize };
|
|
9289
|
+
export { BreakpointsService, CATEGORY_ORDER, DATA_LIST_PAGE_SIZES, DATA_TABLE_FILTER_MENU_OPERATORS, DATA_TABLE_FILTER_OPERATOR_GLYPHS, ERtCalendarDayState, ERtDataTableCellColor, ERtDataTableColumnType, ERtDataTableFilterType, ERtDateRangePreset, ERtMarkdownBlock, ERtMarkdownInline, ERtStorageKeys, IButton, ICON_CATEGORY_RULES, INotification, IRtAccordion, IRtActionBar, IRtAsideHeader, IRtAutocomplete, IRtBarList, IRtCalendar, IRtConfirmPopover, IRtDataTable, IRtDatePicker, IRtDateRange, IRtDynamicList, IRtDynamicSelector, IRtExpansionPanel, IRtField, IRtFileCard, IRtFileDrop, IRtFileInput, IRtFilterControl, IRtIcon, IRtIconButton, IRtImageCropper, IRtImageUpload, IRtInput, IRtKitConfig, IRtLogo, IRtMenu, IRtNightGrid, IRtPageHeader, IRtPagination, IRtPhotoViewer, IRtPopover, IRtSectionNav, IRtSelect, IRtSideMenu, IRtSpinner, IRtSplitButton, IRtStatTile, IRtStepper, IRtTable, IRtTabs, IRtTag, IRtThemeToggle, IRtThreadList, IRtTimeline, IRtToaster, IRtToggleButtonGroup, IRtToggleSwitch, IRtTooltip, IRtWelcomeDialog, IRtWorkspace, IRtWorkspaceDetails, ITheme, MessageBus, NotificationBus, RT_ACTION_BAR_LEAVE_MS, RT_ASIDE_DATA, RT_CONSUMER_HANDLE_NAMES, RT_COUNTER_DECREASE_KEY, RT_COUNTER_INCREASE_KEY, RT_DATA_TABLE_PRESET_FROM_HOST, RT_DATA_TABLE_ROW_HOST, RT_DATA_TABLE_STOP_ROW_CLICK_ATTRIBUTE, RT_DESIGN_TOKEN_NAMES, RT_DIALOG_DATA, RT_DYNAMIC_SELECTOR_SEARCH_DEBOUNCE, RT_FIELD_DEFAULT_ERROR_KEYS, RT_FIELD_EMPTY_VALUE, RT_ICONS_BASE_URL, RT_ICONS_MATERIAL_BASE_URL, RT_ICON_MATERIAL_FILL_SYMBOL_ID_PREFIX, RT_ICON_MATERIAL_PRESET_SELECTOR, RT_ICON_MATERIAL_SYMBOL_ID_PREFIX, RT_ICON_SPRITE_ID, RT_ICON_SYMBOL_ID_PREFIX, RT_IMAGE_CROPPER_HANDLES, RT_IMAGE_CROPPER_KEY_STEP, RT_IMAGE_CROPPER_KEY_STEP_LARGE, RT_IMAGE_CROPPER_QUALITY, RT_KIT_CONFIG, RT_KIT_LABELS, RT_KIT_LABELS_EN, RT_KIT_LOCALE, RT_KIT_TRANSLATOR, RT_MENU_SELECT_EVENT, RT_PRESET_MATERIAL_CLASS, RT_RADIUS_DEFAULT, RT_RADIUS_STEPS, RT_SIDE_MENU_DEFAULT_ID, RT_SIDE_MENU_SETTINGS_CONFIG, RT_SIDE_MENU_WIDTH_MAX, RT_SIDE_MENU_WIDTH_MIN, RT_SIDE_MENU_WIDTH_STEP, RT_TABLE_ROW_ACTIONS_COLUMN, RT_TOASTER_GAP_PX, RtAccordionComponent, RtActionBarComponent, RtActionBarHolderComponent, RtActionBarService, RtAsideComponent, RtAsideErrorBoxComponent, RtAsideFooterComponent, RtAsideHeaderComponent, RtAsideRef, RtAsideSectionComponent, RtAsideService, RtAutocompleteComponent, RtBarListComponent, RtBottomSheetComponent, RtButtonDirective, RtCalendarComponent, RtCardComponent, RtCheckboxComponent, RtCollapsibleTextComponent, RtConfirmDirective, RtConfirmPopoverComponent, RtContainerComponent, RtContainerContentDirective, RtContainerContentPanelDirective, RtContainerHeaderDirective, RtContainerLeftSidenavDirective, RtContainerLeftSidenavPanelDirective, RtContainerRightSidenavDirective, RtContainerRightSidenavPanelDirective, RtContainerStateService, RtContainerToolbarCenterDirective, RtContainerToolbarLeftDirective, RtContainerToolbarRightDirective, RtCopyCellComponent, RtCounterComponent, RtCounterRowComponent, RtDataListAdditionalRowActionsDirective, RtDataListComponent, RtDataListCustomCellsDirective, RtDataListRowActionsDirective, RtDataListSelectorsDirective, RtDataListSettingsAsideComponent, RtDataListToolbarActionsDirective, RtDataListToolbarComponent, RtDataListToolbarSelectorsDirective, RtDataTableAdditionalRowActionsDirective, RtDataTableCellComponent, RtDataTableComponent, RtDataTableConfigService, RtDataTableCustomCellsDirective, RtDataTableFilterCellComponent, RtDataTableHeaderCellComponent, RtDataTableIconDirective, RtDataTableRowActionsDirective, RtDataTableRowClickDirective, RtDataTableSelectorsDirective, RtDataTableStopRowClickDirective, RtDatePickerComponent, RtDateRangeComponent, RtDayStampPipe, RtDeltaViewComponent, RtDetailListComponent, RtDetailRowComponent, RtDialogComponent, RtDialogFooterComponent, RtDialogHeaderComponent, RtDialogRef, RtDialogService, RtDownloadLinkComponent, RtDynamicInputComponent, RtDynamicListComponent, RtDynamicListToolbarActionsDirective, RtDynamicListToolbarSelectorsDirective, RtDynamicSelectorComponent, RtDynamicSelectorListComponent, RtDynamicSelectorPopupComponent, RtDynamicSelectorRowControlsDirective, RtDynamicSelectorRowTitleDirective, RtEmptyStateComponent, RtExpansionPanelComponent, RtExpansionPanelContentDirective, RtFieldComponent, RtFieldHintDirective, RtFileCardComponent, RtFileDropComponent, RtFileInputComponent, RtFileListComponent, RtFilterControlComponent, RtFormControlBase, RtHeaderComponent, RtIconButtonComponent, RtIconComponent, RtIconRegistry, RtImageCropperComponent, RtImageUploadComponent, RtInfiniteScrollDirective, RtInfoItemComponent, RtInputComponent, RtInputNumberComponent, RtKitLabelPipe, RtLiveBadgeComponent, RtLogoComponent, RtMarkdownTextComponent, RtMenuComponent, RtMenuItemComponent, RtMenuItemIconDirective, RtMessageComponent, RtMoneyListComponent, RtMoneyRowComponent, RtMultiselectComponent, RtNightGridComponent, RtNoteComponent, RtNotificationsBellComponent, RtPageHeaderComponent, RtPaginationComponent, RtPhotoViewerComponent, RtPopoverDirective, RtRadioButtonComponent, RtRadiusDirective, RtRippleDirective, RtRouteAsideComponent, RtRowHasActionsPipe, RtScrollAreaComponent, RtScrollAreaContentDirective, RtScrollAreaFooterDirective, RtScrollAreaHeaderDirective, RtSectionNavComponent, RtSelectComponent, RtSelectTriggerDirective, RtSideMenuComponent, RtSideMenuFooterDirective, RtSideMenuHeaderDirective, RtSideMenuIconDirective, RtSideMenuSettingsService, RtSideMenuSubItemComponent, RtSkeletonComponent, RtSkeletonWrapperComponent, RtSpinnerComponent, RtSplitButtonComponent, RtStatTileComponent, RtStepperComponent, RtTabDirective, RtTableCardDirective, RtTableComponent, RtTableFilterHeaderComponent, RtTableRowActionsDirective, RtTableRowDirective, RtTableSettingsAsideComponent, RtTableSettingsPanelComponent, RtTableSettingsRegistry, RtTableSortHeaderComponent, RtTabsComponent, RtTabsControlDirective, RtTagComponent, RtTextareaComponent, RtThemeScopeDirective, 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, clampSideMenuWidth, coerceQuillDeltaOutput, comparePropNames, cropArea, dataListColumnsFromItems, dataListExcludedAfterEntity, dataListExcludedAfterPageMarked, dataListExcludedAfterPageUnmarked, dataListMoveItem, dataListPageAfterSizeChange, dataListPageCount, dataListPageSizes, dataListSelectedAfterPage, dataListSettingItems, dataListSettingsChanged, dataListToggleHidden, dataTableAllOnPage, dataTableAnyOnPage, dataTableAriaSort, dataTableCellText, dataTableCellValue, dataTableColumnFilter, dataTableCopyButtonSide, dataTableDayToIso, dataTableDefaultOperator, dataTableFiltersWithOperator, dataTableFiltersWithValue, dataTableIconName, dataTableIsoToDay, dataTableKeysOf, dataTableNextSortOrder, dataTablePresetEntities, dataTableSortActive, dataTableWithEntity, dataTableWithPageEntities, dataTableWithoutPageEntities, defaultColumnItems, deriveFileTitle, displayedColumnKeys, drawnSideMenuWidth, fieldDelta, fileNameFromUrl, filterCellsOf, filterOf, filterSideMenuItems, filterValueOf, filtersWithOperator, filtersWithValue, fitSource, formatFileSize, frameInField, frameRatio, getFileTypeIcon, handleDirection, iconsName, indexFromParam, indexFromScroll, initialFrame, isColumnSortable, isImageFile, keyDelta, moveFrame, nextPhotoIndex, nextSort, normalizeQuillDelta, normalizeSideMenuId, normalizeSideMenuSettings, omitSideMenuSettings, paramFromIndex, parseInline, parseMarkdown, parseSideMenuSettingsRecord, patchSideMenuSettings, pinnedSideMenuItems, provideRtIcons, provideRtKit, provideRtKitLabels, provideRtSideMenuSettings, readSideMenuSettings, reportedSideMenuWidth, resizeFrame, resolveColumns, resultFileName, resultQuality, resultType, rowHasAvailableActions, rtAsideUnsavedGuard, rtKitDefault, rtKitLabel, searchDebounce, shouldRenderPhoto, sideMenuIconName, sideMenuIdsToExpand, sideMenuWidthByKey, sortDirectionOf, splitSideMenuTitle, startOperatorOf, startSideMenuWidthDrag, stepSideMenuHighlight, unpairedSideMenuIcons, uploadState, walkSideMenuItems, withoutLockedHidden };
|
|
9290
|
+
export type { IMessageBusEvent, IQuillDelta, IQuillDeltaAttributes, IQuillDeltaOp, IRtAsideConfig, IRtDataTableIconContext, IRtDataTableRowContext, IRtDataTableRowHost, IRtDialogConfig, IRtMarkdownBlockNode, IRtMarkdownInlineNode, IRtMarkdownListItem, IRtPicture, IRtPictureSource, IRtSideMenuFavoritesIcons, IRtSideMenuIconContext, IRtSideMenuSettingsConfig, IRtSubMenuWidthDragHooks, IRtTableCardContext, IRtTableRowActionsContext, IRtTableSettingsRegistration, TIconCategory, TRtAsideContentLayout, TRtAsidePosition, TRtAsideSize, TRtConsumerHandleName, TRtDataTableAriaSort, TRtDataTableFilterValue, TRtDataTableFilters, TRtDesignTokenName, TRtDialogSize, TRtKitLabelKey, TRtKitLabelMap, TRtKitLabelParams, TRtKitTranslator, TRtPointerListen, TRtRadius, TRtSideMenuSettingsRecord, TRtSkeletonShape, TRtSkeletonSize, TRtTableAriaSort, TRtTableFilterInput, TRtTableFilterValue, TRtTextareaResize };
|