@rt-tools/ui-kit-v2 0.15.0 → 0.17.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/README.md +7 -0
- package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs +96 -41
- package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2.mjs +6824 -2700
- package/fesm2022/rt-tools-ui-kit-v2.mjs.map +1 -1
- package/package.json +1 -1
- package/rt-tools-ui-kit-v2-0.17.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/action-bar/CONTEXT.md +5 -0
- package/src/lib/components/action-bar/rt-action-bar.component.scss +30 -16
- package/src/lib/components/aside/CONTEXT.md +18 -1
- package/src/lib/components/aside/error-box/rt-aside-error-box.component.scss +37 -0
- package/src/lib/components/aside/footer/rt-aside-footer.component.scss +7 -8
- package/src/lib/components/aside/header/rt-aside-header.component.scss +16 -1
- package/src/lib/components/aside/rt-aside.component.scss +31 -3
- package/src/lib/components/button/CONTEXT.md +12 -11
- package/src/lib/components/button/rt-button.directive.scss +36 -0
- package/src/lib/components/data-list/settings/rt-data-list-settings-aside.component.scss +2 -2
- package/src/lib/components/data-table/cell/rt-data-table-cell.component.scss +1 -1
- package/src/lib/components/data-table/filter-cell/rt-data-table-filter-cell.component.scss +1 -1
- package/src/lib/components/data-table/rt-data-table.component.scss +1 -1
- package/src/lib/components/dialog/CONTEXT.md +9 -0
- package/src/lib/components/dialog/content/rt-dialog-content.component.scss +20 -0
- package/src/lib/components/dialog/footer/rt-dialog-footer.component.scss +18 -2
- package/src/lib/components/dialog/header/rt-dialog-header.component.scss +21 -3
- package/src/lib/components/dialog/rt-dialog.component.scss +9 -3
- package/src/lib/components/dynamic-selector/CONTEXT.md +50 -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/header/CONTEXT.md +2 -2
- package/src/lib/components/icon/CONTEXT.md +11 -7
- package/src/lib/components/icon/rt-icon.component.scss +47 -0
- package/src/lib/components/icon-button/CONTEXT.md +27 -20
- package/src/lib/components/icon-button/rt-icon-button.component.scss +51 -25
- 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 +70 -0
- package/src/lib/components/image-upload/rt-image-upload.component.scss +89 -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/pagination/rt-pagination.component.scss +1 -1
- package/src/lib/components/scroll-area/CONTEXT.md +2 -0
- package/src/lib/components/scroll-area/rt-scroll-area.component.scss +20 -3
- package/src/lib/components/side-menu/CONTEXT.md +43 -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/spinner/CONTEXT.md +15 -8
- package/src/lib/components/spinner/rt-spinner.component.scss +108 -9
- package/src/lib/components/table/CONTEXT.md +6 -0
- package/src/lib/components/table/rt-table.component.scss +4 -2
- package/src/lib/components/tag/rt-tag.component.scss +43 -23
- package/src/lib/components/toast/CONTEXT.md +8 -0
- package/src/lib/components/toast/rt-toast.component.scss +74 -15
- package/src/lib/components/toast/rt-toaster.component.scss +5 -1
- package/src/lib/components/toggle-button-group/rt-toggle-button-group.component.scss +35 -37
- package/src/lib/components/toggle-switch/CONTEXT.md +11 -3
- package/src/lib/components/toggle-switch/rt-toggle-switch.component.scss +53 -14
- package/src/lib/components/toolbar/rt-toolbar.component.scss +15 -4
- package/src/lib/components/tooltip/CONTEXT.md +7 -4
- package/src/rich-editor/lib/components/chat/CONTEXT.md +7 -2
- package/src/rich-editor/lib/components/chat/rt-chat.component.scss +25 -0
- package/src/styles/_color-scheme.scss +50 -0
- package/styles/tokens.css +35 -0
- package/types/rt-tools-ui-kit-v2-rich-editor.d.ts +16 -20
- package/types/rt-tools-ui-kit-v2.d.ts +1588 -58
- package/rt-tools-ui-kit-v2-0.15.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,
|
|
3
|
-
import { OverlayRef, ComponentType, CdkConnectedOverlay, CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';
|
|
4
|
-
import { Observable, MonoTypeOperatorFunction } from 'rxjs';
|
|
2
|
+
import { WritableSignal, InputSignal, InjectionToken, Signal, OutputEmitterRef, ElementRef, InputSignalWithTransform, Renderer2, Injector, EnvironmentProviders, PipeTransform, OnInit, OnDestroy, TemplateRef, DestroyRef, AfterViewChecked, ModelSignal, AfterContentInit, AfterViewInit } from '@angular/core';
|
|
5
3
|
import { BooleanInput, NumberInput } from '@angular/cdk/coercion';
|
|
4
|
+
import { OverlayRef, ComponentType, CdkConnectedOverlay, CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';
|
|
5
|
+
import { Subject, Observable, MonoTypeOperatorFunction } from 'rxjs';
|
|
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`.
|
|
@@ -71,6 +71,21 @@ declare namespace IRtIcon {
|
|
|
71
71
|
type Drawing = Preset | 'material-fill';
|
|
72
72
|
/** Семантические цвета. Маппинг на CSS-переменные `--rt-icon-color-*` — в `rt-icon.component.ts`. */
|
|
73
73
|
type Color = 'current' | 'muted' | 'info' | 'success' | 'warning' | 'danger' | 'inverse';
|
|
74
|
+
/** Размер на входе значка: ступень или пиксели. */
|
|
75
|
+
type SizeInput = Size | number;
|
|
76
|
+
/**
|
|
77
|
+
* Как значок рисует имя Material: `map-first` — пара из перечня кита, без пары шрифт;
|
|
78
|
+
* `font` — шрифт для любого имени.
|
|
79
|
+
*/
|
|
80
|
+
type GlyphStrategy = 'map-first' | 'font';
|
|
81
|
+
/** Итог разбора имени: рисунок кита либо лигатура шрифта Material. */
|
|
82
|
+
type Resolved = {
|
|
83
|
+
readonly kind: 'kit';
|
|
84
|
+
readonly name: Name;
|
|
85
|
+
} | {
|
|
86
|
+
readonly kind: 'font';
|
|
87
|
+
readonly glyph: string;
|
|
88
|
+
};
|
|
74
89
|
}
|
|
75
90
|
|
|
76
91
|
/**
|
|
@@ -288,14 +303,35 @@ type TRtAsideContentLayout = 'default' | 'tabs';
|
|
|
288
303
|
* cross-encapsulation хака.
|
|
289
304
|
*/
|
|
290
305
|
declare class RtAsideComponent {
|
|
306
|
+
#private;
|
|
307
|
+
protected readonly frame: Signal<ElementRef<HTMLElement>>;
|
|
308
|
+
protected readonly hasRequestError: Signal<boolean>;
|
|
291
309
|
readonly size: InputSignal<TRtAsideSize>;
|
|
292
310
|
readonly contentLayout: InputSignal<TRtAsideContentLayout>;
|
|
293
311
|
readonly width: InputSignal<string | null>;
|
|
294
312
|
readonly ariaLabel: InputSignal<string | null>;
|
|
313
|
+
/**
|
|
314
|
+
* Ошибка неудавшегося запроса. Пока она есть, между шапкой и содержимым стоит блок ошибки с
|
|
315
|
+
* кнопкой копирования; `null` и `undefined` — ошибки нет, любое другое значение её показывает.
|
|
316
|
+
*/
|
|
317
|
+
readonly requestError: InputSignal<unknown>;
|
|
318
|
+
/**
|
|
319
|
+
* Держать Tab внутри панели. При включении фокус уходит на `[cdkFocusInitial]` или первый
|
|
320
|
+
* элемент под Tab, а когда панель уходит или вход гаснет, возвращается туда, где стоял.
|
|
321
|
+
*/
|
|
322
|
+
readonly trapFocus: InputSignalWithTransform<boolean, BooleanInput>;
|
|
323
|
+
/** Идёт запрос: панель накрыта слоем с крутилкой и помечена занятой. */
|
|
324
|
+
readonly pending: InputSignalWithTransform<boolean, BooleanInput>;
|
|
325
|
+
constructor();
|
|
295
326
|
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>;
|
|
327
|
+
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; }; "trapFocus": { "alias": "trapFocus"; "required": false; "isSignal": true; }; "pending": { "alias": "pending"; "required": false; "isSignal": true; }; }, {}, never, ["rt-aside-header", "*", "rt-aside-footer"], true, never>;
|
|
297
328
|
}
|
|
298
329
|
|
|
330
|
+
/**
|
|
331
|
+
* Жест закрытия, на который панель не закрылась: `Escape` или нажатие по подложке. Панель
|
|
332
|
+
* отказывает в нём под `disableClose()` и когда жест выключен настройкой открытия.
|
|
333
|
+
*/
|
|
334
|
+
type TRtAsideCloseRequest = 'escape' | 'backdrop';
|
|
299
335
|
/**
|
|
300
336
|
* Хэндл к программно открытой side-sheet (через `RtAsideService.open()`).
|
|
301
337
|
*
|
|
@@ -312,6 +348,9 @@ declare class RtAsideComponent {
|
|
|
312
348
|
* 3. Эмиттит result в `afterClosed()` СРАЗУ (consumer не ждёт анимацию).
|
|
313
349
|
* 4. Через `setTimeout(200ms)` зовёт `overlayRef.dispose()` — overlay убран после анимации.
|
|
314
350
|
*
|
|
351
|
+
* Слой, снятый без `close()` — переходом по адресу (`disposeOnNavigation`) или уничтожением
|
|
352
|
+
* хозяина, — тоже завершает `afterClosed()`: подписчик получает `undefined`.
|
|
353
|
+
*
|
|
315
354
|
* @example
|
|
316
355
|
* \`\`\`ts
|
|
317
356
|
* // в контент-компоненте
|
|
@@ -332,11 +371,20 @@ declare class RtAsideRef<T = unknown> {
|
|
|
332
371
|
* Программный `close(result)` гейтом не задет — он всегда закрывает.
|
|
333
372
|
*/
|
|
334
373
|
readonly disableClose: WritableSignal<boolean>;
|
|
335
|
-
|
|
374
|
+
/**
|
|
375
|
+
* `closeRequestsSource` наполняет служба: она слушает жесты и знает, отказала ли в них панель.
|
|
376
|
+
* Хэндл только завершает поток вместе с панелью.
|
|
377
|
+
*/
|
|
378
|
+
constructor(overlayRef: OverlayRef, renderer: Renderer2, closeRequestsSource?: Subject<TRtAsideCloseRequest>);
|
|
336
379
|
/** Закрывает overlay со slide-out анимацией; эмиттит result в `afterClosed()` синхронно. */
|
|
337
380
|
close(result?: T): void;
|
|
338
|
-
/** Эмиттит один раз — результат `close(result)` — и завершается. */
|
|
381
|
+
/** Эмиттит один раз — результат `close(result)` или `undefined` при снятом слое — и завершается. */
|
|
339
382
|
afterClosed(): Observable<T | undefined>;
|
|
383
|
+
/**
|
|
384
|
+
* Жесты закрытия, в которых панель отказала: `Escape` и нажатие по подложке под
|
|
385
|
+
* `disableClose()` или выключенные настройкой. Завершается вместе с панелью.
|
|
386
|
+
*/
|
|
387
|
+
closeRequests(): Observable<TRtAsideCloseRequest>;
|
|
340
388
|
}
|
|
341
389
|
|
|
342
390
|
/**
|
|
@@ -359,6 +407,12 @@ interface IRtAsideConfig<TData = unknown> {
|
|
|
359
407
|
closeOnEscape?: boolean;
|
|
360
408
|
/** К какому краю viewport "приклеить" панель. По дефолту `"right"`. */
|
|
361
409
|
position?: TRtAsidePosition;
|
|
410
|
+
/**
|
|
411
|
+
* Injector хозяина панели — обычно `inject(Injector)` открывающего компонента. Он становится
|
|
412
|
+
* родителем портала: содержимое видит провайдеры хозяина. Уничтожение хозяина закрывает
|
|
413
|
+
* панель через `close()`. Без него родитель — корневой injector, и панель живёт сама по себе.
|
|
414
|
+
*/
|
|
415
|
+
injector?: Injector;
|
|
362
416
|
}
|
|
363
417
|
/**
|
|
364
418
|
* Программный API для открытия side-sheet поверх CDK Overlay.
|
|
@@ -435,6 +489,8 @@ declare class RtAsideService {
|
|
|
435
489
|
declare const RT_ASIDE_DATA: InjectionToken<unknown>;
|
|
436
490
|
|
|
437
491
|
declare const RT_KIT_LABELS_EN: {
|
|
492
|
+
readonly asideCopyErrorInfo: "Copy error info";
|
|
493
|
+
readonly asideRequestError: "Request Error";
|
|
438
494
|
readonly bottomSheetClose: "Close";
|
|
439
495
|
readonly chatAttachAria: "Attach a file";
|
|
440
496
|
readonly chatAttachTooltip: "Attach a file";
|
|
@@ -476,6 +532,19 @@ declare const RT_KIT_LABELS_EN: {
|
|
|
476
532
|
readonly dataListSettingsTitle: "Edit table configuration";
|
|
477
533
|
readonly dataListTableConfig: "Table configuration";
|
|
478
534
|
readonly dataListVerticalScrollbar: "Vertical scrollbar shown";
|
|
535
|
+
readonly dynamicInputPlaceholder: "Type and press Enter";
|
|
536
|
+
readonly dynamicSelectorAdd: "Add";
|
|
537
|
+
readonly dynamicSelectorApply: "Apply";
|
|
538
|
+
readonly dynamicSelectorClear: "Clear list";
|
|
539
|
+
readonly dynamicSelectorDrag: "Hold to drag";
|
|
540
|
+
readonly dynamicSelectorEdit: "Edit";
|
|
541
|
+
readonly dynamicSelectorMulti: "Multi selection";
|
|
542
|
+
readonly dynamicSelectorMultiHint: "Hold Ctrl or Cmd to tick several rows";
|
|
543
|
+
readonly dynamicSelectorNoResults: "No results";
|
|
544
|
+
readonly dynamicSelectorNothingToChoose: "There are no available items to choose";
|
|
545
|
+
readonly dynamicSelectorRemove: "Remove the item";
|
|
546
|
+
readonly dynamicSelectorReset: "Reset to initial list";
|
|
547
|
+
readonly dynamicSelectorSearch: "Search...";
|
|
479
548
|
readonly dataTableActions: "Actions";
|
|
480
549
|
readonly dataTableCopied: "Copied!";
|
|
481
550
|
readonly dataTableCopy: "Copy";
|
|
@@ -499,6 +568,18 @@ declare const RT_KIT_LABELS_EN: {
|
|
|
499
568
|
readonly photoViewerClose: "Close viewer";
|
|
500
569
|
readonly photoViewerNext: "Next photo";
|
|
501
570
|
readonly photoViewerPrev: "Previous photo";
|
|
571
|
+
readonly sideMenuBack: "Main menu";
|
|
572
|
+
readonly sideMenuFavoriteAdd: "Add to favourites";
|
|
573
|
+
readonly sideMenuFavoriteDrag: "Hold button to drag";
|
|
574
|
+
readonly sideMenuFavoriteRemove: "Remove from favourites";
|
|
575
|
+
readonly sideMenuFavorites: "Favourites";
|
|
576
|
+
readonly sideMenuFavoritesCollapse: "Collapse favourites";
|
|
577
|
+
readonly sideMenuFavoritesExpand: "Expand favourites";
|
|
578
|
+
readonly sideMenuNothingFound: "Nothing found";
|
|
579
|
+
readonly sideMenuPin: "Pin submenu";
|
|
580
|
+
readonly sideMenuResize: "Resize submenu";
|
|
581
|
+
readonly sideMenuSearch: "Search";
|
|
582
|
+
readonly sideMenuUnpin: "Unpin submenu";
|
|
502
583
|
readonly themeToggleLabel: "Switch theme";
|
|
503
584
|
readonly uiActions: "Actions";
|
|
504
585
|
readonly uiApply: "Apply";
|
|
@@ -554,6 +635,23 @@ declare const RT_KIT_LABELS_EN: {
|
|
|
554
635
|
readonly uiHint: "Hint";
|
|
555
636
|
readonly uiHistory: "History";
|
|
556
637
|
readonly uiHours: "Hours";
|
|
638
|
+
readonly uiImageCropperFrame: "Crop frame";
|
|
639
|
+
readonly uiImageCropperHandleE: "Right edge of the crop frame";
|
|
640
|
+
readonly uiImageCropperHandleN: "Top edge of the crop frame";
|
|
641
|
+
readonly uiImageCropperHandleNe: "Top right corner of the crop frame";
|
|
642
|
+
readonly uiImageCropperHandleNw: "Top left corner of the crop frame";
|
|
643
|
+
readonly uiImageCropperHandleS: "Bottom edge of the crop frame";
|
|
644
|
+
readonly uiImageCropperHandleSe: "Bottom right corner of the crop frame";
|
|
645
|
+
readonly uiImageCropperHandleSw: "Bottom left corner of the crop frame";
|
|
646
|
+
readonly uiImageCropperHandleW: "Left edge of the crop frame";
|
|
647
|
+
readonly uiImageCropperPlaceholder: "Choose an image to crop";
|
|
648
|
+
readonly uiImageCropperRefusal: "The image could not be read";
|
|
649
|
+
readonly uiImageUploadApply: "Apply";
|
|
650
|
+
readonly uiImageUploadCancel: "Cancel";
|
|
651
|
+
readonly uiImageUploadChange: "Click to change the image";
|
|
652
|
+
readonly uiImageUploadChoose: "Choose file";
|
|
653
|
+
readonly uiImageUploadDrop: "Drag and drop an image here or";
|
|
654
|
+
readonly uiImageUploadImage: "Current image";
|
|
557
655
|
readonly uiInviteUser: "Invite user";
|
|
558
656
|
readonly uiItemsPerPage: "Items per page";
|
|
559
657
|
readonly uiLast30Days: "Last 30 days";
|
|
@@ -797,9 +895,51 @@ declare const ICON_CATEGORY_RULES: readonly IIconCategoryRule[];
|
|
|
797
895
|
*/
|
|
798
896
|
declare function categoryOf(name: IRtIcon.Name): TIconCategory;
|
|
799
897
|
|
|
898
|
+
/**
|
|
899
|
+
* Как значки приложения рисуют имя Material. Задаётся третьим аргументом `provideRtIcons()`;
|
|
900
|
+
* по умолчанию `map-first` — пара из перечня кита, а без пары шрифт.
|
|
901
|
+
*/
|
|
902
|
+
declare const RT_ICON_GLYPH_STRATEGY: InjectionToken<IRtIcon.GlyphStrategy>;
|
|
903
|
+
/**
|
|
904
|
+
* Готовность шрифтов страницы — одна на все значки.
|
|
905
|
+
*
|
|
906
|
+
* Лигатура до готовности шрифта рисуется словом в запасном шрифте: значок прячет её, пока страница
|
|
907
|
+
* не сказала, что шрифты готовы. Кит шрифт не везёт и семью не знает, поэтому ждёт общую готовность,
|
|
908
|
+
* а не загрузку одной семьи. На сервере шрифтов нет — лигатура там скрыта. Браузер без интерфейса
|
|
909
|
+
* шрифтов ждать нечем, и лигатура показывается сразу.
|
|
910
|
+
*/
|
|
911
|
+
declare class RtIconFontService {
|
|
912
|
+
#private;
|
|
913
|
+
readonly ready: Signal<boolean>;
|
|
914
|
+
constructor();
|
|
915
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtIconFontService, never>;
|
|
916
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
917
|
+
}
|
|
918
|
+
|
|
919
|
+
/** Имя значка кита — то, что рисует спрайт; остальное кит своим рисунком не закрывает. */
|
|
920
|
+
declare function isKitIconName(name: string): name is IRtIcon.Name;
|
|
921
|
+
/** Пара имени Material из перечня кита; `null` — пары нет или имени нет. */
|
|
922
|
+
declare function materialPairOf(glyph: string | null | undefined): IRtIcon.Name | null;
|
|
923
|
+
/**
|
|
924
|
+
* Чем рисуется значок: своим рисунком кита или лигатурой шрифта Material.
|
|
925
|
+
*
|
|
926
|
+
* Имя кита выигрывает у имени Material, если названы оба. Имя Material по способу `map-first`
|
|
927
|
+
* берёт пару из перечня, а без пары — шрифт; по способу `font` — шрифт сразу. Материальный рисунок
|
|
928
|
+
* для пары выбирает уже сам значок по признаку набора над собой: это не дело разбора.
|
|
929
|
+
*
|
|
930
|
+
* `null` — значку нечего рисовать.
|
|
931
|
+
*/
|
|
932
|
+
declare function resolveIconGlyph(name: IRtIcon.Name | null | undefined, glyph: string | null | undefined, strategy: IRtIcon.GlyphStrategy): IRtIcon.Resolved | null;
|
|
933
|
+
|
|
800
934
|
declare class RtIconComponent {
|
|
801
935
|
#private;
|
|
802
|
-
|
|
936
|
+
/** Чем рисуется значок: именем кита или лигатурой шрифта. Ни имени, ни глифа — пустое место. */
|
|
937
|
+
protected readonly resolved: Signal<IRtIcon.Resolved | null>;
|
|
938
|
+
protected readonly kitName: Signal<IRtIcon.Name | null>;
|
|
939
|
+
protected readonly fontGlyph: Signal<string | null>;
|
|
940
|
+
/** Лигатура прячется, пока шрифты страницы не готовы: до того она рисуется словом. */
|
|
941
|
+
protected readonly glyphMods: Signal<Record<string, boolean>>;
|
|
942
|
+
protected readonly href: Signal<string | null>;
|
|
803
943
|
/**
|
|
804
944
|
* Набор, которым рисуется этот значок. Материальный закрывает не все имена кита — он слой
|
|
805
945
|
* переопределений, как набор оформления: имя без материального рисунка рисуется своим, и это
|
|
@@ -811,18 +951,35 @@ declare class RtIconComponent {
|
|
|
811
951
|
protected readonly sizePx: Signal<number>;
|
|
812
952
|
protected readonly colorValue: Signal<string | null>;
|
|
813
953
|
protected readonly rotateStyle: Signal<string | null>;
|
|
814
|
-
|
|
815
|
-
readonly
|
|
954
|
+
/** Имя кита. Стоит рядом с глифом и побеждает его, когда переданы оба. */
|
|
955
|
+
readonly name: InputSignal<IRtIcon.Name | null>;
|
|
956
|
+
/**
|
|
957
|
+
* Имя Material вместо имени кита. Как оно рисуется — парой из перечня кита или лигатурой
|
|
958
|
+
* шрифта Material Symbols — решает настройка `glyphStrategy` у `provideRtIcons()`. Шрифт
|
|
959
|
+
* приложение подключает само; семья берётся из свойства `--rt-icon-glyph-font`.
|
|
960
|
+
*/
|
|
961
|
+
readonly glyph: InputSignal<string | null>;
|
|
962
|
+
/**
|
|
963
|
+
* Ступень размера или число пикселей — для размеров между ступенями и крупнее последней.
|
|
964
|
+
* Числовая строка из статического атрибута читается числом, прочая строка вне ступеней — `md`.
|
|
965
|
+
* Внутри вход хранит пиксели: ступень переводится в них при записи.
|
|
966
|
+
*/
|
|
967
|
+
readonly size: InputSignalWithTransform<number, IRtIcon.SizeInput | string>;
|
|
816
968
|
readonly color: InputSignal<IRtIcon.Color>;
|
|
817
969
|
/**
|
|
818
970
|
* Залитый рисунок вместо контурного — как `FILL 1` у значка первого кита. Действует в
|
|
819
971
|
* материальном наборе; свой набор рисует значок одним рисунком. Дефолт `false`.
|
|
820
972
|
*/
|
|
821
973
|
readonly fill: InputSignalWithTransform<boolean, BooleanInput>;
|
|
974
|
+
/**
|
|
975
|
+
* Значок вращается — как индикатор занятости внутри кнопки или строки. Когда система просит
|
|
976
|
+
* меньше движения, вращение медленнее. Поворот на время вращения уступает ему. Дефолт `false`.
|
|
977
|
+
*/
|
|
978
|
+
readonly spin: InputSignalWithTransform<boolean, BooleanInput>;
|
|
822
979
|
readonly rotate: InputSignalWithTransform<number | null, TRotateInput>;
|
|
823
980
|
constructor();
|
|
824
981
|
static ɵfac: i0.ɵɵFactoryDeclaration<RtIconComponent, never>;
|
|
825
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<RtIconComponent, "rt-icon", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "fill": { "alias": "fill"; "required": false; "isSignal": true; }; "rotate": { "alias": "rotate"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
982
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtIconComponent, "rt-icon", never, { "name": { "alias": "name"; "required": false; "isSignal": true; }; "glyph": { "alias": "glyph"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "fill": { "alias": "fill"; "required": false; "isSignal": true; }; "spin": { "alias": "spin"; "required": false; "isSignal": true; }; "rotate": { "alias": "rotate"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
826
983
|
}
|
|
827
984
|
type TRotateInput = number | string | null;
|
|
828
985
|
|
|
@@ -871,10 +1028,19 @@ declare const RT_ICON_MATERIAL_PRESET_SELECTOR: string;
|
|
|
871
1028
|
* Наборов значков два: свой и материальный. Второй нужен только приложению, которое объявляет
|
|
872
1029
|
* материальный набор оформления, и адрес у него свой — набор лежит в `assets/icons-material`.
|
|
873
1030
|
*
|
|
1031
|
+
* Третий аргумент — настройки значков. `glyphStrategy` говорит, как рисуется имя Material на входе
|
|
1032
|
+
* `glyph`: `map-first` (по умолчанию) — пара из перечня кита, а без пары шрифт Material Symbols;
|
|
1033
|
+
* `font` — шрифт для любого имени. Шрифт приложение подключает само.
|
|
1034
|
+
*
|
|
874
1035
|
* @param baseUrl Адрес опубликованного набора. По умолчанию `/icons`.
|
|
875
1036
|
* @param materialBaseUrl Адрес материального набора. По умолчанию `/icons-material`.
|
|
1037
|
+
* @param options Настройки значков.
|
|
876
1038
|
*/
|
|
877
|
-
declare function provideRtIcons(baseUrl?: string, materialBaseUrl?: string): EnvironmentProviders;
|
|
1039
|
+
declare function provideRtIcons(baseUrl?: string, materialBaseUrl?: string, options?: IRtIconsOptions): EnvironmentProviders;
|
|
1040
|
+
/** Настройки значков приложения — третий аргумент `provideRtIcons()`. */
|
|
1041
|
+
interface IRtIconsOptions {
|
|
1042
|
+
readonly glyphStrategy?: IRtIcon.GlyphStrategy;
|
|
1043
|
+
}
|
|
878
1044
|
|
|
879
1045
|
/**
|
|
880
1046
|
* Адрес, по которому приложение публикует набор из `assets/icons` пакета.
|
|
@@ -971,6 +1137,9 @@ declare namespace IRtAsideHeader {
|
|
|
971
1137
|
* Доменные действия (отклонить / удалить / снять с публикации и т.п.)
|
|
972
1138
|
* проецируются в слот `[asideActions]` как ряд `rt-icon-button` справа от title.
|
|
973
1139
|
*
|
|
1140
|
+
* Слот `[asideHeaderContent]` — строка под заголовком на всю ширину шапки: поиск, вкладки,
|
|
1141
|
+
* сводка. Пустой слот места не занимает.
|
|
1142
|
+
*
|
|
974
1143
|
* `ViewEncapsulation.None` — для единообразия с rt-dialog-header (стили
|
|
975
1144
|
* префиксованы `.rt-aside-header`).
|
|
976
1145
|
*
|
|
@@ -1023,7 +1192,7 @@ declare class RtAsideHeaderComponent {
|
|
|
1023
1192
|
readonly dismiss: OutputEmitterRef<void>;
|
|
1024
1193
|
protected onDismiss(): void;
|
|
1025
1194
|
static ɵfac: i0.ɵɵFactoryDeclaration<RtAsideHeaderComponent, never>;
|
|
1026
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<RtAsideHeaderComponent, "rt-aside-header", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "overline": { "alias": "overline"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "badges": { "alias": "badges"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, { "dismiss": "dismiss"; }, never, ["[asideActions]"], true, never>;
|
|
1195
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtAsideHeaderComponent, "rt-aside-header", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "overline": { "alias": "overline"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "badges": { "alias": "badges"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, { "dismiss": "dismiss"; }, never, ["[asideActions]", "[asideHeaderContent]"], true, never>;
|
|
1027
1196
|
}
|
|
1028
1197
|
|
|
1029
1198
|
/**
|
|
@@ -1052,6 +1221,27 @@ declare class RtAsideFooterComponent {
|
|
|
1052
1221
|
static ɵcmp: i0.ɵɵComponentDeclaration<RtAsideFooterComponent, "rt-aside-footer", never, {}, {}, never, ["[asideDismiss]", "[asidePrimary]"], true, never>;
|
|
1053
1222
|
}
|
|
1054
1223
|
|
|
1224
|
+
/**
|
|
1225
|
+
* Блок ошибки запроса боковой панели: надпись и кнопка, которая кладёт в буфер обмена время и
|
|
1226
|
+
* ошибку. Перенос `rtui-aside-error-box` первого кита без Material.
|
|
1227
|
+
*
|
|
1228
|
+
* Обычно его рисует сама панель по входу `requestError`; отдельно он нужен приложению, которое
|
|
1229
|
+
* показывает ошибку в другом месте.
|
|
1230
|
+
*/
|
|
1231
|
+
declare class RtAsideErrorBoxComponent {
|
|
1232
|
+
#private;
|
|
1233
|
+
protected readonly title: Signal<string>;
|
|
1234
|
+
protected readonly copied: WritableSignal<boolean>;
|
|
1235
|
+
protected readonly buttonLabel: Signal<string>;
|
|
1236
|
+
protected readonly buttonIcon: Signal<string | null>;
|
|
1237
|
+
/** Ошибка, пришедшая от неудавшегося запроса: уходит в копию как JSON. */
|
|
1238
|
+
readonly error: InputSignal<unknown>;
|
|
1239
|
+
constructor();
|
|
1240
|
+
protected onCopy(): void;
|
|
1241
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtAsideErrorBoxComponent, never>;
|
|
1242
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtAsideErrorBoxComponent, "rt-aside-error-box", never, { "error": { "alias": "error"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1243
|
+
}
|
|
1244
|
+
|
|
1055
1245
|
/**
|
|
1056
1246
|
* Смысловая секция внутри асайда: единый вертикальный ритм между полями и
|
|
1057
1247
|
* необязательный заголовок одного стиля. Заменяет разнобой из `fieldset`,
|
|
@@ -1367,6 +1557,11 @@ declare namespace IButton {
|
|
|
1367
1557
|
type Size = 'sm' | 'md' | 'lg' | 'xl' | '2xl';
|
|
1368
1558
|
/** Положение иконки относительно лейбла. */
|
|
1369
1559
|
type IconPos = 'left' | 'right';
|
|
1560
|
+
/**
|
|
1561
|
+
* Подпись во время загрузки: `keep` — спиннер рядом с подписью, `hide` — подпись и иконка
|
|
1562
|
+
* невидимы, но держат ширину кнопки, а спиннер стоит по центру.
|
|
1563
|
+
*/
|
|
1564
|
+
type LoadingLabel = 'keep' | 'hide';
|
|
1370
1565
|
}
|
|
1371
1566
|
|
|
1372
1567
|
/**
|
|
@@ -1425,7 +1620,11 @@ declare class RtButtonDirective {
|
|
|
1425
1620
|
protected readonly isIconOnly: Signal<boolean>;
|
|
1426
1621
|
/** Текстовый лейбл кнопки. Если null — кнопка только с иконкой. */
|
|
1427
1622
|
readonly label: InputSignal<string | null>;
|
|
1428
|
-
/**
|
|
1623
|
+
/**
|
|
1624
|
+
* Значок кнопки: имя кита (`check`) или имя Material (`arrow_back`). Имя Material рисуется
|
|
1625
|
+
* так же, как вход `glyph` у `rt-icon`: парой из перечня кита или лигатурой шрифта — по
|
|
1626
|
+
* настройке `glyphStrategy` у `provideRtIcons()`. Если null — без иконки.
|
|
1627
|
+
*/
|
|
1429
1628
|
readonly icon: InputSignal<string | null>;
|
|
1430
1629
|
/** Сторона размещения иконки относительно лейбла. */
|
|
1431
1630
|
readonly iconPos: InputSignal<IButton.IconPos>;
|
|
@@ -1439,6 +1638,11 @@ declare class RtButtonDirective {
|
|
|
1439
1638
|
readonly loading: InputSignalWithTransform<boolean, BooleanInput>;
|
|
1440
1639
|
/** Кастомный CSS-класс иконки в loading. Если null — встроенный CSS-спиннер. */
|
|
1441
1640
|
readonly loadingIcon: InputSignal<string | null>;
|
|
1641
|
+
/**
|
|
1642
|
+
* Подпись во время загрузки. `hide` оставляет подпись и иконку в кнопке невидимыми — ширина
|
|
1643
|
+
* не скачет, — а спиннер ставит по центру; имя кнопки для скринридера остаётся.
|
|
1644
|
+
*/
|
|
1645
|
+
readonly loadingLabel: InputSignal<IButton.LoadingLabel>;
|
|
1442
1646
|
/**
|
|
1443
1647
|
* Положение двухпозиционной кнопки: `true` — нажата, `false` — отжата, `null` — положения нет
|
|
1444
1648
|
* вовсе.
|
|
@@ -1459,7 +1663,7 @@ declare class RtButtonDirective {
|
|
|
1459
1663
|
protected get ariaPressed(): string | null;
|
|
1460
1664
|
protected get hostClasses(): Record<string, boolean>;
|
|
1461
1665
|
static ɵfac: i0.ɵɵFactoryDeclaration<RtButtonDirective, never>;
|
|
1462
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<RtButtonDirective, "button[rtButton], a[rtButton]", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconPos": { "alias": "iconPos"; "required": false; "isSignal": true; }; "theme": { "alias": "theme"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingIcon": { "alias": "loadingIcon"; "required": false; "isSignal": true; }; "pressed": { "alias": "pressed"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof RtRippleDirective; inputs: { "rippleDisabled": "rippleDisabled"; }; outputs: {}; }, { directive: typeof RtRadiusDirective; inputs: { "radius": "radius"; }; outputs: {}; }]>;
|
|
1666
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RtButtonDirective, "button[rtButton], a[rtButton]", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconPos": { "alias": "iconPos"; "required": false; "isSignal": true; }; "theme": { "alias": "theme"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingIcon": { "alias": "loadingIcon"; "required": false; "isSignal": true; }; "loadingLabel": { "alias": "loadingLabel"; "required": false; "isSignal": true; }; "pressed": { "alias": "pressed"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof RtRippleDirective; inputs: { "rippleDisabled": "rippleDisabled"; }; outputs: {}; }, { directive: typeof RtRadiusDirective; inputs: { "radius": "radius"; }; outputs: {}; }]>;
|
|
1463
1667
|
}
|
|
1464
1668
|
|
|
1465
1669
|
/**
|
|
@@ -3533,9 +3737,10 @@ type TRtDialogSize = 'sm' | 'md' | 'lg';
|
|
|
3533
3737
|
/**
|
|
3534
3738
|
* Презентационный styled-frame для модалки поверх CDK Overlay.
|
|
3535
3739
|
*
|
|
3536
|
-
* Видимость / backdrop / scroll-block / ESC /
|
|
3537
|
-
* ответственность компонента. Это обеспечивает CDK
|
|
3538
|
-
*
|
|
3740
|
+
* Видимость / backdrop / scroll-block / ESC / фокус — НЕ внутренняя
|
|
3741
|
+
* ответственность компонента. Это обеспечивает `RtDialogService.open()`: оверлей CDK, а
|
|
3742
|
+
* ловушку и первый фокус — по флагам `trapFocus`, `restoreFocus` и `autoFocus` (по
|
|
3743
|
+
* умолчанию выключены). Рамка несёт `tabindex="-1"`, чтобы `autoFocus: 'dialog'` мог её взять. rt-dialog здесь — стилизованная "рамка"
|
|
3539
3744
|
* (padding-free контейнер) с size-вариантами + ng-content слотом.
|
|
3540
3745
|
*
|
|
3541
3746
|
* Композиция:
|
|
@@ -3579,6 +3784,9 @@ declare class RtDialogComponent {
|
|
|
3579
3784
|
* Контент-компонент инжектит `RtDialogRef` и закрывает модалку через `.close(result?)`.
|
|
3580
3785
|
* Родитель, открывший модалку, ждёт результата через `.afterClosed()`.
|
|
3581
3786
|
*
|
|
3787
|
+
* Слой, снятый без `close()` — переходом по адресу или уничтожением хозяина, — тоже завершает
|
|
3788
|
+
* `afterClosed()`: подписчик получает `undefined`. Иначе он ждал бы ответа, которого не будет.
|
|
3789
|
+
*
|
|
3582
3790
|
* Generic `<T>` — тип результата `close(result)`. Дефолт `unknown` — если результат
|
|
3583
3791
|
* не нужен, оставляй generic пустым.
|
|
3584
3792
|
*
|
|
@@ -3612,7 +3820,7 @@ declare class RtDialogRef<T = unknown> {
|
|
|
3612
3820
|
constructor(overlayRef: OverlayRef);
|
|
3613
3821
|
/** Закрывает overlay; опционально передаёт результат подписчикам `afterClosed()`. */
|
|
3614
3822
|
close(result?: T): void;
|
|
3615
|
-
/** Эмиттит один раз — результат `close(result)` — и завершается. */
|
|
3823
|
+
/** Эмиттит один раз — результат `close(result)` или `undefined` при снятом слое — и завершается. */
|
|
3616
3824
|
afterClosed(): Observable<T | undefined>;
|
|
3617
3825
|
}
|
|
3618
3826
|
|
|
@@ -3630,7 +3838,18 @@ interface IRtDialogConfig<TData = unknown> {
|
|
|
3630
3838
|
closeOnBackdropClick?: boolean;
|
|
3631
3839
|
/** Закрывать модалку по ESC. По дефолту `true`. */
|
|
3632
3840
|
closeOnEscape?: boolean;
|
|
3841
|
+
/** Держать Tab внутри модалки, пока она открыта. По дефолту `false` — как было. */
|
|
3842
|
+
trapFocus?: boolean;
|
|
3843
|
+
/** После закрытия вернуть фокус туда, где он стоял при открытии. По дефолту `false`. */
|
|
3844
|
+
restoreFocus?: boolean;
|
|
3845
|
+
/**
|
|
3846
|
+
* Куда поставить фокус при открытии: `'dialog'` — на рамку окна, `'first-tabbable'` — на первый
|
|
3847
|
+
* элемент, до которого доходит Tab. По дефолту `false` — фокус не трогается.
|
|
3848
|
+
*/
|
|
3849
|
+
autoFocus?: TRtDialogAutoFocus;
|
|
3633
3850
|
}
|
|
3851
|
+
/** Куда диалог ставит фокус при открытии; `false` — никуда. */
|
|
3852
|
+
type TRtDialogAutoFocus = 'dialog' | 'first-tabbable' | false;
|
|
3634
3853
|
/**
|
|
3635
3854
|
* Программный API для открытия модалок поверх CDK Overlay.
|
|
3636
3855
|
*
|
|
@@ -3717,6 +3936,9 @@ declare const RT_DIALOG_DATA: InjectionToken<unknown>;
|
|
|
3717
3936
|
* (внутри inline `<rt-dialog [visible]>`) `RtDialogRef` не зарегистрирован — клик
|
|
3718
3937
|
* по close-кнопке эмитит output `(closeAction)`, который должен повесить родитель.
|
|
3719
3938
|
*
|
|
3939
|
+
* Перед заголовком — место для значка или другого элемента: узел с атрибутом
|
|
3940
|
+
* `rtDialogHeaderLead` проецируется туда. Пустое место ничего не занимает.
|
|
3941
|
+
*
|
|
3720
3942
|
* `ViewEncapsulation.None` — для единообразия с rt-dialog (стили префиксованы `.rt-dialog-header`).
|
|
3721
3943
|
*
|
|
3722
3944
|
* @example
|
|
@@ -3740,13 +3962,16 @@ declare class RtDialogHeaderComponent {
|
|
|
3740
3962
|
readonly closable: InputSignalWithTransform<boolean, BooleanInput>;
|
|
3741
3963
|
protected onClose(): void;
|
|
3742
3964
|
static ɵfac: i0.ɵɵFactoryDeclaration<RtDialogHeaderComponent, never>;
|
|
3743
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<RtDialogHeaderComponent, "rt-dialog-header", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; }, {}, never,
|
|
3965
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtDialogHeaderComponent, "rt-dialog-header", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; }, {}, never, ["[rtDialogHeaderLead]"], true, never>;
|
|
3744
3966
|
}
|
|
3745
3967
|
|
|
3968
|
+
/** Как подвал раскладывает содержимое: к началу, по центру, к концу или по обоим краям. */
|
|
3969
|
+
type TRtDialogFooterAlign = 'start' | 'center' | 'end' | 'between';
|
|
3746
3970
|
/**
|
|
3747
3971
|
* Footer-слот для композиции внутри `<rt-dialog>`. Принимает любой проектированный
|
|
3748
3972
|
* контент (action-кнопки, статусные сообщения и т.п.), оборачивает в footer с
|
|
3749
|
-
* top-border и flex
|
|
3973
|
+
* top-border и flex-раскладкой; вход `align` прижимает содержимое к концу (по умолчанию),
|
|
3974
|
+
* к началу, к центру или разводит по краям (`between`).
|
|
3750
3975
|
*
|
|
3751
3976
|
* `ViewEncapsulation.None` — для единообразия с rt-dialog.
|
|
3752
3977
|
*
|
|
@@ -3759,8 +3984,30 @@ declare class RtDialogHeaderComponent {
|
|
|
3759
3984
|
* \`\`\`
|
|
3760
3985
|
*/
|
|
3761
3986
|
declare class RtDialogFooterComponent {
|
|
3987
|
+
readonly align: InputSignal<TRtDialogFooterAlign>;
|
|
3762
3988
|
static ɵfac: i0.ɵɵFactoryDeclaration<RtDialogFooterComponent, never>;
|
|
3763
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<RtDialogFooterComponent, "rt-dialog-footer", never, {}, {}, never, ["*"], true, never>;
|
|
3989
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtDialogFooterComponent, "rt-dialog-footer", never, { "align": { "alias": "align"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
3990
|
+
}
|
|
3991
|
+
|
|
3992
|
+
/**
|
|
3993
|
+
* Тело модалки для композиции внутри `<rt-dialog>` между шапкой и подвалом. Даёт отступ и
|
|
3994
|
+
* прокрутку: длинное содержимое прокручивается внутри тела, а шапка и подвал стоят на месте.
|
|
3995
|
+
* Отступ задаёт `--rt-dialog-content-padding`, потолок высоты — `--rt-dialog-content-max-height`.
|
|
3996
|
+
*
|
|
3997
|
+
* Часть необязательная: окно со своей обёрткой тела выглядит как прежде.
|
|
3998
|
+
*
|
|
3999
|
+
* @example
|
|
4000
|
+
* \`\`\`html
|
|
4001
|
+
* <rt-dialog size="md">
|
|
4002
|
+
* <rt-dialog-header title="Создание записи" />
|
|
4003
|
+
* <rt-dialog-content>...форма...</rt-dialog-content>
|
|
4004
|
+
* <rt-dialog-footer>...</rt-dialog-footer>
|
|
4005
|
+
* </rt-dialog>
|
|
4006
|
+
* \`\`\`
|
|
4007
|
+
*/
|
|
4008
|
+
declare class RtDialogContentComponent {
|
|
4009
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtDialogContentComponent, never>;
|
|
4010
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtDialogContentComponent, "rt-dialog-content", never, {}, {}, never, ["*"], true, never>;
|
|
3764
4011
|
}
|
|
3765
4012
|
|
|
3766
4013
|
declare class RtDownloadLinkComponent {
|
|
@@ -3907,6 +4154,382 @@ declare class RtDynamicListComponent implements OnInit {
|
|
|
3907
4154
|
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>;
|
|
3908
4155
|
}
|
|
3909
4156
|
|
|
4157
|
+
/**
|
|
4158
|
+
* Модель `rt-dynamic-selector`: один корневой неймспейс с префиксом `I`.
|
|
4159
|
+
*/
|
|
4160
|
+
declare namespace IRtDynamicSelector {
|
|
4161
|
+
/** Состояние флажка «Выбрать всё» по видимым пунктам. */
|
|
4162
|
+
type SelectAllState = 'none' | 'some' | 'all';
|
|
4163
|
+
/** Как выбирает всплывающий список: один пункт переключателем или несколько флажками. */
|
|
4164
|
+
type Mode = 'single' | 'multi';
|
|
4165
|
+
/** Строки всплывающего выбора: отмеченные раньше над разделителем и найденные под ним. */
|
|
4166
|
+
interface PopupRows<T> {
|
|
4167
|
+
readonly ticked: ReadonlyArray<T>;
|
|
4168
|
+
readonly found: ReadonlyArray<T>;
|
|
4169
|
+
}
|
|
4170
|
+
/** Строка всплывающего выбора, готовая для разметки. */
|
|
4171
|
+
interface PopupRow<T> {
|
|
4172
|
+
readonly entity: T;
|
|
4173
|
+
readonly key: unknown;
|
|
4174
|
+
readonly label: string;
|
|
4175
|
+
readonly ticked: boolean;
|
|
4176
|
+
/** Под строкой стоит разделитель. */
|
|
4177
|
+
readonly separated: boolean;
|
|
4178
|
+
}
|
|
4179
|
+
/** Строка списка выбранного, готовая для разметки. */
|
|
4180
|
+
interface ListRow<T> {
|
|
4181
|
+
readonly item: T;
|
|
4182
|
+
readonly key: unknown;
|
|
4183
|
+
readonly label: string;
|
|
4184
|
+
/** Строку нельзя убрать из списка. */
|
|
4185
|
+
readonly locked: boolean;
|
|
4186
|
+
}
|
|
4187
|
+
/** Перенос строки списка выбранного: откуда и куда. */
|
|
4188
|
+
interface Move {
|
|
4189
|
+
readonly from: number;
|
|
4190
|
+
readonly to: number;
|
|
4191
|
+
}
|
|
4192
|
+
/** Обстановка шаблона строки, который принёс вызывающий. */
|
|
4193
|
+
interface RowContext<T> {
|
|
4194
|
+
readonly $implicit: T;
|
|
4195
|
+
}
|
|
4196
|
+
/** Правка строки поля списка строк: прежнее значение и новое. */
|
|
4197
|
+
interface TextEdit {
|
|
4198
|
+
readonly previous: string;
|
|
4199
|
+
readonly next: string;
|
|
4200
|
+
}
|
|
4201
|
+
}
|
|
4202
|
+
|
|
4203
|
+
/**
|
|
4204
|
+
* Маркеры частей строки списка выбранного — своим файлом, как у соседних семей.
|
|
4205
|
+
*
|
|
4206
|
+
* Маркер держит свой шаблон и о списке не знает ничего: селектор и поле списка строк читают его
|
|
4207
|
+
* среди своего содержимого и отдают шаблон списку. Удаление и ручка перетаскивания остаются
|
|
4208
|
+
* за китом.
|
|
4209
|
+
*/
|
|
4210
|
+
/**
|
|
4211
|
+
* Свои кнопки у каждой строки: стоят перед кнопкой удаления.
|
|
4212
|
+
*
|
|
4213
|
+
* @example
|
|
4214
|
+
* ```html
|
|
4215
|
+
* <rt-dynamic-selector keyExp="id" displayExp="name" [entities]="people()">
|
|
4216
|
+
* <ng-template rtDynamicSelectorRowControls let-person>
|
|
4217
|
+
* <rt-icon-button icon="info" ariaLabel="About" (clicked)="open(person)" />
|
|
4218
|
+
* </ng-template>
|
|
4219
|
+
* </rt-dynamic-selector>
|
|
4220
|
+
* ```
|
|
4221
|
+
*/
|
|
4222
|
+
declare class RtDynamicSelectorRowControlsDirective<T = unknown> {
|
|
4223
|
+
readonly templateRef: TemplateRef<IRtDynamicSelector.RowContext<T>>;
|
|
4224
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtDynamicSelectorRowControlsDirective<any>, never>;
|
|
4225
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RtDynamicSelectorRowControlsDirective<any>, "[rtDynamicSelectorRowControls]", never, {}, {}, never, never, true, never>;
|
|
4226
|
+
}
|
|
4227
|
+
/** Своё название строки вместо подписи из поля записи. */
|
|
4228
|
+
declare class RtDynamicSelectorRowTitleDirective<T = unknown> {
|
|
4229
|
+
readonly templateRef: TemplateRef<IRtDynamicSelector.RowContext<T>>;
|
|
4230
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtDynamicSelectorRowTitleDirective<any>, never>;
|
|
4231
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RtDynamicSelectorRowTitleDirective<any>, "[rtDynamicSelectorRowTitle]", never, {}, {}, never, never, true, never>;
|
|
4232
|
+
}
|
|
4233
|
+
|
|
4234
|
+
/**
|
|
4235
|
+
* Поле списка строк: строки человек набирает сам. Значение — массив строк в порядке списка.
|
|
4236
|
+
* Enter или уход из поля добавляют срезанный по краям текст в конец; пустой и повторный не
|
|
4237
|
+
* добавляются. Сброс, очистка, удаление строки и перетаскивание — те же, что у селектора.
|
|
4238
|
+
*
|
|
4239
|
+
* @example
|
|
4240
|
+
* ```html
|
|
4241
|
+
* <rt-dynamic-input editable [formControl]="tags" />
|
|
4242
|
+
* ```
|
|
4243
|
+
*/
|
|
4244
|
+
declare class RtDynamicInputComponent extends RtFormControlBase<string[]> {
|
|
4245
|
+
#private;
|
|
4246
|
+
protected readonly addLabel: Signal<string>;
|
|
4247
|
+
protected readonly placeholderLabel: Signal<string>;
|
|
4248
|
+
protected readonly field: Signal<ElementRef<HTMLElement> | undefined>;
|
|
4249
|
+
protected readonly rowControls: Signal<RtDynamicSelectorRowControlsDirective<string> | undefined>;
|
|
4250
|
+
protected readonly controlsTpl: Signal<TemplateRef<IRtDynamicSelector.RowContext<string>> | null>;
|
|
4251
|
+
/** Поле набора открыто, и в нём текст. */
|
|
4252
|
+
protected readonly isFieldShown: WritableSignal<boolean>;
|
|
4253
|
+
protected readonly draft: WritableSignal<string>;
|
|
4254
|
+
/** Приглашение снимается нажатием его кнопки и до новой записи формы не возвращается. */
|
|
4255
|
+
protected readonly isInvitationDismissed: WritableSignal<boolean>;
|
|
4256
|
+
protected readonly rows: Signal<IRtDynamicSelector.ListRow<string>[]>;
|
|
4257
|
+
protected readonly isInvitationShown: Signal<boolean>;
|
|
4258
|
+
protected readonly isAddShown: Signal<boolean>;
|
|
4259
|
+
protected readonly isKeysReset: Signal<boolean>;
|
|
4260
|
+
protected readonly isKeysClear: Signal<boolean>;
|
|
4261
|
+
/** Правки в шаблоне строки держат сброс и очистку включёнными, даже когда строки не менялись. */
|
|
4262
|
+
protected readonly isResetDisabled: Signal<boolean>;
|
|
4263
|
+
protected readonly isClearDisabled: Signal<boolean>;
|
|
4264
|
+
protected readonly addTitle: Signal<string>;
|
|
4265
|
+
protected readonly fieldPlaceholder: Signal<string>;
|
|
4266
|
+
protected readonly hasValue: Signal<boolean>;
|
|
4267
|
+
readonly buttonTitle: InputSignal<string>;
|
|
4268
|
+
readonly placeholder: InputSignal<string>;
|
|
4269
|
+
/** Строки, которые нельзя убрать из списка. */
|
|
4270
|
+
readonly readonlyKeys: InputSignal<ReadonlyArray<string>>;
|
|
4271
|
+
readonly draggable: InputSignalWithTransform<boolean, unknown>;
|
|
4272
|
+
/** Шаг скругления кнопок-иконок списка; по умолчанию они круглые. */
|
|
4273
|
+
readonly buttonRadius: InputSignal<TRtRadius | null>;
|
|
4274
|
+
readonly editable: InputSignalWithTransform<boolean, unknown>;
|
|
4275
|
+
readonly invitation: InputSignalWithTransform<boolean, unknown>;
|
|
4276
|
+
readonly invitationIcon: InputSignal<IRtIcon.Name | null>;
|
|
4277
|
+
readonly invitationDescription: InputSignal<string>;
|
|
4278
|
+
/** Корзина строк; без неё строки убирает только очистка или сам вызывающий. */
|
|
4279
|
+
readonly removeShown: InputSignalWithTransform<boolean, unknown>;
|
|
4280
|
+
/** Сброс и очистка под списком: `false` их убирает, кнопка добавления остаётся. */
|
|
4281
|
+
readonly listActionsShown: InputSignalWithTransform<boolean, unknown>;
|
|
4282
|
+
/**
|
|
4283
|
+
* Строки правлены в шаблоне вызывающего: сброс и очистка включены и тогда, когда строки прежние.
|
|
4284
|
+
* Сброс сообщает `listReset`, очистка — `listCleared`, и вызывающий снимает свои правки.
|
|
4285
|
+
*/
|
|
4286
|
+
readonly extraChanged: InputSignalWithTransform<boolean, unknown>;
|
|
4287
|
+
readonly listReset: OutputEmitterRef<void>;
|
|
4288
|
+
readonly listCleared: OutputEmitterRef<void>;
|
|
4289
|
+
readonly displayText: Signal<string>;
|
|
4290
|
+
/** Записанное формой становится и списком, и значением для сброса; пустой массив список опустошает. */
|
|
4291
|
+
writeValue(value: string[] | null): void;
|
|
4292
|
+
protected onAdd(): void;
|
|
4293
|
+
/** Enter или уход из поля: пустой текст поле не закрывает, повторный закрывает без изменений. */
|
|
4294
|
+
protected onCommit(): void;
|
|
4295
|
+
protected onRemoved(key: unknown): void;
|
|
4296
|
+
protected onMoved(move: IRtDynamicSelector.Move): void;
|
|
4297
|
+
protected onEdited(edit: IRtDynamicSelector.TextEdit): void;
|
|
4298
|
+
protected onReset(): void;
|
|
4299
|
+
protected onCleared(): void;
|
|
4300
|
+
protected getEmptyValue(): string[];
|
|
4301
|
+
protected focusAfterClear(): void;
|
|
4302
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtDynamicInputComponent, never>;
|
|
4303
|
+
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; }; "removeShown": { "alias": "removeShown"; "required": false; "isSignal": true; }; "listActionsShown": { "alias": "listActionsShown"; "required": false; "isSignal": true; }; "extraChanged": { "alias": "extraChanged"; "required": false; "isSignal": true; }; }, { "listReset": "listReset"; "listCleared": "listCleared"; }, ["rowControls"], never, true, never>;
|
|
4304
|
+
}
|
|
4305
|
+
|
|
4306
|
+
/**
|
|
4307
|
+
* Список выбранного семьи динамических селекторов: строки с удалением, ручкой перетаскивания и
|
|
4308
|
+
* правкой, под ними полоса с кнопкой добавления вызывающего, сбросом и очисткой. Значения список
|
|
4309
|
+
* не держит: он сообщает, что человек сделал, а селектор и поле списка строк решают, что из этого
|
|
4310
|
+
* выходит.
|
|
4311
|
+
*/
|
|
4312
|
+
declare class RtDynamicSelectorListComponent<TItem> {
|
|
4313
|
+
#private;
|
|
4314
|
+
/** На узком экране подсказки кнопок не показываются: наведения там нет. */
|
|
4315
|
+
protected readonly isNarrow: Signal<boolean>;
|
|
4316
|
+
protected readonly dragLabel: Signal<string>;
|
|
4317
|
+
protected readonly removeLabel: Signal<string>;
|
|
4318
|
+
protected readonly editLabel: Signal<string>;
|
|
4319
|
+
protected readonly applyLabel: Signal<string>;
|
|
4320
|
+
protected readonly cancelLabel: Signal<string>;
|
|
4321
|
+
protected readonly resetLabel: Signal<string>;
|
|
4322
|
+
protected readonly clearLabel: Signal<string>;
|
|
4323
|
+
/** Строка, открытая для правки, и текст в её поле. */
|
|
4324
|
+
protected readonly editedIndex: WritableSignal<number | null>;
|
|
4325
|
+
protected readonly draft: WritableSignal<string>;
|
|
4326
|
+
readonly rows: InputSignal<ReadonlyArray<IRtDynamicSelector.ListRow<TItem>>>;
|
|
4327
|
+
readonly draggable: InputSignalWithTransform<boolean, unknown>;
|
|
4328
|
+
readonly editable: InputSignalWithTransform<boolean, unknown>;
|
|
4329
|
+
readonly disabled: InputSignalWithTransform<boolean, unknown>;
|
|
4330
|
+
/** Полоса под строками; приглашение вызывающего встаёт на её место. */
|
|
4331
|
+
readonly actionsShown: InputSignalWithTransform<boolean, unknown>;
|
|
4332
|
+
/** Сброс и очистка в полосе; без них в полосе остаётся кнопка добавления. */
|
|
4333
|
+
readonly resetClearShown: InputSignalWithTransform<boolean, unknown>;
|
|
4334
|
+
/** Корзина строк; без неё строки двигаются и правятся, но не убираются. */
|
|
4335
|
+
readonly removeShown: InputSignalWithTransform<boolean, unknown>;
|
|
4336
|
+
readonly resetDisabled: InputSignalWithTransform<boolean, unknown>;
|
|
4337
|
+
readonly clearDisabled: InputSignalWithTransform<boolean, unknown>;
|
|
4338
|
+
/** Шаг скругления кнопок-иконок списка; по умолчанию они круглые. */
|
|
4339
|
+
readonly buttonRadius: InputSignal<TRtRadius | null>;
|
|
4340
|
+
readonly titleTpl: InputSignal<TemplateRef<IRtDynamicSelector.RowContext<TItem>> | null>;
|
|
4341
|
+
readonly controlsTpl: InputSignal<TemplateRef<IRtDynamicSelector.RowContext<TItem>> | null>;
|
|
4342
|
+
readonly removed: OutputEmitterRef<unknown>;
|
|
4343
|
+
readonly moved: OutputEmitterRef<IRtDynamicSelector.Move>;
|
|
4344
|
+
readonly edited: OutputEmitterRef<IRtDynamicSelector.TextEdit>;
|
|
4345
|
+
readonly resetClicked: OutputEmitterRef<void>;
|
|
4346
|
+
readonly cleared: OutputEmitterRef<void>;
|
|
4347
|
+
/** Строка, взятая из чужого списка, ничего не меняет; брошенная на своё место — тоже. */
|
|
4348
|
+
protected onDrop(event: CdkDragDrop<unknown>): void;
|
|
4349
|
+
protected onRemove(row: IRtDynamicSelector.ListRow<TItem>): void;
|
|
4350
|
+
protected onEditStart(index: number, row: IRtDynamicSelector.ListRow<TItem>): void;
|
|
4351
|
+
protected onEditApply(row: IRtDynamicSelector.ListRow<TItem>): void;
|
|
4352
|
+
protected onEditCancel(): void;
|
|
4353
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtDynamicSelectorListComponent<any>, never>;
|
|
4354
|
+
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; }; "resetClearShown": { "alias": "resetClearShown"; "required": false; "isSignal": true; }; "removeShown": { "alias": "removeShown"; "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>;
|
|
4355
|
+
}
|
|
4356
|
+
|
|
4357
|
+
/** Сколько ждёт поиск на сервере после последней нажатой клавиши. */
|
|
4358
|
+
declare const RT_DYNAMIC_SELECTOR_SEARCH_DEBOUNCE: number;
|
|
4359
|
+
/**
|
|
4360
|
+
* Всплывающий выбор динамического селектора: поиск, флажки или переключатели, «Выбрать всё»,
|
|
4361
|
+
* догрузка при прокрутке, «Отмена» и «Применить». Отметки живут в самом окне и уходят наружу
|
|
4362
|
+
* только по «Применить»: окно создаётся заново при каждом открытии, и закрытие их сбрасывает.
|
|
4363
|
+
*/
|
|
4364
|
+
declare class RtDynamicSelectorPopupComponent<TEntity extends object> implements OnInit {
|
|
4365
|
+
#private;
|
|
4366
|
+
protected readonly searchLabel: Signal<string>;
|
|
4367
|
+
protected readonly selectAllLabel: Signal<string>;
|
|
4368
|
+
protected readonly multiLabel: Signal<string>;
|
|
4369
|
+
protected readonly multiHintLabel: Signal<string>;
|
|
4370
|
+
protected readonly noResultsLabel: Signal<string>;
|
|
4371
|
+
protected readonly cancelLabel: Signal<string>;
|
|
4372
|
+
protected readonly applyLabel: Signal<string>;
|
|
4373
|
+
/** Отмеченные ключи — ещё не применённые. */
|
|
4374
|
+
protected readonly ticked: WritableSignal<unknown[]>;
|
|
4375
|
+
protected readonly query: WritableSignal<string>;
|
|
4376
|
+
/** Выбор нескольких включён: без него простое нажатие оставляет одну отметку. */
|
|
4377
|
+
protected readonly isMultiOn: WritableSignal<boolean>;
|
|
4378
|
+
/** Найденные строки: местный поиск отбирает сам, серверный отдаёт запрос наружу. */
|
|
4379
|
+
protected readonly found: Signal<TEntity[]>;
|
|
4380
|
+
protected readonly rows: Signal<IRtDynamicSelector.PopupRows<TEntity>>;
|
|
4381
|
+
protected readonly visibleKeys: Signal<unknown[]>;
|
|
4382
|
+
/** Строки для разметки: отмеченные раньше над разделителем, найденные — под ним. */
|
|
4383
|
+
protected readonly rowItems: Signal<IRtDynamicSelector.PopupRow<TEntity>[]>;
|
|
4384
|
+
protected readonly hasRows: Signal<boolean>;
|
|
4385
|
+
protected readonly selectAllState: Signal<IRtDynamicSelector.SelectAllState>;
|
|
4386
|
+
protected readonly isSingle: Signal<boolean>;
|
|
4387
|
+
protected readonly isSelectAllShown: Signal<boolean>;
|
|
4388
|
+
protected readonly isMultiToggleVisible: Signal<boolean>;
|
|
4389
|
+
protected readonly lastPinnedKey: Signal<unknown>;
|
|
4390
|
+
protected readonly isApplyDisabled: Signal<boolean>;
|
|
4391
|
+
protected readonly isNavShown: Signal<boolean>;
|
|
4392
|
+
/** Предлагаемые записи: ещё не выбранные, отсортированные селектором. */
|
|
4393
|
+
readonly entities: InputSignal<ReadonlyArray<TEntity>>;
|
|
4394
|
+
readonly keyExp: InputSignal<keyof TEntity & string>;
|
|
4395
|
+
readonly displayExp: InputSignal<keyof TEntity & string>;
|
|
4396
|
+
readonly mode: InputSignal<IRtDynamicSelector.Mode>;
|
|
4397
|
+
readonly multiToggleShown: InputSignalWithTransform<boolean, unknown>;
|
|
4398
|
+
readonly selectAllShown: InputSignalWithTransform<boolean, unknown>;
|
|
4399
|
+
readonly localSearch: InputSignalWithTransform<boolean, unknown>;
|
|
4400
|
+
readonly lazyLoad: InputSignalWithTransform<boolean, unknown>;
|
|
4401
|
+
readonly loading: InputSignalWithTransform<boolean, unknown>;
|
|
4402
|
+
readonly fetching: InputSignalWithTransform<boolean, unknown>;
|
|
4403
|
+
readonly pinnedKeys: InputSignal<ReadonlyArray<unknown>>;
|
|
4404
|
+
readonly navigateTitle: InputSignal<string>;
|
|
4405
|
+
readonly navigateLink: InputSignal<string>;
|
|
4406
|
+
/** Запрос, с которым выбор открывается; событием поиска он не уходит — вызывающий его знает. */
|
|
4407
|
+
readonly searchTerm: InputSignal<string>;
|
|
4408
|
+
/** Применённые ключи в порядке отметок. */
|
|
4409
|
+
readonly applied: OutputEmitterRef<unknown[]>;
|
|
4410
|
+
readonly cancelled: OutputEmitterRef<void>;
|
|
4411
|
+
/** Запрос для поиска на сервере: через паузу после последней клавиши, стёртый — пустой строкой. */
|
|
4412
|
+
readonly searchChange: OutputEmitterRef<string>;
|
|
4413
|
+
readonly loadMore: OutputEmitterRef<void>;
|
|
4414
|
+
/** Отмеченные записи: пустой список при открытии и текущие отметки после каждого поиска. */
|
|
4415
|
+
readonly temporaryChoiceChange: OutputEmitterRef<TEntity[]>;
|
|
4416
|
+
ngOnInit(): void;
|
|
4417
|
+
protected onQueryChange(value: string | null): void;
|
|
4418
|
+
/** Нажатие строки флажков: при выключенном выборе нескольких без Ctrl или Cmd остаётся одна отметка. */
|
|
4419
|
+
protected onRowClick(event: MouseEvent, item: TEntity): void;
|
|
4420
|
+
protected onRadioChange(item: TEntity): void;
|
|
4421
|
+
protected onSelectAll(checked: boolean): void;
|
|
4422
|
+
protected onMultiToggle(value: boolean): void;
|
|
4423
|
+
protected onApply(): void;
|
|
4424
|
+
protected onCancel(): void;
|
|
4425
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtDynamicSelectorPopupComponent<any>, never>;
|
|
4426
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtDynamicSelectorPopupComponent<any>, "rt-dynamic-selector-popup", never, { "entities": { "alias": "entities"; "required": false; "isSignal": true; }; "keyExp": { "alias": "keyExp"; "required": true; "isSignal": true; }; "displayExp": { "alias": "displayExp"; "required": true; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "multiToggleShown": { "alias": "multiToggleShown"; "required": false; "isSignal": true; }; "selectAllShown": { "alias": "selectAllShown"; "required": false; "isSignal": true; }; "localSearch": { "alias": "localSearch"; "required": false; "isSignal": true; }; "lazyLoad": { "alias": "lazyLoad"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "fetching": { "alias": "fetching"; "required": false; "isSignal": true; }; "pinnedKeys": { "alias": "pinnedKeys"; "required": false; "isSignal": true; }; "navigateTitle": { "alias": "navigateTitle"; "required": false; "isSignal": true; }; "navigateLink": { "alias": "navigateLink"; "required": false; "isSignal": true; }; "searchTerm": { "alias": "searchTerm"; "required": false; "isSignal": true; }; }, { "applied": "applied"; "cancelled": "cancelled"; "searchChange": "searchChange"; "loadMore": "loadMore"; "temporaryChoiceChange": "temporaryChoiceChange"; }, never, never, true, never>;
|
|
4427
|
+
}
|
|
4428
|
+
|
|
4429
|
+
/**
|
|
4430
|
+
* Динамический селектор: поле формы со списком выбранных записей. Значение — массив ключей в
|
|
4431
|
+
* порядке списка. Записи добавляются всплывающим выбором, убираются корзиной строки, список
|
|
4432
|
+
* возвращается к записанному формой сбросом и пустеет очисткой — кроме строк только для чтения.
|
|
4433
|
+
*
|
|
4434
|
+
* @example
|
|
4435
|
+
* ```html
|
|
4436
|
+
* <rt-dynamic-selector keyExp="id" displayExp="name" [entities]="people()" [formControl]="team" />
|
|
4437
|
+
* ```
|
|
4438
|
+
*/
|
|
4439
|
+
declare class RtDynamicSelectorComponent<TEntity extends object> extends RtFormControlBase<unknown[]> {
|
|
4440
|
+
#private;
|
|
4441
|
+
protected readonly addLabel: Signal<string>;
|
|
4442
|
+
protected readonly nothingToChooseLabel: Signal<string>;
|
|
4443
|
+
/** Всплывающий выбор открывается от нажатой кнопки добавления: у полосы и у приглашения — свой. */
|
|
4444
|
+
protected readonly popovers: Signal<readonly RtPopoverDirective[]>;
|
|
4445
|
+
protected readonly rowTitle: Signal<RtDynamicSelectorRowTitleDirective<TEntity> | undefined>;
|
|
4446
|
+
protected readonly rowControls: Signal<RtDynamicSelectorRowControlsDirective<TEntity> | undefined>;
|
|
4447
|
+
protected readonly titleTpl: Signal<TemplateRef<IRtDynamicSelector.RowContext<TEntity>> | null>;
|
|
4448
|
+
protected readonly controlsTpl: Signal<TemplateRef<IRtDynamicSelector.RowContext<TEntity>> | null>;
|
|
4449
|
+
/** Выбранные записи в порядке значения; ключ, которого нет среди записей, строки не рисует. */
|
|
4450
|
+
protected readonly chosen: Signal<TEntity[]>;
|
|
4451
|
+
protected readonly rows: Signal<IRtDynamicSelector.ListRow<TEntity>[]>;
|
|
4452
|
+
/** Что предлагает всплывающий выбор: ещё не выбранное, в порядке вызывающего или по алфавиту. */
|
|
4453
|
+
protected readonly offered: Signal<TEntity[]>;
|
|
4454
|
+
protected readonly hasOffer: Signal<boolean>;
|
|
4455
|
+
protected readonly isNothingToChoose: Signal<boolean>;
|
|
4456
|
+
protected readonly isAddShown: Signal<boolean>;
|
|
4457
|
+
protected readonly isKeysReset: Signal<boolean>;
|
|
4458
|
+
protected readonly isKeysClear: Signal<boolean>;
|
|
4459
|
+
/** Правки в шаблоне строки держат сброс и очистку включёнными, даже когда ключи не менялись. */
|
|
4460
|
+
protected readonly isResetDisabled: Signal<boolean>;
|
|
4461
|
+
protected readonly isClearDisabled: Signal<boolean>;
|
|
4462
|
+
protected readonly addTitle: Signal<string>;
|
|
4463
|
+
protected readonly hasValue: Signal<boolean>;
|
|
4464
|
+
/** Записи, из которых выбирают; у каждой есть поле ключа и поле подписи. */
|
|
4465
|
+
readonly entities: InputSignal<ReadonlyArray<TEntity>>;
|
|
4466
|
+
readonly keyExp: InputSignal<keyof TEntity & string>;
|
|
4467
|
+
readonly displayExp: InputSignal<keyof TEntity & string>;
|
|
4468
|
+
readonly mode: InputSignal<IRtDynamicSelector.Mode>;
|
|
4469
|
+
/** Название кнопки добавления; пустое — «Add» из словаря кита. */
|
|
4470
|
+
readonly buttonTitle: InputSignal<string>;
|
|
4471
|
+
readonly addShown: InputSignalWithTransform<boolean, unknown>;
|
|
4472
|
+
/** Корзина строк; без неё записи убирает только очистка или сам вызывающий. */
|
|
4473
|
+
readonly removeShown: InputSignalWithTransform<boolean, unknown>;
|
|
4474
|
+
/** Сброс и очистка под списком: `false` их убирает, кнопка добавления остаётся. */
|
|
4475
|
+
readonly listActionsShown: InputSignalWithTransform<boolean, unknown>;
|
|
4476
|
+
/**
|
|
4477
|
+
* Строки правлены в шаблоне вызывающего: сброс и очистка включены и тогда, когда ключи прежние.
|
|
4478
|
+
* Сброс сообщает `listReset`, очистка — `listCleared`, и вызывающий снимает свои правки.
|
|
4479
|
+
*/
|
|
4480
|
+
readonly extraChanged: InputSignalWithTransform<boolean, unknown>;
|
|
4481
|
+
/** Запрос, с которым открывается всплывающий выбор; событием поиска он не уходит. */
|
|
4482
|
+
readonly searchTerm: InputSignal<string>;
|
|
4483
|
+
/** Ключи, которые нельзя убрать из списка. */
|
|
4484
|
+
readonly readonlyKeys: InputSignal<ReadonlyArray<unknown>>;
|
|
4485
|
+
/** Ключи строк всплывающего выбора, под последней из которых стоит разделитель. */
|
|
4486
|
+
readonly pinnedKeys: InputSignal<ReadonlyArray<unknown>>;
|
|
4487
|
+
readonly draggable: InputSignalWithTransform<boolean, unknown>;
|
|
4488
|
+
/** Шаг скругления кнопок-иконок списка; по умолчанию они круглые. */
|
|
4489
|
+
readonly buttonRadius: InputSignal<TRtRadius | null>;
|
|
4490
|
+
/** Приглашение вместо полосы кнопок: значок, описание и кнопка добавления. */
|
|
4491
|
+
readonly invitation: InputSignalWithTransform<boolean, unknown>;
|
|
4492
|
+
readonly invitationIcon: InputSignal<IRtIcon.Name | null>;
|
|
4493
|
+
readonly invitationDescription: InputSignal<string>;
|
|
4494
|
+
readonly multiToggleShown: InputSignalWithTransform<boolean, unknown>;
|
|
4495
|
+
readonly selectAllShown: InputSignalWithTransform<boolean, unknown>;
|
|
4496
|
+
readonly localSearch: InputSignalWithTransform<boolean, unknown>;
|
|
4497
|
+
readonly lazyLoad: InputSignalWithTransform<boolean, unknown>;
|
|
4498
|
+
readonly loading: InputSignalWithTransform<boolean, unknown>;
|
|
4499
|
+
readonly fetching: InputSignalWithTransform<boolean, unknown>;
|
|
4500
|
+
readonly navigateTitle: InputSignal<string>;
|
|
4501
|
+
readonly navigateLink: InputSignal<string>;
|
|
4502
|
+
readonly sortFn: InputSignal<((a: TEntity, b: TEntity) => number) | null>;
|
|
4503
|
+
/** Выбранные записи: те же, что уходят событием изменения выбора. */
|
|
4504
|
+
readonly chosenEntities: ModelSignal<TEntity[]>;
|
|
4505
|
+
readonly selectionChange: OutputEmitterRef<TEntity[]>;
|
|
4506
|
+
readonly listReset: OutputEmitterRef<void>;
|
|
4507
|
+
readonly listCleared: OutputEmitterRef<void>;
|
|
4508
|
+
/** Всплывающий выбор открылся или закрылся. */
|
|
4509
|
+
readonly popupOpenChange: OutputEmitterRef<boolean>;
|
|
4510
|
+
readonly searchChange: OutputEmitterRef<string>;
|
|
4511
|
+
readonly loadMore: OutputEmitterRef<void>;
|
|
4512
|
+
readonly temporaryChoiceChange: OutputEmitterRef<TEntity[]>;
|
|
4513
|
+
/** Открыт ли всплывающий выбор — от кнопки полосы или от кнопки приглашения. */
|
|
4514
|
+
readonly popupOpen: Signal<boolean>;
|
|
4515
|
+
readonly displayText: Signal<string>;
|
|
4516
|
+
/** Записанное формой становится и списком, и значением для сброса; пустой массив список опустошает. */
|
|
4517
|
+
writeValue(value: unknown[] | null): void;
|
|
4518
|
+
protected onAdd(popover: RtPopoverDirective): void;
|
|
4519
|
+
protected onApplied(keys: unknown[]): void;
|
|
4520
|
+
protected onCancelled(): void;
|
|
4521
|
+
protected onRemoved(key: unknown): void;
|
|
4522
|
+
protected onMoved(move: IRtDynamicSelector.Move): void;
|
|
4523
|
+
protected onReset(): void;
|
|
4524
|
+
protected onCleared(): void;
|
|
4525
|
+
protected onOpened(): void;
|
|
4526
|
+
protected onClosed(): void;
|
|
4527
|
+
protected getEmptyValue(): unknown[];
|
|
4528
|
+
protected focusAfterClear(): void;
|
|
4529
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtDynamicSelectorComponent<any>, never>;
|
|
4530
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtDynamicSelectorComponent<any>, "rt-dynamic-selector", never, { "entities": { "alias": "entities"; "required": false; "isSignal": true; }; "keyExp": { "alias": "keyExp"; "required": true; "isSignal": true; }; "displayExp": { "alias": "displayExp"; "required": true; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "buttonTitle": { "alias": "buttonTitle"; "required": false; "isSignal": true; }; "addShown": { "alias": "addShown"; "required": false; "isSignal": true; }; "removeShown": { "alias": "removeShown"; "required": false; "isSignal": true; }; "listActionsShown": { "alias": "listActionsShown"; "required": false; "isSignal": true; }; "extraChanged": { "alias": "extraChanged"; "required": false; "isSignal": true; }; "searchTerm": { "alias": "searchTerm"; "required": false; "isSignal": true; }; "readonlyKeys": { "alias": "readonlyKeys"; "required": false; "isSignal": true; }; "pinnedKeys": { "alias": "pinnedKeys"; "required": false; "isSignal": true; }; "draggable": { "alias": "draggable"; "required": false; "isSignal": true; }; "buttonRadius": { "alias": "buttonRadius"; "required": false; "isSignal": true; }; "invitation": { "alias": "invitation"; "required": false; "isSignal": true; }; "invitationIcon": { "alias": "invitationIcon"; "required": false; "isSignal": true; }; "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"; "listCleared": "listCleared"; "popupOpenChange": "popupOpenChange"; "searchChange": "searchChange"; "loadMore": "loadMore"; "temporaryChoiceChange": "temporaryChoiceChange"; }, ["rowTitle", "rowControls"], never, true, never>;
|
|
4531
|
+
}
|
|
4532
|
+
|
|
3910
4533
|
/**
|
|
3911
4534
|
* Заглушка пустого состояния: центрированная иконка в круглой подложке, заголовок,
|
|
3912
4535
|
* опциональное описание и проецируемый слот для действия (кнопка «Прикрепить»,
|
|
@@ -3919,10 +4542,67 @@ declare class RtDynamicListComponent implements OnInit {
|
|
|
3919
4542
|
*/
|
|
3920
4543
|
declare class RtEmptyStateComponent {
|
|
3921
4544
|
readonly icon: InputSignal<IRtIcon.Name | null>;
|
|
4545
|
+
/** Имя Material вместо `icon` — рисуется так же, как вход `glyph` у `rt-icon`. */
|
|
4546
|
+
readonly glyph: InputSignal<string | null>;
|
|
3922
4547
|
readonly title: InputSignal<string>;
|
|
3923
4548
|
readonly description: InputSignal<string | null>;
|
|
4549
|
+
/** Пунктирная рамка вокруг заглушки — так она читается как зона, куда бросают файл. */
|
|
4550
|
+
readonly framed: InputSignalWithTransform<boolean, BooleanInput>;
|
|
3924
4551
|
static ɵfac: i0.ɵɵFactoryDeclaration<RtEmptyStateComponent, never>;
|
|
3925
|
-
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: {}; }]>;
|
|
4552
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtEmptyStateComponent, "rt-empty-state", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "glyph": { "alias": "glyph"; "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: {}; }]>;
|
|
4553
|
+
}
|
|
4554
|
+
|
|
4555
|
+
/**
|
|
4556
|
+
* Тело `rt-expansion-panel`, собираемое лениво: ставится на `<ng-template>` внутри панели, и его
|
|
4557
|
+
* содержимое создаётся при раскрытии и уходит после сворачивания. Сворачивание при этом доигрывает
|
|
4558
|
+
* движение до конца: тело уходит вместе со своим содержимым, а не пустым.
|
|
4559
|
+
*/
|
|
4560
|
+
declare class RtExpansionPanelContentDirective {
|
|
4561
|
+
readonly templateRef: TemplateRef<unknown>;
|
|
4562
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtExpansionPanelContentDirective, never>;
|
|
4563
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RtExpansionPanelContentDirective, "ng-template[rtExpansionPanelContent]", never, {}, {}, never, never, true, never>;
|
|
4564
|
+
}
|
|
4565
|
+
|
|
4566
|
+
declare namespace IRtExpansionPanel {
|
|
4567
|
+
/**
|
|
4568
|
+
* Вид панели: `card` — отдельная карточка на фоне поверхности с тенью, как панель Material;
|
|
4569
|
+
* `plain` — без фона, тени и отступов, для панели внутри списка, который рисует строки сам.
|
|
4570
|
+
*/
|
|
4571
|
+
type Appearance = 'card' | 'plain';
|
|
4572
|
+
}
|
|
4573
|
+
|
|
4574
|
+
/**
|
|
4575
|
+
* Раскрывающаяся панель: заголовок-кнопка во всю ширину с шевроном у правого края и тело под ним.
|
|
4576
|
+
* Нажатие на заголовок раскрывает и сворачивает тело, раскрытие и сворачивание идут с движением.
|
|
4577
|
+
* Заменяет во втором ките панель раскрытия Material первого кита.
|
|
4578
|
+
*
|
|
4579
|
+
* Заголовок — содержимое панели без отметки. Тело — узел с `rtExpansionPanelBody`, созданный сразу,
|
|
4580
|
+
* или `<ng-template rtExpansionPanelContent>`, созданный при раскрытии.
|
|
4581
|
+
*
|
|
4582
|
+
* Состояние раскрытия — `expanded`, двусторонняя привязка: панель пишет в него сама, а владелец
|
|
4583
|
+
* может держать его в своём сигнале и менять извне.
|
|
4584
|
+
*/
|
|
4585
|
+
declare class RtExpansionPanelComponent {
|
|
4586
|
+
#private;
|
|
4587
|
+
/** Ленивое тело: шаблон создаётся при раскрытии. */
|
|
4588
|
+
protected readonly lazyContent: Signal<RtExpansionPanelContentDirective | undefined>;
|
|
4589
|
+
protected readonly bodyId: string;
|
|
4590
|
+
protected readonly headerDomId: Signal<string>;
|
|
4591
|
+
/** Тело раскрыто. Двусторонняя привязка: нажатие на заголовок пишет сюда. */
|
|
4592
|
+
readonly expanded: ModelSignal<boolean>;
|
|
4593
|
+
/** Заголовок не нажимается, тело остаётся как было. */
|
|
4594
|
+
readonly disabled: InputSignalWithTransform<boolean, unknown>;
|
|
4595
|
+
/** Шеврона нет: раскрытие читается по содержимому или его нечего раскрывать. */
|
|
4596
|
+
readonly hideToggle: InputSignalWithTransform<boolean, unknown>;
|
|
4597
|
+
readonly appearance: InputSignal<IRtExpansionPanel.Appearance>;
|
|
4598
|
+
/** Id кнопки заголовка. Нужен владельцу, который ищет заголовок по своему номеру; иначе — свой. */
|
|
4599
|
+
readonly headerId: InputSignal<string | null>;
|
|
4600
|
+
/** Имя кнопки заголовка для вспомогательных средств, когда видимой подписи мало. */
|
|
4601
|
+
readonly ariaLabel: InputSignal<string | null>;
|
|
4602
|
+
/** Нажатие на заголовок: раскрывает свёрнутую панель и сворачивает раскрытую. */
|
|
4603
|
+
toggle(): void;
|
|
4604
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtExpansionPanelComponent, never>;
|
|
4605
|
+
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>;
|
|
3926
4606
|
}
|
|
3927
4607
|
|
|
3928
4608
|
/**
|
|
@@ -4002,8 +4682,11 @@ declare class RtFieldComponent implements AfterContentInit {
|
|
|
4002
4682
|
declare namespace IRtIconButton {
|
|
4003
4683
|
/** Семантическая палитра кнопки. */
|
|
4004
4684
|
type Variant = 'primary' | 'secondary' | 'ghost' | 'danger' | 'success' | 'warning';
|
|
4005
|
-
/**
|
|
4006
|
-
|
|
4685
|
+
/**
|
|
4686
|
+
* Размер квадрата кнопки. Шаги — в SCSS; `xs` — 22px и `2xs` — 20px, оба со значком 16px.
|
|
4687
|
+
* Свой размер задаёт `--rt-icon-button-size` на теге или выше.
|
|
4688
|
+
*/
|
|
4689
|
+
type Size = '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
|
|
4007
4690
|
/** HTML-тип нативного `<button>`. */
|
|
4008
4691
|
type Type = 'button' | 'submit';
|
|
4009
4692
|
}
|
|
@@ -4308,8 +4991,7 @@ declare class RtFilterControlComponent<T = string> {
|
|
|
4308
4991
|
* `canGoBack=false` (default) — slot полностью скрыт через display:none, wordmark
|
|
4309
4992
|
* выравнивается слева.
|
|
4310
4993
|
*
|
|
4311
|
-
* Далее — wordmark, справа — action-иконки (
|
|
4312
|
-
* override `--rt-icon-button-size: 35px`): опциональная «Пригласить пользователя»
|
|
4994
|
+
* Далее — wordmark, справа — action-иконки (rt-icon-button шагом md): опциональная «Пригласить пользователя»
|
|
4313
4995
|
* (`showInvite`), слот колокольчика и профиль.
|
|
4314
4996
|
*
|
|
4315
4997
|
* Колокольчик уведомлений — проекция `[rtHeaderBell]`: домен кладёт в слот
|
|
@@ -4339,8 +5021,8 @@ declare class RtHeaderComponent {
|
|
|
4339
5021
|
*
|
|
4340
5022
|
* Рендерит свой собственный `<button type="...">` внутри template (НЕ host-button).
|
|
4341
5023
|
* Все цвета и размеры — через семантические `--rt-*` токены; геометрия квадрата
|
|
4342
|
-
*
|
|
4343
|
-
*
|
|
5024
|
+
* берётся из `--rt-icon-button-size`, а без него — из шага `size`. Свойство, заданное на теге
|
|
5025
|
+
* `<rt-icon-button>` или выше, доходит до кнопки; так же и `--rt-icon-button-bg`.
|
|
4344
5026
|
*
|
|
4345
5027
|
* Loading state — заменяет иконку на `<rt-icon name="spinner">` и блокирует
|
|
4346
5028
|
* клики (`button[disabled]`). Active state управляет `aria-pressed` (для toggle-кнопок).
|
|
@@ -4366,8 +5048,14 @@ declare class RtIconButtonComponent {
|
|
|
4366
5048
|
* camelCase ключи `hasIndicator` директива автоматически конвертирует в `has-indicator`.
|
|
4367
5049
|
*/
|
|
4368
5050
|
protected readonly bemMods: Signal<Record<string, boolean>>;
|
|
4369
|
-
/**
|
|
4370
|
-
|
|
5051
|
+
/**
|
|
5052
|
+
* Имя иконки в наборе кита. Нужно оно или `glyph`; когда переданы оба, побеждает имя. Нет ни
|
|
5053
|
+
* того ни другого — значок кит не рисует, и кнопка показывает вложенное содержимое: свой
|
|
5054
|
+
* рисунок приложения встаёт в кнопку с её размером, формой и состояниями.
|
|
5055
|
+
*/
|
|
5056
|
+
readonly icon: InputSignal<IRtIcon.Name | null>;
|
|
5057
|
+
/** Имя Material вместо имени кита — рисуется так же, как вход `glyph` у `rt-icon`. */
|
|
5058
|
+
readonly glyph: InputSignal<string | null>;
|
|
4371
5059
|
/** Доступное имя для screen-reader'ов — обязательно (icon-only кнопка). */
|
|
4372
5060
|
readonly ariaLabel: InputSignal<string>;
|
|
4373
5061
|
/** Семантическая палитра. */
|
|
@@ -4413,9 +5101,266 @@ declare class RtIconButtonComponent {
|
|
|
4413
5101
|
readonly clicked: OutputEmitterRef<MouseEvent>;
|
|
4414
5102
|
protected onClick(event: MouseEvent): void;
|
|
4415
5103
|
static ɵfac: i0.ɵɵFactoryDeclaration<RtIconButtonComponent, never>;
|
|
4416
|
-
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,
|
|
5104
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtIconButtonComponent, "rt-icon-button", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "glyph": { "alias": "glyph"; "required": false; "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, ["*"], true, [{ directive: typeof RtRadiusDirective; inputs: { "radius": "radius"; }; outputs: {}; }]>;
|
|
5105
|
+
}
|
|
5106
|
+
|
|
5107
|
+
/**
|
|
5108
|
+
* Контракты обрезки изображения. Один корневой неймспейс с префиксом `I`.
|
|
5109
|
+
*/
|
|
5110
|
+
declare namespace IRtImageCropper {
|
|
5111
|
+
/** Прямоугольник в пикселях исходника: рамка, границы картинки */
|
|
5112
|
+
interface Rect {
|
|
5113
|
+
readonly x: number;
|
|
5114
|
+
readonly y: number;
|
|
5115
|
+
readonly width: number;
|
|
5116
|
+
readonly height: number;
|
|
5117
|
+
}
|
|
5118
|
+
/** Размер исходника или поля */
|
|
5119
|
+
interface Size {
|
|
5120
|
+
readonly width: number;
|
|
5121
|
+
readonly height: number;
|
|
5122
|
+
}
|
|
5123
|
+
/**
|
|
5124
|
+
* Как исходник вписан в поле: масштаб — сколько пикселей поля приходится на
|
|
5125
|
+
* пиксель исходника, отступы — где картинка начинается внутри поля.
|
|
5126
|
+
*/
|
|
5127
|
+
interface Fit {
|
|
5128
|
+
readonly scale: number;
|
|
5129
|
+
readonly offsetX: number;
|
|
5130
|
+
readonly offsetY: number;
|
|
5131
|
+
readonly width: number;
|
|
5132
|
+
readonly height: number;
|
|
5133
|
+
}
|
|
5134
|
+
/** Сдвиг в пикселях исходника */
|
|
5135
|
+
interface Delta {
|
|
5136
|
+
readonly dx: number;
|
|
5137
|
+
readonly dy: number;
|
|
5138
|
+
}
|
|
5139
|
+
/** Направление ручки по осям: −1 — к началу оси, 1 — к концу, 0 — ось ручкой не тянется */
|
|
5140
|
+
interface Direction {
|
|
5141
|
+
readonly x: number;
|
|
5142
|
+
readonly y: number;
|
|
5143
|
+
}
|
|
5144
|
+
/** Ручка рамки: четыре угла и четыре стороны, по сторонам света */
|
|
5145
|
+
type Handle = 'n' | 's' | 'e' | 'w' | 'ne' | 'nw' | 'se' | 'sw';
|
|
5146
|
+
/** Форматы результата */
|
|
5147
|
+
type Format = 'png' | 'jpeg' | 'webp';
|
|
5148
|
+
/** Результат обрезки: файл и рамка, которой он вырезан */
|
|
5149
|
+
interface Result {
|
|
5150
|
+
readonly file: File;
|
|
5151
|
+
readonly frame: Rect;
|
|
5152
|
+
}
|
|
5153
|
+
}
|
|
5154
|
+
|
|
5155
|
+
/** Состояние поля: пусто, читается, не прочиталось, готово */
|
|
5156
|
+
type TCropperState = 'empty' | 'loading' | 'refusal' | 'ready';
|
|
5157
|
+
/**
|
|
5158
|
+
* Обрезка изображения: исходник вписан в поле целиком, поверх — рамка с восемью
|
|
5159
|
+
* ручками. Рамка живёт в пикселях исходника и двигается указателем, пальцем и
|
|
5160
|
+
* стрелками; после прочтения исходника и после каждого законченного изменения
|
|
5161
|
+
* компонент отдаёт файл, вырезанный рамкой, в выбранном формате и качестве.
|
|
5162
|
+
*
|
|
5163
|
+
* Поворот снимка по EXIF делает сам браузер: картинка и холст читают исходник с
|
|
5164
|
+
* `image-orientation: from-image`, и размеры, которые видит логика, уже
|
|
5165
|
+
* повёрнутые.
|
|
5166
|
+
*/
|
|
5167
|
+
declare class RtImageCropperComponent {
|
|
5168
|
+
#private;
|
|
5169
|
+
protected readonly field: Signal<ElementRef<HTMLElement>>;
|
|
5170
|
+
protected readonly t: Signal<TRtKitLabelMap>;
|
|
5171
|
+
protected readonly handles: readonly IRtImageCropper.Handle[];
|
|
5172
|
+
protected readonly handleLabels: Readonly<Record<IRtImageCropper.Handle, TRtKitLabelKey>>;
|
|
5173
|
+
protected readonly state: WritableSignal<TCropperState>;
|
|
5174
|
+
/** Текст пустого поля: свой, если задан, иначе подпись кита */
|
|
5175
|
+
protected readonly placeholderText: Signal<string>;
|
|
5176
|
+
/** Адрес исходника для картинки в поле */
|
|
5177
|
+
protected readonly url: WritableSignal<string | null>;
|
|
5178
|
+
/** Где картинка лежит в поле, в пикселях поля */
|
|
5179
|
+
protected readonly image: Signal<IRtImageCropper.Rect>;
|
|
5180
|
+
/** Рамка в пикселях поля */
|
|
5181
|
+
protected readonly frameBox: Signal<IRtImageCropper.Rect>;
|
|
5182
|
+
/** Подсказка пустого поля; пусто — подпись кита `uiImageCropperPlaceholder` */
|
|
5183
|
+
readonly placeholder: InputSignal<string>;
|
|
5184
|
+
/** Исходник: файл, который надо обрезать; пусто — поле с подсказкой */
|
|
5185
|
+
readonly file: InputSignal<Blob | null>;
|
|
5186
|
+
/** Пропорция рамки, ширина к высоте; пусто — рамка свободная */
|
|
5187
|
+
readonly ratio: InputSignalWithTransform<number | null, NumberInput>;
|
|
5188
|
+
/** Круглый вид: маска на экране и пропорция один к одному; результат — квадрат */
|
|
5189
|
+
readonly round: InputSignalWithTransform<boolean, BooleanInput>;
|
|
5190
|
+
/** Наименьший размер рамки в пикселях исходника */
|
|
5191
|
+
readonly minSize: InputSignalWithTransform<number, NumberInput>;
|
|
5192
|
+
/** Формат результата; пусто — формат исходника, png, когда он не из трёх */
|
|
5193
|
+
readonly format: InputSignal<IRtImageCropper.Format | null>;
|
|
5194
|
+
/** Качество результата в процентах — для jpeg и webp */
|
|
5195
|
+
readonly quality: InputSignalWithTransform<number, NumberInput>;
|
|
5196
|
+
/** Недоступна: рамка видна, но не меняется ни указателем, ни клавишами */
|
|
5197
|
+
readonly disabled: InputSignalWithTransform<boolean, BooleanInput>;
|
|
5198
|
+
/** Файл, вырезанный рамкой: после прочтения исходника и после каждого законченного изменения */
|
|
5199
|
+
readonly cropped: OutputEmitterRef<IRtImageCropper.Result>;
|
|
5200
|
+
/** Исходник не прочитался */
|
|
5201
|
+
readonly loadFailed: OutputEmitterRef<void>;
|
|
5202
|
+
constructor();
|
|
5203
|
+
protected onPointerDown(event: PointerEvent, handle: IRtImageCropper.Handle | null): void;
|
|
5204
|
+
protected onPointerMove(event: PointerEvent): void;
|
|
5205
|
+
protected onPointerUp(event: PointerEvent): void;
|
|
5206
|
+
protected onKeyDown(event: KeyboardEvent, handle: IRtImageCropper.Handle | null): void;
|
|
5207
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtImageCropperComponent, never>;
|
|
5208
|
+
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>;
|
|
5209
|
+
}
|
|
5210
|
+
|
|
5211
|
+
/**
|
|
5212
|
+
* Чистая логика обрезки: вписывание исходника в поле, рамка в пикселях
|
|
5213
|
+
* исходника, её движение и растяжение, перевод клавиш и выбор формата.
|
|
5214
|
+
* Компонент только переводит указатель в сдвиги и рисует то, что вернулось.
|
|
5215
|
+
*/
|
|
5216
|
+
/** Все восемь ручек по часовой стрелке от левого верхнего угла */
|
|
5217
|
+
declare const RT_IMAGE_CROPPER_HANDLES: readonly IRtImageCropper.Handle[];
|
|
5218
|
+
/** Шаг клавиш в пикселях поля: стрелка и стрелка с Shift */
|
|
5219
|
+
declare const RT_IMAGE_CROPPER_KEY_STEP: number;
|
|
5220
|
+
declare const RT_IMAGE_CROPPER_KEY_STEP_LARGE: number;
|
|
5221
|
+
/** Качество по умолчанию — то же, что у загрузчика первого кита */
|
|
5222
|
+
declare const RT_IMAGE_CROPPER_QUALITY: number;
|
|
5223
|
+
/**
|
|
5224
|
+
* Вписывает исходник в поле целиком, с его пропорциями, по центру. Ни одна часть
|
|
5225
|
+
* картинки не срезается полем, и ни одна не растянута.
|
|
5226
|
+
*/
|
|
5227
|
+
declare function fitSource(source: IRtImageCropper.Size, field: IRtImageCropper.Size): IRtImageCropper.Fit;
|
|
5228
|
+
/**
|
|
5229
|
+
* Пропорция, которую держит рамка. Круглый вид держит один к одному при любой
|
|
5230
|
+
* заданной; заданная не числом или не больше нуля значит свободную рамку.
|
|
5231
|
+
*/
|
|
5232
|
+
declare function frameRatio(ratio: number | null | undefined, round: boolean): number | null;
|
|
5233
|
+
/**
|
|
5234
|
+
* Начальная рамка — наибольшая, какую позволяет пропорция, по центру исходника.
|
|
5235
|
+
* Свободная начинается как весь исходник.
|
|
5236
|
+
*/
|
|
5237
|
+
declare function initialFrame(source: IRtImageCropper.Size, ratio: number | null): IRtImageCropper.Rect;
|
|
5238
|
+
/** Сдвиг рамки целиком: размер тот же, у края исходника рамка останавливается */
|
|
5239
|
+
declare function moveFrame(frame: IRtImageCropper.Rect, delta: IRtImageCropper.Delta, source: IRtImageCropper.Size): IRtImageCropper.Rect;
|
|
5240
|
+
/** По каким осям и в какую сторону тянет ручка */
|
|
5241
|
+
declare function handleDirection(handle: IRtImageCropper.Handle): IRtImageCropper.Direction;
|
|
5242
|
+
/**
|
|
5243
|
+
* Растяжение рамки за ручку. Сторона или угол напротив ручки стоит на месте;
|
|
5244
|
+
* рамка не выходит за исходник и не становится меньше наименьшего размера; рамка
|
|
5245
|
+
* с пропорцией держит её, а боковая ручка тянет её вокруг центра второй оси.
|
|
5246
|
+
*/
|
|
5247
|
+
declare function resizeFrame(frame: IRtImageCropper.Rect, handle: IRtImageCropper.Handle, delta: IRtImageCropper.Delta, source: IRtImageCropper.Size, ratio: number | null, minSize: number): IRtImageCropper.Rect;
|
|
5248
|
+
/**
|
|
5249
|
+
* Сдвиг от стрелки клавиатуры в пикселях исходника. Одно нажатие — пиксель поля,
|
|
5250
|
+
* с Shift десять; не стрелка даёт `null`.
|
|
5251
|
+
*/
|
|
5252
|
+
declare function keyDelta(key: string, isLarge: boolean, scale: number): IRtImageCropper.Delta | null;
|
|
5253
|
+
/** Сдвиг указателя в пикселях поля переводится в пиксели исходника */
|
|
5254
|
+
declare function fieldDelta(dx: number, dy: number, scale: number): IRtImageCropper.Delta;
|
|
5255
|
+
/** Рамка в пикселях поля — для рисования поверх вписанной картинки */
|
|
5256
|
+
declare function frameInField(frame: IRtImageCropper.Rect, fit: IRtImageCropper.Fit): IRtImageCropper.Rect;
|
|
5257
|
+
/** Рамка в целых пикселях исходника — то, что вырезает холст; не меньше пикселя */
|
|
5258
|
+
declare function cropArea(frame: IRtImageCropper.Rect, source: IRtImageCropper.Size): IRtImageCropper.Rect;
|
|
5259
|
+
/**
|
|
5260
|
+
* Тип результата. Без выбранного формата берётся формат исходника, и png, когда
|
|
5261
|
+
* он не из трёх.
|
|
5262
|
+
*/
|
|
5263
|
+
declare function resultType(format: IRtImageCropper.Format | null | undefined, sourceType: string): string;
|
|
5264
|
+
/** Качество холста — доля единицы; вход берёт проценты */
|
|
5265
|
+
declare function resultQuality(quality: number): number;
|
|
5266
|
+
/** Имя файла результата: основа имени исходника и расширение по типу результата */
|
|
5267
|
+
declare function resultFileName(sourceName: string, type: string): string;
|
|
5268
|
+
|
|
5269
|
+
declare namespace IRtImageUpload {
|
|
5270
|
+
/** Что стоит в месте загрузчика: одно состояние за раз */
|
|
5271
|
+
type State = 'loading' | 'cropping' | 'image' | 'empty';
|
|
5272
|
+
/** Форма кнопки скачивания: круглая, как у первого кита, или квадратная */
|
|
5273
|
+
type DownloadShape = 'circle' | 'square';
|
|
5274
|
+
}
|
|
5275
|
+
|
|
5276
|
+
/**
|
|
5277
|
+
* Загрузчик одного изображения: одно место, в котором по очереди стоят зона загрузки, обрезка и
|
|
5278
|
+
* сама картинка. Файл выбирают кнопкой зоны или бросают на неё; выбранный открывает обрезку, а
|
|
5279
|
+
* «Применить» ставит результат на место картинки и отдаёт файл приложению. Нажатие на картинку
|
|
5280
|
+
* выбирает другой файл.
|
|
5281
|
+
*
|
|
5282
|
+
* Картинка — адрес: приложение даёт свой, а адрес применённого файла загрузчик делает сам и
|
|
5283
|
+
* отпускает его, когда картинку сменили или компонент ушёл. Файл приложение получает в
|
|
5284
|
+
* `imageChanged`.
|
|
5285
|
+
*/
|
|
5286
|
+
declare class RtImageUploadComponent {
|
|
5287
|
+
#private;
|
|
5288
|
+
protected readonly picker: Signal<ElementRef<HTMLInputElement>>;
|
|
5289
|
+
protected readonly t: Signal<TRtKitLabelMap>;
|
|
5290
|
+
/** Выбранный файл, который сейчас режет обрезка */
|
|
5291
|
+
protected readonly source: WritableSignal<File | null>;
|
|
5292
|
+
/** Последний результат обрезки — его берёт «Применить» */
|
|
5293
|
+
protected readonly result: WritableSignal<IRtImageCropper.Result | null>;
|
|
5294
|
+
/** Что сейчас стоит в месте загрузчика */
|
|
5295
|
+
protected readonly state: Signal<IRtImageUpload.State>;
|
|
5296
|
+
/** Подсказка над картинкой: своя приложения или подпись кита */
|
|
5297
|
+
protected readonly hint: Signal<string>;
|
|
5298
|
+
/** Круглая ли кнопка скачивания: подложка под размытием повторяет её скругление */
|
|
5299
|
+
protected readonly downloadRound: Signal<boolean>;
|
|
5300
|
+
/** Шаг скругления кнопки скачивания: круг — полный шаг, квадрат — скругление кнопки по умолчанию */
|
|
5301
|
+
protected readonly downloadRadius: Signal<TRtRadius | null>;
|
|
5302
|
+
/**
|
|
5303
|
+
* Адрес текущей картинки: данный приложением или сделанный под применённый файл. Новый адрес от
|
|
5304
|
+
* приложения снова берёт верх над применённым.
|
|
5305
|
+
*/
|
|
5306
|
+
protected readonly image: WritableSignal<string | null>;
|
|
5307
|
+
/** Адрес картинки от приложения */
|
|
5308
|
+
readonly imageUrl: InputSignal<string | null>;
|
|
5309
|
+
/** Имя файла, под которым картинку скачивают и отдают приложению */
|
|
5310
|
+
readonly fileName: InputSignal<string>;
|
|
5311
|
+
/** Подсказка над картинкой; пустая — подпись кита */
|
|
5312
|
+
readonly tooltip: InputSignal<string>;
|
|
5313
|
+
/** Кнопка скачивания рядом с картинкой */
|
|
5314
|
+
readonly downloadable: InputSignalWithTransform<boolean, BooleanInput>;
|
|
5315
|
+
/** Форма кнопки скачивания; она заходит за правый верхний угол картинки при любой форме */
|
|
5316
|
+
readonly downloadShape: InputSignal<IRtImageUpload.DownloadShape>;
|
|
5317
|
+
/** Размер значка кнопки скачивания; пусто — от размера кнопки */
|
|
5318
|
+
readonly downloadIconSize: InputSignal<IRtIcon.Size | null>;
|
|
5319
|
+
/** Вид кнопки выбора файла в пустом загрузчике */
|
|
5320
|
+
readonly chooseAppearance: InputSignal<IButton.Appearance>;
|
|
5321
|
+
/** Значок кнопки выбора файла; пусто — кнопка без значка */
|
|
5322
|
+
readonly chooseIcon: InputSignal<string | null>;
|
|
5323
|
+
/** Без кнопок «Отмена» и «Применить»: каждый результат обрезки применяется сразу */
|
|
5324
|
+
readonly autoApply: InputSignalWithTransform<boolean, BooleanInput>;
|
|
5325
|
+
/** Приложение загружает картинку: на месте стоит индикатор */
|
|
5326
|
+
readonly loading: InputSignalWithTransform<boolean, BooleanInput>;
|
|
5327
|
+
/** Недоступный загрузчик не берёт файлов и не отзывается на нажатие картинки */
|
|
5328
|
+
readonly disabled: InputSignalWithTransform<boolean, BooleanInput>;
|
|
5329
|
+
/** Соотношение рамки обрезки; пусто — свободная рамка */
|
|
5330
|
+
readonly ratio: InputSignalWithTransform<number | null, NumberInput>;
|
|
5331
|
+
/** Круглая маска обрезки для аватара */
|
|
5332
|
+
readonly round: InputSignalWithTransform<boolean, BooleanInput>;
|
|
5333
|
+
/** Формат результата; пусто — формат исходника */
|
|
5334
|
+
readonly format: InputSignal<IRtImageCropper.Format | null>;
|
|
5335
|
+
/** Качество результата, от 0 до 100 */
|
|
5336
|
+
readonly quality: InputSignalWithTransform<number, NumberInput>;
|
|
5337
|
+
/** Применённый файл — его приложение отправляет, куда ему надо */
|
|
5338
|
+
readonly imageChanged: OutputEmitterRef<File>;
|
|
5339
|
+
/** Картинку скачали */
|
|
5340
|
+
readonly downloaded: OutputEmitterRef<void>;
|
|
5341
|
+
constructor();
|
|
5342
|
+
/** Открывает выбор файла, если загрузчик доступен */
|
|
5343
|
+
pick(): void;
|
|
5344
|
+
/** Файл выбран кнопкой или брошен: изображение открывает обрезку, остальное пропускается */
|
|
5345
|
+
choose(file: File | null | undefined): void;
|
|
5346
|
+
protected onPicked(event: Event): void;
|
|
5347
|
+
protected onSpace(event: Event): void;
|
|
5348
|
+
protected onCropped(result: IRtImageCropper.Result): void;
|
|
5349
|
+
protected apply(): void;
|
|
5350
|
+
protected cancel(): void;
|
|
5351
|
+
protected download(): void;
|
|
5352
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtImageUploadComponent, never>;
|
|
5353
|
+
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; }; "downloadIconSize": { "alias": "downloadIconSize"; "required": false; "isSignal": true; }; "chooseAppearance": { "alias": "chooseAppearance"; "required": false; "isSignal": true; }; "chooseIcon": { "alias": "chooseIcon"; "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>;
|
|
4417
5354
|
}
|
|
4418
5355
|
|
|
5356
|
+
/**
|
|
5357
|
+
* Какое состояние занимает место. Загрузка приложения важнее всего, выбранный исходник важнее
|
|
5358
|
+
* картинки, картинка важнее зоны загрузки.
|
|
5359
|
+
*/
|
|
5360
|
+
declare function uploadState(loading: boolean, hasSource: boolean, image: string | null): IRtImageUpload.State;
|
|
5361
|
+
/** Берётся только файл изображения: брошенный файл другого типа загрузчик пропускает */
|
|
5362
|
+
declare function isImageFile(file: File | null | undefined): file is File;
|
|
5363
|
+
|
|
4419
5364
|
declare class RtInfoItemComponent {
|
|
4420
5365
|
readonly label: InputSignal<string>;
|
|
4421
5366
|
readonly loading: InputSignalWithTransform<boolean, BooleanInput>;
|
|
@@ -4696,6 +5641,23 @@ declare class RtMarkdownTextComponent {
|
|
|
4696
5641
|
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: {}; }]>;
|
|
4697
5642
|
}
|
|
4698
5643
|
|
|
5644
|
+
/**
|
|
5645
|
+
* Помечает `<ng-template>` своего значка пункта меню. Кит ставит содержимое на место значка
|
|
5646
|
+
* `rt-menu-item__icon` его размером и цветом тона пункта — так приложение рисует значок, которого
|
|
5647
|
+
* нет ни в наборе кита, ни в перечне имён Material. Свой значок сильнее `icon` и `glyph`.
|
|
5648
|
+
*
|
|
5649
|
+
* ```html
|
|
5650
|
+
* <rt-menu-item label="Сделать активным">
|
|
5651
|
+
* <ng-template rtMenuItemIcon><svg viewBox="0 0 24 24">…</svg></ng-template>
|
|
5652
|
+
* </rt-menu-item>
|
|
5653
|
+
* ```
|
|
5654
|
+
*/
|
|
5655
|
+
declare class RtMenuItemIconDirective {
|
|
5656
|
+
readonly templateRef: TemplateRef<unknown>;
|
|
5657
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtMenuItemIconDirective, never>;
|
|
5658
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RtMenuItemIconDirective, "ng-template[rtMenuItemIcon]", never, {}, {}, never, never, true, never>;
|
|
5659
|
+
}
|
|
5660
|
+
|
|
4699
5661
|
/**
|
|
4700
5662
|
* Контракты `rt-menu` — dropdown-меню действий (триггер «…» + плавающая панель
|
|
4701
5663
|
* с пунктами `rt-menu-item`). Один корневой неймспейс с префиксом `I`.
|
|
@@ -4740,8 +5702,11 @@ declare const RT_MENU_SELECT_EVENT: string;
|
|
|
4740
5702
|
* Модель `[rtTooltip]`: один корневой неймспейс с префиксом `I`.
|
|
4741
5703
|
*/
|
|
4742
5704
|
declare namespace IRtTooltip {
|
|
4743
|
-
/**
|
|
4744
|
-
|
|
5705
|
+
/**
|
|
5706
|
+
* Сторона, с которой tooltip пристыкован к host'у. Не поместилась — подсказка уходит на
|
|
5707
|
+
* противоположную; боковой не хватило ни одной стороны — встаёт сверху или снизу.
|
|
5708
|
+
*/
|
|
5709
|
+
type Placement = 'top' | 'bottom' | 'left' | 'right';
|
|
4745
5710
|
}
|
|
4746
5711
|
|
|
4747
5712
|
/**
|
|
@@ -4750,8 +5715,10 @@ declare namespace IRtTooltip {
|
|
|
4750
5715
|
* (авто-flip у края viewport, reposition при скролле), так что подсказка не
|
|
4751
5716
|
* режется `overflow: hidden` предками (таблицы, aside, карточки).
|
|
4752
5717
|
*
|
|
4753
|
-
* Триггеры: `mouseenter
|
|
4754
|
-
* `mouseleave`/`focusout`/`click` прячут.
|
|
5718
|
+
* Триггеры: `mouseenter` и фокус с клавиатуры показывают (с задержкой `SHOW_DELAY_MS`),
|
|
5719
|
+
* `mouseleave`/`focusout`/`click` прячут. Фокус, поставленный мышью или кодом, подсказку не
|
|
5720
|
+
* показывает, как у Material: меню возвращает фокус кнопке после выбора пункта мышью, и
|
|
5721
|
+
* подсказка кнопки всплывала поверх того, что пункт открыл. Пустой текст → no-op (директива
|
|
4755
5722
|
* выключена), поэтому её можно безусловно вешать на icon-кнопки и включать
|
|
4756
5723
|
* выставлением строки.
|
|
4757
5724
|
*
|
|
@@ -4772,11 +5739,18 @@ declare class RtTooltipDirective implements OnDestroy {
|
|
|
4772
5739
|
readonly text: InputSignalWithTransform<string, string | null | undefined>;
|
|
4773
5740
|
/** Сторона подсказки. Не задана — сверху, а под материальным набором снизу, как у первого кита. */
|
|
4774
5741
|
readonly placement: InputSignal<IRtTooltip.Placement | null>;
|
|
5742
|
+
/**
|
|
5743
|
+
* Подсказка только у обрезанного текста: хост меряется в момент показа, и подсказка не
|
|
5744
|
+
* появляется, пока его содержимое помещается целиком. Мерить заранее не нужно — показ идёт
|
|
5745
|
+
* только отсюда, и признак в эту минуту всегда свежий.
|
|
5746
|
+
*/
|
|
5747
|
+
readonly whenTruncated: InputSignalWithTransform<boolean, unknown>;
|
|
5748
|
+
constructor();
|
|
4775
5749
|
ngOnDestroy(): void;
|
|
4776
5750
|
protected show(): void;
|
|
4777
5751
|
protected hide(): void;
|
|
4778
5752
|
static ɵfac: i0.ɵɵFactoryDeclaration<RtTooltipDirective, never>;
|
|
4779
|
-
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>;
|
|
5753
|
+
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>;
|
|
4780
5754
|
}
|
|
4781
5755
|
|
|
4782
5756
|
/**
|
|
@@ -4801,8 +5775,14 @@ declare class RtTooltipDirective implements OnDestroy {
|
|
|
4801
5775
|
*/
|
|
4802
5776
|
declare class RtMenuItemComponent {
|
|
4803
5777
|
#private;
|
|
5778
|
+
/** Свой значок приложения — `<ng-template rtMenuItemIcon>` внутри пункта. */
|
|
5779
|
+
protected readonly ownIcon: Signal<RtMenuItemIconDirective | undefined>;
|
|
4804
5780
|
/** Значок пункта: свой `icon`, а без него — пара имени Material из перечня кита. */
|
|
4805
5781
|
protected readonly iconName: Signal<IRtIcon.Name | null>;
|
|
5782
|
+
/** Пункт — ссылка: задан `link`. Роль пункта меню и фокус тогда несёт ссылка внутри. */
|
|
5783
|
+
protected readonly isLink: Signal<boolean>;
|
|
5784
|
+
/** Адрес для ссылки: у недоступного пункта его нет, и ссылка не переходит. */
|
|
5785
|
+
protected readonly linkTarget: Signal<RouterLink['routerLink']>;
|
|
4806
5786
|
/** Иконка слева от лейбла. `null` — без иконки. */
|
|
4807
5787
|
readonly icon: InputSignal<IRtIcon.Name | null>;
|
|
4808
5788
|
/** Текст пункта. */
|
|
@@ -4816,6 +5796,12 @@ declare class RtMenuItemComponent {
|
|
|
4816
5796
|
* кита через перечень соответствий; `icon` сильнее, а имя без пары рисует пункт без значка.
|
|
4817
5797
|
*/
|
|
4818
5798
|
readonly glyph: InputSignal<string | null>;
|
|
5799
|
+
/**
|
|
5800
|
+
* Залитый значок вместо контурного — как значки пунктов меню первого кита. Уходит в `fill`
|
|
5801
|
+
* значка: действует в материальном наборе, свой набор рисует значок одним рисунком. Свой
|
|
5802
|
+
* значок `rtMenuItemIcon` приложение рисует само, и заливка его не касается.
|
|
5803
|
+
*/
|
|
5804
|
+
readonly fill: InputSignalWithTransform<boolean, BooleanInput>;
|
|
4819
5805
|
/** Пункт — нынешнее значение выбора, который открыл меню: подсвечен фоном и объявлен скринридеру. */
|
|
4820
5806
|
readonly current: InputSignalWithTransform<boolean, BooleanInput>;
|
|
4821
5807
|
/** Недоступный пункт — приглушён, не эмитит `(selected)` и не закрывает меню. */
|
|
@@ -4834,13 +5820,21 @@ declare class RtMenuItemComponent {
|
|
|
4834
5820
|
readonly confirmCancelLabel: InputSignal<string>;
|
|
4835
5821
|
/** Тон подтверждающей кнопки в модалке. */
|
|
4836
5822
|
readonly confirmTone: InputSignal<IRtMenu.ConfirmTone>;
|
|
5823
|
+
/**
|
|
5824
|
+
* Команды маршрута приложения, как у `routerLink`. Задан — пункт рисует ссылку с `href`: Enter и
|
|
5825
|
+
* клик переходят по ней, а Ctrl/Cmd-click, Shift-click и средняя кнопка открывают новую вкладку
|
|
5826
|
+
* или окно силами браузера. Меню закрывается во всех этих случаях; подтверждение не спрашивается.
|
|
5827
|
+
*/
|
|
5828
|
+
readonly link: InputSignal<RouterLink['routerLink']>;
|
|
4837
5829
|
/** Пункт выбран (клик/Enter/Space и не `disabled`; после подтверждения, если задано). */
|
|
4838
5830
|
readonly selected: OutputEmitterRef<void>;
|
|
4839
5831
|
constructor();
|
|
4840
5832
|
protected onActivate(event: Event): void;
|
|
4841
5833
|
protected onKey(event: Event): void;
|
|
5834
|
+
/** Средняя кнопка не даёт `click`: вкладку открывает браузер, а меню закрываем сами. */
|
|
5835
|
+
protected onAuxClick(event: MouseEvent): void;
|
|
4842
5836
|
static ɵfac: i0.ɵɵFactoryDeclaration<RtMenuItemComponent, never>;
|
|
4843
|
-
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"; },
|
|
5837
|
+
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: {}; }]>;
|
|
4844
5838
|
}
|
|
4845
5839
|
|
|
4846
5840
|
/**
|
|
@@ -5678,6 +6672,482 @@ declare class RtSectionNavComponent {
|
|
|
5678
6672
|
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: {}; }]>;
|
|
5679
6673
|
}
|
|
5680
6674
|
|
|
6675
|
+
declare namespace IRtSideMenu {
|
|
6676
|
+
type ItemData = string | number | object;
|
|
6677
|
+
/**
|
|
6678
|
+
* Чем подменю держится открытым: наведением или закреплением — тогда оно стоит открытым, пока
|
|
6679
|
+
* человек сам его не свернёт.
|
|
6680
|
+
*/
|
|
6681
|
+
type SubMenuMode = 'hover' | 'pinned';
|
|
6682
|
+
/** Номер пункта в списке избранного — тот же, что `id` пункта меню. */
|
|
6683
|
+
type FavoriteId = Item['id'];
|
|
6684
|
+
/**
|
|
6685
|
+
* Место под скрытые кнопки строки: `always` — кнопка, ждущая наведения, держит свою ширину;
|
|
6686
|
+
* `none` — в покое ширины не занимает, и подпись идёт до края.
|
|
6687
|
+
*/
|
|
6688
|
+
type FavoriteActionsReserve = 'always' | 'none';
|
|
6689
|
+
/**
|
|
6690
|
+
* Число строк в заголовке блока избранного: `always` — всегда; `collapsed` — только у свёрнутого
|
|
6691
|
+
* блока; `never` — никогда.
|
|
6692
|
+
*/
|
|
6693
|
+
type FavoritesCount = 'always' | 'collapsed' | 'never';
|
|
6694
|
+
/**
|
|
6695
|
+
* Настройки одного меню под его номером в хранилище. Незнакомые поля кит не удаляет: их могло
|
|
6696
|
+
* положить приложение или следующая версия кита.
|
|
6697
|
+
*/
|
|
6698
|
+
interface Settings {
|
|
6699
|
+
favorites?: FavoriteId[];
|
|
6700
|
+
/** Пункты полосы, чей блок избранного свёрнут; блок по умолчанию развёрнут. */
|
|
6701
|
+
favoritesCollapsed?: Array<Item['id']>;
|
|
6702
|
+
subMenuMode?: SubMenuMode;
|
|
6703
|
+
subMenuWidth?: number;
|
|
6704
|
+
[field: string]: unknown;
|
|
6705
|
+
}
|
|
6706
|
+
interface Item {
|
|
6707
|
+
id: string | number;
|
|
6708
|
+
icon?: string;
|
|
6709
|
+
name?: string;
|
|
6710
|
+
link?: string;
|
|
6711
|
+
submenu?: Item[];
|
|
6712
|
+
/** Избранное в подменю этого пункта полосы. По умолчанию выключено. */
|
|
6713
|
+
favorites?: boolean;
|
|
6714
|
+
/**
|
|
6715
|
+
* Пункт со ссылкой, который в избранное не ставится: своя страница раздела, дашборд,
|
|
6716
|
+
* действие «Создать». Звезды у него нет, и номер, сохранённый раньше, в блок не попадает.
|
|
6717
|
+
*/
|
|
6718
|
+
favoriteDisabled?: boolean;
|
|
6719
|
+
iconButton?: {
|
|
6720
|
+
icon: string;
|
|
6721
|
+
data?: ItemData;
|
|
6722
|
+
};
|
|
6723
|
+
}
|
|
6724
|
+
/** Кусок подписи: отмеченный — тот, которым она совпала с запросом. */
|
|
6725
|
+
interface TitlePart {
|
|
6726
|
+
text: string;
|
|
6727
|
+
matched: boolean;
|
|
6728
|
+
}
|
|
6729
|
+
}
|
|
6730
|
+
|
|
6731
|
+
/** Шапка бокового меню: над полосой пунктов. */
|
|
6732
|
+
declare class RtSideMenuHeaderDirective {
|
|
6733
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtSideMenuHeaderDirective, never>;
|
|
6734
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RtSideMenuHeaderDirective, "[rtSideMenuHeader]", never, {}, {}, never, never, true, never>;
|
|
6735
|
+
}
|
|
6736
|
+
/** Подвал бокового меню: под полосой пунктов. */
|
|
6737
|
+
declare class RtSideMenuFooterDirective {
|
|
6738
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtSideMenuFooterDirective, never>;
|
|
6739
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RtSideMenuFooterDirective, "[rtSideMenuFooter]", never, {}, {}, never, never, true, never>;
|
|
6740
|
+
}
|
|
6741
|
+
/**
|
|
6742
|
+
* Контекст своего значка: пункт, имя, которое надо нарисовать, и место. Шаблон один на меню и рисует
|
|
6743
|
+
* и значок строки, и кнопку строки, поэтому рисунок выбирают по `icon`, а не по `item.icon`: у кнопки
|
|
6744
|
+
* это имя её значка.
|
|
6745
|
+
*/
|
|
6746
|
+
interface IRtSideMenuIconContext {
|
|
6747
|
+
$implicit: IRtSideMenu.Item;
|
|
6748
|
+
/** Имя значка этого места: значка строки или кнопки строки. */
|
|
6749
|
+
icon: string;
|
|
6750
|
+
/** Место: значок строки или кнопка строки. */
|
|
6751
|
+
slot: 'icon' | 'iconButton';
|
|
6752
|
+
}
|
|
6753
|
+
/**
|
|
6754
|
+
* Помечает `<ng-template>` своего значка пунктов меню — для имён, которых нет ни в наборе кита, ни
|
|
6755
|
+
* в перечне имён Material. Шаблон один на меню и рисует и значок строки, и значок кнопки строки; кит
|
|
6756
|
+
* ставит его на место значка размером значка и цветом строки. Рисунок выбирают по `icon` контекста.
|
|
6757
|
+
* Значок, который кит рисует сам, шаблон не перебивает.
|
|
6758
|
+
*
|
|
6759
|
+
* ```html
|
|
6760
|
+
* <rt-side-menu [menuItems]="items">
|
|
6761
|
+
* <ng-template rtSideMenuIcon let-icon="icon"><img [src]="'/icons/' + icon + '.svg'" alt="" /></ng-template>
|
|
6762
|
+
* </rt-side-menu>
|
|
6763
|
+
* ```
|
|
6764
|
+
*/
|
|
6765
|
+
declare class RtSideMenuIconDirective {
|
|
6766
|
+
readonly templateRef: TemplateRef<IRtSideMenuIconContext>;
|
|
6767
|
+
static ngTemplateContextGuard(_directive: RtSideMenuIconDirective, context: unknown): context is IRtSideMenuIconContext;
|
|
6768
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtSideMenuIconDirective, never>;
|
|
6769
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RtSideMenuIconDirective, "ng-template[rtSideMenuIcon]", never, {}, {}, never, never, true, never>;
|
|
6770
|
+
}
|
|
6771
|
+
|
|
6772
|
+
/**
|
|
6773
|
+
* Меню, в котором стоит подпункт. Токен вместо самого компонента: меню объявляет подпункт в своих
|
|
6774
|
+
* импортах, и прямая ссылка замкнула бы круг «меню → подпункт → меню».
|
|
6775
|
+
*
|
|
6776
|
+
* Активность и раскрытость — два значения: активным остаётся адрес, на котором человек стоит, а
|
|
6777
|
+
* раскрытой — всякая папка, в которой нашлось совпадение.
|
|
6778
|
+
*/
|
|
6779
|
+
interface IRtSideMenuHost {
|
|
6780
|
+
readonly activeMenuIds: Signal<ReadonlyArray<string | number>>;
|
|
6781
|
+
readonly expandedMenuIds: Signal<ReadonlyArray<string | number>>;
|
|
6782
|
+
readonly highlightedMenuId: Signal<string | number | null>;
|
|
6783
|
+
readonly subMenuQuery: Signal<string>;
|
|
6784
|
+
/** Номер, под которым меню хранит настройки, и пункты полосы: по ним избранное находит свой раздел. */
|
|
6785
|
+
readonly menuId: Signal<string>;
|
|
6786
|
+
readonly menuItems: Signal<ReadonlyArray<IRtSideMenu.Item>>;
|
|
6787
|
+
/** Набор, который подменю наполняет сейчас, до отбора поиском. */
|
|
6788
|
+
readonly shownSubMenu: Signal<IRtSideMenu.Item[]>;
|
|
6789
|
+
readonly favoritesCount: Signal<IRtSideMenu.FavoritesCount>;
|
|
6790
|
+
/** Поиск показывает совпавшие строки избранного; выключено — на время поиска блока нет. */
|
|
6791
|
+
readonly isFavoritesSearchShown: Signal<boolean>;
|
|
6792
|
+
/** Свой значок пунктов, чьё имя кит не рисует: шаблон `rtSideMenuIcon` меню. */
|
|
6793
|
+
readonly ownIconTpl: Signal<TemplateRef<IRtSideMenuIconContext> | undefined>;
|
|
6794
|
+
/** Подсказки строк подменю: выключено — их нет ни у подписей, ни у кнопок строк. */
|
|
6795
|
+
readonly subMenuTooltipsShown: Signal<boolean>;
|
|
6796
|
+
/** Раскрыть или свернуть папку нажатием её заголовка. */
|
|
6797
|
+
toggleFolder(item: IRtSideMenu.Item): void;
|
|
6798
|
+
/** Уход указателя с панели: подменю, открытое наведением, закрывается. */
|
|
6799
|
+
toggleSubMenu(): void;
|
|
6800
|
+
/** Строку избранного тянут: подменю, открытое наведением, не закрывается уходом указателя. */
|
|
6801
|
+
holdSubMenu(held: boolean): void;
|
|
6802
|
+
}
|
|
6803
|
+
|
|
6804
|
+
/**
|
|
6805
|
+
* Боковая навигация: полоса пунктов и подменю раздела рядом. Перенос бокового меню первого кита на
|
|
6806
|
+
* части второго; `rt-menu` — другое семейство, выпадающее меню действий.
|
|
6807
|
+
*/
|
|
6808
|
+
declare class RtSideMenuComponent implements IRtSideMenuHost {
|
|
6809
|
+
#private;
|
|
6810
|
+
protected readonly searchControl: FormControl<string | null>;
|
|
6811
|
+
protected readonly panelRef: Signal<ElementRef<HTMLElement> | undefined>;
|
|
6812
|
+
protected readonly headerTpl: Signal<TemplateRef<unknown> | undefined>;
|
|
6813
|
+
protected readonly footerTpl: Signal<TemplateRef<unknown> | undefined>;
|
|
6814
|
+
protected readonly searchLabel: Signal<string>;
|
|
6815
|
+
protected readonly pinLabel: Signal<string>;
|
|
6816
|
+
protected readonly unpinLabel: Signal<string>;
|
|
6817
|
+
protected readonly nothingFoundLabel: Signal<string>;
|
|
6818
|
+
protected readonly resizeLabel: Signal<string>;
|
|
6819
|
+
protected readonly backLabel: Signal<string>;
|
|
6820
|
+
/** Экран узкий: замер кита, и другого источника у этого признака нет. */
|
|
6821
|
+
protected readonly narrow: Signal<boolean>;
|
|
6822
|
+
protected readonly resizeValueNow: Signal<number | null>;
|
|
6823
|
+
protected readonly resizeValueMin: number;
|
|
6824
|
+
protected readonly resizeValueMax: number;
|
|
6825
|
+
/** Натянутая ширина панели. Своего выбора нет — свойство не ставится, и ширину берёт оформление. */
|
|
6826
|
+
protected readonly panelWidthStyle: Signal<string | null>;
|
|
6827
|
+
/** Закрепление действует только на широком экране: на узком подменю занимает экран целиком. */
|
|
6828
|
+
protected readonly isPinned: Signal<boolean>;
|
|
6829
|
+
/** Подменю держится набором запроса: уходом указателя не закрывается. */
|
|
6830
|
+
protected readonly isSearchHeld: Signal<boolean>;
|
|
6831
|
+
/** Закреплённое подменю открыто, пока ему есть что показать: указатель на это не влияет. */
|
|
6832
|
+
protected readonly subMenuOpened: Signal<boolean>;
|
|
6833
|
+
protected readonly visibleSubMenuItems: Signal<IRtSideMenu.Item[]>;
|
|
6834
|
+
protected readonly isNothingFound: Signal<boolean>;
|
|
6835
|
+
/** Пункт полосы подсвечен активным: выбранный человеком, а без выбора — пункт текущего адреса. */
|
|
6836
|
+
protected readonly activeRailIds: Signal<ReadonlyArray<string | number>>;
|
|
6837
|
+
/** Набор, который подменю наполняет сейчас, до отбора поиском. */
|
|
6838
|
+
readonly shownSubMenu: Signal<IRtSideMenu.Item[]>;
|
|
6839
|
+
readonly selectedItem: WritableSignal<IRtSideMenu.Item | null>;
|
|
6840
|
+
readonly selectedSubMenu: WritableSignal<IRtSideMenu.Item[] | null>;
|
|
6841
|
+
/** Что набрано в поиске: строка берёт запрос отсюда, чтобы отметить совпавшее. */
|
|
6842
|
+
readonly subMenuQuery: WritableSignal<string>;
|
|
6843
|
+
readonly highlightedMenuId: Signal<string | number | null>;
|
|
6844
|
+
/**
|
|
6845
|
+
* Какие папки раскрыты. Пустой запрос оставляет раздел текущего адреса; непустой добавляет
|
|
6846
|
+
* папки с совпадением — иначе найденное лежит за закрытым заголовком.
|
|
6847
|
+
*/
|
|
6848
|
+
readonly expandedMenuIds: Signal<ReadonlyArray<string | number>>;
|
|
6849
|
+
readonly activeMenuIds: InputSignal<ReadonlyArray<string | number>>;
|
|
6850
|
+
readonly menuItems: InputSignal<ReadonlyArray<IRtSideMenu.Item>>;
|
|
6851
|
+
/** Режим подменю от приложения. Задан — важнее сохранённого; нет ни того, ни другого — наведение. */
|
|
6852
|
+
readonly subMenuMode: InputSignal<IRtSideMenu.SubMenuMode | undefined>;
|
|
6853
|
+
/** Ширина закреплённого подменю в пикселях. Пусто — сохранённая, её нет — оформление. */
|
|
6854
|
+
readonly subMenuWidth: InputSignal<number | null | undefined>;
|
|
6855
|
+
/** Номер, под которым меню хранит свои настройки: у двух меню приложения — два номера. */
|
|
6856
|
+
readonly menuId: InputSignalWithTransform<string, string | null | undefined>;
|
|
6857
|
+
/** Число строк в заголовке блока избранного: всегда, у свёрнутого блока или никогда. */
|
|
6858
|
+
readonly favoritesCount: InputSignal<IRtSideMenu.FavoritesCount>;
|
|
6859
|
+
/** Место под кнопки избранного, ждущие наведения: держать всегда или отдавать подписи. */
|
|
6860
|
+
readonly favoriteActionsReserve: InputSignal<IRtSideMenu.FavoriteActionsReserve>;
|
|
6861
|
+
/** Поиск показывает совпавшие строки избранного; выключено — на время поиска блока нет. */
|
|
6862
|
+
readonly isFavoritesSearchShown: InputSignalWithTransform<boolean, unknown>;
|
|
6863
|
+
/** Кнопка закрепления в шапке подменю; выключено — подменю только всплывает, если режим не задан входом. */
|
|
6864
|
+
readonly pinShown: InputSignalWithTransform<boolean, unknown>;
|
|
6865
|
+
/** Подсказки строк подменю — у подписей и у кнопок строк. Доступные имена остаются. */
|
|
6866
|
+
readonly subMenuTooltipsShown: InputSignalWithTransform<boolean, unknown>;
|
|
6867
|
+
readonly subMenuModeChange: OutputEmitterRef<IRtSideMenu.SubMenuMode>;
|
|
6868
|
+
readonly subMenuWidthChange: OutputEmitterRef<number>;
|
|
6869
|
+
/** Начало и конец тяги: по ним потребитель накрывает чужие кадры и снимает накрытие. */
|
|
6870
|
+
readonly subMenuResizeStart: OutputEmitterRef<void>;
|
|
6871
|
+
readonly subMenuResizeEnd: OutputEmitterRef<void>;
|
|
6872
|
+
readonly closeMobileMenuAction: OutputEmitterRef<void>;
|
|
6873
|
+
readonly clickSubMenuAction: OutputEmitterRef<{
|
|
6874
|
+
item: IRtSideMenu.Item;
|
|
6875
|
+
event: MouseEvent;
|
|
6876
|
+
}>;
|
|
6877
|
+
readonly clickSubMenuAdditionalAction: OutputEmitterRef<{
|
|
6878
|
+
data: IRtSideMenu.ItemData | undefined;
|
|
6879
|
+
event: MouseEvent;
|
|
6880
|
+
}>;
|
|
6881
|
+
/** Свой значок пунктов, чьё имя кит не рисует; подпункты читают его через токен меню. */
|
|
6882
|
+
readonly ownIconTpl: Signal<TemplateRef<IRtSideMenuIconContext> | undefined>;
|
|
6883
|
+
constructor();
|
|
6884
|
+
onClickMenu(item: IRtSideMenu.Item): void;
|
|
6885
|
+
onClickSubMenu({ item, event }: {
|
|
6886
|
+
item: IRtSideMenu.Item;
|
|
6887
|
+
event: MouseEvent;
|
|
6888
|
+
}): void;
|
|
6889
|
+
onClickSubMenuAdditional(payload: {
|
|
6890
|
+
data: IRtSideMenu.ItemData | undefined;
|
|
6891
|
+
event: MouseEvent;
|
|
6892
|
+
}): void;
|
|
6893
|
+
onBackToMainMenu(): void;
|
|
6894
|
+
/** Наведение на пункт полосы открывает его подменю; уход указателя с панели — без пункта. */
|
|
6895
|
+
toggleSubMenu(item?: IRtSideMenu.Item): void;
|
|
6896
|
+
closeSubMenu(): void;
|
|
6897
|
+
holdSubMenu(held: boolean): void;
|
|
6898
|
+
toggleFolder(item: IRtSideMenu.Item): void;
|
|
6899
|
+
/** Человек взялся за поле поиска: дальше подменю закрывает нажатие снаружи, а не уход указателя. */
|
|
6900
|
+
onSearchHold(): void;
|
|
6901
|
+
/** Клавиши поля поиска раздаются списку; умолчание отменяется только у съеденной. */
|
|
6902
|
+
onSearchKeydown(event: KeyboardEvent): void;
|
|
6903
|
+
/** Нажат переключатель режима: выбор уходит в настройки меню и наружу. */
|
|
6904
|
+
onSubMenuModeToggle(): void;
|
|
6905
|
+
onResizeStart(event: PointerEvent): void;
|
|
6906
|
+
onResizeKeydown(event: KeyboardEvent): void;
|
|
6907
|
+
closeMobileMenu(): void;
|
|
6908
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtSideMenuComponent, never>;
|
|
6909
|
+
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; }; "pinShown": { "alias": "pinShown"; "required": false; "isSignal": true; }; "subMenuTooltipsShown": { "alias": "subMenuTooltipsShown"; "required": false; "isSignal": true; }; }, { "subMenuModeChange": "subMenuModeChange"; "subMenuWidthChange": "subMenuWidthChange"; "subMenuResizeStart": "subMenuResizeStart"; "subMenuResizeEnd": "subMenuResizeEnd"; "closeMobileMenuAction": "closeMobileMenuAction"; "clickSubMenuAction": "clickSubMenuAction"; "clickSubMenuAdditionalAction": "clickSubMenuAdditionalAction"; }, ["headerTpl", "footerTpl", "ownIconTpl"], never, true, never>;
|
|
6910
|
+
}
|
|
6911
|
+
|
|
6912
|
+
/**
|
|
6913
|
+
* Отбор пунктов подменю по подстроке подписи.
|
|
6914
|
+
*
|
|
6915
|
+
* Отбор спускается внутрь папок на любую глубину: потребитель кладёт в папки то, что человек и ищет
|
|
6916
|
+
* по имени, и по одному верхнему уровню такой пункт не нашёлся бы.
|
|
6917
|
+
*
|
|
6918
|
+
* В выдаче стоят только строки, содержащие запрос. Папка остаётся путём к совпавшим детям, а её
|
|
6919
|
+
* состав отбирается тем же правилом: иначе одно совпадение по имени папки вытаскивало бы весь её
|
|
6920
|
+
* состав. Папка, совпавшая только по имени, остаётся одной строкой без детей.
|
|
6921
|
+
*
|
|
6922
|
+
* Отобранная папка — новый объект: правка на месте переписала бы набор потребителя, и стёртый
|
|
6923
|
+
* запрос вернул бы урезанное меню.
|
|
6924
|
+
*/
|
|
6925
|
+
declare function filterSideMenuItems(items: ReadonlyArray<IRtSideMenu.Item>, query: string): IRtSideMenu.Item[];
|
|
6926
|
+
/**
|
|
6927
|
+
* Папки отобранного списка — те, что должны стоять раскрытыми. Возвращаются номера, а не пункты:
|
|
6928
|
+
* отобранный список пересобирается на каждую букву запроса, и ссылка на пункт этого не переживает.
|
|
6929
|
+
*/
|
|
6930
|
+
declare function sideMenuIdsToExpand(items: ReadonlyArray<IRtSideMenu.Item>): Array<string | number>;
|
|
6931
|
+
/**
|
|
6932
|
+
* Пределы ширины подменю в пикселях. Уже нижнего не помещается ни одна подпись пункта, шире
|
|
6933
|
+
* верхнего подменю закрывает содержимое страницы.
|
|
6934
|
+
*/
|
|
6935
|
+
declare const RT_SIDE_MENU_WIDTH_MIN: number;
|
|
6936
|
+
declare const RT_SIDE_MENU_WIDTH_MAX: number;
|
|
6937
|
+
/** Шаг ширины с клавиатуры: стрелку держат нажатой, и крупный шаг проскакивал бы подпись целиком. */
|
|
6938
|
+
declare const RT_SIDE_MENU_WIDTH_STEP: number;
|
|
6939
|
+
/** Приведение ширины к пределам. */
|
|
6940
|
+
declare function clampSideMenuWidth(width: number): number;
|
|
6941
|
+
/**
|
|
6942
|
+
* Резка подписи на совпавшие и несовпавшие куски.
|
|
6943
|
+
*
|
|
6944
|
+
* Отмечаются все вхождения: отмеченное одно первое читается как «второго нет». Сравнение без учёта
|
|
6945
|
+
* регистра, а куски режутся из оригинала — приведение к нижнему регистру переписало бы названия.
|
|
6946
|
+
*/
|
|
6947
|
+
declare function splitSideMenuTitle(name: string, query: string): IRtSideMenu.TitlePart[];
|
|
6948
|
+
/**
|
|
6949
|
+
* Пункты подменю в том порядке, в каком они стоят на экране. Внутрь папки список спускается, только
|
|
6950
|
+
* если та раскрыта: ходьба стрелками идёт по видимому, а не по всему набору.
|
|
6951
|
+
*/
|
|
6952
|
+
declare function walkSideMenuItems(items: ReadonlyArray<IRtSideMenu.Item>, expandedIds: ReadonlyArray<string | number>): IRtSideMenu.Item[];
|
|
6953
|
+
/**
|
|
6954
|
+
* Куда уходит подсветка на шаг стрелкой. Считается по номеру пункта: видимый список пересобирается
|
|
6955
|
+
* на каждую букву запроса. Без подсветки вниз берёт первый пункт, вверх — последний. У краёв ходьба
|
|
6956
|
+
* останавливается: заворот уводил бы взгляд через всю панель.
|
|
6957
|
+
*/
|
|
6958
|
+
declare function stepSideMenuHighlight(walk: ReadonlyArray<IRtSideMenu.Item>, highlightedId: string | number | null, step: number): string | number | null;
|
|
6959
|
+
/** Чем вешается слушатель. У кита это `Renderer2.listen`, у проверки — своя функция. */
|
|
6960
|
+
type TRtPointerListen = (target: HTMLElement, event: string, handler: (event: PointerEvent) => void) => () => void;
|
|
6961
|
+
/** Что тяга сообщает меню: новую ширину по ходу и конец — отпусканием или отнятием указателя. */
|
|
6962
|
+
interface IRtSubMenuWidthDragHooks {
|
|
6963
|
+
readonly onWidth: (width: number) => void;
|
|
6964
|
+
readonly onEnd: () => void;
|
|
6965
|
+
}
|
|
6966
|
+
/**
|
|
6967
|
+
* Тяга ширины подменю указательными событиями: мышиных палец и перо не дают. Слушатели висят на
|
|
6968
|
+
* ручке, а держит их захват указателя — слушатель на документе терял бы движение над чужим кадром.
|
|
6969
|
+
* Указатель, отнятый средой, кончает тягу так же, как отпускание.
|
|
6970
|
+
*
|
|
6971
|
+
* Возвращает снятие слушателей. Пустое значение — тянуть нечем.
|
|
6972
|
+
*/
|
|
6973
|
+
declare function startSideMenuWidthDrag(event: PointerEvent, startWidth: number, listen: TRtPointerListen, hooks: IRtSubMenuWidthDragHooks): (() => void) | null;
|
|
6974
|
+
/**
|
|
6975
|
+
* Ширина, которой панель нарисована. Панели нет или раскладка не посчитана — нижний предел: с нуля
|
|
6976
|
+
* тяга уводила бы ширину в отрицательные числа.
|
|
6977
|
+
*/
|
|
6978
|
+
declare function drawnSideMenuWidth(panel: HTMLElement | null): number;
|
|
6979
|
+
/**
|
|
6980
|
+
* Число, которое уходит наружу по концу тяги: большее из натянутого и нарисованного. Нижний предел
|
|
6981
|
+
* держит оформление, и панель не бывает уже его, даже если рука ушла левее.
|
|
6982
|
+
*/
|
|
6983
|
+
declare function reportedSideMenuWidth(dragged: number, panel: HTMLElement | null): number;
|
|
6984
|
+
/**
|
|
6985
|
+
* Новая ширина по нажатой клавише. Пустое значение — клавиша не о ширине, и умолчание не отменяется:
|
|
6986
|
+
* иначе ручка съедала бы табуляцию. Влево значит уже при любом направлении письма: ручка стоит у
|
|
6987
|
+
* правого края панели.
|
|
6988
|
+
*/
|
|
6989
|
+
declare function sideMenuWidthByKey(key: string, width: number): number | null;
|
|
6990
|
+
/**
|
|
6991
|
+
* Что показывает закреплённое подменю: выбранный человеком раздел, а пока выбора нет — раздел
|
|
6992
|
+
* активного адреса. Выбор впереди активности: иначе до соседнего раздела не добраться.
|
|
6993
|
+
*/
|
|
6994
|
+
declare function pinnedSideMenuItems(picked: IRtSideMenu.Item[] | null | undefined, activeIds: ReadonlyArray<string | number>, items: ReadonlyArray<IRtSideMenu.Item>): IRtSideMenu.Item[];
|
|
6995
|
+
|
|
6996
|
+
/**
|
|
6997
|
+
* Значок пункта по его `icon`: имя кита как есть, имя Material первого кита — его парой из перечня
|
|
6998
|
+
* кита, как у `rt-menu-item`. `null` — кит такой значок не рисует: пункт берёт свой шаблон меню или
|
|
6999
|
+
* стоит без значка.
|
|
7000
|
+
*/
|
|
7001
|
+
declare function sideMenuIconName(icon: string | undefined): IRtIcon.Name | null;
|
|
7002
|
+
/**
|
|
7003
|
+
* Имена значков меню, о которых оно должно предупредить: ни имени кита, ни пары в перечне. И значок
|
|
7004
|
+
* пункта, и значок кнопки строки закрывает свой шаблон меню.
|
|
7005
|
+
* Без предупреждения такой значок пуст, и пропуск не заметен. Обходит пункты на любую глубину;
|
|
7006
|
+
* каждое имя — один раз.
|
|
7007
|
+
*/
|
|
7008
|
+
declare function unpairedSideMenuIcons(items: ReadonlyArray<IRtSideMenu.Item>, hasOwnIcon: boolean): string[];
|
|
7009
|
+
|
|
7010
|
+
/** Номер меню, которому приложение своего не задало. */
|
|
7011
|
+
declare const RT_SIDE_MENU_DEFAULT_ID: string;
|
|
7012
|
+
/**
|
|
7013
|
+
* Номер меню, под которым лежат его настройки. Пустой — тот же, что не заданный: атрибут без
|
|
7014
|
+
* значения даёт пустую строку, и настройки легли бы под ключ, которого никто не называл.
|
|
7015
|
+
*/
|
|
7016
|
+
declare function normalizeSideMenuId(menuId: string | null | undefined): string;
|
|
7017
|
+
/** Запись хранилища как есть: номер меню — и что под ним лежит, в том числе сломанное. */
|
|
7018
|
+
type TRtSideMenuSettingsRecord = Record<string, unknown>;
|
|
7019
|
+
/**
|
|
7020
|
+
* Настройки одного меню из того, что лежит под его номером. Недопустимое поле читается как
|
|
7021
|
+
* отсутствие значения, соседние поля остаются: сломанная ширина не стирает режим. Незнакомые поля
|
|
7022
|
+
* не удаляются. Ширина приводится к пределам подменю, списки избранного — к номерам без повторов.
|
|
7023
|
+
*/
|
|
7024
|
+
declare function normalizeSideMenuSettings(value: unknown): IRtSideMenu.Settings;
|
|
7025
|
+
/** Запись хранилища как объект. Не JSON, не объект, пустое хранилище — одинаково пустая запись. */
|
|
7026
|
+
declare function parseSideMenuSettingsRecord(raw: string | null): TRtSideMenuSettingsRecord;
|
|
7027
|
+
/**
|
|
7028
|
+
* Настройки всех меню из записи. Меню, чьё значение не объект, пропускается: сломанный угол одного
|
|
7029
|
+
* меню не стирает соседние.
|
|
7030
|
+
*/
|
|
7031
|
+
declare function readSideMenuSettings(record: TRtSideMenuSettingsRecord): Record<string, IRtSideMenu.Settings>;
|
|
7032
|
+
/**
|
|
7033
|
+
* Запись с правкой полей одного меню. Остальные меню и поля уходят такими, какими лежали, даже
|
|
7034
|
+
* сломанные: кит правит только то, о чём его попросили.
|
|
7035
|
+
*/
|
|
7036
|
+
declare function patchSideMenuSettings(record: TRtSideMenuSettingsRecord, menuId: string, patch: Partial<IRtSideMenu.Settings>): TRtSideMenuSettingsRecord;
|
|
7037
|
+
/** Запись без настроек одного меню. */
|
|
7038
|
+
declare function omitSideMenuSettings(record: TRtSideMenuSettingsRecord, menuId: string): TRtSideMenuSettingsRecord;
|
|
7039
|
+
|
|
7040
|
+
/** Значки кнопок строки избранного: «убрать» и ручка перетаскивания. */
|
|
7041
|
+
interface IRtSideMenuFavoritesIcons {
|
|
7042
|
+
readonly remove: IRtIcon.Name;
|
|
7043
|
+
readonly drag: IRtIcon.Name;
|
|
7044
|
+
}
|
|
7045
|
+
interface IRtSideMenuSettingsConfig {
|
|
7046
|
+
/** Свой ключ хранилища, если приложению нужен не общий ключ кита. */
|
|
7047
|
+
readonly storageKey?: string;
|
|
7048
|
+
/** Свои значки кнопок избранного; не названный берётся из набора кита. */
|
|
7049
|
+
readonly icons?: Partial<IRtSideMenuFavoritesIcons>;
|
|
7050
|
+
}
|
|
7051
|
+
declare const RT_SIDE_MENU_SETTINGS_CONFIG: InjectionToken<IRtSideMenuSettingsConfig>;
|
|
7052
|
+
/**
|
|
7053
|
+
* Настройки боковых меню в хранилище браузера: режим и ширина подменю, избранное и свёрнутые блоки
|
|
7054
|
+
* избранного под номером каждого меню.
|
|
7055
|
+
*
|
|
7056
|
+
* Перед каждой записью ключ читается заново: соседняя вкладка или приложение могли записать своё,
|
|
7057
|
+
* и запись из копии затёрла бы их. Правится одно поле одного меню, остальное уходит как лежало.
|
|
7058
|
+
* Изменения из других вкладок приходят событием `storage` и обновляют сигналы.
|
|
7059
|
+
*
|
|
7060
|
+
* Хранилище берётся токеном `@rt-tools/core` напрямую, а не общим сервисом хранилища: сервису
|
|
7061
|
+
* нужно знать, что запись не удалась, и держать правду в памяти до перезагрузки. Без хранилища, вне
|
|
7062
|
+
* браузера, закрытое или полное — настройки живут в памяти, и ни чтение, ни запись не бросают.
|
|
7063
|
+
*
|
|
7064
|
+
* Сервис ставится провайдером окружения — `provideRtSideMenuSettings()`, — а меню берёт его
|
|
7065
|
+
* необязательно: не поставлен — меню ничего не хранит, режим и ширина приходят входами.
|
|
7066
|
+
*/
|
|
7067
|
+
declare class RtSideMenuSettingsService {
|
|
7068
|
+
#private;
|
|
7069
|
+
/** Значки кнопок избранного: из настроек провайдера, иначе из набора кита. */
|
|
7070
|
+
readonly favoritesIcons: IRtSideMenuFavoritesIcons;
|
|
7071
|
+
/** Номера меню, чьи настройки лежат в хранилище. */
|
|
7072
|
+
readonly menuIds: Signal<string[]>;
|
|
7073
|
+
constructor();
|
|
7074
|
+
/** Настройки одного меню целиком, с незнакомыми полями; не сохранены — пустой объект. */
|
|
7075
|
+
settings(menuId: string): Signal<IRtSideMenu.Settings>;
|
|
7076
|
+
subMenuMode(menuId: string): Signal<IRtSideMenu.SubMenuMode>;
|
|
7077
|
+
subMenuWidth(menuId: string): Signal<number | null>;
|
|
7078
|
+
/** Избранное меню в порядке списка; пусто — пустой список. */
|
|
7079
|
+
favoriteIds(menuId: string): Signal<ReadonlyArray<IRtSideMenu.FavoriteId>>;
|
|
7080
|
+
/** Пункты полосы, чей блок избранного свёрнут; ничего не свёрнуто — пустой список. */
|
|
7081
|
+
favoritesCollapsed(menuId: string): Signal<ReadonlyArray<IRtSideMenu.Item['id']>>;
|
|
7082
|
+
/** Сворачивает или разворачивает блок одного раздела; остальные разделы остаются как были. */
|
|
7083
|
+
setFavoritesCollapsed(menuId: string, sectionId: IRtSideMenu.Item['id'], collapsed: boolean): void;
|
|
7084
|
+
/** Звезда: нет в списке — встаёт последним, есть — уходит. */
|
|
7085
|
+
toggleFavorite(menuId: string, id: IRtSideMenu.FavoriteId): void;
|
|
7086
|
+
removeFavorite(menuId: string, id: IRtSideMenu.FavoriteId): void;
|
|
7087
|
+
/** Перенос строки блока: места в блоке, скрытые номера остаются на своих. */
|
|
7088
|
+
moveVisibleSideMenuFavorite(menuId: string, visibleIds: ReadonlyArray<IRtSideMenu.FavoriteId>, from: number, to: number): void;
|
|
7089
|
+
/** Список целиком: приложение заводит избранное само, например по умолчанию для роли. */
|
|
7090
|
+
setFavorites(menuId: string, ids: ReadonlyArray<IRtSideMenu.FavoriteId>): void;
|
|
7091
|
+
setSubMenuMode(menuId: string, mode: IRtSideMenu.SubMenuMode): void;
|
|
7092
|
+
setSubMenuWidth(menuId: string, width: number): void;
|
|
7093
|
+
/** Настройки меню уходят только по вызову приложения: кит сам ничего не удаляет. */
|
|
7094
|
+
deleteSettings(menuId: string): void;
|
|
7095
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtSideMenuSettingsService, never>;
|
|
7096
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
7097
|
+
}
|
|
7098
|
+
/**
|
|
7099
|
+
* Сервис настроек бокового меню для приложения.
|
|
7100
|
+
*
|
|
7101
|
+
* ```ts
|
|
7102
|
+
* bootstrapApplication(App, { providers: [provideRtSideMenuSettings()] });
|
|
7103
|
+
* ```
|
|
7104
|
+
*/
|
|
7105
|
+
declare function provideRtSideMenuSettings(config?: IRtSideMenuSettingsConfig): EnvironmentProviders;
|
|
7106
|
+
|
|
7107
|
+
/**
|
|
7108
|
+
* Строка подменю: пункт со ссылкой или папка со своими пунктами. Раскрытость, подсветку и запрос
|
|
7109
|
+
* строка берёт у меню — своего состояния у неё нет.
|
|
7110
|
+
*
|
|
7111
|
+
* В разделе, где приложение включило избранное, у пункта со ссылкой стоит звезда; в строке блока
|
|
7112
|
+
* избранного — кнопка «убрать» и слот `[rtSideMenuSubItemAction]`, куда блок кладёт ручку.
|
|
7113
|
+
*/
|
|
7114
|
+
declare class RtSideMenuSubItemComponent {
|
|
7115
|
+
#private;
|
|
7116
|
+
protected readonly menuRef: IRtSideMenuHost;
|
|
7117
|
+
protected readonly narrow: Signal<boolean>;
|
|
7118
|
+
/** Значки кнопок избранного: из настроек провайдера, иначе из набора кита. */
|
|
7119
|
+
protected readonly favoritesIcons: RtSideMenuSettingsService['favoritesIcons'] | null;
|
|
7120
|
+
protected readonly addLabel: Signal<string>;
|
|
7121
|
+
protected readonly removeLabel: Signal<string>;
|
|
7122
|
+
/** Избранное включено у раздела, чьё подменю показано, и приложение поставило настройки меню. */
|
|
7123
|
+
protected readonly favoritesOn: Signal<boolean>;
|
|
7124
|
+
protected readonly favoriteIds: Signal<ReadonlyArray<IRtSideMenu.FavoriteId>>;
|
|
7125
|
+
readonly item: InputSignal<IRtSideMenu.Item>;
|
|
7126
|
+
/** Строка стоит в блоке избранного: вместо звезды — «убрать», без номера и подсветки клавиатуры. */
|
|
7127
|
+
readonly inFavorites: InputSignalWithTransform<boolean, unknown>;
|
|
7128
|
+
readonly clickSubMenuAction: OutputEmitterRef<{
|
|
7129
|
+
item: IRtSideMenu.Item;
|
|
7130
|
+
event: MouseEvent;
|
|
7131
|
+
}>;
|
|
7132
|
+
readonly clickSubMenuAdditionalAction: OutputEmitterRef<{
|
|
7133
|
+
data: IRtSideMenu.ItemData | undefined;
|
|
7134
|
+
event: MouseEvent;
|
|
7135
|
+
}>;
|
|
7136
|
+
onClickSubMenu(item: IRtSideMenu.Item, event: MouseEvent): void;
|
|
7137
|
+
/** Кнопка потребителя в строке: ни перехода по ссылке строки, ни закрытия подменю. */
|
|
7138
|
+
onClickSubMenuAdditional(item: IRtSideMenu.Item, event: MouseEvent): void;
|
|
7139
|
+
/** Звезда переключает избранное и больше ничего: ни перехода, ни закрытия подменю. */
|
|
7140
|
+
onToggleFavorite(item: IRtSideMenu.Item, event: MouseEvent): void;
|
|
7141
|
+
/**
|
|
7142
|
+
* «Убрать» в строке блока. Фокус уходит на такую же кнопку соседней строки до того, как строка
|
|
7143
|
+
* исчезнет: иначе он падал бы на страницу, и человек с клавиатуры терял бы место.
|
|
7144
|
+
*/
|
|
7145
|
+
onRemoveFavorite(item: IRtSideMenu.Item, event: MouseEvent): void;
|
|
7146
|
+
onToggleFolder(item: IRtSideMenu.Item): void;
|
|
7147
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtSideMenuSubItemComponent, never>;
|
|
7148
|
+
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>;
|
|
7149
|
+
}
|
|
7150
|
+
|
|
5681
7151
|
/**
|
|
5682
7152
|
* Маркеры частей области прокрутки — своим файлом, как у соседних семей.
|
|
5683
7153
|
*
|
|
@@ -5908,33 +7378,48 @@ declare class RtSkeletonWrapperComponent {
|
|
|
5908
7378
|
* - `primary` — синий основной (action accent), default
|
|
5909
7379
|
* - `neutral` — нейтральный серый (для тонких inline-loader'ов)
|
|
5910
7380
|
* - `on-primary` — белый (для overlay поверх primary-фона)
|
|
7381
|
+
*
|
|
7382
|
+
* `Appearance` — вид кольца: `border` — кольцо с дорожкой, `arc` — дуга без дорожки, как в Material.
|
|
5911
7383
|
*/
|
|
5912
7384
|
declare namespace IRtSpinner {
|
|
5913
7385
|
type Color = 'primary' | 'neutral' | 'on-primary';
|
|
7386
|
+
type Appearance = 'border' | 'arc';
|
|
5914
7387
|
}
|
|
5915
7388
|
|
|
5916
7389
|
/**
|
|
5917
7390
|
* Атомарный rotating-spinner для loading-индикаторов.
|
|
5918
7391
|
*
|
|
5919
|
-
*
|
|
5920
|
-
*
|
|
5921
|
-
* sticky overlay).
|
|
7392
|
+
* Без новых режимов кольцо рисует сам host: border с одной цветной стороной и вращение, своей
|
|
7393
|
+
* разметки нет. Так спиннер стоит у семи компонентов кита, и их разметка от режимов не меняется.
|
|
5922
7394
|
*
|
|
5923
|
-
*
|
|
5924
|
-
*
|
|
7395
|
+
* Режимы `overlay`, `plate` и вид `arc` рисуют внутреннюю разметку, а host перестаёт быть кольцом:
|
|
7396
|
+
* - `overlay` — спиннер занимает позиционированного родителя целиком и ставит кольцо в центр;
|
|
7397
|
+
* слой — ступень `sticky`, ниже всего, что открывается поверх страницы;
|
|
7398
|
+
* - `backdrop` — полупрозрачная подложка оверлея, без `overlay` не действует;
|
|
7399
|
+
* - `plate` — круглая плашка с тенью под кольцом;
|
|
7400
|
+
* - `appearance="arc"` — дуга без дорожки, как у Material.
|
|
5925
7401
|
*
|
|
5926
|
-
* Анимация уважает `@media (prefers-reduced-motion)` —
|
|
5927
|
-
* включённым reduced-motion spinner не вращается.
|
|
7402
|
+
* Анимация уважает `@media (prefers-reduced-motion)` — вращение замедляется.
|
|
5928
7403
|
*/
|
|
5929
7404
|
declare class RtSpinnerComponent {
|
|
7405
|
+
/** Кольцо рисуется внутренней разметкой, а не самим host-ом. */
|
|
7406
|
+
protected readonly framed: Signal<boolean>;
|
|
7407
|
+
protected readonly modifiers: Signal<Record<string, boolean>>;
|
|
7408
|
+
protected readonly cssDiameter: Signal<string>;
|
|
5930
7409
|
/** Диаметр spinner'а в px. Default 32. */
|
|
5931
7410
|
readonly diameter: InputSignalWithTransform<number, NumberInput>;
|
|
5932
7411
|
/** Семантическая палитра. Default `primary`. */
|
|
5933
7412
|
readonly color: InputSignal<IRtSpinner.Color>;
|
|
5934
|
-
|
|
5935
|
-
|
|
7413
|
+
/** Вид кольца: `border` — с дорожкой, `arc` — дуга без дорожки. Default `border`. */
|
|
7414
|
+
readonly appearance: InputSignal<IRtSpinner.Appearance>;
|
|
7415
|
+
/** Спиннер накрывает позиционированного родителя и стоит в его центре. Default `false`. */
|
|
7416
|
+
readonly overlay: InputSignalWithTransform<boolean, BooleanInput>;
|
|
7417
|
+
/** Полупрозрачная подложка оверлея; без `overlay` не действует. Default `false`. */
|
|
7418
|
+
readonly backdrop: InputSignalWithTransform<boolean, BooleanInput>;
|
|
7419
|
+
/** Круглая плашка с тенью под кольцом. Default `false`. */
|
|
7420
|
+
readonly plate: InputSignalWithTransform<boolean, BooleanInput>;
|
|
5936
7421
|
static ɵfac: i0.ɵɵFactoryDeclaration<RtSpinnerComponent, never>;
|
|
5937
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<RtSpinnerComponent, "rt-spinner", never, { "diameter": { "alias": "diameter"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
7422
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtSpinnerComponent, "rt-spinner", never, { "diameter": { "alias": "diameter"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "overlay": { "alias": "overlay"; "required": false; "isSignal": true; }; "backdrop": { "alias": "backdrop"; "required": false; "isSignal": true; }; "plate": { "alias": "plate"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5938
7423
|
}
|
|
5939
7424
|
|
|
5940
7425
|
/**
|
|
@@ -6347,7 +7832,6 @@ declare class RtRowHasActionsPipe implements PipeTransform {
|
|
|
6347
7832
|
* Визуальный аффорданс (cursor/hover/focus-ring) включает `[clickable]` на rt-table.
|
|
6348
7833
|
*/
|
|
6349
7834
|
declare class RtTableRowDirective {
|
|
6350
|
-
#private;
|
|
6351
7835
|
readonly activated: OutputEmitterRef<void>;
|
|
6352
7836
|
protected onClick(event: MouseEvent): void;
|
|
6353
7837
|
protected onKey(event: Event): void;
|
|
@@ -7237,8 +8721,17 @@ declare namespace INotification {
|
|
|
7237
8721
|
*/
|
|
7238
8722
|
readonly secondaryAction?: Action;
|
|
7239
8723
|
readonly filled?: boolean;
|
|
8724
|
+
/**
|
|
8725
|
+
* Сколько тост живёт, в миллисекундах. Не задано — столько, сколько велит тостер;
|
|
8726
|
+
* `null` — таймера нет, тост держится до крестика.
|
|
8727
|
+
*/
|
|
8728
|
+
readonly duration?: number | null;
|
|
8729
|
+
/** Полоса срока под тостом: сжимается вместе с таймером и встаёт вместе с ним. */
|
|
8730
|
+
readonly progress?: boolean;
|
|
8731
|
+
/** Свой значок вместо значка severity; `null` — тост без значка. */
|
|
8732
|
+
readonly icon?: IRtIcon.Name | null;
|
|
7240
8733
|
}
|
|
7241
|
-
type Options = Pick<Payload, 'description' | 'meta' | 'action' | 'secondaryAction' | 'filled'>;
|
|
8734
|
+
type Options = Pick<Payload, 'description' | 'meta' | 'action' | 'secondaryAction' | 'filled' | 'duration' | 'progress' | 'icon'>;
|
|
7242
8735
|
/**
|
|
7243
8736
|
* Событие шины уведомлений. `type` — строковый дискриминатор (доменные
|
|
7244
8737
|
* action-перечисления вроде «обновление записи успешно»/«ошибка загрузки
|
|
@@ -7323,7 +8816,9 @@ declare enum ERtStorageKeys {
|
|
|
7323
8816
|
/** Выбранная тема оформления: переживает перезагрузку и смену пользователя */
|
|
7324
8817
|
Theme = "rt.theme",
|
|
7325
8818
|
/** Префикс, а не полный ключ: итоговый вид — `rt.table.columns.<tableId>`. */
|
|
7326
|
-
TableColumnsPrefix = "rt.table.columns."
|
|
8819
|
+
TableColumnsPrefix = "rt.table.columns.",
|
|
8820
|
+
/** Настройки боковых меню: один объект, в нём каждое меню под своим номером. */
|
|
8821
|
+
SideMenu = "rt.side-menu"
|
|
7327
8822
|
}
|
|
7328
8823
|
|
|
7329
8824
|
/**
|
|
@@ -7357,10 +8852,17 @@ declare class ThemeService {
|
|
|
7357
8852
|
}
|
|
7358
8853
|
|
|
7359
8854
|
declare const RT_TOASTER_GAP_PX: number;
|
|
8855
|
+
/**
|
|
8856
|
+
* Значки severity у тоста. Приложение подменяет карту целиком — например, на имена
|
|
8857
|
+
* Material, — а тост со своим `icon` берёт свой значок мимо карты.
|
|
8858
|
+
*/
|
|
8859
|
+
declare const RT_TOAST_SEVERITY_ICONS: InjectionToken<Readonly<Record<INotification.Severity, IRtIcon.Name>>>;
|
|
7360
8860
|
declare namespace IRtToaster {
|
|
7361
8861
|
type Position = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
|
|
7362
8862
|
type PositionY = 'top' | 'bottom';
|
|
7363
8863
|
type PositionX = 'left' | 'center' | 'right';
|
|
8864
|
+
/** `stack` копит тосты стопкой; `replace` — новый тост уводит прежние. */
|
|
8865
|
+
type Mode = 'stack' | 'replace';
|
|
7364
8866
|
interface Toast {
|
|
7365
8867
|
readonly id: number;
|
|
7366
8868
|
readonly severity: INotification.Severity;
|
|
@@ -7370,6 +8872,11 @@ declare namespace IRtToaster {
|
|
|
7370
8872
|
readonly action?: INotification.Action;
|
|
7371
8873
|
readonly secondaryAction?: INotification.Action;
|
|
7372
8874
|
readonly filled?: boolean;
|
|
8875
|
+
readonly duration?: number | null;
|
|
8876
|
+
readonly progress?: boolean;
|
|
8877
|
+
readonly icon?: IRtIcon.Name | null;
|
|
8878
|
+
/** Тост вытеснен новым в режиме `replace` и уходит своей анимацией. */
|
|
8879
|
+
readonly replaced?: boolean;
|
|
7373
8880
|
}
|
|
7374
8881
|
interface Height {
|
|
7375
8882
|
readonly toastId: number;
|
|
@@ -7380,7 +8887,13 @@ declare namespace IRtToaster {
|
|
|
7380
8887
|
declare class RtToastComponent implements AfterViewInit, OnDestroy {
|
|
7381
8888
|
#private;
|
|
7382
8889
|
protected readonly t: Signal<TRtKitLabelMap>;
|
|
7383
|
-
|
|
8890
|
+
/** Свой значок тоста важнее карты severity; `null` у тоста значок снимает. */
|
|
8891
|
+
protected readonly icon: Signal<IRtIcon.Name | null>;
|
|
8892
|
+
/** Срок жизни тоста: свой, если задан, иначе тостера; `null` — таймера нет. */
|
|
8893
|
+
protected readonly lifetime: Signal<number | null>;
|
|
8894
|
+
protected readonly showProgress: Signal<boolean>;
|
|
8895
|
+
/** Таймер и полоса срока встают от одного признака, чтобы не разойтись. */
|
|
8896
|
+
protected readonly paused: Signal<boolean>;
|
|
7384
8897
|
readonly toast: InputSignal<IRtToaster.Toast>;
|
|
7385
8898
|
readonly index: InputSignal<number>;
|
|
7386
8899
|
readonly totalToasts: InputSignal<number>;
|
|
@@ -7418,6 +8931,8 @@ declare class RtToasterComponent {
|
|
|
7418
8931
|
readonly position: InputSignal<IRtToaster.Position>;
|
|
7419
8932
|
readonly duration: InputSignalWithTransform<number, number | string>;
|
|
7420
8933
|
readonly visibleToasts: InputSignalWithTransform<number, number | string>;
|
|
8934
|
+
/** `replace` — новый тост уводит прежние их же анимацией ухода, а не копится стопкой. */
|
|
8935
|
+
readonly mode: InputSignal<IRtToaster.Mode>;
|
|
7421
8936
|
readonly expand: InputSignalWithTransform<boolean, boolean | string>;
|
|
7422
8937
|
get hostModifierClasses(): Record<string, boolean>;
|
|
7423
8938
|
get hostStackStyles(): Record<string, string>;
|
|
@@ -7430,7 +8945,7 @@ declare class RtToasterComponent {
|
|
|
7430
8945
|
protected onHeightRemoved(toastId: number): void;
|
|
7431
8946
|
protected onDismissed(toastId: number): void;
|
|
7432
8947
|
static ɵfac: i0.ɵɵFactoryDeclaration<RtToasterComponent, never>;
|
|
7433
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<RtToasterComponent, "rt-toaster", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; "duration": { "alias": "duration"; "required": false; "isSignal": true; }; "visibleToasts": { "alias": "visibleToasts"; "required": false; "isSignal": true; }; "expand": { "alias": "expand"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
8948
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtToasterComponent, "rt-toaster", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; "duration": { "alias": "duration"; "required": false; "isSignal": true; }; "visibleToasts": { "alias": "visibleToasts"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "expand": { "alias": "expand"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
7434
8949
|
}
|
|
7435
8950
|
|
|
7436
8951
|
/**
|
|
@@ -7450,6 +8965,7 @@ declare namespace IRtToggleButtonGroup {
|
|
|
7450
8965
|
* - `value` — уникальный идентификатор сегмента, эмитится в `valueChange`.
|
|
7451
8966
|
* - `label` — текстовая подпись (основной контент).
|
|
7452
8967
|
* - `icon` — опциональная иконка перед лейблом (`<rt-icon>`).
|
|
8968
|
+
* - `glyph` — имя Material вместо `icon`; рисуется так же, как вход `glyph` у `rt-icon`.
|
|
7453
8969
|
* - `title` — нативный HTML-title (вместо тултип-директивы).
|
|
7454
8970
|
* - `disabled` — сегмент недоступен сейчас: он остаётся видимым, но нажатия не пропускает.
|
|
7455
8971
|
* Признак лежит рядом с подписью, а не отдельным списком значений: список запретов
|
|
@@ -7460,6 +8976,7 @@ declare namespace IRtToggleButtonGroup {
|
|
|
7460
8976
|
readonly value: T;
|
|
7461
8977
|
readonly label: string;
|
|
7462
8978
|
readonly icon?: IRtIcon.Name;
|
|
8979
|
+
readonly glyph?: string;
|
|
7463
8980
|
readonly title?: string;
|
|
7464
8981
|
readonly disabled?: boolean;
|
|
7465
8982
|
}
|
|
@@ -7567,12 +9084,23 @@ declare namespace IRtToggleSwitch {
|
|
|
7567
9084
|
* и наезжает на иконку активного состояния, так что видна всегда иконка того
|
|
7568
9085
|
* состояния, куда переключится контрол.
|
|
7569
9086
|
*
|
|
9087
|
+
* Вход `label` рисует подпись после кнопки — элементом `<label>`, связанным с
|
|
9088
|
+
* кнопкой: нажатие на подпись переключает, и она же называет переключатель
|
|
9089
|
+
* скринридеру через `aria-labelledby`.
|
|
9090
|
+
*
|
|
9091
|
+
* Размер и отключение выводятся модификаторами и на хост: свойства размеров
|
|
9092
|
+
* объявлены на хосте, чтобы правило приложения на теге их переопределяло, а
|
|
9093
|
+
* прозрачность отключения гасит переключатель вместе с подписью.
|
|
9094
|
+
*
|
|
7570
9095
|
* ViewEncapsulation.None — стили таргетируют имя элемента и BEM-класс блока.
|
|
7571
9096
|
*/
|
|
7572
9097
|
declare class RtToggleSwitchComponent implements ControlValueAccessor {
|
|
7573
9098
|
#private;
|
|
7574
9099
|
protected readonly isOn: WritableSignal<boolean>;
|
|
7575
9100
|
protected readonly isDisabled: Signal<boolean>;
|
|
9101
|
+
/** Id кнопки: заданный входом или свой — на него указывает подпись. */
|
|
9102
|
+
protected readonly controlId: Signal<string>;
|
|
9103
|
+
protected readonly labelId: string;
|
|
7576
9104
|
/**
|
|
7577
9105
|
* BEM-модификаторы для `[rtMod]`. Собираем в .ts, потому что
|
|
7578
9106
|
* Angular template-parser не поддерживает computed property keys
|
|
@@ -7581,6 +9109,8 @@ declare class RtToggleSwitchComponent implements ControlValueAccessor {
|
|
|
7581
9109
|
protected readonly bemMods: Signal<Record<string, boolean>>;
|
|
7582
9110
|
readonly inputId: InputSignal<string | null>;
|
|
7583
9111
|
readonly ariaLabel: InputSignal<string | null>;
|
|
9112
|
+
/** Подпись после переключателя. Пусто — без подписи, как раньше. */
|
|
9113
|
+
readonly label: InputSignal<string | null>;
|
|
7584
9114
|
/** Размерный тир трека. */
|
|
7585
9115
|
readonly size: InputSignal<IRtToggleSwitch.Size>;
|
|
7586
9116
|
/** Иконка выключенного состояния — в начальной половине трека. Пусто — без иконки. */
|
|
@@ -7594,7 +9124,7 @@ declare class RtToggleSwitchComponent implements ControlValueAccessor {
|
|
|
7594
9124
|
setDisabledState(disabled: boolean): void;
|
|
7595
9125
|
protected toggle(): void;
|
|
7596
9126
|
static ɵfac: i0.ɵɵFactoryDeclaration<RtToggleSwitchComponent, never>;
|
|
7597
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<RtToggleSwitchComponent, "rt-toggle-switch", never, { "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "iconOff": { "alias": "iconOff"; "required": false; "isSignal": true; }; "iconOn": { "alias": "iconOn"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof RtRadiusDirective; inputs: { "radius": "radius"; }; outputs: {}; }]>;
|
|
9127
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtToggleSwitchComponent, "rt-toggle-switch", never, { "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "iconOff": { "alias": "iconOff"; "required": false; "isSignal": true; }; "iconOn": { "alias": "iconOn"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof RtRadiusDirective; inputs: { "radius": "radius"; }; outputs: {}; }]>;
|
|
7598
9128
|
}
|
|
7599
9129
|
|
|
7600
9130
|
/**
|
|
@@ -8059,11 +9589,11 @@ declare function provideRtKit(config: IRtKitConfig.Config): EnvironmentProviders
|
|
|
8059
9589
|
/** The name of a styling property the kit declares itself. */
|
|
8060
9590
|
type TRtDesignTokenName = '--rt-amber-400' | '--rt-border-width-medium' | '--rt-border-width-thick' | '--rt-border-width-thin' | '--rt-bp-lg' | '--rt-bp-md' | '--rt-bp-sm' | '--rt-bp-xl' | '--rt-brand-100' | '--rt-brand-200' | '--rt-brand-300' | '--rt-brand-400' | '--rt-brand-50' | '--rt-brand-500' | '--rt-brand-600' | '--rt-brand-700' | '--rt-brand-800' | '--rt-brand-900' | '--rt-brand-950' | '--rt-btn-tint-active' | '--rt-btn-tint-hover' | '--rt-charcoal-700' | '--rt-charcoal-800' | '--rt-charcoal-900' | '--rt-charcoal-950' | '--rt-charcoal-border' | '--rt-charcoal-border-strong' | '--rt-chat-bubble-date' | '--rt-chat-bubble-in-author' | '--rt-chat-bubble-in-bg' | '--rt-chat-bubble-own-author' | '--rt-chat-bubble-own-bg' | '--rt-chat-status-read' | '--rt-color-action-danger' | '--rt-color-action-danger-active' | '--rt-color-action-danger-hover' | '--rt-color-action-danger-on-surface' | '--rt-color-action-disabled' | '--rt-color-action-info' | '--rt-color-action-info-active' | '--rt-color-action-info-hover' | '--rt-color-action-info-on-surface' | '--rt-color-action-on-danger' | '--rt-color-action-on-disabled' | '--rt-color-action-on-info' | '--rt-color-action-on-primary' | '--rt-color-action-on-secondary' | '--rt-color-action-on-success' | '--rt-color-action-on-warning' | '--rt-color-action-primary' | '--rt-color-action-primary-active' | '--rt-color-action-primary-hover' | '--rt-color-action-primary-on-surface' | '--rt-color-action-primary-soft' | '--rt-color-action-primary-subtle' | '--rt-color-action-secondary' | '--rt-color-action-secondary-active' | '--rt-color-action-secondary-hover' | '--rt-color-action-secondary-on-surface' | '--rt-color-action-success' | '--rt-color-action-success-active' | '--rt-color-action-success-hover' | '--rt-color-action-success-on-surface' | '--rt-color-action-warning' | '--rt-color-action-warning-active' | '--rt-color-action-warning-hover' | '--rt-color-action-warning-on-surface' | '--rt-color-bg-hover' | '--rt-color-bg-inverse' | '--rt-color-bg-nav' | '--rt-color-bg-overlay' | '--rt-color-bg-page' | '--rt-color-bg-page-auth' | '--rt-color-bg-subtle' | '--rt-color-bg-surface' | '--rt-color-bg-surface-auth-card' | '--rt-color-bg-surface-subtle' | '--rt-color-bg-surface-subtle-2' | '--rt-color-border-default' | '--rt-color-border-focus' | '--rt-color-border-strong' | '--rt-color-border-subtle' | '--rt-color-field-fill-underline' | '--rt-color-skeleton-base' | '--rt-color-skeleton-wave' | '--rt-color-state-danger' | '--rt-color-state-danger-bg' | '--rt-color-state-error-text' | '--rt-color-state-info' | '--rt-color-state-info-bg' | '--rt-color-state-success' | '--rt-color-state-success-bg' | '--rt-color-state-success-text' | '--rt-color-state-warning' | '--rt-color-state-warning-bg' | '--rt-color-state-warning-text' | '--rt-color-stepper-current' | '--rt-color-stepper-current-subtle' | '--rt-color-stepper-progress' | '--rt-color-stepper-track' | '--rt-color-table-head-bg' | '--rt-color-text-disabled' | '--rt-color-text-inverse' | '--rt-color-text-link' | '--rt-color-text-link-hover' | '--rt-color-text-muted' | '--rt-color-text-primary' | '--rt-control-height-2xl' | '--rt-control-height-lg' | '--rt-control-height-md' | '--rt-control-height-sm' | '--rt-control-height-xl' | '--rt-control-max-width' | '--rt-control-panel-max-height' | '--rt-control-textarea-min-height-lg' | '--rt-control-textarea-min-height-md' | '--rt-control-textarea-min-height-sm' | '--rt-counter-gap' | '--rt-counter-row-color-border' | '--rt-counter-row-gap' | '--rt-counter-row-hint-color' | '--rt-counter-row-hint-font-size' | '--rt-counter-row-label-color' | '--rt-counter-row-label-font-size' | '--rt-counter-row-padding-y' | '--rt-counter-value-color' | '--rt-counter-value-font-size' | '--rt-counter-value-min-width' | '--rt-danger-50' | '--rt-danger-500' | '--rt-danger-600' | '--rt-danger-700' | '--rt-duration-base' | '--rt-duration-fast' | '--rt-duration-slow' | '--rt-duration-slower' | '--rt-field-error-color' | '--rt-field-error-font-size' | '--rt-field-gap' | '--rt-field-hint-color' | '--rt-field-hint-font-size' | '--rt-field-label-color' | '--rt-field-label-font-size' | '--rt-field-label-font-weight' | '--rt-field-label-help-gap' | '--rt-field-required-color' | '--rt-field-value-color' | '--rt-field-value-empty-color' | '--rt-field-value-font-size' | '--rt-focus-ring-color' | '--rt-focus-ring-color-danger' | '--rt-focus-ring-offset' | '--rt-focus-ring-width' | '--rt-font-family-mono' | '--rt-font-family-sans' | '--rt-font-weight-bold' | '--rt-font-weight-medium' | '--rt-font-weight-regular' | '--rt-font-weight-semibold' | '--rt-gray-350' | '--rt-icon-button-color-bg-hover' | '--rt-icon-button-disabled-color' | '--rt-icon-button-disabled-fill' | '--rt-icon-button-disabled-opacity' | '--rt-info-50' | '--rt-info-500' | '--rt-info-600' | '--rt-info-700' | '--rt-input-border-width' | '--rt-input-color-bg' | '--rt-input-color-bg-disabled' | '--rt-input-color-bg-hover' | '--rt-input-color-border' | '--rt-input-color-border-error' | '--rt-input-color-border-focus' | '--rt-input-color-text' | '--rt-input-color-text-placeholder' | '--rt-input-disabled-opacity' | '--rt-input-focus-outline-offset' | '--rt-input-focus-shadow' | '--rt-input-focus-shadow-error' | '--rt-input-font-size' | '--rt-input-gap' | '--rt-input-height' | '--rt-input-height-lg' | '--rt-input-height-md' | '--rt-input-height-sm' | '--rt-input-icon-color' | '--rt-input-icon-size' | '--rt-input-line-height' | '--rt-input-max-width' | '--rt-input-padding-x' | '--rt-input-padding-y' | '--rt-input-panel-max-height' | '--rt-input-radius' | '--rt-input-transition' | '--rt-leading-none' | '--rt-leading-normal' | '--rt-leading-relaxed' | '--rt-leading-snug' | '--rt-leading-tight' | '--rt-letter-spacing-wide' | '--rt-list-action-color' | '--rt-list-action-color-bg-hover' | '--rt-list-action-color-hover' | '--rt-list-action-divider-height' | '--rt-list-action-gap' | '--rt-list-action-icon-size' | '--rt-list-action-radius' | '--rt-list-action-shadow' | '--rt-list-action-shadow-hover' | '--rt-list-content-padding-bottom' | '--rt-list-copy-button-bg' | '--rt-list-copy-button-bg-hover' | '--rt-list-copy-button-color' | '--rt-list-copy-button-radius' | '--rt-list-copy-button-size' | '--rt-list-empty-icon-size' | '--rt-list-empty-icon-wrap-bg' | '--rt-list-empty-icon-wrap-size' | '--rt-list-empty-title-size' | '--rt-list-empty-title-weight' | '--rt-list-filter-line-height' | '--rt-list-placeholder-grow' | '--rt-list-placeholder-min-height' | '--rt-list-search-color-bg' | '--rt-list-search-color-border' | '--rt-list-search-color-placeholder' | '--rt-list-search-font-size' | '--rt-list-search-gap' | '--rt-list-search-height' | '--rt-list-search-icon-color' | '--rt-list-search-icon-size' | '--rt-list-search-padding-x' | '--rt-list-search-radius' | '--rt-list-search-width' | '--rt-list-selector-label-color' | '--rt-list-settings-icon-color' | '--rt-list-settings-item-bg' | '--rt-list-settings-item-radius' | '--rt-list-table-button-radius' | '--rt-list-table-button-size' | '--rt-list-table-head-divider-color' | '--rt-list-table-icon-color' | '--rt-list-table-icon-size' | '--rt-list-toolbar-gap' | '--rt-list-toolbar-padding-bottom' | '--rt-list-toolbar-padding-top' | '--rt-mat-blue-100' | '--rt-mat-blue-20' | '--rt-mat-blue-40' | '--rt-mat-blue-60' | '--rt-mat-blue-80' | '--rt-mat-blue-active' | '--rt-mat-blue-hover' | '--rt-mat-dark-10' | '--rt-mat-dark-20' | '--rt-mat-dark-30' | '--rt-mat-dark-40' | '--rt-mat-green-10' | '--rt-mat-green-100' | '--rt-mat-green-120' | '--rt-mat-green-20' | '--rt-mat-green-40' | '--rt-mat-green-60' | '--rt-mat-green-80' | '--rt-mat-green-active' | '--rt-mat-green-hover' | '--rt-mat-menu-min-width' | '--rt-mat-menu-sm-icon-size' | '--rt-mat-menu-sm-item-height' | '--rt-mat-navy-100' | '--rt-mat-neutral-0' | '--rt-mat-neutral-10' | '--rt-mat-neutral-100' | '--rt-mat-neutral-15' | '--rt-mat-neutral-20' | '--rt-mat-neutral-25' | '--rt-mat-neutral-30' | '--rt-mat-neutral-35' | '--rt-mat-neutral-40' | '--rt-mat-neutral-5' | '--rt-mat-neutral-60' | '--rt-mat-neutral-80' | '--rt-mat-neutral-active' | '--rt-mat-neutral-hover' | '--rt-mat-orange-10' | '--rt-mat-orange-100' | '--rt-mat-orange-20' | '--rt-mat-orange-40' | '--rt-mat-orange-5' | '--rt-mat-orange-60' | '--rt-mat-orange-70' | '--rt-mat-orange-80' | '--rt-mat-orange-active' | '--rt-mat-orange-hover' | '--rt-mat-overlay-black-32' | '--rt-mat-overlay-black-4' | '--rt-mat-overlay-blue-24' | '--rt-mat-overlay-blue-8' | '--rt-mat-radius-4' | '--rt-mat-radius-5' | '--rt-mat-red-10' | '--rt-mat-red-100' | '--rt-mat-red-20' | '--rt-mat-red-40' | '--rt-mat-red-60' | '--rt-mat-red-80' | '--rt-mat-red-active' | '--rt-mat-red-hover' | '--rt-mat-shadow-fab' | '--rt-mat-shadow-fab-hover' | '--rt-mat-shadow-level-2' | '--rt-nav-caret-size' | '--rt-nav-color-disabled' | '--rt-nav-color-focus' | '--rt-nav-header-color-bg' | '--rt-nav-header-padding' | '--rt-nav-item-color' | '--rt-nav-item-color-bg' | '--rt-nav-item-color-bg-active' | '--rt-nav-item-color-border' | '--rt-nav-item-color-caret' | '--rt-nav-item-color-hover' | '--rt-nav-item-color-pressed' | '--rt-nav-item-content-gap' | '--rt-nav-item-font-size' | '--rt-nav-item-font-weight' | '--rt-nav-item-gap' | '--rt-nav-item-height' | '--rt-nav-item-line-height' | '--rt-nav-item-padding' | '--rt-nav-marker-color' | '--rt-nav-marker-size' | '--rt-nav-panel-color-bg' | '--rt-nav-panel-color-border' | '--rt-nav-panel-column-gap' | '--rt-nav-panel-column-width' | '--rt-nav-panel-columns' | '--rt-nav-panel-group-color' | '--rt-nav-panel-group-content-gap' | '--rt-nav-panel-group-font-size' | '--rt-nav-panel-group-font-weight' | '--rt-nav-panel-group-gap' | '--rt-nav-panel-item-color' | '--rt-nav-panel-item-color-active' | '--rt-nav-panel-item-color-bg-active' | '--rt-nav-panel-item-color-bg-hover' | '--rt-nav-panel-item-content-gap' | '--rt-nav-panel-item-font-size' | '--rt-nav-panel-item-font-weight' | '--rt-nav-panel-item-gap' | '--rt-nav-panel-item-height' | '--rt-nav-panel-item-padding' | '--rt-nav-panel-padding' | '--rt-nav-panel-padding-y' | '--rt-nav-panel-shadow' | '--rt-navy-600' | '--rt-navy-900' | '--rt-neutral-0' | '--rt-neutral-100' | '--rt-neutral-200' | '--rt-neutral-300' | '--rt-neutral-400' | '--rt-neutral-50' | '--rt-neutral-500' | '--rt-neutral-600' | '--rt-neutral-700' | '--rt-neutral-800' | '--rt-neutral-900' | '--rt-neutral-950' | '--rt-opacity-disabled' | '--rt-overlay-amber-16' | '--rt-overlay-black-4' | '--rt-overlay-black-50' | '--rt-overlay-black-8' | '--rt-overlay-brand-24' | '--rt-overlay-brand-8' | '--rt-overlay-danger-16' | '--rt-overlay-menu-bg' | '--rt-overlay-menu-current-bg' | '--rt-overlay-menu-danger-color' | '--rt-overlay-menu-danger-label-color' | '--rt-overlay-menu-item-icon-size' | '--rt-overlay-menu-item-min-height' | '--rt-overlay-menu-item-padding-x' | '--rt-overlay-menu-item-padding-y' | '--rt-overlay-menu-item-weight' | '--rt-overlay-menu-min-width' | '--rt-overlay-menu-padding-y' | '--rt-overlay-menu-radius' | '--rt-overlay-menu-shadow' | '--rt-overlay-menu-sm-item-icon-size' | '--rt-overlay-menu-sm-item-min-height' | '--rt-overlay-navy-70' | '--rt-overlay-select-check-display' | '--rt-overlay-select-option-font-size' | '--rt-overlay-select-option-min-height' | '--rt-overlay-select-panel-border-width' | '--rt-overlay-select-radius' | '--rt-overlay-select-selected-bg' | '--rt-overlay-select-selected-weight' | '--rt-overlay-select-shadow' | '--rt-overlay-tooltip-radius' | '--rt-overlay-tooltip-shadow' | '--rt-overlay-white-25' | '--rt-overlay-white-4' | '--rt-overlay-white-40' | '--rt-overlay-white-50' | '--rt-overlay-white-8' | '--rt-pagination-arrow-color' | '--rt-pagination-arrow-radius' | '--rt-pagination-arrow-shadow' | '--rt-pagination-arrow-size' | '--rt-pagination-box-color-border' | '--rt-pagination-box-color-text' | '--rt-pagination-box-current-color-bg' | '--rt-pagination-box-current-color-border' | '--rt-pagination-box-current-color-text' | '--rt-pagination-box-current-font-weight' | '--rt-pagination-box-radius' | '--rt-pagination-box-size' | '--rt-pagination-field-color-bg' | '--rt-pagination-field-color-border' | '--rt-pagination-field-color-text' | '--rt-pagination-field-height' | '--rt-pagination-field-padding-x' | '--rt-pagination-field-radius' | '--rt-pagination-gap' | '--rt-pagination-justify' | '--rt-pagination-nav-gap' | '--rt-pagination-padding-x' | '--rt-pagination-padding-y' | '--rt-pagination-per-page-gap' | '--rt-pagination-per-page-label-white-space' | '--rt-pagination-range-display' | '--rt-profile-avatar-font-size' | '--rt-profile-avatar-size' | '--rt-profile-item-content-gap' | '--rt-profile-item-font-size' | '--rt-profile-item-font-weight' | '--rt-profile-item-padding-y' | '--rt-profile-item-radius' | '--rt-profile-menu-min-width' | '--rt-profile-menu-padding' | '--rt-profile-menu-shadow' | '--rt-profile-row-inset' | '--rt-profile-theme-icon-padding' | '--rt-radius-2xl' | '--rt-radius-control' | '--rt-radius-full' | '--rt-radius-lg' | '--rt-radius-md' | '--rt-radius-ms' | '--rt-radius-none' | '--rt-radius-sm' | '--rt-radius-xl' | '--rt-radius-xs' | '--rt-shadow-card' | '--rt-shadow-card-soft' | '--rt-shadow-dialog' | '--rt-shadow-focus-ring' | '--rt-shadow-focus-ring-danger' | '--rt-shadow-lg' | '--rt-shadow-md' | '--rt-shadow-nav-panel' | '--rt-shadow-none' | '--rt-shadow-profile-menu' | '--rt-shadow-sm' | '--rt-shadow-status-dot' | '--rt-shadow-step-indicator' | '--rt-shadow-xl' | '--rt-size-1' | '--rt-size-10' | '--rt-size-100' | '--rt-size-12' | '--rt-size-16' | '--rt-size-2' | '--rt-size-20' | '--rt-size-24' | '--rt-size-3' | '--rt-size-30' | '--rt-size-4' | '--rt-size-40' | '--rt-size-5' | '--rt-size-6' | '--rt-size-60' | '--rt-size-64' | '--rt-size-8' | '--rt-slate-300' | '--rt-space-0' | '--rt-space-0-5' | '--rt-space-1' | '--rt-space-10' | '--rt-space-12' | '--rt-space-16' | '--rt-space-2' | '--rt-space-20' | '--rt-space-24' | '--rt-space-2xl' | '--rt-space-2xs' | '--rt-space-3xl' | '--rt-space-4' | '--rt-space-5' | '--rt-space-6' | '--rt-space-8' | '--rt-space-lg' | '--rt-space-md' | '--rt-space-sm' | '--rt-space-xl' | '--rt-space-xs' | '--rt-success-100' | '--rt-success-400' | '--rt-success-50' | '--rt-success-500' | '--rt-success-600' | '--rt-success-700' | '--rt-text-2xl' | '--rt-text-2xs' | '--rt-text-3xl' | '--rt-text-3xs' | '--rt-text-4xl' | '--rt-text-base' | '--rt-text-lg' | '--rt-text-md' | '--rt-text-sm' | '--rt-text-xl' | '--rt-text-xs' | '--rt-textarea-line-height' | '--rt-textarea-min-height' | '--rt-textarea-min-height-lg' | '--rt-textarea-min-height-md' | '--rt-textarea-min-height-sm' | '--rt-textarea-padding-y' | '--rt-toggle-color-border' | '--rt-toggle-color-icon' | '--rt-toggle-color-thumb' | '--rt-toggle-color-track' | '--rt-toggle-color-track-on' | '--rt-toggle-shadow-border' | '--rt-toggle-shadow-thumb' | '--rt-warning-50' | '--rt-warning-500' | '--rt-warning-600' | '--rt-warning-700' | '--rt-yellow-400' | '--rt-z-base' | '--rt-z-dropdown' | '--rt-z-fixed' | '--rt-z-modal' | '--rt-z-modal-backdrop' | '--rt-z-popover' | '--rt-z-sticky' | '--rt-z-tooltip';
|
|
8061
9591
|
/** The name of a consumer's handle — a property the kit deliberately does not declare. */
|
|
8062
|
-
type TRtConsumerHandleName = '--rt-aside-bg' | '--rt-aside-width' | '--rt-data-table-scrollbar-color' | '--rt-data-table-scrollbar-horizontal-height' | '--rt-data-table-scrollbar-vertical-width' | '--rt-data-table-scrollbar-width' | '--rt-dialog-width' | '--rt-header-content-max-width' | '--rt-header-height' | '--rt-logo-tagline' | '--rt-logo-tagline-dark' | '--rt-logo-wordmark' | '--rt-logo-wordmark-dark' | '--rt-page-header-bg' | '--rt-table-actions-bg' | '--rt-workspace-aside-size' | '--rt-workspace-list-size';
|
|
9592
|
+
type TRtConsumerHandleName = '--rt-action-bar-menu-bg' | '--rt-action-bar-menu-color' | '--rt-action-bar-menu-radius' | '--rt-action-bar-menu-shadow' | '--rt-aside-bg' | '--rt-aside-content-inset' | '--rt-aside-error-margin-block' | '--rt-aside-footer-gap' | '--rt-aside-footer-inset' | '--rt-aside-footer-justify' | '--rt-aside-footer-margin' | '--rt-aside-header-inset' | '--rt-aside-header-title-leading' | '--rt-aside-width' | '--rt-data-table-scrollbar-color' | '--rt-data-table-scrollbar-horizontal-height' | '--rt-data-table-scrollbar-vertical-width' | '--rt-data-table-scrollbar-width' | '--rt-dialog-bg' | '--rt-dialog-border' | '--rt-dialog-content-max-height' | '--rt-dialog-content-padding' | '--rt-dialog-footer-border' | '--rt-dialog-footer-padding' | '--rt-dialog-header-border' | '--rt-dialog-header-padding' | '--rt-dialog-title-font-size' | '--rt-dialog-title-transform' | '--rt-dialog-title-weight' | '--rt-dialog-width' | '--rt-header-content-max-width' | '--rt-header-height' | '--rt-icon-button-bg' | '--rt-icon-button-bg-hover' | '--rt-icon-button-size' | '--rt-icon-glyph-font' | '--rt-logo-tagline' | '--rt-logo-tagline-dark' | '--rt-logo-wordmark' | '--rt-logo-wordmark-dark' | '--rt-page-header-bg' | '--rt-table-actions-bg' | '--rt-tag-color-bg' | '--rt-tag-color-border' | '--rt-tag-color-text' | '--rt-tag-letter-spacing' | '--rt-tag-padding-block' | '--rt-tag-padding-inline' | '--rt-toast-action-color' | '--rt-toast-bg' | '--rt-toast-border-color' | '--rt-toast-close-color' | '--rt-toast-color' | '--rt-toast-filled-danger-bg' | '--rt-toast-filled-danger-border-color' | '--rt-toast-filled-danger-color' | '--rt-toast-filled-info-bg' | '--rt-toast-filled-info-border-color' | '--rt-toast-filled-info-color' | '--rt-toast-filled-success-bg' | '--rt-toast-filled-success-border-color' | '--rt-toast-filled-success-color' | '--rt-toast-filled-warning-bg' | '--rt-toast-filled-warning-border-color' | '--rt-toast-filled-warning-color' | '--rt-toast-icon-color' | '--rt-toast-progress-color' | '--rt-toast-progress-height' | '--rt-workspace-aside-size' | '--rt-workspace-list-size';
|
|
8063
9593
|
/** All the styling properties declared by the kit. */
|
|
8064
9594
|
declare const RT_DESIGN_TOKEN_NAMES: readonly TRtDesignTokenName[];
|
|
8065
9595
|
/** All the consumer's handles: the value comes from the application, until then the fallback works. */
|
|
8066
9596
|
declare const RT_CONSUMER_HANDLE_NAMES: readonly TRtConsumerHandleName[];
|
|
8067
9597
|
|
|
8068
|
-
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 };
|
|
8069
|
-
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 };
|
|
9598
|
+
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_GLYPH_STRATEGY, 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, RT_TOAST_SEVERITY_ICONS, 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, RtDialogContentComponent, 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, RtIconFontService, 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, isKitIconName, keyDelta, materialPairOf, moveFrame, nextPhotoIndex, nextSort, normalizeQuillDelta, normalizeSideMenuId, normalizeSideMenuSettings, omitSideMenuSettings, paramFromIndex, parseInline, parseMarkdown, parseSideMenuSettingsRecord, patchSideMenuSettings, pinnedSideMenuItems, provideRtIcons, provideRtKit, provideRtKitLabels, provideRtSideMenuSettings, readSideMenuSettings, reportedSideMenuWidth, resizeFrame, resolveColumns, resolveIconGlyph, resultFileName, resultQuality, resultType, rowHasAvailableActions, rtAsideUnsavedGuard, rtKitDefault, rtKitLabel, searchDebounce, shouldRenderPhoto, sideMenuIconName, sideMenuIdsToExpand, sideMenuWidthByKey, sortDirectionOf, splitSideMenuTitle, startOperatorOf, startSideMenuWidthDrag, stepSideMenuHighlight, unpairedSideMenuIcons, uploadState, walkSideMenuItems, withoutLockedHidden };
|
|
9599
|
+
export type { IMessageBusEvent, IQuillDelta, IQuillDeltaAttributes, IQuillDeltaOp, IRtAsideConfig, IRtDataTableIconContext, IRtDataTableRowContext, IRtDataTableRowHost, IRtDialogConfig, IRtIconsOptions, IRtMarkdownBlockNode, IRtMarkdownInlineNode, IRtMarkdownListItem, IRtPicture, IRtPictureSource, IRtSideMenuFavoritesIcons, IRtSideMenuIconContext, IRtSideMenuSettingsConfig, IRtSubMenuWidthDragHooks, IRtTableCardContext, IRtTableRowActionsContext, IRtTableSettingsRegistration, TIconCategory, TRtAsideCloseRequest, TRtAsideContentLayout, TRtAsidePosition, TRtAsideSize, TRtConsumerHandleName, TRtDataTableAriaSort, TRtDataTableFilterValue, TRtDataTableFilters, TRtDesignTokenName, TRtDialogAutoFocus, TRtDialogFooterAlign, TRtDialogSize, TRtKitLabelKey, TRtKitLabelMap, TRtKitLabelParams, TRtKitTranslator, TRtPointerListen, TRtRadius, TRtSideMenuSettingsRecord, TRtSkeletonShape, TRtSkeletonSize, TRtTableAriaSort, TRtTableFilterInput, TRtTableFilterValue, TRtTextareaResize };
|