@rt-tools/ui-kit-v2 0.1.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/rt-tools-ui-kit-v2.mjs +313 -205
- package/fesm2022/rt-tools-ui-kit-v2.mjs.map +1 -1
- package/package.json +1 -1
- package/rt-tools-ui-kit-v2-0.3.0.tgz +0 -0
- package/src/lib/components/CONTEXT.md +49 -0
- package/src/lib/components/aside/CONTEXT.md +51 -0
- package/src/lib/components/aside/_rt-aside-overlay.scss +88 -0
- package/src/lib/components/aside/rt-aside.component.scss +19 -94
- package/src/lib/components/aside-section/CONTEXT.md +26 -0
- package/src/lib/components/autocomplete/CONTEXT.md +58 -0
- package/src/lib/components/bar-list/CONTEXT.md +27 -0
- package/src/lib/components/bar-list/rt-bar-list.component.scss +5 -2
- package/src/lib/components/bottom-sheet/CONTEXT.md +54 -0
- package/src/lib/components/bottom-sheet/rt-bottom-sheet.component.scss +53 -53
- package/src/lib/components/button/CONTEXT.md +53 -0
- package/src/lib/components/button/rt-button.directive.scss +16 -0
- package/src/lib/components/calendar/CONTEXT.md +41 -0
- package/src/lib/components/calendar/rt-calendar.component.scss +96 -99
- package/src/lib/components/card/CONTEXT.md +34 -0
- package/src/lib/components/card/rt-card.component.scss +5 -2
- package/src/lib/components/chat/CONTEXT.md +41 -0
- package/src/lib/components/checkbox/CONTEXT.md +37 -0
- package/src/lib/components/checkbox/rt-checkbox.component.scss +7 -2
- package/src/lib/components/collapsible-text/CONTEXT.md +29 -0
- package/src/lib/components/confirm-popover/CONTEXT.md +47 -0
- package/src/lib/components/container/CONTEXT.md +42 -0
- package/src/lib/components/container/rt-container.component.scss +5 -69
- package/src/lib/components/counter/CONTEXT.md +40 -0
- package/src/lib/components/counter/rt-counter.component.scss +10 -9
- package/src/lib/components/counter-row/CONTEXT.md +24 -0
- package/src/lib/components/counter-row/rt-counter-row.component.scss +23 -22
- package/src/lib/components/date-picker/CONTEXT.md +41 -0
- package/src/lib/components/delta-view/CONTEXT.md +31 -0
- package/src/lib/components/detail-list/CONTEXT.md +29 -0
- package/src/lib/components/dialog/CONTEXT.md +50 -0
- package/src/lib/components/dialog/rt-dialog.component.scss +6 -2
- package/src/lib/components/download-link/CONTEXT.md +26 -0
- package/src/lib/components/empty-state/CONTEXT.md +35 -0
- package/src/lib/components/field/CONTEXT.md +72 -0
- package/src/lib/components/file-card/CONTEXT.md +28 -0
- package/src/lib/components/file-drop/CONTEXT.md +39 -0
- package/src/lib/components/file-input/CONTEXT.md +36 -0
- package/src/lib/components/file-list/CONTEXT.md +15 -0
- package/src/lib/components/filter-control/CONTEXT.md +33 -0
- package/src/lib/components/form-control/CONTEXT.md +50 -0
- package/src/lib/components/header/CONTEXT.md +36 -0
- package/src/lib/components/icon/CONTEXT.md +46 -0
- package/src/lib/components/icon/rt-icon.component.scss +3 -5
- package/src/lib/components/icon-button/CONTEXT.md +49 -0
- package/src/lib/components/icon-button/rt-icon-button.component.scss +14 -1
- package/src/lib/components/info-item/CONTEXT.md +30 -0
- package/src/lib/components/input/CONTEXT.md +47 -0
- package/src/lib/components/input-number/CONTEXT.md +52 -0
- package/src/lib/components/live-badge/CONTEXT.md +31 -0
- package/src/lib/components/live-badge/rt-live-badge.component.scss +5 -2
- package/src/lib/components/logo/CONTEXT.md +42 -0
- package/src/lib/components/logo/rt-logo.component.scss +4 -6
- package/src/lib/components/menu/CONTEXT.md +65 -0
- package/src/lib/components/message/CONTEXT.md +35 -0
- package/src/lib/components/message/rt-message.component.scss +5 -2
- package/src/lib/components/message-composer/CONTEXT.md +46 -0
- package/src/lib/components/money-list/CONTEXT.md +32 -0
- package/src/lib/components/multiselect/CONTEXT.md +43 -0
- package/src/lib/components/night-grid/CONTEXT.md +31 -0
- package/src/lib/components/night-grid/rt-night-grid.component.scss +5 -2
- package/src/lib/components/note/CONTEXT.md +27 -0
- package/src/lib/components/notifications-bell/CONTEXT.md +29 -0
- package/src/lib/components/page-header/CONTEXT.md +33 -0
- package/src/lib/components/pagination/CONTEXT.md +43 -0
- package/src/lib/components/photo-viewer/CONTEXT.md +30 -0
- package/src/lib/components/photo-viewer/rt-photo-viewer.component.scss +95 -96
- package/src/lib/components/popover/CONTEXT.md +54 -0
- package/src/lib/components/rich-editor/CONTEXT.md +36 -0
- package/src/lib/components/section-nav/CONTEXT.md +27 -0
- package/src/lib/components/section-nav/rt-section-nav.component.scss +7 -1
- package/src/lib/components/select/CONTEXT.md +54 -0
- package/src/lib/components/skeleton/CONTEXT.md +41 -0
- package/src/lib/components/skeleton-wrapper/CONTEXT.md +24 -0
- package/src/lib/components/skeleton-wrapper/rt-skeleton-wrapper.component.scss +5 -1
- package/src/lib/components/spinner/CONTEXT.md +39 -0
- package/src/lib/components/split-button/CONTEXT.md +39 -0
- package/src/lib/components/stat-tile/CONTEXT.md +35 -0
- package/src/lib/components/stat-tile/rt-stat-tile.component.scss +5 -2
- package/src/lib/components/stepper/CONTEXT.md +36 -0
- package/src/lib/components/stepper/rt-stepper.component.scss +5 -2
- package/src/lib/components/table/CONTEXT.md +53 -0
- package/src/lib/components/table/settings-aside/rt-table-settings-aside.component.scss +4 -2
- package/src/lib/components/table/settings-panel/rt-table-settings-panel.component.scss +1 -1
- package/src/lib/components/tabs/CONTEXT.md +56 -0
- package/src/lib/components/tag/CONTEXT.md +47 -0
- package/src/lib/components/tag/rt-tag.component.scss +5 -2
- package/src/lib/components/textarea/CONTEXT.md +38 -0
- package/src/lib/components/theme-toggle/CONTEXT.md +28 -0
- package/src/lib/components/theme-toggle/rt-theme-toggle.component.scss +5 -1
- package/src/lib/components/thread-list/CONTEXT.md +42 -0
- package/src/lib/components/timeline/CONTEXT.md +33 -0
- package/src/lib/components/timeline/rt-timeline.component.scss +5 -2
- package/src/lib/components/toast/CONTEXT.md +53 -0
- package/src/lib/components/toggle-button-group/CONTEXT.md +38 -0
- package/src/lib/components/toggle-button-group/rt-toggle-button-group.component.scss +12 -7
- package/src/lib/components/toggle-switch/CONTEXT.md +35 -0
- package/src/lib/components/toggle-switch/rt-toggle-switch.component.scss +7 -2
- package/src/lib/components/toolbar/CONTEXT.md +22 -0
- package/src/lib/components/tooltip/CONTEXT.md +34 -0
- package/src/lib/components/welcome-dialog/CONTEXT.md +20 -0
- package/src/lib/components/welcome-dialog/rt-welcome-dialog.component.scss +6 -2
- package/src/lib/components/workspace/CONTEXT.md +46 -0
- package/src/lib/components/workspace-details/CONTEXT.md +42 -0
- package/styles/tokens.css +14 -0
- package/types/rt-tools-ui-kit-v2.d.ts +50 -29
- package/rt-tools-ui-kit-v2-0.1.0.tgz +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, ViewEncapsulation, ChangeDetectionStrategy, Component, signal, InjectionToken, inject, Injector, RendererFactory2, Injectable, computed, numberAttribute, ElementRef, Directive, booleanAttribute, output, HostBinding, makeEnvironmentProviders, provideAppInitializer, DestroyRef,
|
|
2
|
+
import { input, ViewEncapsulation, ChangeDetectionStrategy, Component, signal, InjectionToken, inject, Injector, RendererFactory2, Injectable, computed, numberAttribute, ElementRef, Directive, booleanAttribute, output, HostBinding, makeEnvironmentProviders, provideAppInitializer, DestroyRef, ViewContainerRef, viewChild, forwardRef, Renderer2, afterNextRender, untracked, effect, Pipe, HostListener, contentChild, TemplateRef, afterRenderEffect, linkedSignal, isSignal, LOCALE_ID, contentChildren, ViewChild, model } from '@angular/core';
|
|
3
3
|
import { BlockDirective, ElemDirective, ModDirective, PlatformService, StorageService, IDBStorageService, WINDOW } from '@rt-tools/core';
|
|
4
4
|
import * as i1$1 from '@angular/cdk/overlay';
|
|
5
5
|
import { Overlay, ScrollStrategyOptions, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';
|
|
@@ -53,13 +53,13 @@ class RtAsideComponent {
|
|
|
53
53
|
...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
|
|
54
54
|
}
|
|
55
55
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtAsideComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
56
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.5", type: RtAsideComponent, isStandalone: true, selector: "rt-aside", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, contentLayout: { classPropertyName: "contentLayout", publicName: "contentLayout", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-aside" }, ngImport: i0, template: "<div\n rtBlock=\"rt-aside\"\n qa-dataid=\"aside\"\n role=\"complementary\"\n [rtMod]=\"{ size: size(), content: contentLayout() }\"\n [style.--rt-aside-width]=\"width()\"\n [attr.aria-label]=\"ariaLabel()\">\n <ng-content select=\"rt-aside-header\" />\n\n <div rtElem=\"content\" qa-dataid=\"aside-content\">\n <ng-content />\n </div>\n\n <ng-content select=\"rt-aside-footer\" />\n</div>\n", styles: ["@charset \"UTF-8\";:
|
|
56
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.5", type: RtAsideComponent, isStandalone: true, selector: "rt-aside", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, contentLayout: { classPropertyName: "contentLayout", publicName: "contentLayout", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-aside" }, ngImport: i0, template: "<div\n rtBlock=\"rt-aside\"\n qa-dataid=\"aside\"\n role=\"complementary\"\n [rtMod]=\"{ size: size(), content: contentLayout() }\"\n [style.--rt-aside-width]=\"width()\"\n [attr.aria-label]=\"ariaLabel()\">\n <ng-content select=\"rt-aside-header\" />\n\n <div rtElem=\"content\" qa-dataid=\"aside-content\">\n <ng-content />\n </div>\n\n <ng-content select=\"rt-aside-footer\" />\n</div>\n", styles: ["@charset \"UTF-8\";:root{--rt-aside-animation-duration: .2s;--rt-aside-backdrop-bg: rgb(0 0 0 / 45%);--rt-aside-backdrop-blur: 5px}.cdk-overlay-backdrop.rt-aside-backdrop{-webkit-backdrop-filter:blur(var(--rt-aside-backdrop-blur));backdrop-filter:blur(var(--rt-aside-backdrop-blur));background:var(--rt-aside-backdrop-bg);opacity:0;pointer-events:none;transition:opacity var(--rt-aside-animation-duration) ease}.cdk-overlay-backdrop.rt-aside-backdrop.rt-aside-backdrop--visible{opacity:1;pointer-events:auto}.rt-aside-overlay{height:100dvh;transition:transform var(--rt-aside-animation-duration) ease}.rt-aside-overlay:not(.rt-aside-overlay--open){pointer-events:none}.rt-aside-overlay.rt-aside-overlay--entering{transition:none}.rt-aside-overlay--position-right.rt-aside-overlay--entering,.rt-aside-overlay--position-right.rt-aside-overlay--leaving{transform:translate(100%)}.rt-aside-overlay--position-left.rt-aside-overlay--entering,.rt-aside-overlay--position-left.rt-aside-overlay--leaving{transform:translate(-100%)}.rt-aside-overlay--position-right.rt-aside-overlay--open,.rt-aside-overlay--position-left.rt-aside-overlay--open{transform:translate(0)}@media(width<=768px){.rt-aside-overlay{overflow:hidden;width:100dvw;max-width:100dvw}}@media(prefers-reduced-motion:reduce){.rt-aside-overlay{transition:none}}:root{--rt-aside-width-sm: 400px;--rt-aside-width-md: 540px;--rt-aside-width-lg: 720px;--rt-aside-inset: var(--rt-space-lg);--rt-aside-content-gap: var(--rt-space-md)}rt-aside{display:contents}rt-aside .rt-aside{display:flex;width:var(--rt-aside-width, var(--rt-aside-width-md));min-width:0;max-width:100%;height:100%;flex-direction:column;padding:0;border:none;background:var(--rt-color-bg-surface);color:var(--rt-color-text-primary)}rt-aside .rt-aside>rt-aside-header,rt-aside .rt-aside>rt-aside-footer{min-width:0;flex-shrink:0}rt-aside .rt-aside__content{display:flex;min-width:0;min-height:0;flex:1 1 auto;flex-direction:column;padding:var(--rt-aside-inset);gap:var(--rt-aside-content-gap);overflow-y:auto;overscroll-behavior:contain}rt-aside .rt-aside--size--sm{width:var(--rt-aside-width, var(--rt-aside-width-sm))}rt-aside .rt-aside--size--md{width:var(--rt-aside-width, var(--rt-aside-width-md))}rt-aside .rt-aside--size--lg{width:var(--rt-aside-width, var(--rt-aside-width-lg))}rt-aside .rt-aside--content--tabs .rt-aside__content{overflow:hidden;padding-block-end:0}rt-aside .rt-aside--content--tabs rt-tabs{min-height:0;flex:1 1 auto;margin-inline:calc(-1 * var(--rt-aside-inset))}rt-aside .rt-aside--content--tabs .rt-tabs__header{padding-inline:var(--rt-aside-inset)}rt-aside .rt-aside--content--tabs .rt-tabs__content{padding-bottom:var(--rt-aside-inset);padding-inline:var(--rt-aside-inset)}@media(width<=768px){rt-aside .rt-aside,rt-aside .rt-aside--size--sm,rt-aside .rt-aside--size--md,rt-aside .rt-aside--size--lg{width:100dvw;max-width:100dvw}}\n"], dependencies: [{ kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
57
57
|
}
|
|
58
58
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtAsideComponent, decorators: [{
|
|
59
59
|
type: Component,
|
|
60
60
|
args: [{ selector: 'rt-aside', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [BlockDirective, ElemDirective, ModDirective], host: {
|
|
61
61
|
class: BEM_BLOCK$1j,
|
|
62
|
-
}, template: "<div\n rtBlock=\"rt-aside\"\n qa-dataid=\"aside\"\n role=\"complementary\"\n [rtMod]=\"{ size: size(), content: contentLayout() }\"\n [style.--rt-aside-width]=\"width()\"\n [attr.aria-label]=\"ariaLabel()\">\n <ng-content select=\"rt-aside-header\" />\n\n <div rtElem=\"content\" qa-dataid=\"aside-content\">\n <ng-content />\n </div>\n\n <ng-content select=\"rt-aside-footer\" />\n</div>\n", styles: ["@charset \"UTF-8\";:
|
|
62
|
+
}, template: "<div\n rtBlock=\"rt-aside\"\n qa-dataid=\"aside\"\n role=\"complementary\"\n [rtMod]=\"{ size: size(), content: contentLayout() }\"\n [style.--rt-aside-width]=\"width()\"\n [attr.aria-label]=\"ariaLabel()\">\n <ng-content select=\"rt-aside-header\" />\n\n <div rtElem=\"content\" qa-dataid=\"aside-content\">\n <ng-content />\n </div>\n\n <ng-content select=\"rt-aside-footer\" />\n</div>\n", styles: ["@charset \"UTF-8\";:root{--rt-aside-animation-duration: .2s;--rt-aside-backdrop-bg: rgb(0 0 0 / 45%);--rt-aside-backdrop-blur: 5px}.cdk-overlay-backdrop.rt-aside-backdrop{-webkit-backdrop-filter:blur(var(--rt-aside-backdrop-blur));backdrop-filter:blur(var(--rt-aside-backdrop-blur));background:var(--rt-aside-backdrop-bg);opacity:0;pointer-events:none;transition:opacity var(--rt-aside-animation-duration) ease}.cdk-overlay-backdrop.rt-aside-backdrop.rt-aside-backdrop--visible{opacity:1;pointer-events:auto}.rt-aside-overlay{height:100dvh;transition:transform var(--rt-aside-animation-duration) ease}.rt-aside-overlay:not(.rt-aside-overlay--open){pointer-events:none}.rt-aside-overlay.rt-aside-overlay--entering{transition:none}.rt-aside-overlay--position-right.rt-aside-overlay--entering,.rt-aside-overlay--position-right.rt-aside-overlay--leaving{transform:translate(100%)}.rt-aside-overlay--position-left.rt-aside-overlay--entering,.rt-aside-overlay--position-left.rt-aside-overlay--leaving{transform:translate(-100%)}.rt-aside-overlay--position-right.rt-aside-overlay--open,.rt-aside-overlay--position-left.rt-aside-overlay--open{transform:translate(0)}@media(width<=768px){.rt-aside-overlay{overflow:hidden;width:100dvw;max-width:100dvw}}@media(prefers-reduced-motion:reduce){.rt-aside-overlay{transition:none}}:root{--rt-aside-width-sm: 400px;--rt-aside-width-md: 540px;--rt-aside-width-lg: 720px;--rt-aside-inset: var(--rt-space-lg);--rt-aside-content-gap: var(--rt-space-md)}rt-aside{display:contents}rt-aside .rt-aside{display:flex;width:var(--rt-aside-width, var(--rt-aside-width-md));min-width:0;max-width:100%;height:100%;flex-direction:column;padding:0;border:none;background:var(--rt-color-bg-surface);color:var(--rt-color-text-primary)}rt-aside .rt-aside>rt-aside-header,rt-aside .rt-aside>rt-aside-footer{min-width:0;flex-shrink:0}rt-aside .rt-aside__content{display:flex;min-width:0;min-height:0;flex:1 1 auto;flex-direction:column;padding:var(--rt-aside-inset);gap:var(--rt-aside-content-gap);overflow-y:auto;overscroll-behavior:contain}rt-aside .rt-aside--size--sm{width:var(--rt-aside-width, var(--rt-aside-width-sm))}rt-aside .rt-aside--size--md{width:var(--rt-aside-width, var(--rt-aside-width-md))}rt-aside .rt-aside--size--lg{width:var(--rt-aside-width, var(--rt-aside-width-lg))}rt-aside .rt-aside--content--tabs .rt-aside__content{overflow:hidden;padding-block-end:0}rt-aside .rt-aside--content--tabs rt-tabs{min-height:0;flex:1 1 auto;margin-inline:calc(-1 * var(--rt-aside-inset))}rt-aside .rt-aside--content--tabs .rt-tabs__header{padding-inline:var(--rt-aside-inset)}rt-aside .rt-aside--content--tabs .rt-tabs__content{padding-bottom:var(--rt-aside-inset);padding-inline:var(--rt-aside-inset)}@media(width<=768px){rt-aside .rt-aside,rt-aside .rt-aside--size--sm,rt-aside .rt-aside--size--md,rt-aside .rt-aside--size--lg{width:100dvw;max-width:100dvw}}\n"] }]
|
|
63
63
|
}], propDecorators: { size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], contentLayout: [{ type: i0.Input, args: [{ isSignal: true, alias: "contentLayout", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }] } });
|
|
64
64
|
|
|
65
65
|
/** Длительность slide-out анимации; синхронизирована с `--rt-aside-animation-duration` в SCSS. */
|
|
@@ -738,6 +738,7 @@ const SIZES = Object.freeze({
|
|
|
738
738
|
md: 20,
|
|
739
739
|
lg: 24,
|
|
740
740
|
xl: 32,
|
|
741
|
+
'2xl': 40,
|
|
741
742
|
});
|
|
742
743
|
const COLORS = Object.freeze({
|
|
743
744
|
current: 'currentColor',
|
|
@@ -989,6 +990,8 @@ class RtIconButtonComponent {
|
|
|
989
990
|
sm: 'sm',
|
|
990
991
|
md: 'md',
|
|
991
992
|
lg: 'lg',
|
|
993
|
+
xl: 'xl',
|
|
994
|
+
'2xl': '2xl',
|
|
992
995
|
};
|
|
993
996
|
return this.iconSize() ?? map[this.size()];
|
|
994
997
|
}, /* @ts-ignore */
|
|
@@ -1069,13 +1072,13 @@ class RtIconButtonComponent {
|
|
|
1069
1072
|
this.clicked.emit(event);
|
|
1070
1073
|
}
|
|
1071
1074
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtIconButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1072
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtIconButtonComponent, isStandalone: true, selector: "rt-icon-button", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: true, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: true, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, iconColor: { classPropertyName: "iconColor", publicName: "iconColor", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, iconSize: { classPropertyName: "iconSize", publicName: "iconSize", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null }, indicator: { classPropertyName: "indicator", publicName: "indicator", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clicked: "clicked" }, host: { classAttribute: "rt-icon-button" }, ngImport: i0, template: "<button\n rtBlock=\"rt-icon-button\"\n qa-dataid=\"icon-button-control\"\n [rtTooltip]=\"tooltip()\"\n [rtMod]=\"bemMods()\"\n [type]=\"type()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-pressed]=\"active() ? 'true' : null\"\n [attr.tabindex]=\"tabIndex()\"\n (click)=\"onClick($event)\">\n @if (loading()) {\n <rt-icon rtElem=\"spinner\" name=\"spinner\" color=\"current\" [size]=\"resolvedIconSize()\" />\n } @else {\n <rt-icon rtElem=\"icon\" [color]=\"iconColor()\" [name]=\"icon()\" [size]=\"resolvedIconSize()\" />\n }\n @if (indicator()) {\n <span rtElem=\"indicator\" aria-hidden=\"true\"></span>\n }\n</button>\n", styles: ["@charset \"UTF-8\"
|
|
1075
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtIconButtonComponent, isStandalone: true, selector: "rt-icon-button", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: true, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: true, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, iconColor: { classPropertyName: "iconColor", publicName: "iconColor", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, iconSize: { classPropertyName: "iconSize", publicName: "iconSize", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null }, indicator: { classPropertyName: "indicator", publicName: "indicator", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clicked: "clicked" }, host: { classAttribute: "rt-icon-button" }, ngImport: i0, template: "<button\n rtBlock=\"rt-icon-button\"\n qa-dataid=\"icon-button-control\"\n [rtTooltip]=\"tooltip()\"\n [rtMod]=\"bemMods()\"\n [type]=\"type()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-pressed]=\"active() ? 'true' : null\"\n [attr.tabindex]=\"tabIndex()\"\n (click)=\"onClick($event)\">\n @if (loading()) {\n <rt-icon rtElem=\"spinner\" name=\"spinner\" color=\"current\" [size]=\"resolvedIconSize()\" />\n } @else {\n <rt-icon rtElem=\"icon\" [color]=\"iconColor()\" [name]=\"icon()\" [size]=\"resolvedIconSize()\" />\n }\n @if (indicator()) {\n <span rtElem=\"indicator\" aria-hidden=\"true\"></span>\n }\n</button>\n", styles: ["@charset \"UTF-8\";rt-icon-button{display:inline-flex;--rt-icon-button-size: 36px}rt-icon-button .rt-icon-button{position:relative;display:inline-flex;width:var(--rt-icon-button-size);height:var(--rt-icon-button-size);align-items:center;justify-content:center;padding:0;border:0;background:transparent;color:var(--rt-icon-button-color, var(--rt-color-text-primary));cursor:pointer;transition:background-color var(--rt-duration-fast) ease}rt-icon-button .rt-icon-button--sm{--rt-icon-button-size: 28px}rt-icon-button .rt-icon-button--md{--rt-icon-button-size: 36px}rt-icon-button .rt-icon-button--lg{--rt-icon-button-size: 44px}rt-icon-button .rt-icon-button--xl{--rt-icon-button-size: 52px}rt-icon-button .rt-icon-button--2xl{--rt-icon-button-size: 60px}rt-icon-button .rt-icon-button--circle{border-radius:var(--rt-radius-full)}rt-icon-button .rt-icon-button--square{border-radius:var(--rt-radius-md)}rt-icon-button .rt-icon-button--ghost:hover:not(:disabled){background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button--ghost.rt-icon-button--active{background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button--primary{background-color:var(--rt-color-action-primary);color:var(--rt-color-action-on-primary)}rt-icon-button .rt-icon-button--primary:hover:not(:disabled){background-color:var(--rt-color-action-primary-hover)}rt-icon-button .rt-icon-button--secondary{background-color:var(--rt-color-bg-surface-subtle);color:var(--rt-color-text-primary)}rt-icon-button .rt-icon-button--secondary:hover:not(:disabled){background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button--danger{color:var(--rt-color-state-danger)}rt-icon-button .rt-icon-button--danger:hover:not(:disabled){background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button--danger.rt-icon-button--active{background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button--success{color:var(--rt-color-state-success)}rt-icon-button .rt-icon-button--success:hover:not(:disabled){background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button--success.rt-icon-button--active{background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button--warning{color:var(--rt-color-state-warning)}rt-icon-button .rt-icon-button--warning:hover:not(:disabled){background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button--warning.rt-icon-button--active{background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button:disabled{cursor:not-allowed;opacity:.5}rt-icon-button .rt-icon-button:focus-visible{box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:2px}rt-icon-button .rt-icon-button__spinner{--rt-icon-button-spin-duration: 1s;animation:rt-icon-button-spin var(--rt-icon-button-spin-duration) linear infinite}rt-icon-button .rt-icon-button__indicator{position:absolute;width:8px;height:8px;border-radius:var(--rt-radius-full);background:var(--rt-color-state-danger);inset-block-start:-2px;inset-inline-end:-2px;pointer-events:none}@keyframes rt-icon-button-spin{to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "component", type:
|
|
1073
1076
|
// standalone components / directives
|
|
1074
|
-
RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "directive", type: RtTooltipDirective, selector: "[rtTooltip]", inputs: ["rtTooltip", "rtTooltipPlacement"], exportAs: ["rtTooltip"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1077
|
+
RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "directive", type: RtTooltipDirective, selector: "[rtTooltip]", inputs: ["rtTooltip", "rtTooltipPlacement"], exportAs: ["rtTooltip"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1075
1078
|
}
|
|
1076
1079
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtIconButtonComponent, decorators: [{
|
|
1077
1080
|
type: Component,
|
|
1078
|
-
args: [{ selector: 'rt-icon-button', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
1081
|
+
args: [{ selector: 'rt-icon-button', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
1079
1082
|
// standalone components / directives
|
|
1080
1083
|
RtIconComponent,
|
|
1081
1084
|
RtTooltipDirective,
|
|
@@ -1084,7 +1087,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
1084
1087
|
ModDirective,
|
|
1085
1088
|
], host: {
|
|
1086
1089
|
class: BEM_BLOCK$1g,
|
|
1087
|
-
}, template: "<button\n rtBlock=\"rt-icon-button\"\n qa-dataid=\"icon-button-control\"\n [rtTooltip]=\"tooltip()\"\n [rtMod]=\"bemMods()\"\n [type]=\"type()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-pressed]=\"active() ? 'true' : null\"\n [attr.tabindex]=\"tabIndex()\"\n (click)=\"onClick($event)\">\n @if (loading()) {\n <rt-icon rtElem=\"spinner\" name=\"spinner\" color=\"current\" [size]=\"resolvedIconSize()\" />\n } @else {\n <rt-icon rtElem=\"icon\" [color]=\"iconColor()\" [name]=\"icon()\" [size]=\"resolvedIconSize()\" />\n }\n @if (indicator()) {\n <span rtElem=\"indicator\" aria-hidden=\"true\"></span>\n }\n</button>\n", styles: ["@charset \"UTF-8\"
|
|
1090
|
+
}, template: "<button\n rtBlock=\"rt-icon-button\"\n qa-dataid=\"icon-button-control\"\n [rtTooltip]=\"tooltip()\"\n [rtMod]=\"bemMods()\"\n [type]=\"type()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-pressed]=\"active() ? 'true' : null\"\n [attr.tabindex]=\"tabIndex()\"\n (click)=\"onClick($event)\">\n @if (loading()) {\n <rt-icon rtElem=\"spinner\" name=\"spinner\" color=\"current\" [size]=\"resolvedIconSize()\" />\n } @else {\n <rt-icon rtElem=\"icon\" [color]=\"iconColor()\" [name]=\"icon()\" [size]=\"resolvedIconSize()\" />\n }\n @if (indicator()) {\n <span rtElem=\"indicator\" aria-hidden=\"true\"></span>\n }\n</button>\n", styles: ["@charset \"UTF-8\";rt-icon-button{display:inline-flex;--rt-icon-button-size: 36px}rt-icon-button .rt-icon-button{position:relative;display:inline-flex;width:var(--rt-icon-button-size);height:var(--rt-icon-button-size);align-items:center;justify-content:center;padding:0;border:0;background:transparent;color:var(--rt-icon-button-color, var(--rt-color-text-primary));cursor:pointer;transition:background-color var(--rt-duration-fast) ease}rt-icon-button .rt-icon-button--sm{--rt-icon-button-size: 28px}rt-icon-button .rt-icon-button--md{--rt-icon-button-size: 36px}rt-icon-button .rt-icon-button--lg{--rt-icon-button-size: 44px}rt-icon-button .rt-icon-button--xl{--rt-icon-button-size: 52px}rt-icon-button .rt-icon-button--2xl{--rt-icon-button-size: 60px}rt-icon-button .rt-icon-button--circle{border-radius:var(--rt-radius-full)}rt-icon-button .rt-icon-button--square{border-radius:var(--rt-radius-md)}rt-icon-button .rt-icon-button--ghost:hover:not(:disabled){background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button--ghost.rt-icon-button--active{background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button--primary{background-color:var(--rt-color-action-primary);color:var(--rt-color-action-on-primary)}rt-icon-button .rt-icon-button--primary:hover:not(:disabled){background-color:var(--rt-color-action-primary-hover)}rt-icon-button .rt-icon-button--secondary{background-color:var(--rt-color-bg-surface-subtle);color:var(--rt-color-text-primary)}rt-icon-button .rt-icon-button--secondary:hover:not(:disabled){background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button--danger{color:var(--rt-color-state-danger)}rt-icon-button .rt-icon-button--danger:hover:not(:disabled){background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button--danger.rt-icon-button--active{background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button--success{color:var(--rt-color-state-success)}rt-icon-button .rt-icon-button--success:hover:not(:disabled){background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button--success.rt-icon-button--active{background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button--warning{color:var(--rt-color-state-warning)}rt-icon-button .rt-icon-button--warning:hover:not(:disabled){background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button--warning.rt-icon-button--active{background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button:disabled{cursor:not-allowed;opacity:.5}rt-icon-button .rt-icon-button:focus-visible{box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:2px}rt-icon-button .rt-icon-button__spinner{--rt-icon-button-spin-duration: 1s;animation:rt-icon-button-spin var(--rt-icon-button-spin-duration) linear infinite}rt-icon-button .rt-icon-button__indicator{position:absolute;width:8px;height:8px;border-radius:var(--rt-radius-full);background:var(--rt-color-state-danger);inset-block-start:-2px;inset-inline-end:-2px;pointer-events:none}@keyframes rt-icon-button-spin{to{transform:rotate(360deg)}}\n"] }]
|
|
1088
1091
|
}], propDecorators: { icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: true }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: true }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], iconColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconColor", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], iconSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconSize", required: false }] }], shape: [{ type: i0.Input, args: [{ isSignal: true, alias: "shape", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], tooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltip", required: false }] }], tabIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabIndex", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }], indicator: [{ type: i0.Input, args: [{ isSignal: true, alias: "indicator", required: false }] }], clicked: [{ type: i0.Output, args: ["clicked"] }] } });
|
|
1089
1092
|
|
|
1090
1093
|
const BEM_BLOCK$1f = 'rt-skeleton';
|
|
@@ -1120,7 +1123,13 @@ class RtSkeletonComponent {
|
|
|
1120
1123
|
...(ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []));
|
|
1121
1124
|
this.height = input(this.#sizeMap.sm, /* @ts-ignore */
|
|
1122
1125
|
...(ngDevMode ? [{ debugName: "height" }] : /* istanbul ignore next */ []));
|
|
1123
|
-
|
|
1126
|
+
/**
|
|
1127
|
+
* Скругление. `null` — «не задано»: прямоугольник берёт `xl`, квадрат —
|
|
1128
|
+
* `sm` (пилюля из квадрата не квадрат). Умолчанием нельзя было держать сам
|
|
1129
|
+
* `xl`: тогда явный `xl` неотличим от невыставленного, и квадрату
|
|
1130
|
+
* приходилось прибивать `sm` жёстко — вход у него молча пропадал.
|
|
1131
|
+
*/
|
|
1132
|
+
this.borderRadius = input(null, /* @ts-ignore */
|
|
1124
1133
|
...(ngDevMode ? [{ debugName: "borderRadius" }] : /* istanbul ignore next */ []));
|
|
1125
1134
|
this.animation = input(true, { ...(ngDevMode ? { debugName: "animation" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
1126
1135
|
}
|
|
@@ -1168,15 +1177,16 @@ class RtSkeletonComponent {
|
|
|
1168
1177
|
}
|
|
1169
1178
|
}
|
|
1170
1179
|
get hostBorderRadius() {
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
return this.#radiusMap.sm;
|
|
1176
|
-
case 'rectangle':
|
|
1177
|
-
default:
|
|
1178
|
-
return this.#radiusMap[this.borderRadius()];
|
|
1180
|
+
// Круг задаётся именно скруглением, поэтому вход к нему не применяется:
|
|
1181
|
+
// любое другое значение перестало бы быть кругом.
|
|
1182
|
+
if (this.shape() === 'circle') {
|
|
1183
|
+
return '50%';
|
|
1179
1184
|
}
|
|
1185
|
+
const requested = this.borderRadius();
|
|
1186
|
+
if (requested !== null) {
|
|
1187
|
+
return this.#radiusMap[requested];
|
|
1188
|
+
}
|
|
1189
|
+
return this.shape() === 'square' ? this.#radiusMap.sm : this.#radiusMap.xl;
|
|
1180
1190
|
}
|
|
1181
1191
|
#getSizeValue() {
|
|
1182
1192
|
return this.#sizeMap[this.size()];
|
|
@@ -1244,19 +1254,20 @@ class RtSkeletonWrapperComponent {
|
|
|
1244
1254
|
...(ngDevMode ? [{ debugName: "shape" }] : /* istanbul ignore next */ []));
|
|
1245
1255
|
this.size = input('md', /* @ts-ignore */
|
|
1246
1256
|
...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
1247
|
-
|
|
1257
|
+
/** Как у `rt-skeleton`: `null` — «по фигуре», а не «без скругления». */
|
|
1258
|
+
this.borderRadius = input(null, /* @ts-ignore */
|
|
1248
1259
|
...(ngDevMode ? [{ debugName: "borderRadius" }] : /* istanbul ignore next */ []));
|
|
1249
1260
|
this.animation = input(true, { ...(ngDevMode ? { debugName: "animation" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
1250
1261
|
this.isLoading = input(false, { ...(ngDevMode ? { debugName: "isLoading" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
1251
1262
|
}
|
|
1252
1263
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtSkeletonWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1253
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtSkeletonWrapperComponent, isStandalone: true, selector: "rt-skeleton-wrapper", inputs: { width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, borderRadius: { classPropertyName: "borderRadius", publicName: "borderRadius", isSignal: true, isRequired: false, transformFunction: null }, animation: { classPropertyName: "animation", publicName: "animation", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-skeleton-wrapper" }, ngImport: i0, template: "@if (isLoading()) {\n <rt-skeleton\n qa-dataid=\"skeleton-wrapper-placeholder\"\n [width]=\"width()\"\n [height]=\"height()\"\n [shape]=\"shape()\"\n [size]=\"size()\"\n [borderRadius]=\"borderRadius()\"\n [animation]=\"animation()\" />\n} @else {\n <ng-content />\n}\n", styles: ["
|
|
1264
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtSkeletonWrapperComponent, isStandalone: true, selector: "rt-skeleton-wrapper", inputs: { width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, borderRadius: { classPropertyName: "borderRadius", publicName: "borderRadius", isSignal: true, isRequired: false, transformFunction: null }, animation: { classPropertyName: "animation", publicName: "animation", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-skeleton-wrapper" }, ngImport: i0, template: "@if (isLoading()) {\n <rt-skeleton\n qa-dataid=\"skeleton-wrapper-placeholder\"\n [width]=\"width()\"\n [height]=\"height()\"\n [shape]=\"shape()\"\n [size]=\"size()\"\n [borderRadius]=\"borderRadius()\"\n [animation]=\"animation()\" />\n} @else {\n <ng-content />\n}\n", styles: ["@charset \"UTF-8\";.rt-skeleton-wrapper{display:inline-flex;width:100%}\n"], dependencies: [{ kind: "component", type: RtSkeletonComponent, selector: "rt-skeleton", inputs: ["shape", "size", "width", "height", "borderRadius", "animation"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1254
1265
|
}
|
|
1255
1266
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtSkeletonWrapperComponent, decorators: [{
|
|
1256
1267
|
type: Component,
|
|
1257
1268
|
args: [{ selector: 'rt-skeleton-wrapper', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [RtSkeletonComponent], host: {
|
|
1258
1269
|
class: BEM_BLOCK$1e,
|
|
1259
|
-
}, template: "@if (isLoading()) {\n <rt-skeleton\n qa-dataid=\"skeleton-wrapper-placeholder\"\n [width]=\"width()\"\n [height]=\"height()\"\n [shape]=\"shape()\"\n [size]=\"size()\"\n [borderRadius]=\"borderRadius()\"\n [animation]=\"animation()\" />\n} @else {\n <ng-content />\n}\n", styles: ["
|
|
1270
|
+
}, template: "@if (isLoading()) {\n <rt-skeleton\n qa-dataid=\"skeleton-wrapper-placeholder\"\n [width]=\"width()\"\n [height]=\"height()\"\n [shape]=\"shape()\"\n [size]=\"size()\"\n [borderRadius]=\"borderRadius()\"\n [animation]=\"animation()\" />\n} @else {\n <ng-content />\n}\n", styles: ["@charset \"UTF-8\";.rt-skeleton-wrapper{display:inline-flex;width:100%}\n"] }]
|
|
1260
1271
|
}], propDecorators: { width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], shape: [{ type: i0.Input, args: [{ isSignal: true, alias: "shape", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], borderRadius: [{ type: i0.Input, args: [{ isSignal: true, alias: "borderRadius", required: false }] }], animation: [{ type: i0.Input, args: [{ isSignal: true, alias: "animation", required: false }] }], isLoading: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLoading", required: false }] }] } });
|
|
1261
1272
|
|
|
1262
1273
|
/**
|
|
@@ -1426,13 +1437,13 @@ class RtTagComponent {
|
|
|
1426
1437
|
this.closed.emit(event);
|
|
1427
1438
|
}
|
|
1428
1439
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtTagComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1429
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtTagComponent, isStandalone: true, selector: "rt-tag", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, radius: { classPropertyName: "radius", publicName: "radius", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconEnd: { classPropertyName: "iconEnd", publicName: "iconEnd", isSignal: true, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, host: { classAttribute: "rt-tag" }, ngImport: i0, template: "<span\n rtBlock=\"rt-tag\"\n qa-dataid=\"tag\"\n [attr.data-severity]=\"severity()\"\n [rtMod]=\"{\n severity: severity(),\n shape: shape(),\n appearance: appearance(),\n radius: radius(),\n closable: closable(),\n }\">\n @if (icon(); as iconName) {\n <rt-icon rtElem=\"icon\" size=\"sm\" [name]=\"iconName\" />\n }\n <span rtElem=\"text\" qa-dataid=\"tag-text\">{{ value() }}</span>\n @if (iconEnd(); as iconEndName) {\n <rt-icon rtElem=\"icon-end\" size=\"sm\" [name]=\"iconEndName\" />\n }\n @if (closable()) {\n <rt-icon-button\n rtElem=\"close\"\n qa-dataid=\"tag-close\"\n icon=\"ico-close\"\n variant=\"ghost\"\n size=\"sm\"\n shape=\"circle\"\n [ariaLabel]=\"'rtKit.uiRemove' | transloco\"\n (clicked)=\"onClose($event)\" />\n }\n</span>\n", styles: ["@charset \"UTF-8\"
|
|
1440
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtTagComponent, isStandalone: true, selector: "rt-tag", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, radius: { classPropertyName: "radius", publicName: "radius", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconEnd: { classPropertyName: "iconEnd", publicName: "iconEnd", isSignal: true, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, host: { classAttribute: "rt-tag" }, ngImport: i0, template: "<span\n rtBlock=\"rt-tag\"\n qa-dataid=\"tag\"\n [attr.data-severity]=\"severity()\"\n [rtMod]=\"{\n severity: severity(),\n shape: shape(),\n appearance: appearance(),\n radius: radius(),\n closable: closable(),\n }\">\n @if (icon(); as iconName) {\n <rt-icon rtElem=\"icon\" size=\"sm\" [name]=\"iconName\" />\n }\n <span rtElem=\"text\" qa-dataid=\"tag-text\">{{ value() }}</span>\n @if (iconEnd(); as iconEndName) {\n <rt-icon rtElem=\"icon-end\" size=\"sm\" [name]=\"iconEndName\" />\n }\n @if (closable()) {\n <rt-icon-button\n rtElem=\"close\"\n qa-dataid=\"tag-close\"\n icon=\"ico-close\"\n variant=\"ghost\"\n size=\"sm\"\n shape=\"circle\"\n [ariaLabel]=\"'rtKit.uiRemove' | transloco\"\n (clicked)=\"onClose($event)\" />\n }\n</span>\n", styles: ["@charset \"UTF-8\";rt-tag{display:inline-flex}rt-tag .rt-tag{display:inline-flex;align-items:center;padding:var(--rt-space-1) var(--rt-space-2);border-radius:var(--rt-radius-md);background:var(--rt-neutral-100);color:var(--rt-neutral-700);font-size:var(--rt-text-sm);gap:var(--rt-space-1);line-height:var(--rt-leading-tight)}rt-tag .rt-tag--shape--pill{border-radius:var(--rt-radius-full)}rt-tag .rt-tag--shape--square{border-radius:var(--rt-radius-sm)}rt-tag .rt-tag--radius--none{border-radius:var(--rt-radius-none)}rt-tag .rt-tag--radius--sm{border-radius:var(--rt-radius-sm)}rt-tag .rt-tag--radius--md{border-radius:var(--rt-radius-md)}rt-tag .rt-tag--radius--lg{border-radius:var(--rt-radius-lg)}rt-tag .rt-tag--radius--full{border-radius:var(--rt-radius-full)}rt-tag .rt-tag--severity--info{background:var(--rt-color-state-info-bg);color:var(--rt-color-state-info)}rt-tag .rt-tag--severity--success{background:var(--rt-color-state-success-bg);color:var(--rt-color-state-success)}rt-tag .rt-tag--severity--warning{background:var(--rt-color-state-warning-bg);color:var(--rt-color-state-warning)}rt-tag .rt-tag--severity--danger{background:var(--rt-color-state-danger-bg);color:var(--rt-color-state-danger)}rt-tag .rt-tag--severity--secondary,rt-tag .rt-tag--severity--neutral{background:var(--rt-color-bg-subtle);color:var(--rt-color-text-primary)}rt-tag .rt-tag--appearance--outlined{border:var(--rt-border-width-thin) solid currentcolor;background:transparent}rt-tag .rt-tag__icon{flex-shrink:0}rt-tag .rt-tag__icon-end{flex-shrink:0}rt-tag .rt-tag__text{line-height:var(--rt-leading-none)}rt-tag .rt-tag__close{margin-inline-start:var(--rt-space-0-5)}\n"], dependencies: [{ kind: "component", type:
|
|
1430
1441
|
// standalone components / directives
|
|
1431
|
-
RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "component", type: RtIconButtonComponent, selector: "rt-icon-button", inputs: ["icon", "ariaLabel", "variant", "iconColor", "size", "iconSize", "shape", "type", "tooltip", "tabIndex", "loading", "disabled", "active", "indicator"], outputs: ["clicked"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1442
|
+
RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "component", type: RtIconButtonComponent, selector: "rt-icon-button", inputs: ["icon", "ariaLabel", "variant", "iconColor", "size", "iconSize", "shape", "type", "tooltip", "tabIndex", "loading", "disabled", "active", "indicator"], outputs: ["clicked"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1432
1443
|
}
|
|
1433
1444
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtTagComponent, decorators: [{
|
|
1434
1445
|
type: Component,
|
|
1435
|
-
args: [{ selector: 'rt-tag', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
1446
|
+
args: [{ selector: 'rt-tag', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
1436
1447
|
// standalone components / directives
|
|
1437
1448
|
RtIconComponent,
|
|
1438
1449
|
RtIconButtonComponent,
|
|
@@ -1442,7 +1453,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
1442
1453
|
TranslocoPipe,
|
|
1443
1454
|
], host: {
|
|
1444
1455
|
class: BEM_BLOCK$1d,
|
|
1445
|
-
}, template: "<span\n rtBlock=\"rt-tag\"\n qa-dataid=\"tag\"\n [attr.data-severity]=\"severity()\"\n [rtMod]=\"{\n severity: severity(),\n shape: shape(),\n appearance: appearance(),\n radius: radius(),\n closable: closable(),\n }\">\n @if (icon(); as iconName) {\n <rt-icon rtElem=\"icon\" size=\"sm\" [name]=\"iconName\" />\n }\n <span rtElem=\"text\" qa-dataid=\"tag-text\">{{ value() }}</span>\n @if (iconEnd(); as iconEndName) {\n <rt-icon rtElem=\"icon-end\" size=\"sm\" [name]=\"iconEndName\" />\n }\n @if (closable()) {\n <rt-icon-button\n rtElem=\"close\"\n qa-dataid=\"tag-close\"\n icon=\"ico-close\"\n variant=\"ghost\"\n size=\"sm\"\n shape=\"circle\"\n [ariaLabel]=\"'rtKit.uiRemove' | transloco\"\n (clicked)=\"onClose($event)\" />\n }\n</span>\n", styles: ["@charset \"UTF-8\"
|
|
1456
|
+
}, template: "<span\n rtBlock=\"rt-tag\"\n qa-dataid=\"tag\"\n [attr.data-severity]=\"severity()\"\n [rtMod]=\"{\n severity: severity(),\n shape: shape(),\n appearance: appearance(),\n radius: radius(),\n closable: closable(),\n }\">\n @if (icon(); as iconName) {\n <rt-icon rtElem=\"icon\" size=\"sm\" [name]=\"iconName\" />\n }\n <span rtElem=\"text\" qa-dataid=\"tag-text\">{{ value() }}</span>\n @if (iconEnd(); as iconEndName) {\n <rt-icon rtElem=\"icon-end\" size=\"sm\" [name]=\"iconEndName\" />\n }\n @if (closable()) {\n <rt-icon-button\n rtElem=\"close\"\n qa-dataid=\"tag-close\"\n icon=\"ico-close\"\n variant=\"ghost\"\n size=\"sm\"\n shape=\"circle\"\n [ariaLabel]=\"'rtKit.uiRemove' | transloco\"\n (clicked)=\"onClose($event)\" />\n }\n</span>\n", styles: ["@charset \"UTF-8\";rt-tag{display:inline-flex}rt-tag .rt-tag{display:inline-flex;align-items:center;padding:var(--rt-space-1) var(--rt-space-2);border-radius:var(--rt-radius-md);background:var(--rt-neutral-100);color:var(--rt-neutral-700);font-size:var(--rt-text-sm);gap:var(--rt-space-1);line-height:var(--rt-leading-tight)}rt-tag .rt-tag--shape--pill{border-radius:var(--rt-radius-full)}rt-tag .rt-tag--shape--square{border-radius:var(--rt-radius-sm)}rt-tag .rt-tag--radius--none{border-radius:var(--rt-radius-none)}rt-tag .rt-tag--radius--sm{border-radius:var(--rt-radius-sm)}rt-tag .rt-tag--radius--md{border-radius:var(--rt-radius-md)}rt-tag .rt-tag--radius--lg{border-radius:var(--rt-radius-lg)}rt-tag .rt-tag--radius--full{border-radius:var(--rt-radius-full)}rt-tag .rt-tag--severity--info{background:var(--rt-color-state-info-bg);color:var(--rt-color-state-info)}rt-tag .rt-tag--severity--success{background:var(--rt-color-state-success-bg);color:var(--rt-color-state-success)}rt-tag .rt-tag--severity--warning{background:var(--rt-color-state-warning-bg);color:var(--rt-color-state-warning)}rt-tag .rt-tag--severity--danger{background:var(--rt-color-state-danger-bg);color:var(--rt-color-state-danger)}rt-tag .rt-tag--severity--secondary,rt-tag .rt-tag--severity--neutral{background:var(--rt-color-bg-subtle);color:var(--rt-color-text-primary)}rt-tag .rt-tag--appearance--outlined{border:var(--rt-border-width-thin) solid currentcolor;background:transparent}rt-tag .rt-tag__icon{flex-shrink:0}rt-tag .rt-tag__icon-end{flex-shrink:0}rt-tag .rt-tag__text{line-height:var(--rt-leading-none)}rt-tag .rt-tag__close{margin-inline-start:var(--rt-space-0-5)}\n"] }]
|
|
1446
1457
|
}], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], severity: [{ type: i0.Input, args: [{ isSignal: true, alias: "severity", required: false }] }], shape: [{ type: i0.Input, args: [{ isSignal: true, alias: "shape", required: false }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], radius: [{ type: i0.Input, args: [{ isSignal: true, alias: "radius", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], iconEnd: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconEnd", required: false }] }], closable: [{ type: i0.Input, args: [{ isSignal: true, alias: "closable", required: false }] }], closed: [{ type: i0.Output, args: ["closed"] }] } });
|
|
1447
1458
|
|
|
1448
1459
|
const BEM_BLOCK$1c = 'rt-aside-header';
|
|
@@ -1609,7 +1620,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
1609
1620
|
* - self-injected `NgControl` + ручная привязка `valueAccessor` (без
|
|
1610
1621
|
* `NG_VALUE_ACCESSOR` provider — иначе NG0200 cycle при self-reference),
|
|
1611
1622
|
* что даёт доступ к `control.invalid/touched` для авто-подсветки ошибки;
|
|
1612
|
-
* - сигнал значения `value`, состояния `isDisabled`/`isInvalid
|
|
1623
|
+
* - сигнал значения `value`, состояния `isDisabled`/`isInvalid` (отключение
|
|
1624
|
+
* складывается из входа `disabled` и слова формы — см. `isDisabled`);
|
|
1613
1625
|
* - общие инпуты `size`/`disabled`/`controlId`/`ariaLabel`/`clearable`;
|
|
1614
1626
|
* - оркестрацию очистки (`clear`) через абстрактные хуки конкретного поля.
|
|
1615
1627
|
*
|
|
@@ -1628,6 +1640,8 @@ class RtFormControlBase {
|
|
|
1628
1640
|
#readonlyAssigned;
|
|
1629
1641
|
#errors;
|
|
1630
1642
|
#required;
|
|
1643
|
+
/** Отключение, назначенное формой через CVA (`setDisabledState`). */
|
|
1644
|
+
#disabledByForm;
|
|
1631
1645
|
constructor() {
|
|
1632
1646
|
this.#ngControl = inject(NgControl, { self: true, optional: true });
|
|
1633
1647
|
this.#destroyRef = inject(DestroyRef);
|
|
@@ -1643,7 +1657,17 @@ class RtFormControlBase {
|
|
|
1643
1657
|
...(ngDevMode ? [{ debugName: "#errors" }] : /* istanbul ignore next */ []));
|
|
1644
1658
|
this.#required = signal(false, /* @ts-ignore */
|
|
1645
1659
|
...(ngDevMode ? [{ debugName: "#required" }] : /* istanbul ignore next */ []));
|
|
1646
|
-
|
|
1660
|
+
/** Отключение, назначенное формой через CVA (`setDisabledState`). */
|
|
1661
|
+
this.#disabledByForm = signal(false, /* @ts-ignore */
|
|
1662
|
+
...(ngDevMode ? [{ debugName: "#disabledByForm" }] : /* istanbul ignore next */ []));
|
|
1663
|
+
/**
|
|
1664
|
+
* Отключение: вход и форма — два независимых источника, поле отключено,
|
|
1665
|
+
* если так сказал любой из них. Сводить их в один signal нельзя: форма
|
|
1666
|
+
* зовёт `setDisabledState` при связывании контрола, то есть раньше, чем
|
|
1667
|
+
* поле впервые обновит своё вью, и мирроринг входа затирал бы её слово —
|
|
1668
|
+
* контрол, созданный отключённым, оказывался бы редактируемым.
|
|
1669
|
+
*/
|
|
1670
|
+
this.isDisabled = computed(() => this.disabled() || this.#disabledByForm(), /* @ts-ignore */
|
|
1647
1671
|
...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
|
|
1648
1672
|
this.isInvalid = signal(false, /* @ts-ignore */
|
|
1649
1673
|
...(ngDevMode ? [{ debugName: "isInvalid" }] : /* istanbul ignore next */ []));
|
|
@@ -1684,10 +1708,6 @@ class RtFormControlBase {
|
|
|
1684
1708
|
if (this.#ngControl !== null) {
|
|
1685
1709
|
this.#ngControl.valueAccessor = this;
|
|
1686
1710
|
}
|
|
1687
|
-
// Signal-input `disabled` → внутренний isDisabled (CVA пишет туда же).
|
|
1688
|
-
effect(() => {
|
|
1689
|
-
this.isDisabled.set(this.disabled());
|
|
1690
|
-
});
|
|
1691
1711
|
}
|
|
1692
1712
|
ngOnInit() {
|
|
1693
1713
|
const control = this.#ngControl?.control ?? null;
|
|
@@ -1711,7 +1731,7 @@ class RtFormControlBase {
|
|
|
1711
1731
|
this.#onTouched = fn;
|
|
1712
1732
|
}
|
|
1713
1733
|
setDisabledState(isDisabled) {
|
|
1714
|
-
this.
|
|
1734
|
+
this.#disabledByForm.set(isDisabled);
|
|
1715
1735
|
}
|
|
1716
1736
|
/** Назначить авто-id (rt-field), когда у контрола нет явного controlId. */
|
|
1717
1737
|
assignControlId(id) {
|
|
@@ -2258,20 +2278,20 @@ class RtBarListComponent {
|
|
|
2258
2278
|
}
|
|
2259
2279
|
#t_uiNoData;
|
|
2260
2280
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtBarListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2261
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtBarListComponent, isStandalone: true, selector: "rt-bar-list", inputs: { rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: true, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, emptyText: { classPropertyName: "emptyText", publicName: "emptyText", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-bar-list" }, ngImport: i0, template: "<section rtBlock=\"rt-bar-list\" qa-dataid=\"bar-list\">\n @if (title()) {\n <h3 rtElem=\"title\" qa-dataid=\"bar-list-title\">{{ title() }}</h3>\n }\n\n @if (rows().length > 0) {\n <ul rtElem=\"rows\" qa-dataid=\"bar-list-rows\">\n @for (row of rows(); track row.id) {\n <li rtElem=\"row\" qa-dataid=\"bar-list-row\" [attr.data-id]=\"row.id\">\n <span rtElem=\"row-head\">\n <span rtElem=\"row-title\" qa-dataid=\"bar-list-row-title\">{{ row.title }}</span>\n <span rtElem=\"row-value\" qa-dataid=\"bar-list-row-value\">{{ row.value }}</span>\n </span>\n @if (row.meta) {\n <span rtElem=\"row-meta\" qa-dataid=\"bar-list-row-meta\">{{ row.meta }}</span>\n }\n <span rtElem=\"track\">\n <span rtElem=\"fill\" qa-dataid=\"bar-list-row-fill\" [style.width.%]=\"row.sharePercent\"></span>\n </span>\n </li>\n }\n </ul>\n } @else {\n <div rtElem=\"empty\" qa-dataid=\"bar-list-empty\">\n <rt-icon name=\"warning\" size=\"md\" color=\"muted\" />\n <p rtElem=\"empty-text\" qa-dataid=\"bar-list-empty-text\">{{ emptyMessage() }}</p>\n </div>\n }\n</section>\n", styles: ["@charset \"UTF-8\"
|
|
2281
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtBarListComponent, isStandalone: true, selector: "rt-bar-list", inputs: { rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: true, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, emptyText: { classPropertyName: "emptyText", publicName: "emptyText", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-bar-list" }, ngImport: i0, template: "<section rtBlock=\"rt-bar-list\" qa-dataid=\"bar-list\">\n @if (title()) {\n <h3 rtElem=\"title\" qa-dataid=\"bar-list-title\">{{ title() }}</h3>\n }\n\n @if (rows().length > 0) {\n <ul rtElem=\"rows\" qa-dataid=\"bar-list-rows\">\n @for (row of rows(); track row.id) {\n <li rtElem=\"row\" qa-dataid=\"bar-list-row\" [attr.data-id]=\"row.id\">\n <span rtElem=\"row-head\">\n <span rtElem=\"row-title\" qa-dataid=\"bar-list-row-title\">{{ row.title }}</span>\n <span rtElem=\"row-value\" qa-dataid=\"bar-list-row-value\">{{ row.value }}</span>\n </span>\n @if (row.meta) {\n <span rtElem=\"row-meta\" qa-dataid=\"bar-list-row-meta\">{{ row.meta }}</span>\n }\n <span rtElem=\"track\">\n <span rtElem=\"fill\" qa-dataid=\"bar-list-row-fill\" [style.width.%]=\"row.sharePercent\"></span>\n </span>\n </li>\n }\n </ul>\n } @else {\n <div rtElem=\"empty\" qa-dataid=\"bar-list-empty\">\n <rt-icon name=\"warning\" size=\"md\" color=\"muted\" />\n <p rtElem=\"empty-text\" qa-dataid=\"bar-list-empty-text\">{{ emptyMessage() }}</p>\n </div>\n }\n</section>\n", styles: ["@charset \"UTF-8\";rt-bar-list{display:block}rt-bar-list .rt-bar-list{display:flex;flex-direction:column;gap:var(--rt-space-2)}rt-bar-list .rt-bar-list__title{margin:0;color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-semibold)}rt-bar-list .rt-bar-list__rows{display:flex;flex-direction:column;padding:0;margin:0;gap:var(--rt-space-5);list-style:none}rt-bar-list .rt-bar-list__row{display:flex;min-width:0;flex-direction:column;gap:var(--rt-space-1-5)}rt-bar-list .rt-bar-list__row-head{display:flex;align-items:baseline;justify-content:space-between;font-size:var(--rt-text-md);font-weight:var(--rt-font-weight-semibold);gap:var(--rt-space-3);line-height:var(--rt-leading-tight)}rt-bar-list .rt-bar-list__row-title{overflow:hidden;color:var(--rt-color-text-primary);text-overflow:ellipsis;white-space:nowrap}rt-bar-list .rt-bar-list__row-value{flex:0 0 auto;color:var(--rt-color-text-primary)}rt-bar-list .rt-bar-list__row-meta{color:var(--rt-color-text-muted);font-size:var(--rt-text-xs);line-height:var(--rt-leading-none)}rt-bar-list .rt-bar-list__track{display:block;height:6px;border-radius:var(--rt-radius-sm);background:var(--rt-color-bg-surface-subtle)}rt-bar-list .rt-bar-list__fill{display:block;min-width:2px;height:100%;border-radius:var(--rt-radius-sm);background:var(--rt-color-action-primary)}rt-bar-list .rt-bar-list__empty{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;padding:var(--rt-space-lg) 0;gap:var(--rt-space-2-5)}rt-bar-list .rt-bar-list__empty-text{margin:0;color:var(--rt-color-text-muted);font-size:var(--rt-text-sm)}\n"], dependencies: [{ kind: "component", type:
|
|
2262
2282
|
// standalone components / directives
|
|
2263
|
-
RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2283
|
+
RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2264
2284
|
}
|
|
2265
2285
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtBarListComponent, decorators: [{
|
|
2266
2286
|
type: Component,
|
|
2267
|
-
args: [{ selector: 'rt-bar-list', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
2287
|
+
args: [{ selector: 'rt-bar-list', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
2268
2288
|
// standalone components / directives
|
|
2269
2289
|
RtIconComponent,
|
|
2270
2290
|
BlockDirective,
|
|
2271
2291
|
ElemDirective,
|
|
2272
2292
|
], host: {
|
|
2273
2293
|
class: BEM_BLOCK$18,
|
|
2274
|
-
}, template: "<section rtBlock=\"rt-bar-list\" qa-dataid=\"bar-list\">\n @if (title()) {\n <h3 rtElem=\"title\" qa-dataid=\"bar-list-title\">{{ title() }}</h3>\n }\n\n @if (rows().length > 0) {\n <ul rtElem=\"rows\" qa-dataid=\"bar-list-rows\">\n @for (row of rows(); track row.id) {\n <li rtElem=\"row\" qa-dataid=\"bar-list-row\" [attr.data-id]=\"row.id\">\n <span rtElem=\"row-head\">\n <span rtElem=\"row-title\" qa-dataid=\"bar-list-row-title\">{{ row.title }}</span>\n <span rtElem=\"row-value\" qa-dataid=\"bar-list-row-value\">{{ row.value }}</span>\n </span>\n @if (row.meta) {\n <span rtElem=\"row-meta\" qa-dataid=\"bar-list-row-meta\">{{ row.meta }}</span>\n }\n <span rtElem=\"track\">\n <span rtElem=\"fill\" qa-dataid=\"bar-list-row-fill\" [style.width.%]=\"row.sharePercent\"></span>\n </span>\n </li>\n }\n </ul>\n } @else {\n <div rtElem=\"empty\" qa-dataid=\"bar-list-empty\">\n <rt-icon name=\"warning\" size=\"md\" color=\"muted\" />\n <p rtElem=\"empty-text\" qa-dataid=\"bar-list-empty-text\">{{ emptyMessage() }}</p>\n </div>\n }\n</section>\n", styles: ["@charset \"UTF-8\"
|
|
2294
|
+
}, template: "<section rtBlock=\"rt-bar-list\" qa-dataid=\"bar-list\">\n @if (title()) {\n <h3 rtElem=\"title\" qa-dataid=\"bar-list-title\">{{ title() }}</h3>\n }\n\n @if (rows().length > 0) {\n <ul rtElem=\"rows\" qa-dataid=\"bar-list-rows\">\n @for (row of rows(); track row.id) {\n <li rtElem=\"row\" qa-dataid=\"bar-list-row\" [attr.data-id]=\"row.id\">\n <span rtElem=\"row-head\">\n <span rtElem=\"row-title\" qa-dataid=\"bar-list-row-title\">{{ row.title }}</span>\n <span rtElem=\"row-value\" qa-dataid=\"bar-list-row-value\">{{ row.value }}</span>\n </span>\n @if (row.meta) {\n <span rtElem=\"row-meta\" qa-dataid=\"bar-list-row-meta\">{{ row.meta }}</span>\n }\n <span rtElem=\"track\">\n <span rtElem=\"fill\" qa-dataid=\"bar-list-row-fill\" [style.width.%]=\"row.sharePercent\"></span>\n </span>\n </li>\n }\n </ul>\n } @else {\n <div rtElem=\"empty\" qa-dataid=\"bar-list-empty\">\n <rt-icon name=\"warning\" size=\"md\" color=\"muted\" />\n <p rtElem=\"empty-text\" qa-dataid=\"bar-list-empty-text\">{{ emptyMessage() }}</p>\n </div>\n }\n</section>\n", styles: ["@charset \"UTF-8\";rt-bar-list{display:block}rt-bar-list .rt-bar-list{display:flex;flex-direction:column;gap:var(--rt-space-2)}rt-bar-list .rt-bar-list__title{margin:0;color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-semibold)}rt-bar-list .rt-bar-list__rows{display:flex;flex-direction:column;padding:0;margin:0;gap:var(--rt-space-5);list-style:none}rt-bar-list .rt-bar-list__row{display:flex;min-width:0;flex-direction:column;gap:var(--rt-space-1-5)}rt-bar-list .rt-bar-list__row-head{display:flex;align-items:baseline;justify-content:space-between;font-size:var(--rt-text-md);font-weight:var(--rt-font-weight-semibold);gap:var(--rt-space-3);line-height:var(--rt-leading-tight)}rt-bar-list .rt-bar-list__row-title{overflow:hidden;color:var(--rt-color-text-primary);text-overflow:ellipsis;white-space:nowrap}rt-bar-list .rt-bar-list__row-value{flex:0 0 auto;color:var(--rt-color-text-primary)}rt-bar-list .rt-bar-list__row-meta{color:var(--rt-color-text-muted);font-size:var(--rt-text-xs);line-height:var(--rt-leading-none)}rt-bar-list .rt-bar-list__track{display:block;height:6px;border-radius:var(--rt-radius-sm);background:var(--rt-color-bg-surface-subtle)}rt-bar-list .rt-bar-list__fill{display:block;min-width:2px;height:100%;border-radius:var(--rt-radius-sm);background:var(--rt-color-action-primary)}rt-bar-list .rt-bar-list__empty{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;padding:var(--rt-space-lg) 0;gap:var(--rt-space-2-5)}rt-bar-list .rt-bar-list__empty-text{margin:0;color:var(--rt-color-text-muted);font-size:var(--rt-text-sm)}\n"] }]
|
|
2275
2295
|
}], propDecorators: { rows: [{ type: i0.Input, args: [{ isSignal: true, alias: "rows", required: true }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], emptyText: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyText", required: false }] }] } });
|
|
2276
2296
|
|
|
2277
2297
|
const DRAG_DISMISS_THRESHOLD_PX = 80;
|
|
@@ -2324,15 +2344,15 @@ class RtBottomSheetComponent {
|
|
|
2324
2344
|
this.dragDeltaY.set(0);
|
|
2325
2345
|
}
|
|
2326
2346
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtBottomSheetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2327
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.5", type: RtBottomSheetComponent, isStandalone: true, selector: "rt-bottom-sheet", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { openChange: "openChange" }, host: { properties: { "class.rt-bottom-sheet--open": "open()" }, classAttribute: "rt-bottom-sheet" }, ngImport: i0, template: "<ng-container rtBlock=\"rt-bottom-sheet\">\n <button\n type=\"button\"\n rtElem=\"backdrop\"\n qa-dataid=\"bottom-sheet-backdrop\"\n [attr.aria-label]=\"'rtKit.bottomSheetClose' | transloco\"\n (click)=\"dismiss()\"></button>\n <div\n rtElem=\"panel\"\n qa-dataid=\"bottom-sheet-panel\"\n role=\"dialog\"\n aria-modal=\"true\"\n [rtMod]=\"{ dragging: dragging() }\"\n [style.transform]=\"dragging() ? 'translateY(' + dragDeltaY() + 'px)' : null\">\n <div rtElem=\"handle\" qa-dataid=\"bottom-sheet-handle\" (pointerdown)=\"onDragStart($event)\"></div>\n <div rtElem=\"header\" qa-dataid=\"bottom-sheet-header\">\n <ng-content select=\"[sheetHeader]\" />\n </div>\n <ng-content />\n </div>\n</ng-container>\n", styles: ["
|
|
2347
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.5", type: RtBottomSheetComponent, isStandalone: true, selector: "rt-bottom-sheet", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { openChange: "openChange" }, host: { properties: { "class.rt-bottom-sheet--open": "open()", "attr.inert": "open() ? null : \"\"" }, classAttribute: "rt-bottom-sheet" }, ngImport: i0, template: "<ng-container rtBlock=\"rt-bottom-sheet\">\n <button\n type=\"button\"\n rtElem=\"backdrop\"\n qa-dataid=\"bottom-sheet-backdrop\"\n [attr.aria-label]=\"'rtKit.bottomSheetClose' | transloco\"\n (click)=\"dismiss()\"></button>\n <div\n rtElem=\"panel\"\n qa-dataid=\"bottom-sheet-panel\"\n role=\"dialog\"\n aria-modal=\"true\"\n [rtMod]=\"{ dragging: dragging() }\"\n [style.transform]=\"dragging() ? 'translateY(' + dragDeltaY() + 'px)' : null\">\n <div rtElem=\"handle\" qa-dataid=\"bottom-sheet-handle\" (pointerdown)=\"onDragStart($event)\"></div>\n <div rtElem=\"header\" qa-dataid=\"bottom-sheet-header\">\n <ng-content select=\"[sheetHeader]\" />\n </div>\n <ng-content />\n </div>\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-bottom-sheet{position:fixed;z-index:1000;inset:0;pointer-events:none}.rt-bottom-sheet__backdrop{position:absolute;padding:0;border:none;background:var(--rt-overlay-black-50);cursor:pointer;inset:0;opacity:0;transition:opacity var(--rt-duration-base) ease}.rt-bottom-sheet__panel{position:absolute;right:0;bottom:0;left:0;display:flex;max-height:80vh;flex-direction:column;border-radius:var(--rt-radius-2xl) var(--rt-radius-2xl) 0 0;background:var(--rt-color-bg-surface);box-shadow:var(--rt-shadow-card-soft);transform:translateY(100%);transition:transform var(--rt-duration-base) ease}.rt-bottom-sheet__panel--dragging{transition:none}.rt-bottom-sheet__handle{width:40px;height:4px;align-self:center;border-radius:var(--rt-radius-xs);margin:var(--rt-space-3) 0;background:var(--rt-color-border-default);cursor:grab;touch-action:none}.rt-bottom-sheet__header{display:flex;justify-content:center;padding:0 var(--rt-space-5) var(--rt-space-3);color:var(--rt-color-text-primary);font-weight:var(--rt-font-weight-semibold)}.rt-bottom-sheet--open{pointer-events:auto}.rt-bottom-sheet--open .rt-bottom-sheet__backdrop{opacity:1}.rt-bottom-sheet--open .rt-bottom-sheet__panel{transform:translateY(0)}\n"], dependencies: [{ kind: "directive", type:
|
|
2328
2348
|
// rt-tools
|
|
2329
2349
|
BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }, { kind: "pipe", type:
|
|
2330
2350
|
// transloco
|
|
2331
|
-
TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2351
|
+
TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2332
2352
|
}
|
|
2333
2353
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtBottomSheetComponent, decorators: [{
|
|
2334
2354
|
type: Component,
|
|
2335
|
-
args: [{ selector: 'rt-bottom-sheet', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
2355
|
+
args: [{ selector: 'rt-bottom-sheet', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
2336
2356
|
// rt-tools
|
|
2337
2357
|
BlockDirective,
|
|
2338
2358
|
ElemDirective,
|
|
@@ -2342,10 +2362,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
2342
2362
|
], host: {
|
|
2343
2363
|
class: BEM_BLOCK$17,
|
|
2344
2364
|
'[class.rt-bottom-sheet--open]': 'open()',
|
|
2345
|
-
|
|
2365
|
+
// Закрытый лист остаётся в разметке ради анимации, и спрятан он только
|
|
2366
|
+
// стилями — а `opacity`/`pointer-events` не убирают узел ни из порядка
|
|
2367
|
+
// табуляции, ни из дерева доступности. Без `inert` страница с закрытым
|
|
2368
|
+
// листом держала бы в табуляции невидимую кнопку «Закрыть», а
|
|
2369
|
+
// скринридер объявлял бы модальный диалог, которого не видно.
|
|
2370
|
+
'[attr.inert]': 'open() ? null : ""',
|
|
2371
|
+
}, template: "<ng-container rtBlock=\"rt-bottom-sheet\">\n <button\n type=\"button\"\n rtElem=\"backdrop\"\n qa-dataid=\"bottom-sheet-backdrop\"\n [attr.aria-label]=\"'rtKit.bottomSheetClose' | transloco\"\n (click)=\"dismiss()\"></button>\n <div\n rtElem=\"panel\"\n qa-dataid=\"bottom-sheet-panel\"\n role=\"dialog\"\n aria-modal=\"true\"\n [rtMod]=\"{ dragging: dragging() }\"\n [style.transform]=\"dragging() ? 'translateY(' + dragDeltaY() + 'px)' : null\">\n <div rtElem=\"handle\" qa-dataid=\"bottom-sheet-handle\" (pointerdown)=\"onDragStart($event)\"></div>\n <div rtElem=\"header\" qa-dataid=\"bottom-sheet-header\">\n <ng-content select=\"[sheetHeader]\" />\n </div>\n <ng-content />\n </div>\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-bottom-sheet{position:fixed;z-index:1000;inset:0;pointer-events:none}.rt-bottom-sheet__backdrop{position:absolute;padding:0;border:none;background:var(--rt-overlay-black-50);cursor:pointer;inset:0;opacity:0;transition:opacity var(--rt-duration-base) ease}.rt-bottom-sheet__panel{position:absolute;right:0;bottom:0;left:0;display:flex;max-height:80vh;flex-direction:column;border-radius:var(--rt-radius-2xl) var(--rt-radius-2xl) 0 0;background:var(--rt-color-bg-surface);box-shadow:var(--rt-shadow-card-soft);transform:translateY(100%);transition:transform var(--rt-duration-base) ease}.rt-bottom-sheet__panel--dragging{transition:none}.rt-bottom-sheet__handle{width:40px;height:4px;align-self:center;border-radius:var(--rt-radius-xs);margin:var(--rt-space-3) 0;background:var(--rt-color-border-default);cursor:grab;touch-action:none}.rt-bottom-sheet__header{display:flex;justify-content:center;padding:0 var(--rt-space-5) var(--rt-space-3);color:var(--rt-color-text-primary);font-weight:var(--rt-font-weight-semibold)}.rt-bottom-sheet--open{pointer-events:auto}.rt-bottom-sheet--open .rt-bottom-sheet__backdrop{opacity:1}.rt-bottom-sheet--open .rt-bottom-sheet__panel{transform:translateY(0)}\n"] }]
|
|
2346
2372
|
}], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: true }] }], openChange: [{ type: i0.Output, args: ["openChange"] }] } });
|
|
2347
2373
|
|
|
2348
2374
|
const BEM_BLOCK$16 = 'rt-button';
|
|
2375
|
+
/** Длительность затухания спиннера при выходе из загрузки. */
|
|
2376
|
+
const LOADING_FADE_OUT_MS = 300;
|
|
2377
|
+
/** Запас поверх затухания, после которого подпись возвращается без анимации. */
|
|
2378
|
+
const LOADING_FADE_OUT_BUFFER_MS = 50;
|
|
2349
2379
|
/**
|
|
2350
2380
|
* Директива стилизованной кнопки. Применяется к `<button>` или `<a>`
|
|
2351
2381
|
* (для ссылок-кнопок с `routerLink`/`href`).
|
|
@@ -2451,17 +2481,32 @@ class RtButtonDirective {
|
|
|
2451
2481
|
}
|
|
2452
2482
|
#transitionFromLoading(button) {
|
|
2453
2483
|
const spinnerEl = this.#spinnerEl;
|
|
2454
|
-
if (spinnerEl) {
|
|
2455
|
-
|
|
2456
|
-
|
|
2457
|
-
this.#clearContent(button);
|
|
2458
|
-
this.#renderIconAndLabel(button);
|
|
2459
|
-
}, { once: true });
|
|
2460
|
-
}
|
|
2461
|
-
else {
|
|
2462
|
-
this.#clearContent(button);
|
|
2463
|
-
this.#renderIconAndLabel(button);
|
|
2484
|
+
if (spinnerEl === null) {
|
|
2485
|
+
this.#restoreContent(button);
|
|
2486
|
+
return;
|
|
2464
2487
|
}
|
|
2488
|
+
spinnerEl.style.animation = `rt-button-fade-out ${LOADING_FADE_OUT_MS}ms ease-out forwards`;
|
|
2489
|
+
// settled-гард делает animationend и страховочный таймаут взаимно
|
|
2490
|
+
// идемпотентными — сработает и снимет listener только то, что раньше.
|
|
2491
|
+
// Без таймаута подпись возвращалась бы только по анимации, а она не
|
|
2492
|
+
// идёт, пока кнопка спрятана (свёрнутая панель, неактивная вкладка):
|
|
2493
|
+
// выход из загрузки не наступал никогда, и на кнопке навсегда
|
|
2494
|
+
// оставался голый спиннер.
|
|
2495
|
+
let settled = false;
|
|
2496
|
+
const finish = () => {
|
|
2497
|
+
if (settled) {
|
|
2498
|
+
return;
|
|
2499
|
+
}
|
|
2500
|
+
settled = true;
|
|
2501
|
+
spinnerEl.removeEventListener('animationend', finish);
|
|
2502
|
+
this.#restoreContent(button);
|
|
2503
|
+
};
|
|
2504
|
+
spinnerEl.addEventListener('animationend', finish);
|
|
2505
|
+
setTimeout(finish, LOADING_FADE_OUT_MS + LOADING_FADE_OUT_BUFFER_MS);
|
|
2506
|
+
}
|
|
2507
|
+
#restoreContent(button) {
|
|
2508
|
+
this.#clearContent(button);
|
|
2509
|
+
this.#renderIconAndLabel(button);
|
|
2465
2510
|
}
|
|
2466
2511
|
/**
|
|
2467
2512
|
* Чистим по классу, а не по своим ссылкам. Под серверным рендером разметку
|
|
@@ -2603,15 +2648,15 @@ class RtCalendarComponent {
|
|
|
2603
2648
|
}
|
|
2604
2649
|
}
|
|
2605
2650
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtCalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2606
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtCalendarComponent, isStandalone: true, selector: "rt-calendar", inputs: { months: { classPropertyName: "months", publicName: "months", isSignal: true, isRequired: true, transformFunction: null }, weekdayLabels: { classPropertyName: "weekdayLabels", publicName: "weekdayLabels", isSignal: true, isRequired: true, transformFunction: null }, canPrev: { classPropertyName: "canPrev", publicName: "canPrev", isSignal: true, isRequired: false, transformFunction: null }, canNext: { classPropertyName: "canNext", publicName: "canNext", isSignal: true, isRequired: false, transformFunction: null }, prevAriaLabel: { classPropertyName: "prevAriaLabel", publicName: "prevAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, nextAriaLabel: { classPropertyName: "nextAriaLabel", publicName: "nextAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, sublabelsLoading: { classPropertyName: "sublabelsLoading", publicName: "sublabelsLoading", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { prevMonth: "prevMonth", nextMonth: "nextMonth", dayClick: "dayClick" }, host: { classAttribute: "rt-calendar" }, ngImport: i0, template: "<ng-container rtBlock=\"rt-calendar\">\n <div rtElem=\"header\">\n <rt-icon-button\n rtElem=\"nav\"\n qa-dataid=\"calendar-prev-month\"\n icon=\"chevron-left\"\n variant=\"secondary\"\n shape=\"circle\"\n [ariaLabel]=\"prevAriaLabel()\"\n [disabled]=\"!canPrev()\"\n (clicked)=\"prevMonth.emit()\" />\n <ng-content select=\"[calendarHint]\" />\n <rt-icon-button\n rtElem=\"nav\"\n qa-dataid=\"calendar-next-month\"\n icon=\"chevron-right\"\n variant=\"secondary\"\n shape=\"circle\"\n [ariaLabel]=\"nextAriaLabel()\"\n [disabled]=\"!canNext()\"\n (clicked)=\"nextMonth.emit()\" />\n </div>\n\n <div rtElem=\"months\" qa-dataid=\"calendar-months\">\n @for (month of months(); track month.key) {\n <div rtElem=\"month\" qa-dataid=\"calendar-month\">\n <p rtElem=\"month-title\" qa-dataid=\"calendar-month-title\">{{ month.label }}</p>\n <div rtElem=\"grid\" qa-dataid=\"calendar-grid\">\n @for (weekday of weekdayLabels(); track $index) {\n <span rtElem=\"weekday\" qa-dataid=\"calendar-weekday\">{{ weekday }}</span>\n }\n @for (blank of month.leadingBlanks; track blank) {\n <span rtElem=\"blank\"></span>\n }\n @for (day of month.days; track day.key) {\n <button\n rtElem=\"day\"\n qa-dataid=\"calendar-day\"\n type=\"button\"\n [attr.data-iso]=\"day.key\"\n [attr.data-state]=\"day.state\"\n [disabled]=\"day.disabled\"\n (click)=\"onDayClick(day)\">\n <span rtElem=\"day-num\" qa-dataid=\"calendar-day-num\">{{ day.dayOfMonth }}</span>\n @if (sublabelsLoading()) {\n <rt-skeleton\n rtElem=\"day-sublabel\"\n qa-dataid=\"calendar-day-price-skeleton\"\n width=\"80%\"\n borderRadius=\"sm\"\n [height]=\"sublabelSkeletonHeight\" />\n } @else if (day.sublabel) {\n <span rtElem=\"day-sublabel\" qa-dataid=\"calendar-day-price\">{{ day.sublabel }}</span>\n }\n </button>\n }\n </div>\n </div>\n }\n </div>\n\n <ng-content />\n</ng-container>\n", styles: ["@charset \"UTF-8\"
|
|
2651
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtCalendarComponent, isStandalone: true, selector: "rt-calendar", inputs: { months: { classPropertyName: "months", publicName: "months", isSignal: true, isRequired: true, transformFunction: null }, weekdayLabels: { classPropertyName: "weekdayLabels", publicName: "weekdayLabels", isSignal: true, isRequired: true, transformFunction: null }, canPrev: { classPropertyName: "canPrev", publicName: "canPrev", isSignal: true, isRequired: false, transformFunction: null }, canNext: { classPropertyName: "canNext", publicName: "canNext", isSignal: true, isRequired: false, transformFunction: null }, prevAriaLabel: { classPropertyName: "prevAriaLabel", publicName: "prevAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, nextAriaLabel: { classPropertyName: "nextAriaLabel", publicName: "nextAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, sublabelsLoading: { classPropertyName: "sublabelsLoading", publicName: "sublabelsLoading", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { prevMonth: "prevMonth", nextMonth: "nextMonth", dayClick: "dayClick" }, host: { classAttribute: "rt-calendar" }, ngImport: i0, template: "<ng-container rtBlock=\"rt-calendar\">\n <div rtElem=\"header\">\n <rt-icon-button\n rtElem=\"nav\"\n qa-dataid=\"calendar-prev-month\"\n icon=\"chevron-left\"\n variant=\"secondary\"\n shape=\"circle\"\n [ariaLabel]=\"prevAriaLabel()\"\n [disabled]=\"!canPrev()\"\n (clicked)=\"prevMonth.emit()\" />\n <ng-content select=\"[calendarHint]\" />\n <rt-icon-button\n rtElem=\"nav\"\n qa-dataid=\"calendar-next-month\"\n icon=\"chevron-right\"\n variant=\"secondary\"\n shape=\"circle\"\n [ariaLabel]=\"nextAriaLabel()\"\n [disabled]=\"!canNext()\"\n (clicked)=\"nextMonth.emit()\" />\n </div>\n\n <div rtElem=\"months\" qa-dataid=\"calendar-months\">\n @for (month of months(); track month.key) {\n <div rtElem=\"month\" qa-dataid=\"calendar-month\">\n <p rtElem=\"month-title\" qa-dataid=\"calendar-month-title\">{{ month.label }}</p>\n <div rtElem=\"grid\" qa-dataid=\"calendar-grid\">\n @for (weekday of weekdayLabels(); track $index) {\n <span rtElem=\"weekday\" qa-dataid=\"calendar-weekday\">{{ weekday }}</span>\n }\n @for (blank of month.leadingBlanks; track blank) {\n <span rtElem=\"blank\"></span>\n }\n @for (day of month.days; track day.key) {\n <button\n rtElem=\"day\"\n qa-dataid=\"calendar-day\"\n type=\"button\"\n [attr.data-iso]=\"day.key\"\n [attr.data-state]=\"day.state\"\n [disabled]=\"day.disabled\"\n (click)=\"onDayClick(day)\">\n <span rtElem=\"day-num\" qa-dataid=\"calendar-day-num\">{{ day.dayOfMonth }}</span>\n @if (sublabelsLoading()) {\n <rt-skeleton\n rtElem=\"day-sublabel\"\n qa-dataid=\"calendar-day-price-skeleton\"\n width=\"80%\"\n borderRadius=\"sm\"\n [height]=\"sublabelSkeletonHeight\" />\n } @else if (day.sublabel) {\n <span rtElem=\"day-sublabel\" qa-dataid=\"calendar-day-price\">{{ day.sublabel }}</span>\n }\n </button>\n }\n </div>\n </div>\n }\n </div>\n\n <ng-content />\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-calendar{display:block}.rt-calendar__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--rt-space-3);gap:var(--rt-space-3)}.rt-calendar__nav{flex:0 0 auto}.rt-calendar__months{display:grid;gap:var(--rt-space-6);grid-template-columns:repeat(2,1fr)}.rt-calendar__month-title{margin:0 0 var(--rt-space-2);color:var(--rt-color-text-primary);font-weight:var(--rt-font-weight-semibold);text-align:center}.rt-calendar__month-title:first-letter{text-transform:uppercase}.rt-calendar__grid{display:grid;gap:var(--rt-space-0-5);grid-template-columns:repeat(7,1fr)}.rt-calendar__weekday{padding:var(--rt-space-1) 0;color:var(--rt-color-text-muted);font-size:var(--rt-text-xs);text-align:center}.rt-calendar__day{display:flex;flex-direction:column;align-items:center;padding:var(--rt-space-1-5) var(--rt-space-0-5);border:none;border-radius:var(--rt-radius-md);background:none;color:var(--rt-color-text-primary);cursor:pointer;font:inherit;gap:var(--rt-space-0-5)}.rt-calendar__day:hover:not(:disabled,[data-state=start],[data-state=end],[data-state=in-range]){background:var(--rt-color-bg-subtle)}.rt-calendar__day:disabled{cursor:not-allowed}.rt-calendar__day[data-state=past],.rt-calendar__day[data-state=blocked]{color:var(--rt-color-text-muted);opacity:.45}.rt-calendar__day[data-state=busy]{color:var(--rt-color-text-muted);opacity:.45;text-decoration:line-through}.rt-calendar__day[data-state=start],.rt-calendar__day[data-state=end]{background:var(--rt-color-action-primary);color:var(--rt-color-action-on-primary)}.rt-calendar__day[data-state=in-range]{background:var(--rt-color-action-primary-soft);color:var(--rt-color-text-link);font-weight:var(--rt-font-weight-semibold)}.rt-calendar__day-num{font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-medium)}.rt-calendar__day-sublabel{font-size:var(--rt-text-2xs);opacity:.75}@media(width<=640px){.rt-calendar__months{grid-template-columns:1fr}.rt-calendar__month:last-child{display:none}}@media(width<=374px){.rt-calendar__day{padding-inline:0}.rt-calendar__day-sublabel{font-size:var(--rt-text-3xs)}}\n"], dependencies: [{ kind: "directive", type:
|
|
2607
2652
|
// rt-tools
|
|
2608
2653
|
BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "component", type:
|
|
2609
2654
|
// components
|
|
2610
|
-
RtIconButtonComponent, selector: "rt-icon-button", inputs: ["icon", "ariaLabel", "variant", "iconColor", "size", "iconSize", "shape", "type", "tooltip", "tabIndex", "loading", "disabled", "active", "indicator"], outputs: ["clicked"] }, { kind: "component", type: RtSkeletonComponent, selector: "rt-skeleton", inputs: ["shape", "size", "width", "height", "borderRadius", "animation"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2655
|
+
RtIconButtonComponent, selector: "rt-icon-button", inputs: ["icon", "ariaLabel", "variant", "iconColor", "size", "iconSize", "shape", "type", "tooltip", "tabIndex", "loading", "disabled", "active", "indicator"], outputs: ["clicked"] }, { kind: "component", type: RtSkeletonComponent, selector: "rt-skeleton", inputs: ["shape", "size", "width", "height", "borderRadius", "animation"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2611
2656
|
}
|
|
2612
2657
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtCalendarComponent, decorators: [{
|
|
2613
2658
|
type: Component,
|
|
2614
|
-
args: [{ selector: 'rt-calendar', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
2659
|
+
args: [{ selector: 'rt-calendar', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
2615
2660
|
// rt-tools
|
|
2616
2661
|
BlockDirective,
|
|
2617
2662
|
ElemDirective,
|
|
@@ -2620,7 +2665,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
2620
2665
|
RtSkeletonComponent,
|
|
2621
2666
|
], host: {
|
|
2622
2667
|
class: BEM_BLOCK$15,
|
|
2623
|
-
}, template: "<ng-container rtBlock=\"rt-calendar\">\n <div rtElem=\"header\">\n <rt-icon-button\n rtElem=\"nav\"\n qa-dataid=\"calendar-prev-month\"\n icon=\"chevron-left\"\n variant=\"secondary\"\n shape=\"circle\"\n [ariaLabel]=\"prevAriaLabel()\"\n [disabled]=\"!canPrev()\"\n (clicked)=\"prevMonth.emit()\" />\n <ng-content select=\"[calendarHint]\" />\n <rt-icon-button\n rtElem=\"nav\"\n qa-dataid=\"calendar-next-month\"\n icon=\"chevron-right\"\n variant=\"secondary\"\n shape=\"circle\"\n [ariaLabel]=\"nextAriaLabel()\"\n [disabled]=\"!canNext()\"\n (clicked)=\"nextMonth.emit()\" />\n </div>\n\n <div rtElem=\"months\" qa-dataid=\"calendar-months\">\n @for (month of months(); track month.key) {\n <div rtElem=\"month\" qa-dataid=\"calendar-month\">\n <p rtElem=\"month-title\" qa-dataid=\"calendar-month-title\">{{ month.label }}</p>\n <div rtElem=\"grid\" qa-dataid=\"calendar-grid\">\n @for (weekday of weekdayLabels(); track $index) {\n <span rtElem=\"weekday\" qa-dataid=\"calendar-weekday\">{{ weekday }}</span>\n }\n @for (blank of month.leadingBlanks; track blank) {\n <span rtElem=\"blank\"></span>\n }\n @for (day of month.days; track day.key) {\n <button\n rtElem=\"day\"\n qa-dataid=\"calendar-day\"\n type=\"button\"\n [attr.data-iso]=\"day.key\"\n [attr.data-state]=\"day.state\"\n [disabled]=\"day.disabled\"\n (click)=\"onDayClick(day)\">\n <span rtElem=\"day-num\" qa-dataid=\"calendar-day-num\">{{ day.dayOfMonth }}</span>\n @if (sublabelsLoading()) {\n <rt-skeleton\n rtElem=\"day-sublabel\"\n qa-dataid=\"calendar-day-price-skeleton\"\n width=\"80%\"\n borderRadius=\"sm\"\n [height]=\"sublabelSkeletonHeight\" />\n } @else if (day.sublabel) {\n <span rtElem=\"day-sublabel\" qa-dataid=\"calendar-day-price\">{{ day.sublabel }}</span>\n }\n </button>\n }\n </div>\n </div>\n }\n </div>\n\n <ng-content />\n</ng-container>\n", styles: ["@charset \"UTF-8\"
|
|
2668
|
+
}, template: "<ng-container rtBlock=\"rt-calendar\">\n <div rtElem=\"header\">\n <rt-icon-button\n rtElem=\"nav\"\n qa-dataid=\"calendar-prev-month\"\n icon=\"chevron-left\"\n variant=\"secondary\"\n shape=\"circle\"\n [ariaLabel]=\"prevAriaLabel()\"\n [disabled]=\"!canPrev()\"\n (clicked)=\"prevMonth.emit()\" />\n <ng-content select=\"[calendarHint]\" />\n <rt-icon-button\n rtElem=\"nav\"\n qa-dataid=\"calendar-next-month\"\n icon=\"chevron-right\"\n variant=\"secondary\"\n shape=\"circle\"\n [ariaLabel]=\"nextAriaLabel()\"\n [disabled]=\"!canNext()\"\n (clicked)=\"nextMonth.emit()\" />\n </div>\n\n <div rtElem=\"months\" qa-dataid=\"calendar-months\">\n @for (month of months(); track month.key) {\n <div rtElem=\"month\" qa-dataid=\"calendar-month\">\n <p rtElem=\"month-title\" qa-dataid=\"calendar-month-title\">{{ month.label }}</p>\n <div rtElem=\"grid\" qa-dataid=\"calendar-grid\">\n @for (weekday of weekdayLabels(); track $index) {\n <span rtElem=\"weekday\" qa-dataid=\"calendar-weekday\">{{ weekday }}</span>\n }\n @for (blank of month.leadingBlanks; track blank) {\n <span rtElem=\"blank\"></span>\n }\n @for (day of month.days; track day.key) {\n <button\n rtElem=\"day\"\n qa-dataid=\"calendar-day\"\n type=\"button\"\n [attr.data-iso]=\"day.key\"\n [attr.data-state]=\"day.state\"\n [disabled]=\"day.disabled\"\n (click)=\"onDayClick(day)\">\n <span rtElem=\"day-num\" qa-dataid=\"calendar-day-num\">{{ day.dayOfMonth }}</span>\n @if (sublabelsLoading()) {\n <rt-skeleton\n rtElem=\"day-sublabel\"\n qa-dataid=\"calendar-day-price-skeleton\"\n width=\"80%\"\n borderRadius=\"sm\"\n [height]=\"sublabelSkeletonHeight\" />\n } @else if (day.sublabel) {\n <span rtElem=\"day-sublabel\" qa-dataid=\"calendar-day-price\">{{ day.sublabel }}</span>\n }\n </button>\n }\n </div>\n </div>\n }\n </div>\n\n <ng-content />\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-calendar{display:block}.rt-calendar__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--rt-space-3);gap:var(--rt-space-3)}.rt-calendar__nav{flex:0 0 auto}.rt-calendar__months{display:grid;gap:var(--rt-space-6);grid-template-columns:repeat(2,1fr)}.rt-calendar__month-title{margin:0 0 var(--rt-space-2);color:var(--rt-color-text-primary);font-weight:var(--rt-font-weight-semibold);text-align:center}.rt-calendar__month-title:first-letter{text-transform:uppercase}.rt-calendar__grid{display:grid;gap:var(--rt-space-0-5);grid-template-columns:repeat(7,1fr)}.rt-calendar__weekday{padding:var(--rt-space-1) 0;color:var(--rt-color-text-muted);font-size:var(--rt-text-xs);text-align:center}.rt-calendar__day{display:flex;flex-direction:column;align-items:center;padding:var(--rt-space-1-5) var(--rt-space-0-5);border:none;border-radius:var(--rt-radius-md);background:none;color:var(--rt-color-text-primary);cursor:pointer;font:inherit;gap:var(--rt-space-0-5)}.rt-calendar__day:hover:not(:disabled,[data-state=start],[data-state=end],[data-state=in-range]){background:var(--rt-color-bg-subtle)}.rt-calendar__day:disabled{cursor:not-allowed}.rt-calendar__day[data-state=past],.rt-calendar__day[data-state=blocked]{color:var(--rt-color-text-muted);opacity:.45}.rt-calendar__day[data-state=busy]{color:var(--rt-color-text-muted);opacity:.45;text-decoration:line-through}.rt-calendar__day[data-state=start],.rt-calendar__day[data-state=end]{background:var(--rt-color-action-primary);color:var(--rt-color-action-on-primary)}.rt-calendar__day[data-state=in-range]{background:var(--rt-color-action-primary-soft);color:var(--rt-color-text-link);font-weight:var(--rt-font-weight-semibold)}.rt-calendar__day-num{font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-medium)}.rt-calendar__day-sublabel{font-size:var(--rt-text-2xs);opacity:.75}@media(width<=640px){.rt-calendar__months{grid-template-columns:1fr}.rt-calendar__month:last-child{display:none}}@media(width<=374px){.rt-calendar__day{padding-inline:0}.rt-calendar__day-sublabel{font-size:var(--rt-text-3xs)}}\n"] }]
|
|
2624
2669
|
}], propDecorators: { months: [{ type: i0.Input, args: [{ isSignal: true, alias: "months", required: true }] }], weekdayLabels: [{ type: i0.Input, args: [{ isSignal: true, alias: "weekdayLabels", required: true }] }], canPrev: [{ type: i0.Input, args: [{ isSignal: true, alias: "canPrev", required: false }] }], canNext: [{ type: i0.Input, args: [{ isSignal: true, alias: "canNext", required: false }] }], prevAriaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "prevAriaLabel", required: false }] }], nextAriaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "nextAriaLabel", required: false }] }], sublabelsLoading: [{ type: i0.Input, args: [{ isSignal: true, alias: "sublabelsLoading", required: false }] }], prevMonth: [{ type: i0.Output, args: ["prevMonth"] }], nextMonth: [{ type: i0.Output, args: ["nextMonth"] }], dayClick: [{ type: i0.Output, args: ["dayClick"] }] } });
|
|
2625
2670
|
|
|
2626
2671
|
/**
|
|
@@ -2686,20 +2731,20 @@ class RtCardComponent {
|
|
|
2686
2731
|
this.cardClick.emit(event);
|
|
2687
2732
|
}
|
|
2688
2733
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2689
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtCardComponent, isStandalone: true, selector: "rt-card", inputs: { header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, clickable: { classPropertyName: "clickable", publicName: "clickable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { cardClick: "cardClick" }, host: { classAttribute: "rt-card" }, ngImport: i0, template: "<article\n rtBlock=\"rt-card\"\n qa-dataid=\"card\"\n [rtMod]=\"{ clickable: clickable() }\"\n [attr.role]=\"clickable() ? 'button' : null\"\n [attr.tabindex]=\"clickable() ? 0 : null\"\n [attr.aria-label]=\"ariaLabel()\"\n (click)=\"onClick($event)\"\n (keydown.enter)=\"onKeyActivate($event)\"\n (keydown.space)=\"onKeyActivate($event)\">\n <header rtElem=\"header\">\n @if (header(); as h) {\n <h3 rtElem=\"title\" qa-dataid=\"card-title\">{{ h }}</h3>\n }\n <ng-content select=\"[rtCardHeader]\" />\n </header>\n <div rtElem=\"content\">\n <ng-content />\n </div>\n <footer rtElem=\"footer\">\n <ng-content select=\"[rtCardFooter]\" />\n </footer>\n</article>\n", styles: ["@charset \"UTF-8\"
|
|
2734
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtCardComponent, isStandalone: true, selector: "rt-card", inputs: { header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, clickable: { classPropertyName: "clickable", publicName: "clickable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { cardClick: "cardClick" }, host: { classAttribute: "rt-card" }, ngImport: i0, template: "<article\n rtBlock=\"rt-card\"\n qa-dataid=\"card\"\n [rtMod]=\"{ clickable: clickable() }\"\n [attr.role]=\"clickable() ? 'button' : null\"\n [attr.tabindex]=\"clickable() ? 0 : null\"\n [attr.aria-label]=\"ariaLabel()\"\n (click)=\"onClick($event)\"\n (keydown.enter)=\"onKeyActivate($event)\"\n (keydown.space)=\"onKeyActivate($event)\">\n <header rtElem=\"header\">\n @if (header(); as h) {\n <h3 rtElem=\"title\" qa-dataid=\"card-title\">{{ h }}</h3>\n }\n <ng-content select=\"[rtCardHeader]\" />\n </header>\n <div rtElem=\"content\">\n <ng-content />\n </div>\n <footer rtElem=\"footer\">\n <ng-content select=\"[rtCardFooter]\" />\n </footer>\n</article>\n", styles: ["@charset \"UTF-8\";rt-card{display:block}rt-card .rt-card{display:block;padding:var(--rt-space-lg);border-radius:var(--rt-radius-xl);background:var(--rt-color-bg-surface);box-shadow:var(--rt-shadow-card);color:var(--rt-color-text-primary)}rt-card .rt-card--clickable{cursor:pointer;transition:box-shadow var(--rt-duration-fast) ease,transform var(--rt-duration-fast) ease}rt-card .rt-card--clickable:hover{box-shadow:var(--rt-shadow-lg)}rt-card .rt-card--clickable:focus-visible{box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:2px}rt-card .rt-card__header{margin-block-end:var(--rt-space-md)}rt-card .rt-card__header:empty{display:none}rt-card .rt-card__title{margin:0;font-size:var(--rt-text-lg);line-height:var(--rt-leading-snug)}rt-card .rt-card__content{display:block}rt-card .rt-card__footer{margin-block-start:var(--rt-space-md)}rt-card .rt-card__footer:empty{display:none}\n"], dependencies: [{ kind: "directive", type:
|
|
2690
2735
|
// standalone components / directives
|
|
2691
|
-
BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2736
|
+
BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2692
2737
|
}
|
|
2693
2738
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtCardComponent, decorators: [{
|
|
2694
2739
|
type: Component,
|
|
2695
|
-
args: [{ selector: 'rt-card', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
2740
|
+
args: [{ selector: 'rt-card', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
2696
2741
|
// standalone components / directives
|
|
2697
2742
|
BlockDirective,
|
|
2698
2743
|
ElemDirective,
|
|
2699
2744
|
ModDirective,
|
|
2700
2745
|
], host: {
|
|
2701
2746
|
class: BEM_BLOCK$14,
|
|
2702
|
-
}, template: "<article\n rtBlock=\"rt-card\"\n qa-dataid=\"card\"\n [rtMod]=\"{ clickable: clickable() }\"\n [attr.role]=\"clickable() ? 'button' : null\"\n [attr.tabindex]=\"clickable() ? 0 : null\"\n [attr.aria-label]=\"ariaLabel()\"\n (click)=\"onClick($event)\"\n (keydown.enter)=\"onKeyActivate($event)\"\n (keydown.space)=\"onKeyActivate($event)\">\n <header rtElem=\"header\">\n @if (header(); as h) {\n <h3 rtElem=\"title\" qa-dataid=\"card-title\">{{ h }}</h3>\n }\n <ng-content select=\"[rtCardHeader]\" />\n </header>\n <div rtElem=\"content\">\n <ng-content />\n </div>\n <footer rtElem=\"footer\">\n <ng-content select=\"[rtCardFooter]\" />\n </footer>\n</article>\n", styles: ["@charset \"UTF-8\"
|
|
2747
|
+
}, template: "<article\n rtBlock=\"rt-card\"\n qa-dataid=\"card\"\n [rtMod]=\"{ clickable: clickable() }\"\n [attr.role]=\"clickable() ? 'button' : null\"\n [attr.tabindex]=\"clickable() ? 0 : null\"\n [attr.aria-label]=\"ariaLabel()\"\n (click)=\"onClick($event)\"\n (keydown.enter)=\"onKeyActivate($event)\"\n (keydown.space)=\"onKeyActivate($event)\">\n <header rtElem=\"header\">\n @if (header(); as h) {\n <h3 rtElem=\"title\" qa-dataid=\"card-title\">{{ h }}</h3>\n }\n <ng-content select=\"[rtCardHeader]\" />\n </header>\n <div rtElem=\"content\">\n <ng-content />\n </div>\n <footer rtElem=\"footer\">\n <ng-content select=\"[rtCardFooter]\" />\n </footer>\n</article>\n", styles: ["@charset \"UTF-8\";rt-card{display:block}rt-card .rt-card{display:block;padding:var(--rt-space-lg);border-radius:var(--rt-radius-xl);background:var(--rt-color-bg-surface);box-shadow:var(--rt-shadow-card);color:var(--rt-color-text-primary)}rt-card .rt-card--clickable{cursor:pointer;transition:box-shadow var(--rt-duration-fast) ease,transform var(--rt-duration-fast) ease}rt-card .rt-card--clickable:hover{box-shadow:var(--rt-shadow-lg)}rt-card .rt-card--clickable:focus-visible{box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:2px}rt-card .rt-card__header{margin-block-end:var(--rt-space-md)}rt-card .rt-card__header:empty{display:none}rt-card .rt-card__title{margin:0;font-size:var(--rt-text-lg);line-height:var(--rt-leading-snug)}rt-card .rt-card__content{display:block}rt-card .rt-card__footer{margin-block-start:var(--rt-space-md)}rt-card .rt-card__footer:empty{display:none}\n"] }]
|
|
2703
2748
|
}], propDecorators: { header: [{ type: i0.Input, args: [{ isSignal: true, alias: "header", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], clickable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clickable", required: false }] }], cardClick: [{ type: i0.Output, args: ["cardClick"] }] } });
|
|
2704
2749
|
|
|
2705
2750
|
/**
|
|
@@ -4687,10 +4732,12 @@ const BEM_BLOCK$V = 'rt-checkbox';
|
|
|
4687
4732
|
* `useExisting: forwardRef(...)` — `useClass` на self-reference вызывает
|
|
4688
4733
|
* NG0200 cycle при boot'е.
|
|
4689
4734
|
*
|
|
4690
|
-
*
|
|
4691
|
-
*
|
|
4692
|
-
*
|
|
4693
|
-
*
|
|
4735
|
+
* Отключение складывается из двух независимых источников: входа `disabled` и
|
|
4736
|
+
* слова формы (CVA `setDisabledState`). Отключено, если так сказал любой из
|
|
4737
|
+
* них. Сводить их в один signal нельзя: форма зовёт `setDisabledState` при
|
|
4738
|
+
* связывании контрола, то есть раньше, чем чекбокс впервые обновит своё вью,
|
|
4739
|
+
* и мирроринг входа затирал бы её слово — контрол, созданный отключённым,
|
|
4740
|
+
* оказывался бы кликабельным.
|
|
4694
4741
|
*
|
|
4695
4742
|
* `indeterminate` — чисто визуальное mixed-состояние; клик по нему разрешается
|
|
4696
4743
|
* в `true` (стандартное поведение tri-state чекбокса).
|
|
@@ -4698,14 +4745,15 @@ const BEM_BLOCK$V = 'rt-checkbox';
|
|
|
4698
4745
|
* Текстовая подпись проецируется через `<ng-content>`.
|
|
4699
4746
|
*/
|
|
4700
4747
|
class RtCheckboxComponent {
|
|
4701
|
-
#onChange;
|
|
4702
|
-
#onTouched;
|
|
4703
4748
|
constructor() {
|
|
4704
4749
|
this.#onChange = () => undefined;
|
|
4705
4750
|
this.#onTouched = () => undefined;
|
|
4751
|
+
/** Отключение, назначенное формой через CVA (`setDisabledState`). */
|
|
4752
|
+
this.#disabledByForm = signal(false, /* @ts-ignore */
|
|
4753
|
+
...(ngDevMode ? [{ debugName: "#disabledByForm" }] : /* istanbul ignore next */ []));
|
|
4706
4754
|
this.isChecked = signal(false, /* @ts-ignore */
|
|
4707
4755
|
...(ngDevMode ? [{ debugName: "isChecked" }] : /* istanbul ignore next */ []));
|
|
4708
|
-
this.isDisabled =
|
|
4756
|
+
this.isDisabled = computed(() => this.disabled() || this.#disabledByForm(), /* @ts-ignore */
|
|
4709
4757
|
...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
|
|
4710
4758
|
this.inputId = input(null, /* @ts-ignore */
|
|
4711
4759
|
...(ngDevMode ? [{ debugName: "inputId" }] : /* istanbul ignore next */ []));
|
|
@@ -4713,13 +4761,11 @@ class RtCheckboxComponent {
|
|
|
4713
4761
|
...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
|
|
4714
4762
|
this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
4715
4763
|
this.indeterminate = input(false, { ...(ngDevMode ? { debugName: "indeterminate" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
4716
|
-
// Синхронизируем signal-input `disabled` в `isDisabled`, чтобы
|
|
4717
|
-
// `[disabled]="..."` и `setDisabledState(...)` (CVA) писали в одно
|
|
4718
|
-
// и то же место. Effect живёт в injection context конструктора.
|
|
4719
|
-
effect(() => {
|
|
4720
|
-
this.isDisabled.set(this.disabled());
|
|
4721
|
-
});
|
|
4722
4764
|
}
|
|
4765
|
+
#onChange;
|
|
4766
|
+
#onTouched;
|
|
4767
|
+
/** Отключение, назначенное формой через CVA (`setDisabledState`). */
|
|
4768
|
+
#disabledByForm;
|
|
4723
4769
|
writeValue(value) {
|
|
4724
4770
|
this.isChecked.set(value === true);
|
|
4725
4771
|
}
|
|
@@ -4730,7 +4776,7 @@ class RtCheckboxComponent {
|
|
|
4730
4776
|
this.#onTouched = fn;
|
|
4731
4777
|
}
|
|
4732
4778
|
setDisabledState(disabled) {
|
|
4733
|
-
this.
|
|
4779
|
+
this.#disabledByForm.set(disabled);
|
|
4734
4780
|
}
|
|
4735
4781
|
toggle() {
|
|
4736
4782
|
if (this.isDisabled()) {
|
|
@@ -4749,13 +4795,13 @@ class RtCheckboxComponent {
|
|
|
4749
4795
|
useExisting: forwardRef(() => RtCheckboxComponent),
|
|
4750
4796
|
multi: true,
|
|
4751
4797
|
},
|
|
4752
|
-
], ngImport: i0, template: "<button\n rtBlock=\"rt-checkbox\"\n qa-dataid=\"checkbox-control\"\n type=\"button\"\n role=\"checkbox\"\n [rtMod]=\"{\n checked: isChecked() && !indeterminate(),\n indeterminate: indeterminate(),\n disabled: isDisabled(),\n }\"\n [attr.id]=\"inputId()\"\n [attr.aria-checked]=\"indeterminate() ? 'mixed' : isChecked()\"\n [attr.aria-label]=\"ariaLabel()\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggle()\">\n <span rtElem=\"box\">\n @if (indeterminate()) {\n <rt-icon rtElem=\"icon\" name=\"minus\" size=\"xs\" color=\"inverse\" />\n } @else if (isChecked()) {\n <rt-icon rtElem=\"icon\" name=\"check\" size=\"xs\" color=\"inverse\" />\n }\n </span>\n\n <span rtElem=\"label\" qa-dataid=\"checkbox-label\">\n <ng-content />\n </span>\n</button>\n", styles: ["
|
|
4798
|
+
], ngImport: i0, template: "<button\n rtBlock=\"rt-checkbox\"\n qa-dataid=\"checkbox-control\"\n type=\"button\"\n role=\"checkbox\"\n [rtMod]=\"{\n checked: isChecked() && !indeterminate(),\n indeterminate: indeterminate(),\n disabled: isDisabled(),\n }\"\n [attr.id]=\"inputId()\"\n [attr.aria-checked]=\"indeterminate() ? 'mixed' : isChecked()\"\n [attr.aria-label]=\"ariaLabel()\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggle()\">\n <span rtElem=\"box\">\n @if (indeterminate()) {\n <rt-icon rtElem=\"icon\" name=\"minus\" size=\"xs\" color=\"inverse\" />\n } @else if (isChecked()) {\n <rt-icon rtElem=\"icon\" name=\"check\" size=\"xs\" color=\"inverse\" />\n }\n </span>\n\n <span rtElem=\"label\" qa-dataid=\"checkbox-label\">\n <ng-content />\n </span>\n</button>\n", styles: ["@charset \"UTF-8\";rt-checkbox{display:inline-block}rt-checkbox .rt-checkbox{display:inline-flex;align-items:center;padding:0;border:none;background:none;cursor:pointer;gap:var(--rt-space-sm);text-align:start}rt-checkbox .rt-checkbox:focus-visible{border-radius:var(--rt-radius-sm);box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:2px}rt-checkbox .rt-checkbox--disabled{cursor:not-allowed;opacity:.5}rt-checkbox .rt-checkbox__box{display:inline-flex;width:18px;height:18px;flex-shrink:0;align-items:center;justify-content:center;border:var(--rt-input-border-width) solid var(--rt-color-border-strong);border-radius:var(--rt-radius-sm);background:var(--rt-color-bg-surface);transition:background var(--rt-duration-fast) ease,border-color var(--rt-duration-fast) ease}rt-checkbox .rt-checkbox--checked rt-checkbox .rt-checkbox__box,rt-checkbox .rt-checkbox--indeterminate rt-checkbox .rt-checkbox__box{border-color:var(--rt-color-action-primary);background:var(--rt-color-action-primary)}rt-checkbox .rt-checkbox__label{color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);-webkit-user-select:none;user-select:none}rt-checkbox .rt-checkbox__label:empty{display:none}\n"], dependencies: [{ kind: "component", type:
|
|
4753
4799
|
// standalone components / directives
|
|
4754
|
-
RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
4800
|
+
RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
4755
4801
|
}
|
|
4756
4802
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtCheckboxComponent, decorators: [{
|
|
4757
4803
|
type: Component,
|
|
4758
|
-
args: [{ selector: 'rt-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
4804
|
+
args: [{ selector: 'rt-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
4759
4805
|
// standalone components / directives
|
|
4760
4806
|
RtIconComponent,
|
|
4761
4807
|
BlockDirective,
|
|
@@ -4769,8 +4815,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
4769
4815
|
},
|
|
4770
4816
|
], host: {
|
|
4771
4817
|
class: BEM_BLOCK$V,
|
|
4772
|
-
}, template: "<button\n rtBlock=\"rt-checkbox\"\n qa-dataid=\"checkbox-control\"\n type=\"button\"\n role=\"checkbox\"\n [rtMod]=\"{\n checked: isChecked() && !indeterminate(),\n indeterminate: indeterminate(),\n disabled: isDisabled(),\n }\"\n [attr.id]=\"inputId()\"\n [attr.aria-checked]=\"indeterminate() ? 'mixed' : isChecked()\"\n [attr.aria-label]=\"ariaLabel()\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggle()\">\n <span rtElem=\"box\">\n @if (indeterminate()) {\n <rt-icon rtElem=\"icon\" name=\"minus\" size=\"xs\" color=\"inverse\" />\n } @else if (isChecked()) {\n <rt-icon rtElem=\"icon\" name=\"check\" size=\"xs\" color=\"inverse\" />\n }\n </span>\n\n <span rtElem=\"label\" qa-dataid=\"checkbox-label\">\n <ng-content />\n </span>\n</button>\n", styles: ["
|
|
4773
|
-
}],
|
|
4818
|
+
}, template: "<button\n rtBlock=\"rt-checkbox\"\n qa-dataid=\"checkbox-control\"\n type=\"button\"\n role=\"checkbox\"\n [rtMod]=\"{\n checked: isChecked() && !indeterminate(),\n indeterminate: indeterminate(),\n disabled: isDisabled(),\n }\"\n [attr.id]=\"inputId()\"\n [attr.aria-checked]=\"indeterminate() ? 'mixed' : isChecked()\"\n [attr.aria-label]=\"ariaLabel()\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggle()\">\n <span rtElem=\"box\">\n @if (indeterminate()) {\n <rt-icon rtElem=\"icon\" name=\"minus\" size=\"xs\" color=\"inverse\" />\n } @else if (isChecked()) {\n <rt-icon rtElem=\"icon\" name=\"check\" size=\"xs\" color=\"inverse\" />\n }\n </span>\n\n <span rtElem=\"label\" qa-dataid=\"checkbox-label\">\n <ng-content />\n </span>\n</button>\n", styles: ["@charset \"UTF-8\";rt-checkbox{display:inline-block}rt-checkbox .rt-checkbox{display:inline-flex;align-items:center;padding:0;border:none;background:none;cursor:pointer;gap:var(--rt-space-sm);text-align:start}rt-checkbox .rt-checkbox:focus-visible{border-radius:var(--rt-radius-sm);box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:2px}rt-checkbox .rt-checkbox--disabled{cursor:not-allowed;opacity:.5}rt-checkbox .rt-checkbox__box{display:inline-flex;width:18px;height:18px;flex-shrink:0;align-items:center;justify-content:center;border:var(--rt-input-border-width) solid var(--rt-color-border-strong);border-radius:var(--rt-radius-sm);background:var(--rt-color-bg-surface);transition:background var(--rt-duration-fast) ease,border-color var(--rt-duration-fast) ease}rt-checkbox .rt-checkbox--checked rt-checkbox .rt-checkbox__box,rt-checkbox .rt-checkbox--indeterminate rt-checkbox .rt-checkbox__box{border-color:var(--rt-color-action-primary);background:var(--rt-color-action-primary)}rt-checkbox .rt-checkbox__label{color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);-webkit-user-select:none;user-select:none}rt-checkbox .rt-checkbox__label:empty{display:none}\n"] }]
|
|
4819
|
+
}], propDecorators: { inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], indeterminate: [{ type: i0.Input, args: [{ isSignal: true, alias: "indeterminate", required: false }] }] } });
|
|
4774
4820
|
|
|
4775
4821
|
const BEM_BLOCK$U = 'rt-collapsible-text';
|
|
4776
4822
|
class RtCollapsibleTextComponent {
|
|
@@ -5822,7 +5868,7 @@ class RtContainerComponent {
|
|
|
5822
5868
|
return maxSeconds * 1000;
|
|
5823
5869
|
}
|
|
5824
5870
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5825
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtContainerComponent, isStandalone: true, selector: "rt-container", inputs: { mobileLeftNav: { classPropertyName: "mobileLeftNav", publicName: "mobileLeftNav", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { backdropClick: "backdropClick", rightOpened: "rightOpened", rightClosed: "rightClosed" }, host: { properties: { "class.rt-container--mobile-left-bottom": "mobileLeftNav() === 'bottom'", "class.rt-container--viewport": "height() === 'viewport'" }, classAttribute: "rt-container" }, providers: [RtContainerStateService], queries: [{ propertyName: "headerTpl", first: true, predicate: RtContainerHeaderDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "leftSidenavTpl", first: true, predicate: RtContainerLeftSidenavDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "rightSidenavTpl", first: true, predicate: RtContainerRightSidenavDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "toolbarLeftTpl", first: true, predicate: RtContainerToolbarLeftDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "toolbarCenterTpl", first: true, predicate: RtContainerToolbarCenterDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "toolbarRightTpl", first: true, predicate: RtContainerToolbarRightDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "contentTpl", first: true, predicate: RtContainerContentDirective, descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0, template: "<ng-container rtBlock=\"rt-container\">\n @if (headerTpl(); as tpl) {\n <header rtElem=\"header\" qa-dataid=\"container-header\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </header>\n }\n\n @if (leftSidenavTpl(); as tpl) {\n <aside rtElem=\"left-sidenav\" qa-dataid=\"container-left-sidenav\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </aside>\n }\n\n @if (toolbarLeftTpl(); as tpl) {\n <div rtElem=\"toolbar\" qa-dataid=\"container-toolbar\" data-slot=\"left\" [rtMod]=\"{ slot: 'left' }\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </div>\n }\n\n @if (toolbarCenterTpl(); as tpl) {\n <div rtElem=\"toolbar\" qa-dataid=\"container-toolbar\" data-slot=\"center\" [rtMod]=\"{ slot: 'center' }\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </div>\n }\n\n @if (toolbarRightTpl(); as tpl) {\n <div rtElem=\"toolbar\" qa-dataid=\"container-toolbar\" data-slot=\"right\" [rtMod]=\"{ slot: 'right' }\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </div>\n }\n\n @if (contentTpl(); as tpl) {\n <main rtElem=\"content\" qa-dataid=\"container-content\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </main>\n }\n\n <rt-toaster position=\"bottom-center\" />\n</ng-container>\n", styles: ["@charset \"UTF-8\"
|
|
5871
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtContainerComponent, isStandalone: true, selector: "rt-container", inputs: { mobileLeftNav: { classPropertyName: "mobileLeftNav", publicName: "mobileLeftNav", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { backdropClick: "backdropClick", rightOpened: "rightOpened", rightClosed: "rightClosed" }, host: { properties: { "class.rt-container--mobile-left-bottom": "mobileLeftNav() === 'bottom'", "class.rt-container--viewport": "height() === 'viewport'" }, classAttribute: "rt-container" }, providers: [RtContainerStateService], queries: [{ propertyName: "headerTpl", first: true, predicate: RtContainerHeaderDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "leftSidenavTpl", first: true, predicate: RtContainerLeftSidenavDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "rightSidenavTpl", first: true, predicate: RtContainerRightSidenavDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "toolbarLeftTpl", first: true, predicate: RtContainerToolbarLeftDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "toolbarCenterTpl", first: true, predicate: RtContainerToolbarCenterDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "toolbarRightTpl", first: true, predicate: RtContainerToolbarRightDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "contentTpl", first: true, predicate: RtContainerContentDirective, descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0, template: "<ng-container rtBlock=\"rt-container\">\n @if (headerTpl(); as tpl) {\n <header rtElem=\"header\" qa-dataid=\"container-header\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </header>\n }\n\n @if (leftSidenavTpl(); as tpl) {\n <aside rtElem=\"left-sidenav\" qa-dataid=\"container-left-sidenav\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </aside>\n }\n\n @if (toolbarLeftTpl(); as tpl) {\n <div rtElem=\"toolbar\" qa-dataid=\"container-toolbar\" data-slot=\"left\" [rtMod]=\"{ slot: 'left' }\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </div>\n }\n\n @if (toolbarCenterTpl(); as tpl) {\n <div rtElem=\"toolbar\" qa-dataid=\"container-toolbar\" data-slot=\"center\" [rtMod]=\"{ slot: 'center' }\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </div>\n }\n\n @if (toolbarRightTpl(); as tpl) {\n <div rtElem=\"toolbar\" qa-dataid=\"container-toolbar\" data-slot=\"right\" [rtMod]=\"{ slot: 'right' }\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </div>\n }\n\n @if (contentTpl(); as tpl) {\n <main rtElem=\"content\" qa-dataid=\"container-content\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </main>\n }\n\n <rt-toaster position=\"bottom-center\" />\n</ng-container>\n", styles: ["@charset \"UTF-8\";:root{--rt-aside-animation-duration: .2s;--rt-aside-backdrop-bg: rgb(0 0 0 / 45%);--rt-aside-backdrop-blur: 5px}.cdk-overlay-backdrop.rt-aside-backdrop{-webkit-backdrop-filter:blur(var(--rt-aside-backdrop-blur));backdrop-filter:blur(var(--rt-aside-backdrop-blur));background:var(--rt-aside-backdrop-bg);opacity:0;pointer-events:none;transition:opacity var(--rt-aside-animation-duration) ease}.cdk-overlay-backdrop.rt-aside-backdrop.rt-aside-backdrop--visible{opacity:1;pointer-events:auto}.rt-aside-overlay{height:100dvh;transition:transform var(--rt-aside-animation-duration) ease}.rt-aside-overlay:not(.rt-aside-overlay--open){pointer-events:none}.rt-aside-overlay.rt-aside-overlay--entering{transition:none}.rt-aside-overlay--position-right.rt-aside-overlay--entering,.rt-aside-overlay--position-right.rt-aside-overlay--leaving{transform:translate(100%)}.rt-aside-overlay--position-left.rt-aside-overlay--entering,.rt-aside-overlay--position-left.rt-aside-overlay--leaving{transform:translate(-100%)}.rt-aside-overlay--position-right.rt-aside-overlay--open,.rt-aside-overlay--position-left.rt-aside-overlay--open{transform:translate(0)}@media(width<=768px){.rt-aside-overlay{overflow:hidden;width:100dvw;max-width:100dvw}}@media(prefers-reduced-motion:reduce){.rt-aside-overlay{transition:none}}.rt-container{display:grid;min-height:100%;flex:1 1 auto;background-color:var(--rt-color-bg-page, #f5f5f5);color:var(--rt-color-text-primary, #222);grid-template:\"header header\" auto \"left-sidenav toolbar\" auto \"left-sidenav content\" 1fr/auto 1fr}.rt-container__header{position:sticky;z-index:1;top:0;display:block;grid-area:header}.rt-container__left-sidenav{display:block;padding:var(--rt-space-md);border-right:var(--rt-border-width-thin) solid var(--rt-color-border-subtle);background-color:var(--rt-color-bg-surface, #fff);grid-area:left-sidenav}.rt-container__toolbar{display:flex;align-items:center;padding:var(--rt-space-sm) var(--rt-space-md);border-bottom:var(--rt-border-width-thin) solid var(--rt-color-border-subtle);background-color:var(--rt-color-bg-surface, #fff);grid-area:toolbar}.rt-container__toolbar--slot--left{justify-content:flex-start}.rt-container__toolbar--slot--center{justify-content:center}.rt-container__toolbar--slot--right{justify-content:flex-end}.rt-container__content{display:flex;overflow:auto;min-height:0;flex-direction:column;grid-area:content}.rt-container--viewport{block-size:100dvh;min-block-size:0}.rt-container--viewport .rt-container__content{overflow:hidden}.rt-container--viewport .rt-container__left-sidenav{overflow:auto}@media(width<=768px){.rt-container--mobile-left-bottom{grid-template:\"header\" auto \"toolbar\" auto \"content\" 1fr \"left-sidenav\" auto/1fr}.rt-container--mobile-left-bottom .rt-container__left-sidenav{padding:0;border-top:var(--rt-border-width-thin) solid var(--rt-color-border-subtle);border-right:none}}\n"], dependencies: [{ kind: "directive", type:
|
|
5826
5872
|
// Angular
|
|
5827
5873
|
NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type:
|
|
5828
5874
|
// standalone components / directives
|
|
@@ -5842,7 +5888,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
5842
5888
|
class: BEM_BLOCK$R,
|
|
5843
5889
|
'[class.rt-container--mobile-left-bottom]': "mobileLeftNav() === 'bottom'",
|
|
5844
5890
|
'[class.rt-container--viewport]': "height() === 'viewport'",
|
|
5845
|
-
}, template: "<ng-container rtBlock=\"rt-container\">\n @if (headerTpl(); as tpl) {\n <header rtElem=\"header\" qa-dataid=\"container-header\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </header>\n }\n\n @if (leftSidenavTpl(); as tpl) {\n <aside rtElem=\"left-sidenav\" qa-dataid=\"container-left-sidenav\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </aside>\n }\n\n @if (toolbarLeftTpl(); as tpl) {\n <div rtElem=\"toolbar\" qa-dataid=\"container-toolbar\" data-slot=\"left\" [rtMod]=\"{ slot: 'left' }\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </div>\n }\n\n @if (toolbarCenterTpl(); as tpl) {\n <div rtElem=\"toolbar\" qa-dataid=\"container-toolbar\" data-slot=\"center\" [rtMod]=\"{ slot: 'center' }\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </div>\n }\n\n @if (toolbarRightTpl(); as tpl) {\n <div rtElem=\"toolbar\" qa-dataid=\"container-toolbar\" data-slot=\"right\" [rtMod]=\"{ slot: 'right' }\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </div>\n }\n\n @if (contentTpl(); as tpl) {\n <main rtElem=\"content\" qa-dataid=\"container-content\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </main>\n }\n\n <rt-toaster position=\"bottom-center\" />\n</ng-container>\n", styles: ["@charset \"UTF-8\"
|
|
5891
|
+
}, template: "<ng-container rtBlock=\"rt-container\">\n @if (headerTpl(); as tpl) {\n <header rtElem=\"header\" qa-dataid=\"container-header\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </header>\n }\n\n @if (leftSidenavTpl(); as tpl) {\n <aside rtElem=\"left-sidenav\" qa-dataid=\"container-left-sidenav\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </aside>\n }\n\n @if (toolbarLeftTpl(); as tpl) {\n <div rtElem=\"toolbar\" qa-dataid=\"container-toolbar\" data-slot=\"left\" [rtMod]=\"{ slot: 'left' }\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </div>\n }\n\n @if (toolbarCenterTpl(); as tpl) {\n <div rtElem=\"toolbar\" qa-dataid=\"container-toolbar\" data-slot=\"center\" [rtMod]=\"{ slot: 'center' }\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </div>\n }\n\n @if (toolbarRightTpl(); as tpl) {\n <div rtElem=\"toolbar\" qa-dataid=\"container-toolbar\" data-slot=\"right\" [rtMod]=\"{ slot: 'right' }\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </div>\n }\n\n @if (contentTpl(); as tpl) {\n <main rtElem=\"content\" qa-dataid=\"container-content\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </main>\n }\n\n <rt-toaster position=\"bottom-center\" />\n</ng-container>\n", styles: ["@charset \"UTF-8\";:root{--rt-aside-animation-duration: .2s;--rt-aside-backdrop-bg: rgb(0 0 0 / 45%);--rt-aside-backdrop-blur: 5px}.cdk-overlay-backdrop.rt-aside-backdrop{-webkit-backdrop-filter:blur(var(--rt-aside-backdrop-blur));backdrop-filter:blur(var(--rt-aside-backdrop-blur));background:var(--rt-aside-backdrop-bg);opacity:0;pointer-events:none;transition:opacity var(--rt-aside-animation-duration) ease}.cdk-overlay-backdrop.rt-aside-backdrop.rt-aside-backdrop--visible{opacity:1;pointer-events:auto}.rt-aside-overlay{height:100dvh;transition:transform var(--rt-aside-animation-duration) ease}.rt-aside-overlay:not(.rt-aside-overlay--open){pointer-events:none}.rt-aside-overlay.rt-aside-overlay--entering{transition:none}.rt-aside-overlay--position-right.rt-aside-overlay--entering,.rt-aside-overlay--position-right.rt-aside-overlay--leaving{transform:translate(100%)}.rt-aside-overlay--position-left.rt-aside-overlay--entering,.rt-aside-overlay--position-left.rt-aside-overlay--leaving{transform:translate(-100%)}.rt-aside-overlay--position-right.rt-aside-overlay--open,.rt-aside-overlay--position-left.rt-aside-overlay--open{transform:translate(0)}@media(width<=768px){.rt-aside-overlay{overflow:hidden;width:100dvw;max-width:100dvw}}@media(prefers-reduced-motion:reduce){.rt-aside-overlay{transition:none}}.rt-container{display:grid;min-height:100%;flex:1 1 auto;background-color:var(--rt-color-bg-page, #f5f5f5);color:var(--rt-color-text-primary, #222);grid-template:\"header header\" auto \"left-sidenav toolbar\" auto \"left-sidenav content\" 1fr/auto 1fr}.rt-container__header{position:sticky;z-index:1;top:0;display:block;grid-area:header}.rt-container__left-sidenav{display:block;padding:var(--rt-space-md);border-right:var(--rt-border-width-thin) solid var(--rt-color-border-subtle);background-color:var(--rt-color-bg-surface, #fff);grid-area:left-sidenav}.rt-container__toolbar{display:flex;align-items:center;padding:var(--rt-space-sm) var(--rt-space-md);border-bottom:var(--rt-border-width-thin) solid var(--rt-color-border-subtle);background-color:var(--rt-color-bg-surface, #fff);grid-area:toolbar}.rt-container__toolbar--slot--left{justify-content:flex-start}.rt-container__toolbar--slot--center{justify-content:center}.rt-container__toolbar--slot--right{justify-content:flex-end}.rt-container__content{display:flex;overflow:auto;min-height:0;flex-direction:column;grid-area:content}.rt-container--viewport{block-size:100dvh;min-block-size:0}.rt-container--viewport .rt-container__content{overflow:hidden}.rt-container--viewport .rt-container__left-sidenav{overflow:auto}@media(width<=768px){.rt-container--mobile-left-bottom{grid-template:\"header\" auto \"toolbar\" auto \"content\" 1fr \"left-sidenav\" auto/1fr}.rt-container--mobile-left-bottom .rt-container__left-sidenav{padding:0;border-top:var(--rt-border-width-thin) solid var(--rt-color-border-subtle);border-right:none}}\n"] }]
|
|
5846
5892
|
}], ctorParameters: () => [], propDecorators: { headerTpl: [{ type: i0.ContentChild, args: [i0.forwardRef(() => RtContainerHeaderDirective), { ...{
|
|
5847
5893
|
read: TemplateRef,
|
|
5848
5894
|
}, isSignal: true }] }], leftSidenavTpl: [{ type: i0.ContentChild, args: [i0.forwardRef(() => RtContainerLeftSidenavDirective), { ...{
|
|
@@ -5959,14 +6005,14 @@ class RtDialogComponent {
|
|
|
5959
6005
|
...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
|
|
5960
6006
|
}
|
|
5961
6007
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5962
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.5", type: RtDialogComponent, isStandalone: true, selector: "rt-dialog", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.--rt-dialog-width": "width()" }, classAttribute: "rt-dialog" }, ngImport: i0, template: "<div\n rtBlock=\"rt-dialog\"\n qa-dataid=\"dialog\"\n role=\"dialog\"\n aria-modal=\"true\"\n [rtMod]=\"{ size: size() }\"\n [style.--rt-dialog-width]=\"width()\"\n [attr.aria-label]=\"ariaLabel()\">\n <ng-content />\n</div>\n", styles: ["@charset \"UTF-8\"
|
|
6008
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.5", type: RtDialogComponent, isStandalone: true, selector: "rt-dialog", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.--rt-dialog-width": "width()" }, classAttribute: "rt-dialog" }, ngImport: i0, template: "<div\n rtBlock=\"rt-dialog\"\n qa-dataid=\"dialog\"\n role=\"dialog\"\n aria-modal=\"true\"\n [rtMod]=\"{ size: size() }\"\n [style.--rt-dialog-width]=\"width()\"\n [attr.aria-label]=\"ariaLabel()\">\n <ng-content />\n</div>\n", styles: ["@charset \"UTF-8\";rt-dialog{display:contents}:root{--rt-dialog-width-sm: 460px;--rt-dialog-width-md: 660px;--rt-dialog-width-lg: 860px;--rt-dialog-shadow: 0 0 40px 0 rgb(0 0 0 / 25%);--rt-dialog-backdrop-bg: rgb(25 41 64 / 70%);--rt-dialog-backdrop-blur: 5px}rt-dialog .rt-dialog{display:flex;overflow:hidden;width:var(--rt-dialog-width, var(--rt-dialog-width-md));max-width:90dvw;max-height:90dvh;flex-direction:column;padding:0;border:none;border-radius:var(--rt-radius-xl, 15px);background:var(--rt-color-bg-surface);box-shadow:var(--rt-dialog-shadow);color:var(--rt-color-text-primary)}rt-dialog .rt-dialog--size--sm{width:var(--rt-dialog-width, var(--rt-dialog-width-sm))}rt-dialog .rt-dialog--size--md{width:var(--rt-dialog-width, var(--rt-dialog-width-md))}rt-dialog .rt-dialog--size--lg{width:var(--rt-dialog-width, var(--rt-dialog-width-lg))}.rt-dialog-backdrop{-webkit-backdrop-filter:blur(var(--rt-dialog-backdrop-blur));backdrop-filter:blur(var(--rt-dialog-backdrop-blur));background:var(--rt-dialog-backdrop-bg)}.rt-dialog-overlay{display:flex;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
5963
6009
|
}
|
|
5964
6010
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtDialogComponent, decorators: [{
|
|
5965
6011
|
type: Component,
|
|
5966
6012
|
args: [{ selector: 'rt-dialog', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [BlockDirective, ModDirective], host: {
|
|
5967
6013
|
class: BEM_BLOCK$Q,
|
|
5968
6014
|
'[style.--rt-dialog-width]': 'width()',
|
|
5969
|
-
}, template: "<div\n rtBlock=\"rt-dialog\"\n qa-dataid=\"dialog\"\n role=\"dialog\"\n aria-modal=\"true\"\n [rtMod]=\"{ size: size() }\"\n [style.--rt-dialog-width]=\"width()\"\n [attr.aria-label]=\"ariaLabel()\">\n <ng-content />\n</div>\n", styles: ["@charset \"UTF-8\"
|
|
6015
|
+
}, template: "<div\n rtBlock=\"rt-dialog\"\n qa-dataid=\"dialog\"\n role=\"dialog\"\n aria-modal=\"true\"\n [rtMod]=\"{ size: size() }\"\n [style.--rt-dialog-width]=\"width()\"\n [attr.aria-label]=\"ariaLabel()\">\n <ng-content />\n</div>\n", styles: ["@charset \"UTF-8\";rt-dialog{display:contents}:root{--rt-dialog-width-sm: 460px;--rt-dialog-width-md: 660px;--rt-dialog-width-lg: 860px;--rt-dialog-shadow: 0 0 40px 0 rgb(0 0 0 / 25%);--rt-dialog-backdrop-bg: rgb(25 41 64 / 70%);--rt-dialog-backdrop-blur: 5px}rt-dialog .rt-dialog{display:flex;overflow:hidden;width:var(--rt-dialog-width, var(--rt-dialog-width-md));max-width:90dvw;max-height:90dvh;flex-direction:column;padding:0;border:none;border-radius:var(--rt-radius-xl, 15px);background:var(--rt-color-bg-surface);box-shadow:var(--rt-dialog-shadow);color:var(--rt-color-text-primary)}rt-dialog .rt-dialog--size--sm{width:var(--rt-dialog-width, var(--rt-dialog-width-sm))}rt-dialog .rt-dialog--size--md{width:var(--rt-dialog-width, var(--rt-dialog-width-md))}rt-dialog .rt-dialog--size--lg{width:var(--rt-dialog-width, var(--rt-dialog-width-lg))}.rt-dialog-backdrop{-webkit-backdrop-filter:blur(var(--rt-dialog-backdrop-blur));backdrop-filter:blur(var(--rt-dialog-backdrop-blur));background:var(--rt-dialog-backdrop-bg)}.rt-dialog-overlay{display:flex;align-items:center;justify-content:center}\n"] }]
|
|
5970
6016
|
}], propDecorators: { size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }] } });
|
|
5971
6017
|
|
|
5972
6018
|
/** Что делает панель, когда её просят закрыться. */
|
|
@@ -6657,28 +6703,30 @@ function clamp$1(value, min, max) {
|
|
|
6657
6703
|
* `useExisting: forwardRef(...)` — `useClass` на self-reference вызывает
|
|
6658
6704
|
* NG0200 cycle при boot'е.
|
|
6659
6705
|
*
|
|
6660
|
-
*
|
|
6661
|
-
*
|
|
6662
|
-
*
|
|
6706
|
+
* Отключение складывается из двух независимых источников: входа `disabled` и
|
|
6707
|
+
* слова формы (CVA `setDisabledState`). Отключено, если так сказал любой из
|
|
6708
|
+
* них. Сводить их в один signal нельзя: форма зовёт `setDisabledState` при
|
|
6709
|
+
* связывании контрола, то есть раньше, чем счётчик впервые обновит своё вью,
|
|
6710
|
+
* и мирроринг входа затирал бы её слово — контрол, созданный отключённым,
|
|
6711
|
+
* оказывался бы рабочим.
|
|
6663
6712
|
*
|
|
6664
6713
|
* Хост объявлен группой с `aria-label`, значение помечено `aria-live`, так что
|
|
6665
6714
|
* скринридер называет назначение счётчика и проговаривает новое число.
|
|
6666
6715
|
*
|
|
6667
|
-
* ViewEncapsulation —
|
|
6716
|
+
* ViewEncapsulation.None — стили таргетируют имя элемента и BEM-класс блока.
|
|
6668
6717
|
*/
|
|
6669
6718
|
class RtCounterComponent {
|
|
6670
|
-
#onChange;
|
|
6671
|
-
#onTouched;
|
|
6672
|
-
#decreaseFallback;
|
|
6673
|
-
#increaseFallback;
|
|
6674
6719
|
constructor() {
|
|
6675
6720
|
this.#onChange = () => undefined;
|
|
6676
6721
|
this.#onTouched = () => undefined;
|
|
6677
6722
|
this.#decreaseFallback = translateSignal(RT_COUNTER_DECREASE_KEY);
|
|
6678
6723
|
this.#increaseFallback = translateSignal(RT_COUNTER_INCREASE_KEY);
|
|
6724
|
+
/** Отключение, назначенное формой через CVA (`setDisabledState`). */
|
|
6725
|
+
this.#disabledByForm = signal(false, /* @ts-ignore */
|
|
6726
|
+
...(ngDevMode ? [{ debugName: "#disabledByForm" }] : /* istanbul ignore next */ []));
|
|
6679
6727
|
this.value = signal(0, /* @ts-ignore */
|
|
6680
6728
|
...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
6681
|
-
this.isDisabled =
|
|
6729
|
+
this.isDisabled = computed(() => this.disabled() || this.#disabledByForm(), /* @ts-ignore */
|
|
6682
6730
|
...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
|
|
6683
6731
|
/** Своя подпись важнее умолчания: форма знает, что именно считает */
|
|
6684
6732
|
this.decreaseAriaLabel = computed(() => this.decreaseLabel() || this.#decreaseFallback(), /* @ts-ignore */
|
|
@@ -6702,13 +6750,13 @@ class RtCounterComponent {
|
|
|
6702
6750
|
this.increaseLabel = input('', /* @ts-ignore */
|
|
6703
6751
|
...(ngDevMode ? [{ debugName: "increaseLabel" }] : /* istanbul ignore next */ []));
|
|
6704
6752
|
this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
6705
|
-
// Синхронизируем signal-input `disabled` в `isDisabled`, чтобы
|
|
6706
|
-
// `[disabled]="..."` и `setDisabledState(...)` (CVA) писали в одно
|
|
6707
|
-
// и то же место. Effect живёт в injection context конструктора.
|
|
6708
|
-
effect(() => {
|
|
6709
|
-
this.isDisabled.set(this.disabled());
|
|
6710
|
-
});
|
|
6711
6753
|
}
|
|
6754
|
+
#onChange;
|
|
6755
|
+
#onTouched;
|
|
6756
|
+
#decreaseFallback;
|
|
6757
|
+
#increaseFallback;
|
|
6758
|
+
/** Отключение, назначенное формой через CVA (`setDisabledState`). */
|
|
6759
|
+
#disabledByForm;
|
|
6712
6760
|
writeValue(value) {
|
|
6713
6761
|
this.value.set(clamp$1(Number(value ?? this.min()), this.min(), this.max()));
|
|
6714
6762
|
}
|
|
@@ -6719,7 +6767,7 @@ class RtCounterComponent {
|
|
|
6719
6767
|
this.#onTouched = fn;
|
|
6720
6768
|
}
|
|
6721
6769
|
setDisabledState(disabled) {
|
|
6722
|
-
this.
|
|
6770
|
+
this.#disabledByForm.set(disabled);
|
|
6723
6771
|
}
|
|
6724
6772
|
decrease() {
|
|
6725
6773
|
this.#shift(-this.step());
|
|
@@ -6746,15 +6794,15 @@ class RtCounterComponent {
|
|
|
6746
6794
|
useExisting: forwardRef(() => RtCounterComponent),
|
|
6747
6795
|
multi: true,
|
|
6748
6796
|
},
|
|
6749
|
-
], ngImport: i0, template: "<ng-container rtBlock=\"rt-counter\">\n <rt-icon-button\n rtElem=\"decrease\"\n qa-dataid=\"counter-decrease\"\n icon=\"minus\"\n variant=\"secondary\"\n size=\"sm\"\n [ariaLabel]=\"decreaseAriaLabel()\"\n [disabled]=\"!canDecrease()\"\n (clicked)=\"decrease()\" />\n <span rtElem=\"value\" qa-dataid=\"counter-value\" aria-live=\"polite\">{{ value() }}</span>\n <rt-icon-button\n rtElem=\"increase\"\n qa-dataid=\"counter-increase\"\n icon=\"ico-plus\"\n variant=\"secondary\"\n size=\"sm\"\n [ariaLabel]=\"increaseAriaLabel()\"\n [disabled]=\"!canIncrease()\"\n (clicked)=\"increase()\" />\n</ng-container>\n", styles: ["
|
|
6797
|
+
], ngImport: i0, template: "<ng-container rtBlock=\"rt-counter\">\n <rt-icon-button\n rtElem=\"decrease\"\n qa-dataid=\"counter-decrease\"\n icon=\"minus\"\n variant=\"secondary\"\n size=\"sm\"\n [ariaLabel]=\"decreaseAriaLabel()\"\n [disabled]=\"!canDecrease()\"\n (clicked)=\"decrease()\" />\n <span rtElem=\"value\" qa-dataid=\"counter-value\" aria-live=\"polite\">{{ value() }}</span>\n <rt-icon-button\n rtElem=\"increase\"\n qa-dataid=\"counter-increase\"\n icon=\"ico-plus\"\n variant=\"secondary\"\n size=\"sm\"\n [ariaLabel]=\"increaseAriaLabel()\"\n [disabled]=\"!canIncrease()\"\n (clicked)=\"increase()\" />\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-counter{display:inline-flex;align-items:center;gap:var(--rt-counter-gap)}.rt-counter__value{min-width:var(--rt-counter-value-min-width);color:var(--rt-counter-value-color);font-size:var(--rt-counter-value-font-size);font-variant-numeric:tabular-nums;text-align:center}\n"], dependencies: [{ kind: "directive", type:
|
|
6750
6798
|
// rt-tools
|
|
6751
6799
|
BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "component", type:
|
|
6752
6800
|
// components
|
|
6753
|
-
RtIconButtonComponent, selector: "rt-icon-button", inputs: ["icon", "ariaLabel", "variant", "iconColor", "size", "iconSize", "shape", "type", "tooltip", "tabIndex", "loading", "disabled", "active", "indicator"], outputs: ["clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
6801
|
+
RtIconButtonComponent, selector: "rt-icon-button", inputs: ["icon", "ariaLabel", "variant", "iconColor", "size", "iconSize", "shape", "type", "tooltip", "tabIndex", "loading", "disabled", "active", "indicator"], outputs: ["clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
6754
6802
|
}
|
|
6755
6803
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtCounterComponent, decorators: [{
|
|
6756
6804
|
type: Component,
|
|
6757
|
-
args: [{ selector: 'rt-counter', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
6805
|
+
args: [{ selector: 'rt-counter', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
6758
6806
|
// rt-tools
|
|
6759
6807
|
BlockDirective,
|
|
6760
6808
|
ElemDirective,
|
|
@@ -6770,8 +6818,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
6770
6818
|
class: BEM_BLOCK$O,
|
|
6771
6819
|
role: 'group',
|
|
6772
6820
|
'[attr.aria-label]': 'ariaLabel()',
|
|
6773
|
-
}, template: "<ng-container rtBlock=\"rt-counter\">\n <rt-icon-button\n rtElem=\"decrease\"\n qa-dataid=\"counter-decrease\"\n icon=\"minus\"\n variant=\"secondary\"\n size=\"sm\"\n [ariaLabel]=\"decreaseAriaLabel()\"\n [disabled]=\"!canDecrease()\"\n (clicked)=\"decrease()\" />\n <span rtElem=\"value\" qa-dataid=\"counter-value\" aria-live=\"polite\">{{ value() }}</span>\n <rt-icon-button\n rtElem=\"increase\"\n qa-dataid=\"counter-increase\"\n icon=\"ico-plus\"\n variant=\"secondary\"\n size=\"sm\"\n [ariaLabel]=\"increaseAriaLabel()\"\n [disabled]=\"!canIncrease()\"\n (clicked)=\"increase()\" />\n</ng-container>\n", styles: ["
|
|
6774
|
-
}],
|
|
6821
|
+
}, template: "<ng-container rtBlock=\"rt-counter\">\n <rt-icon-button\n rtElem=\"decrease\"\n qa-dataid=\"counter-decrease\"\n icon=\"minus\"\n variant=\"secondary\"\n size=\"sm\"\n [ariaLabel]=\"decreaseAriaLabel()\"\n [disabled]=\"!canDecrease()\"\n (clicked)=\"decrease()\" />\n <span rtElem=\"value\" qa-dataid=\"counter-value\" aria-live=\"polite\">{{ value() }}</span>\n <rt-icon-button\n rtElem=\"increase\"\n qa-dataid=\"counter-increase\"\n icon=\"ico-plus\"\n variant=\"secondary\"\n size=\"sm\"\n [ariaLabel]=\"increaseAriaLabel()\"\n [disabled]=\"!canIncrease()\"\n (clicked)=\"increase()\" />\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-counter{display:inline-flex;align-items:center;gap:var(--rt-counter-gap)}.rt-counter__value{min-width:var(--rt-counter-value-min-width);color:var(--rt-counter-value-color);font-size:var(--rt-counter-value-font-size);font-variant-numeric:tabular-nums;text-align:center}\n"] }]
|
|
6822
|
+
}], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], step: [{ type: i0.Input, args: [{ isSignal: true, alias: "step", required: false }] }], decreaseLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "decreaseLabel", required: false }] }], increaseLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "increaseLabel", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
|
|
6775
6823
|
|
|
6776
6824
|
const BEM_BLOCK$N = 'rt-counter-row';
|
|
6777
6825
|
/**
|
|
@@ -6782,7 +6830,7 @@ const BEM_BLOCK$N = 'rt-counter-row';
|
|
|
6782
6830
|
* раскладку, и её не приходится расширять каждый раз, когда у `rt-counter`
|
|
6783
6831
|
* появляется новый input.
|
|
6784
6832
|
*
|
|
6785
|
-
* ViewEncapsulation —
|
|
6833
|
+
* ViewEncapsulation.None — стили таргетируют имя элемента и BEM-класс блока.
|
|
6786
6834
|
*/
|
|
6787
6835
|
class RtCounterRowComponent {
|
|
6788
6836
|
constructor() {
|
|
@@ -6793,19 +6841,19 @@ class RtCounterRowComponent {
|
|
|
6793
6841
|
...(ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []));
|
|
6794
6842
|
}
|
|
6795
6843
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtCounterRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6796
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtCounterRowComponent, isStandalone: true, selector: "rt-counter-row", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-counter-row" }, ngImport: i0, template: "<ng-container rtBlock=\"rt-counter-row\">\n <span rtElem=\"text\">\n <span rtElem=\"label\" qa-dataid=\"counter-row-label\">{{ label() }}</span>\n @if (hint(); as hintText) {\n <span rtElem=\"hint\" qa-dataid=\"counter-row-hint\">{{ hintText }}</span>\n }\n </span>\n <ng-content />\n</ng-container>\n", styles: ["
|
|
6844
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtCounterRowComponent, isStandalone: true, selector: "rt-counter-row", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-counter-row" }, ngImport: i0, template: "<ng-container rtBlock=\"rt-counter-row\">\n <span rtElem=\"text\">\n <span rtElem=\"label\" qa-dataid=\"counter-row-label\">{{ label() }}</span>\n @if (hint(); as hintText) {\n <span rtElem=\"hint\" qa-dataid=\"counter-row-hint\">{{ hintText }}</span>\n }\n </span>\n <ng-content />\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-counter-row{display:flex;align-items:center;justify-content:space-between;padding:var(--rt-counter-row-padding-y) 0;gap:var(--rt-counter-row-gap)}.rt-counter-row:not(:first-of-type){border-top:var(--rt-border-width-thin) solid var(--rt-counter-row-color-border)}.rt-counter-row__text{display:flex;flex-direction:column;gap:var(--rt-space-2xs);text-align:start}.rt-counter-row__label{color:var(--rt-counter-row-label-color);font-size:var(--rt-counter-row-label-font-size);font-weight:var(--rt-font-weight-medium)}.rt-counter-row__hint{color:var(--rt-counter-row-hint-color);font-size:var(--rt-counter-row-hint-font-size)}\n"], dependencies: [{ kind: "directive", type:
|
|
6797
6845
|
// rt-tools
|
|
6798
|
-
BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
6846
|
+
BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
6799
6847
|
}
|
|
6800
6848
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtCounterRowComponent, decorators: [{
|
|
6801
6849
|
type: Component,
|
|
6802
|
-
args: [{ selector: 'rt-counter-row', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
6850
|
+
args: [{ selector: 'rt-counter-row', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
6803
6851
|
// rt-tools
|
|
6804
6852
|
BlockDirective,
|
|
6805
6853
|
ElemDirective,
|
|
6806
6854
|
], host: {
|
|
6807
6855
|
class: BEM_BLOCK$N,
|
|
6808
|
-
}, template: "<ng-container rtBlock=\"rt-counter-row\">\n <span rtElem=\"text\">\n <span rtElem=\"label\" qa-dataid=\"counter-row-label\">{{ label() }}</span>\n @if (hint(); as hintText) {\n <span rtElem=\"hint\" qa-dataid=\"counter-row-hint\">{{ hintText }}</span>\n }\n </span>\n <ng-content />\n</ng-container>\n", styles: ["
|
|
6856
|
+
}, template: "<ng-container rtBlock=\"rt-counter-row\">\n <span rtElem=\"text\">\n <span rtElem=\"label\" qa-dataid=\"counter-row-label\">{{ label() }}</span>\n @if (hint(); as hintText) {\n <span rtElem=\"hint\" qa-dataid=\"counter-row-hint\">{{ hintText }}</span>\n }\n </span>\n <ng-content />\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-counter-row{display:flex;align-items:center;justify-content:space-between;padding:var(--rt-counter-row-padding-y) 0;gap:var(--rt-counter-row-gap)}.rt-counter-row:not(:first-of-type){border-top:var(--rt-border-width-thin) solid var(--rt-counter-row-color-border)}.rt-counter-row__text{display:flex;flex-direction:column;gap:var(--rt-space-2xs);text-align:start}.rt-counter-row__label{color:var(--rt-counter-row-label-color);font-size:var(--rt-counter-row-label-font-size);font-weight:var(--rt-font-weight-medium)}.rt-counter-row__hint{color:var(--rt-counter-row-hint-color);font-size:var(--rt-counter-row-hint-font-size)}\n"] }]
|
|
6809
6857
|
}], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], hint: [{ type: i0.Input, args: [{ isSignal: true, alias: "hint", required: false }] }] } });
|
|
6810
6858
|
|
|
6811
6859
|
const BEM_BLOCK$M = 'rt-date-picker';
|
|
@@ -7776,13 +7824,13 @@ class RtToggleButtonGroupComponent {
|
|
|
7776
7824
|
this.valueChange.emit(option.value);
|
|
7777
7825
|
}
|
|
7778
7826
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtToggleButtonGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7779
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtToggleButtonGroupComponent, isStandalone: true, selector: "rt-toggle-button-group", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, fullWidth: { classPropertyName: "fullWidth", publicName: "fullWidth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, host: { properties: { "class.rt-toggle-button-group--full-width": "fullWidth()" }, classAttribute: "rt-toggle-button-group" }, ngImport: i0, template: "<div\n rtBlock=\"rt-toggle-button-group\"\n role=\"group\"\n [rtMod]=\"{\n sm: size() === 'sm',\n md: size() === 'md',\n lg: size() === 'lg',\n disabled: disabled(),\n }\"\n [attr.aria-label]=\"ariaLabel()\">\n @for (option of options(); track option.value) {\n <button\n type=\"button\"\n rtElem=\"button\"\n qa-dataid=\"toggle-button-group-option\"\n [attr.data-value]=\"option.value\"\n [rtMod]=\"{\n active: value() === option.value,\n first: $first,\n last: $last,\n }\"\n [disabled]=\"disabled()\"\n [attr.aria-pressed]=\"value() === option.value ? 'true' : 'false'\"\n [rtTooltip]=\"option.title ?? ''\"\n (click)=\"onOptionClick(option)\">\n @if (option.icon) {\n <rt-icon rtElem=\"icon\" color=\"current\" [name]=\"option.icon\" [size]=\"iconSize()\" />\n }\n <span rtElem=\"label\">{{ option.label }}</span>\n </button>\n }\n</div>\n", styles: ["@charset \"UTF-8\"
|
|
7827
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtToggleButtonGroupComponent, isStandalone: true, selector: "rt-toggle-button-group", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, fullWidth: { classPropertyName: "fullWidth", publicName: "fullWidth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, host: { properties: { "class.rt-toggle-button-group--full-width": "fullWidth()" }, classAttribute: "rt-toggle-button-group" }, ngImport: i0, template: "<div\n rtBlock=\"rt-toggle-button-group\"\n role=\"group\"\n [rtMod]=\"{\n sm: size() === 'sm',\n md: size() === 'md',\n lg: size() === 'lg',\n disabled: disabled(),\n }\"\n [attr.aria-label]=\"ariaLabel()\">\n @for (option of options(); track option.value) {\n <button\n type=\"button\"\n rtElem=\"button\"\n qa-dataid=\"toggle-button-group-option\"\n [attr.data-value]=\"option.value\"\n [rtMod]=\"{\n active: value() === option.value,\n first: $first,\n last: $last,\n }\"\n [disabled]=\"disabled()\"\n [attr.aria-pressed]=\"value() === option.value ? 'true' : 'false'\"\n [rtTooltip]=\"option.title ?? ''\"\n (click)=\"onOptionClick(option)\">\n @if (option.icon) {\n <rt-icon rtElem=\"icon\" color=\"current\" [name]=\"option.icon\" [size]=\"iconSize()\" />\n }\n <span rtElem=\"label\">{{ option.label }}</span>\n </button>\n }\n</div>\n", styles: ["@charset \"UTF-8\";rt-toggle-button-group{display:inline-flex;--rt-toggle-button-group-track-bg: #eef0f4;--rt-toggle-button-group-active-bg: var(--rt-color-bg-surface)}rt-toggle-button-group .rt-toggle-button-group{--rt-toggle-button-group-height: 30px;--rt-toggle-button-group-track-padding: 4px;--rt-toggle-button-group-track-radius: 8px;--rt-toggle-button-group-btn-padding: 0 8px;--rt-toggle-button-group-btn-radius: 8px;--rt-toggle-button-group-btn-gap: 4px;--rt-toggle-button-group-btn-font-size: 12px;--rt-toggle-button-group-btn-line-height: 14px;display:inline-flex;height:var(--rt-toggle-button-group-height);box-sizing:border-box;align-items:stretch;padding:var(--rt-toggle-button-group-track-padding);border-radius:var(--rt-toggle-button-group-track-radius);background-color:var(--rt-toggle-button-group-track-bg);gap:0}rt-toggle-button-group .rt-toggle-button-group__button{display:inline-flex;align-items:center;justify-content:center;padding:var(--rt-toggle-button-group-btn-padding);border:0;border-radius:var(--rt-toggle-button-group-btn-radius);background-color:transparent;color:var(--rt-color-text-muted);cursor:pointer;font-family:inherit;font-size:var(--rt-toggle-button-group-btn-font-size);font-weight:var(--rt-font-weight-semibold);gap:var(--rt-toggle-button-group-btn-gap);line-height:var(--rt-toggle-button-group-btn-line-height);transition:background-color var(--rt-duration-fast) ease,color var(--rt-duration-fast) ease}rt-toggle-button-group .rt-toggle-button-group__button:hover:not(:disabled,rt-toggle-button-group .rt-toggle-button-group__button--active){color:var(--rt-color-text-primary)}rt-toggle-button-group .rt-toggle-button-group__button--active{background-color:var(--rt-toggle-button-group-active-bg);color:var(--rt-color-text-primary)}rt-toggle-button-group .rt-toggle-button-group__button:focus-visible{position:relative;z-index:1;box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:1px}rt-toggle-button-group .rt-toggle-button-group__button:disabled{cursor:not-allowed}rt-toggle-button-group .rt-toggle-button-group__label{display:inline-block;white-space:nowrap}rt-toggle-button-group .rt-toggle-button-group__icon{flex-shrink:0}rt-toggle-button-group .rt-toggle-button-group--md{--rt-toggle-button-group-height: 40px;--rt-toggle-button-group-track-radius: 10px;--rt-toggle-button-group-btn-padding: 0 14px;--rt-toggle-button-group-btn-radius: 10px;--rt-toggle-button-group-btn-gap: 6px;--rt-toggle-button-group-btn-font-size: 14px;--rt-toggle-button-group-btn-line-height: 16px}rt-toggle-button-group .rt-toggle-button-group--lg{--rt-toggle-button-group-height: 50px;--rt-toggle-button-group-track-radius: 12px;--rt-toggle-button-group-btn-padding: 0 20px;--rt-toggle-button-group-btn-radius: 12px;--rt-toggle-button-group-btn-gap: 8px;--rt-toggle-button-group-btn-font-size: 16px;--rt-toggle-button-group-btn-line-height: 18px}rt-toggle-button-group .rt-toggle-button-group--disabled{opacity:.5}rt-toggle-button-group.rt-toggle-button-group--full-width{display:flex;width:100%}rt-toggle-button-group.rt-toggle-button-group--full-width .rt-toggle-button-group{display:flex;width:100%;flex:1 1 auto}rt-toggle-button-group.rt-toggle-button-group--full-width .rt-toggle-button-group .rt-toggle-button-group__button{flex:1 1 0}:root[data-theme=dark] rt-toggle-button-group,html.rt-theme-dark rt-toggle-button-group{--rt-toggle-button-group-track-bg: var(--rt-neutral-900)}\n"], dependencies: [{ kind: "component", type:
|
|
7780
7828
|
// standalone components / directives
|
|
7781
|
-
RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "directive", type: RtTooltipDirective, selector: "[rtTooltip]", inputs: ["rtTooltip", "rtTooltipPlacement"], exportAs: ["rtTooltip"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
7829
|
+
RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "directive", type: RtTooltipDirective, selector: "[rtTooltip]", inputs: ["rtTooltip", "rtTooltipPlacement"], exportAs: ["rtTooltip"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
7782
7830
|
}
|
|
7783
7831
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtToggleButtonGroupComponent, decorators: [{
|
|
7784
7832
|
type: Component,
|
|
7785
|
-
args: [{ selector: 'rt-toggle-button-group', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
7833
|
+
args: [{ selector: 'rt-toggle-button-group', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
7786
7834
|
// standalone components / directives
|
|
7787
7835
|
RtIconComponent,
|
|
7788
7836
|
RtTooltipDirective,
|
|
@@ -7792,7 +7840,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
7792
7840
|
], host: {
|
|
7793
7841
|
class: BEM_BLOCK$A,
|
|
7794
7842
|
'[class.rt-toggle-button-group--full-width]': 'fullWidth()',
|
|
7795
|
-
}, template: "<div\n rtBlock=\"rt-toggle-button-group\"\n role=\"group\"\n [rtMod]=\"{\n sm: size() === 'sm',\n md: size() === 'md',\n lg: size() === 'lg',\n disabled: disabled(),\n }\"\n [attr.aria-label]=\"ariaLabel()\">\n @for (option of options(); track option.value) {\n <button\n type=\"button\"\n rtElem=\"button\"\n qa-dataid=\"toggle-button-group-option\"\n [attr.data-value]=\"option.value\"\n [rtMod]=\"{\n active: value() === option.value,\n first: $first,\n last: $last,\n }\"\n [disabled]=\"disabled()\"\n [attr.aria-pressed]=\"value() === option.value ? 'true' : 'false'\"\n [rtTooltip]=\"option.title ?? ''\"\n (click)=\"onOptionClick(option)\">\n @if (option.icon) {\n <rt-icon rtElem=\"icon\" color=\"current\" [name]=\"option.icon\" [size]=\"iconSize()\" />\n }\n <span rtElem=\"label\">{{ option.label }}</span>\n </button>\n }\n</div>\n", styles: ["@charset \"UTF-8\"
|
|
7843
|
+
}, template: "<div\n rtBlock=\"rt-toggle-button-group\"\n role=\"group\"\n [rtMod]=\"{\n sm: size() === 'sm',\n md: size() === 'md',\n lg: size() === 'lg',\n disabled: disabled(),\n }\"\n [attr.aria-label]=\"ariaLabel()\">\n @for (option of options(); track option.value) {\n <button\n type=\"button\"\n rtElem=\"button\"\n qa-dataid=\"toggle-button-group-option\"\n [attr.data-value]=\"option.value\"\n [rtMod]=\"{\n active: value() === option.value,\n first: $first,\n last: $last,\n }\"\n [disabled]=\"disabled()\"\n [attr.aria-pressed]=\"value() === option.value ? 'true' : 'false'\"\n [rtTooltip]=\"option.title ?? ''\"\n (click)=\"onOptionClick(option)\">\n @if (option.icon) {\n <rt-icon rtElem=\"icon\" color=\"current\" [name]=\"option.icon\" [size]=\"iconSize()\" />\n }\n <span rtElem=\"label\">{{ option.label }}</span>\n </button>\n }\n</div>\n", styles: ["@charset \"UTF-8\";rt-toggle-button-group{display:inline-flex;--rt-toggle-button-group-track-bg: #eef0f4;--rt-toggle-button-group-active-bg: var(--rt-color-bg-surface)}rt-toggle-button-group .rt-toggle-button-group{--rt-toggle-button-group-height: 30px;--rt-toggle-button-group-track-padding: 4px;--rt-toggle-button-group-track-radius: 8px;--rt-toggle-button-group-btn-padding: 0 8px;--rt-toggle-button-group-btn-radius: 8px;--rt-toggle-button-group-btn-gap: 4px;--rt-toggle-button-group-btn-font-size: 12px;--rt-toggle-button-group-btn-line-height: 14px;display:inline-flex;height:var(--rt-toggle-button-group-height);box-sizing:border-box;align-items:stretch;padding:var(--rt-toggle-button-group-track-padding);border-radius:var(--rt-toggle-button-group-track-radius);background-color:var(--rt-toggle-button-group-track-bg);gap:0}rt-toggle-button-group .rt-toggle-button-group__button{display:inline-flex;align-items:center;justify-content:center;padding:var(--rt-toggle-button-group-btn-padding);border:0;border-radius:var(--rt-toggle-button-group-btn-radius);background-color:transparent;color:var(--rt-color-text-muted);cursor:pointer;font-family:inherit;font-size:var(--rt-toggle-button-group-btn-font-size);font-weight:var(--rt-font-weight-semibold);gap:var(--rt-toggle-button-group-btn-gap);line-height:var(--rt-toggle-button-group-btn-line-height);transition:background-color var(--rt-duration-fast) ease,color var(--rt-duration-fast) ease}rt-toggle-button-group .rt-toggle-button-group__button:hover:not(:disabled,rt-toggle-button-group .rt-toggle-button-group__button--active){color:var(--rt-color-text-primary)}rt-toggle-button-group .rt-toggle-button-group__button--active{background-color:var(--rt-toggle-button-group-active-bg);color:var(--rt-color-text-primary)}rt-toggle-button-group .rt-toggle-button-group__button:focus-visible{position:relative;z-index:1;box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:1px}rt-toggle-button-group .rt-toggle-button-group__button:disabled{cursor:not-allowed}rt-toggle-button-group .rt-toggle-button-group__label{display:inline-block;white-space:nowrap}rt-toggle-button-group .rt-toggle-button-group__icon{flex-shrink:0}rt-toggle-button-group .rt-toggle-button-group--md{--rt-toggle-button-group-height: 40px;--rt-toggle-button-group-track-radius: 10px;--rt-toggle-button-group-btn-padding: 0 14px;--rt-toggle-button-group-btn-radius: 10px;--rt-toggle-button-group-btn-gap: 6px;--rt-toggle-button-group-btn-font-size: 14px;--rt-toggle-button-group-btn-line-height: 16px}rt-toggle-button-group .rt-toggle-button-group--lg{--rt-toggle-button-group-height: 50px;--rt-toggle-button-group-track-radius: 12px;--rt-toggle-button-group-btn-padding: 0 20px;--rt-toggle-button-group-btn-radius: 12px;--rt-toggle-button-group-btn-gap: 8px;--rt-toggle-button-group-btn-font-size: 16px;--rt-toggle-button-group-btn-line-height: 18px}rt-toggle-button-group .rt-toggle-button-group--disabled{opacity:.5}rt-toggle-button-group.rt-toggle-button-group--full-width{display:flex;width:100%}rt-toggle-button-group.rt-toggle-button-group--full-width .rt-toggle-button-group{display:flex;width:100%;flex:1 1 auto}rt-toggle-button-group.rt-toggle-button-group--full-width .rt-toggle-button-group .rt-toggle-button-group__button{flex:1 1 0}:root[data-theme=dark] rt-toggle-button-group,html.rt-theme-dark rt-toggle-button-group{--rt-toggle-button-group-track-bg: var(--rt-neutral-900)}\n"] }]
|
|
7796
7844
|
}], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: true }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], fullWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "fullWidth", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] } });
|
|
7797
7845
|
|
|
7798
7846
|
const BEM_BLOCK$z = 'rt-filter-control';
|
|
@@ -7940,13 +7988,13 @@ class RtLogoComponent {
|
|
|
7940
7988
|
...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
|
|
7941
7989
|
}
|
|
7942
7990
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtLogoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7943
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtLogoComponent, isStandalone: true, selector: "rt-logo", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, aspect: { classPropertyName: "aspect", publicName: "aspect", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.height.px": "effectiveHeight()", "style.width.px": "effectiveWidth()", "attr.role": "'img'", "attr.aria-label": "ariaLabel()" }, classAttribute: "rt-logo" }, ngImport: i0, template: "<ng-container rtBlock=\"rt-logo\">\n <span rtElem=\"wordmark\" qa-dataid=\"logo-wordmark\"></span>\n\n @if (showTagline()) {\n <span rtElem=\"tagline\" qa-dataid=\"logo-tagline\"></span>\n }\n</ng-container>\n", styles: ["@charset \"UTF-8\"
|
|
7991
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtLogoComponent, isStandalone: true, selector: "rt-logo", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, aspect: { classPropertyName: "aspect", publicName: "aspect", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.height.px": "effectiveHeight()", "style.width.px": "effectiveWidth()", "attr.role": "'img'", "attr.aria-label": "ariaLabel()" }, classAttribute: "rt-logo" }, ngImport: i0, template: "<ng-container rtBlock=\"rt-logo\">\n <span rtElem=\"wordmark\" qa-dataid=\"logo-wordmark\"></span>\n\n @if (showTagline()) {\n <span rtElem=\"tagline\" qa-dataid=\"logo-tagline\"></span>\n }\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-logo{display:inline-block;line-height:0}.rt-logo__wordmark,.rt-logo__tagline{display:block;width:100%;background-position:left center;background-repeat:no-repeat;background-size:contain}.rt-logo__wordmark{height:100%;background-image:var(--rt-logo-wordmark, none)}.rt-logo__tagline{background-image:var(--rt-logo-tagline, none)}[data-theme=dark] .rt-logo__wordmark{background-image:var(--rt-logo-wordmark-dark, var(--rt-logo-wordmark, none))}[data-theme=dark] .rt-logo__tagline{background-image:var(--rt-logo-tagline-dark, var(--rt-logo-tagline, none))}.rt-logo:has(.rt-logo__tagline){display:flex;flex-direction:column;align-items:stretch;justify-content:space-between}.rt-logo:has(.rt-logo__tagline) .rt-logo__wordmark{height:66.7%}.rt-logo:has(.rt-logo__tagline) .rt-logo__tagline{height:22.1%}\n"], dependencies: [{ kind: "directive", type:
|
|
7944
7992
|
// standalone components / directives
|
|
7945
|
-
BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
7993
|
+
BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
7946
7994
|
}
|
|
7947
7995
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtLogoComponent, decorators: [{
|
|
7948
7996
|
type: Component,
|
|
7949
|
-
args: [{ selector: 'rt-logo', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
7997
|
+
args: [{ selector: 'rt-logo', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
7950
7998
|
// standalone components / directives
|
|
7951
7999
|
BlockDirective,
|
|
7952
8000
|
ElemDirective,
|
|
@@ -7956,7 +8004,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
7956
8004
|
'[style.width.px]': 'effectiveWidth()',
|
|
7957
8005
|
'[attr.role]': "'img'",
|
|
7958
8006
|
'[attr.aria-label]': 'ariaLabel()',
|
|
7959
|
-
}, template: "<ng-container rtBlock=\"rt-logo\">\n <span rtElem=\"wordmark\" qa-dataid=\"logo-wordmark\"></span>\n\n @if (showTagline()) {\n <span rtElem=\"tagline\" qa-dataid=\"logo-tagline\"></span>\n }\n</ng-container>\n", styles: ["@charset \"UTF-8\"
|
|
8007
|
+
}, template: "<ng-container rtBlock=\"rt-logo\">\n <span rtElem=\"wordmark\" qa-dataid=\"logo-wordmark\"></span>\n\n @if (showTagline()) {\n <span rtElem=\"tagline\" qa-dataid=\"logo-tagline\"></span>\n }\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-logo{display:inline-block;line-height:0}.rt-logo__wordmark,.rt-logo__tagline{display:block;width:100%;background-position:left center;background-repeat:no-repeat;background-size:contain}.rt-logo__wordmark{height:100%;background-image:var(--rt-logo-wordmark, none)}.rt-logo__tagline{background-image:var(--rt-logo-tagline, none)}[data-theme=dark] .rt-logo__wordmark{background-image:var(--rt-logo-wordmark-dark, var(--rt-logo-wordmark, none))}[data-theme=dark] .rt-logo__tagline{background-image:var(--rt-logo-tagline-dark, var(--rt-logo-tagline, none))}.rt-logo:has(.rt-logo__tagline){display:flex;flex-direction:column;align-items:stretch;justify-content:space-between}.rt-logo:has(.rt-logo__tagline) .rt-logo__wordmark{height:66.7%}.rt-logo:has(.rt-logo__tagline) .rt-logo__tagline{height:22.1%}\n"] }]
|
|
7960
8008
|
}], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], aspect: [{ type: i0.Input, args: [{ isSignal: true, alias: "aspect", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }] } });
|
|
7961
8009
|
|
|
7962
8010
|
const BEM_BLOCK$x = 'rt-header';
|
|
@@ -8046,13 +8094,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
8046
8094
|
|
|
8047
8095
|
const BEM_BLOCK$v = 'rt-input-number';
|
|
8048
8096
|
/**
|
|
8049
|
-
* Парсит строку в `number | null
|
|
8050
|
-
*
|
|
8051
|
-
*
|
|
8097
|
+
* Парсит строку в `number | null` по разделителям локали: `groupSep` и любые
|
|
8098
|
+
* пробелы удаляются, оставшийся разделитель дробной части приводится к точке.
|
|
8099
|
+
*
|
|
8100
|
+
* Разбор обязан знать локаль, иначе он расходится с показом: в `en-US` разряды
|
|
8101
|
+
* группируются запятой, и набранное `1000` показывалось как `1,000`, а в форму
|
|
8102
|
+
* уходила `1` — безусловная замена первой запятой на точку читала разделитель
|
|
8103
|
+
* разрядов как десятичный.
|
|
8104
|
+
*
|
|
8052
8105
|
* Пустая строка / NaN → null.
|
|
8053
8106
|
*/
|
|
8054
|
-
function parseNumber(text) {
|
|
8055
|
-
const
|
|
8107
|
+
function parseNumber(text, groupSep) {
|
|
8108
|
+
const withoutSpaces = text.replace(/\s/g, '');
|
|
8109
|
+
// Пробельный разделитель разрядов (ru) уже снят предыдущей строкой.
|
|
8110
|
+
const withoutGroups = groupSep.trim() === '' ? withoutSpaces : withoutSpaces.split(groupSep).join('');
|
|
8111
|
+
const cleaned = withoutGroups.replace(/,/g, '.');
|
|
8056
8112
|
if (cleaned === '') {
|
|
8057
8113
|
return null;
|
|
8058
8114
|
}
|
|
@@ -8115,6 +8171,14 @@ class RtInputNumberComponent extends RtFormControlBase {
|
|
|
8115
8171
|
// тот же, что отдаёт toLocaleString на blur — тогда live и blur выглядят
|
|
8116
8172
|
// одинаково, а parseNumber (стрипает \s) парсит обратно обе формы.
|
|
8117
8173
|
this.#groupSep = (1000).toLocaleString(this.#locale).replace(/\d/g, '') || ' ';
|
|
8174
|
+
/**
|
|
8175
|
+
* Что в этой локали можно набрать как разделитель дробной части: всё из
|
|
8176
|
+
* «.,», кроме того, чем локаль разделяет разряды. В `ru` разряды разделяет
|
|
8177
|
+
* неразрывный пробел, поэтому годятся оба знака; в `en-US` запятая — это
|
|
8178
|
+
* разряды, и десятичной остаётся только точка. Иначе набранное `1,5`
|
|
8179
|
+
* значило бы в показе одно, а в разборе другое.
|
|
8180
|
+
*/
|
|
8181
|
+
this.#decimalSepPattern = new RegExp(`[${['.', ','].filter((char) => char !== this.#groupSep).join('')}]`);
|
|
8118
8182
|
this.fieldEl = viewChild('fieldEl', /* @ts-ignore */
|
|
8119
8183
|
...(ngDevMode ? [{ debugName: "fieldEl" }] : /* istanbul ignore next */ []));
|
|
8120
8184
|
this.displayValue = signal('', /* @ts-ignore */
|
|
@@ -8146,6 +8210,14 @@ class RtInputNumberComponent extends RtFormControlBase {
|
|
|
8146
8210
|
// тот же, что отдаёт toLocaleString на blur — тогда live и blur выглядят
|
|
8147
8211
|
// одинаково, а parseNumber (стрипает \s) парсит обратно обе формы.
|
|
8148
8212
|
#groupSep;
|
|
8213
|
+
/**
|
|
8214
|
+
* Что в этой локали можно набрать как разделитель дробной части: всё из
|
|
8215
|
+
* «.,», кроме того, чем локаль разделяет разряды. В `ru` разряды разделяет
|
|
8216
|
+
* неразрывный пробел, поэтому годятся оба знака; в `en-US` запятая — это
|
|
8217
|
+
* разряды, и десятичной остаётся только точка. Иначе набранное `1,5`
|
|
8218
|
+
* значило бы в показе одно, а в разборе другое.
|
|
8219
|
+
*/
|
|
8220
|
+
#decimalSepPattern;
|
|
8149
8221
|
writeValue(value) {
|
|
8150
8222
|
super.writeValue(value);
|
|
8151
8223
|
this.displayValue.set(formatNumber(this.value(), this.minFractionDigits(), this.maxFractionDigits(), this.#locale));
|
|
@@ -8197,7 +8269,7 @@ class RtInputNumberComponent extends RtFormControlBase {
|
|
|
8197
8269
|
target.value = formatted;
|
|
8198
8270
|
target.setSelectionRange(nextCaret, nextCaret);
|
|
8199
8271
|
this.displayValue.set(formatted);
|
|
8200
|
-
const parsed = parseNumber(formatted);
|
|
8272
|
+
const parsed = parseNumber(formatted, this.#groupSep);
|
|
8201
8273
|
if (parsed === null) {
|
|
8202
8274
|
// Только реально пустой ввод → emit null (пользователь очистил поле).
|
|
8203
8275
|
// Нечисловой ввод стрипается из отображения, но prev value держится до
|
|
@@ -8212,7 +8284,7 @@ class RtInputNumberComponent extends RtFormControlBase {
|
|
|
8212
8284
|
this.emitChange(parsed);
|
|
8213
8285
|
}
|
|
8214
8286
|
onBlur() {
|
|
8215
|
-
const parsed = parseNumber(this.displayValue());
|
|
8287
|
+
const parsed = parseNumber(this.displayValue(), this.#groupSep);
|
|
8216
8288
|
if (parsed === null) {
|
|
8217
8289
|
this.value.set(null);
|
|
8218
8290
|
this.displayValue.set('');
|
|
@@ -8222,9 +8294,9 @@ class RtInputNumberComponent extends RtFormControlBase {
|
|
|
8222
8294
|
}
|
|
8223
8295
|
const clamped = clamp(parsed, this.min(), this.max());
|
|
8224
8296
|
const formatted = formatNumber(clamped, this.minFractionDigits(), this.maxFractionDigits(), this.#locale);
|
|
8225
|
-
// `formatted` содержит
|
|
8226
|
-
//
|
|
8227
|
-
const rounded = parseNumber(formatted) ?? clamped;
|
|
8297
|
+
// `formatted` содержит разделители локали — обратный парс через
|
|
8298
|
+
// parseNumber (а не parseFloat) даёт округлённое числовое значение.
|
|
8299
|
+
const rounded = parseNumber(formatted, this.#groupSep) ?? clamped;
|
|
8228
8300
|
this.value.set(rounded);
|
|
8229
8301
|
this.displayValue.set(formatted);
|
|
8230
8302
|
this.emitChange(rounded);
|
|
@@ -8233,8 +8305,11 @@ class RtInputNumberComponent extends RtFormControlBase {
|
|
|
8233
8305
|
/**
|
|
8234
8306
|
* Live-форматирование строки во время набора: целая часть группируется по
|
|
8235
8307
|
* разрядам (`#groupSep`), дробная остаётся как набрана (хвостовая запятая и
|
|
8236
|
-
* нули сохраняются, чтобы их можно было дописать).
|
|
8237
|
-
*
|
|
8308
|
+
* нули сохраняются, чтобы их можно было дописать). Разделителем дробной
|
|
8309
|
+
* части считается только то, что им может быть в этой локали
|
|
8310
|
+
* (`#decimalSepPattern`), — иначе запятая-разряды в `en-US` читалась бы как
|
|
8311
|
+
* десятичная. Разделитель допускается всегда — округление по
|
|
8312
|
+
* `maxFractionDigits` происходит на blur
|
|
8238
8313
|
* (поэтому в целочисленном поле «1000,5» парсится и округлится, а не склеится
|
|
8239
8314
|
* в «10005»). Группировка — линейным проходом, а не `Number()`, чтобы не
|
|
8240
8315
|
* терять точность на суммах длиннее 2^53.
|
|
@@ -8244,7 +8319,7 @@ class RtInputNumberComponent extends RtFormControlBase {
|
|
|
8244
8319
|
let sep = '';
|
|
8245
8320
|
let fracDigits = '';
|
|
8246
8321
|
let intDigits;
|
|
8247
|
-
const sepIndex = raw.search(
|
|
8322
|
+
const sepIndex = raw.search(this.#decimalSepPattern);
|
|
8248
8323
|
if (sepIndex >= 0) {
|
|
8249
8324
|
sep = raw.charAt(sepIndex);
|
|
8250
8325
|
intDigits = raw.slice(0, sepIndex).replace(/\D/g, '');
|
|
@@ -8370,20 +8445,20 @@ class RtLiveBadgeComponent {
|
|
|
8370
8445
|
}
|
|
8371
8446
|
#t_uiLiveOnSite;
|
|
8372
8447
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtLiveBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8373
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.5", type: RtLiveBadgeComponent, isStandalone: true, selector: "rt-live-badge", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, count: { classPropertyName: "count", publicName: "count", isSignal: true, isRequired: false, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-live-badge" }, ngImport: i0, template: "<span rtBlock=\"rt-live-badge\" qa-dataid=\"live-badge\" [attr.data-active]=\"active()\" [rtMod]=\"{ active: active() }\">\n <span rtElem=\"dot\"></span>\n <span rtElem=\"label\" qa-dataid=\"live-badge-label\">{{ labelText() }}</span>\n <span rtElem=\"count\" qa-dataid=\"live-badge-count\">{{ count() ?? '\u2014' }}</span>\n</span>\n", styles: ["@charset \"UTF-8\"
|
|
8448
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.5", type: RtLiveBadgeComponent, isStandalone: true, selector: "rt-live-badge", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, count: { classPropertyName: "count", publicName: "count", isSignal: true, isRequired: false, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-live-badge" }, ngImport: i0, template: "<span rtBlock=\"rt-live-badge\" qa-dataid=\"live-badge\" [attr.data-active]=\"active()\" [rtMod]=\"{ active: active() }\">\n <span rtElem=\"dot\"></span>\n <span rtElem=\"label\" qa-dataid=\"live-badge-label\">{{ labelText() }}</span>\n <span rtElem=\"count\" qa-dataid=\"live-badge-count\">{{ count() ?? '\u2014' }}</span>\n</span>\n", styles: ["@charset \"UTF-8\";rt-live-badge{display:inline-flex}rt-live-badge .rt-live-badge{display:inline-flex;align-items:center;color:var(--rt-color-text-muted);font-size:var(--rt-text-sm);gap:var(--rt-space-1)}rt-live-badge .rt-live-badge--active .rt-live-badge__dot{background:var(--rt-color-state-success)}rt-live-badge .rt-live-badge__dot{width:8px;height:8px;border-radius:var(--rt-radius-full);background:var(--rt-color-border-subtle)}rt-live-badge .rt-live-badge__count{color:var(--rt-color-text-primary)}\n"], dependencies: [{ kind: "directive", type:
|
|
8374
8449
|
// standalone components / directives
|
|
8375
|
-
BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
8450
|
+
BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
8376
8451
|
}
|
|
8377
8452
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtLiveBadgeComponent, decorators: [{
|
|
8378
8453
|
type: Component,
|
|
8379
|
-
args: [{ selector: 'rt-live-badge', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
8454
|
+
args: [{ selector: 'rt-live-badge', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
8380
8455
|
// standalone components / directives
|
|
8381
8456
|
BlockDirective,
|
|
8382
8457
|
ElemDirective,
|
|
8383
8458
|
ModDirective,
|
|
8384
8459
|
], host: {
|
|
8385
8460
|
class: BEM_BLOCK$u,
|
|
8386
|
-
}, template: "<span rtBlock=\"rt-live-badge\" qa-dataid=\"live-badge\" [attr.data-active]=\"active()\" [rtMod]=\"{ active: active() }\">\n <span rtElem=\"dot\"></span>\n <span rtElem=\"label\" qa-dataid=\"live-badge-label\">{{ labelText() }}</span>\n <span rtElem=\"count\" qa-dataid=\"live-badge-count\">{{ count() ?? '\u2014' }}</span>\n</span>\n", styles: ["@charset \"UTF-8\"
|
|
8461
|
+
}, template: "<span rtBlock=\"rt-live-badge\" qa-dataid=\"live-badge\" [attr.data-active]=\"active()\" [rtMod]=\"{ active: active() }\">\n <span rtElem=\"dot\"></span>\n <span rtElem=\"label\" qa-dataid=\"live-badge-label\">{{ labelText() }}</span>\n <span rtElem=\"count\" qa-dataid=\"live-badge-count\">{{ count() ?? '\u2014' }}</span>\n</span>\n", styles: ["@charset \"UTF-8\";rt-live-badge{display:inline-flex}rt-live-badge .rt-live-badge{display:inline-flex;align-items:center;color:var(--rt-color-text-muted);font-size:var(--rt-text-sm);gap:var(--rt-space-1)}rt-live-badge .rt-live-badge--active .rt-live-badge__dot{background:var(--rt-color-state-success)}rt-live-badge .rt-live-badge__dot{width:8px;height:8px;border-radius:var(--rt-radius-full);background:var(--rt-color-border-subtle)}rt-live-badge .rt-live-badge__count{color:var(--rt-color-text-primary)}\n"] }]
|
|
8387
8462
|
}], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], count: [{ type: i0.Input, args: [{ isSignal: true, alias: "count", required: false }] }], active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }] } });
|
|
8388
8463
|
|
|
8389
8464
|
const BEM_BLOCK$t = 'rt-menu-confirm-dialog';
|
|
@@ -8766,13 +8841,13 @@ class RtMessageComponent {
|
|
|
8766
8841
|
this.closed.emit();
|
|
8767
8842
|
}
|
|
8768
8843
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtMessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8769
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtMessageComponent, isStandalone: true, selector: "rt-message", inputs: { severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, hideIcon: { classPropertyName: "hideIcon", publicName: "hideIcon", isSignal: true, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, host: { classAttribute: "rt-message" }, ngImport: i0, template: "<aside rtBlock=\"rt-message\" qa-dataid=\"message-alert\" role=\"alert\" [attr.data-severity]=\"severity()\" [rtMod]=\"{ severity: severity() }\">\n @if (effectiveIcon(); as iconName) {\n <rt-icon rtElem=\"icon\" [name]=\"iconName\" />\n }\n <div rtElem=\"body\" qa-dataid=\"message-body\">\n <ng-content />\n </div>\n @if (closable()) {\n <rt-icon-button\n rtElem=\"close\"\n qa-dataid=\"message-close\"\n icon=\"ico-close\"\n variant=\"ghost\"\n size=\"sm\"\n shape=\"circle\"\n [ariaLabel]=\"'rtKit.uiClose' | transloco\"\n (clicked)=\"onClose()\" />\n }\n</aside>\n", styles: ["@charset \"UTF-8\"
|
|
8844
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtMessageComponent, isStandalone: true, selector: "rt-message", inputs: { severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, hideIcon: { classPropertyName: "hideIcon", publicName: "hideIcon", isSignal: true, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, host: { classAttribute: "rt-message" }, ngImport: i0, template: "<aside rtBlock=\"rt-message\" qa-dataid=\"message-alert\" role=\"alert\" [attr.data-severity]=\"severity()\" [rtMod]=\"{ severity: severity() }\">\n @if (effectiveIcon(); as iconName) {\n <rt-icon rtElem=\"icon\" [name]=\"iconName\" />\n }\n <div rtElem=\"body\" qa-dataid=\"message-body\">\n <ng-content />\n </div>\n @if (closable()) {\n <rt-icon-button\n rtElem=\"close\"\n qa-dataid=\"message-close\"\n icon=\"ico-close\"\n variant=\"ghost\"\n size=\"sm\"\n shape=\"circle\"\n [ariaLabel]=\"'rtKit.uiClose' | transloco\"\n (clicked)=\"onClose()\" />\n }\n</aside>\n", styles: ["@charset \"UTF-8\";rt-message{display:block}rt-message .rt-message{display:flex;align-items:flex-start;padding:var(--rt-space-3) var(--rt-space-4);border-radius:var(--rt-radius-md);background:var(--rt-color-state-info-bg);color:var(--rt-color-state-info);font-size:var(--rt-text-sm);gap:var(--rt-space-2);line-height:var(--rt-leading-normal)}rt-message .rt-message--severity--info{background:var(--rt-color-state-info-bg);color:var(--rt-color-state-info)}rt-message .rt-message--severity--success{background:var(--rt-color-state-success-bg);color:var(--rt-color-state-success)}rt-message .rt-message--severity--warning{background:var(--rt-color-state-warning-bg);color:var(--rt-color-state-warning)}rt-message .rt-message--severity--danger{background:var(--rt-color-state-danger-bg);color:var(--rt-color-state-danger)}rt-message .rt-message--severity--secondary,rt-message .rt-message--severity--neutral{background:var(--rt-color-bg-subtle);color:var(--rt-color-text-primary)}rt-message .rt-message__icon{flex-shrink:0;margin-block-start:var(--rt-space-0-5)}rt-message .rt-message__body{min-width:0;flex:1 1 auto}rt-message .rt-message__close{flex-shrink:0;margin-inline-start:auto}\n"], dependencies: [{ kind: "component", type:
|
|
8770
8845
|
// standalone components / directives
|
|
8771
|
-
RtIconButtonComponent, selector: "rt-icon-button", inputs: ["icon", "ariaLabel", "variant", "iconColor", "size", "iconSize", "shape", "type", "tooltip", "tabIndex", "loading", "disabled", "active", "indicator"], outputs: ["clicked"] }, { kind: "component", type: RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
8846
|
+
RtIconButtonComponent, selector: "rt-icon-button", inputs: ["icon", "ariaLabel", "variant", "iconColor", "size", "iconSize", "shape", "type", "tooltip", "tabIndex", "loading", "disabled", "active", "indicator"], outputs: ["clicked"] }, { kind: "component", type: RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
8772
8847
|
}
|
|
8773
8848
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtMessageComponent, decorators: [{
|
|
8774
8849
|
type: Component,
|
|
8775
|
-
args: [{ selector: 'rt-message', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
8850
|
+
args: [{ selector: 'rt-message', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
8776
8851
|
// standalone components / directives
|
|
8777
8852
|
RtIconButtonComponent,
|
|
8778
8853
|
RtIconComponent,
|
|
@@ -8782,7 +8857,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
8782
8857
|
TranslocoPipe,
|
|
8783
8858
|
], host: {
|
|
8784
8859
|
class: BEM_BLOCK$q,
|
|
8785
|
-
}, template: "<aside rtBlock=\"rt-message\" qa-dataid=\"message-alert\" role=\"alert\" [attr.data-severity]=\"severity()\" [rtMod]=\"{ severity: severity() }\">\n @if (effectiveIcon(); as iconName) {\n <rt-icon rtElem=\"icon\" [name]=\"iconName\" />\n }\n <div rtElem=\"body\" qa-dataid=\"message-body\">\n <ng-content />\n </div>\n @if (closable()) {\n <rt-icon-button\n rtElem=\"close\"\n qa-dataid=\"message-close\"\n icon=\"ico-close\"\n variant=\"ghost\"\n size=\"sm\"\n shape=\"circle\"\n [ariaLabel]=\"'rtKit.uiClose' | transloco\"\n (clicked)=\"onClose()\" />\n }\n</aside>\n", styles: ["@charset \"UTF-8\"
|
|
8860
|
+
}, template: "<aside rtBlock=\"rt-message\" qa-dataid=\"message-alert\" role=\"alert\" [attr.data-severity]=\"severity()\" [rtMod]=\"{ severity: severity() }\">\n @if (effectiveIcon(); as iconName) {\n <rt-icon rtElem=\"icon\" [name]=\"iconName\" />\n }\n <div rtElem=\"body\" qa-dataid=\"message-body\">\n <ng-content />\n </div>\n @if (closable()) {\n <rt-icon-button\n rtElem=\"close\"\n qa-dataid=\"message-close\"\n icon=\"ico-close\"\n variant=\"ghost\"\n size=\"sm\"\n shape=\"circle\"\n [ariaLabel]=\"'rtKit.uiClose' | transloco\"\n (clicked)=\"onClose()\" />\n }\n</aside>\n", styles: ["@charset \"UTF-8\";rt-message{display:block}rt-message .rt-message{display:flex;align-items:flex-start;padding:var(--rt-space-3) var(--rt-space-4);border-radius:var(--rt-radius-md);background:var(--rt-color-state-info-bg);color:var(--rt-color-state-info);font-size:var(--rt-text-sm);gap:var(--rt-space-2);line-height:var(--rt-leading-normal)}rt-message .rt-message--severity--info{background:var(--rt-color-state-info-bg);color:var(--rt-color-state-info)}rt-message .rt-message--severity--success{background:var(--rt-color-state-success-bg);color:var(--rt-color-state-success)}rt-message .rt-message--severity--warning{background:var(--rt-color-state-warning-bg);color:var(--rt-color-state-warning)}rt-message .rt-message--severity--danger{background:var(--rt-color-state-danger-bg);color:var(--rt-color-state-danger)}rt-message .rt-message--severity--secondary,rt-message .rt-message--severity--neutral{background:var(--rt-color-bg-subtle);color:var(--rt-color-text-primary)}rt-message .rt-message__icon{flex-shrink:0;margin-block-start:var(--rt-space-0-5)}rt-message .rt-message__body{min-width:0;flex:1 1 auto}rt-message .rt-message__close{flex-shrink:0;margin-inline-start:auto}\n"] }]
|
|
8786
8861
|
}], propDecorators: { severity: [{ type: i0.Input, args: [{ isSignal: true, alias: "severity", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], hideIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideIcon", required: false }] }], closable: [{ type: i0.Input, args: [{ isSignal: true, alias: "closable", required: false }] }], closed: [{ type: i0.Output, args: ["closed"] }] } });
|
|
8787
8862
|
|
|
8788
8863
|
const BEM_BLOCK$p = 'rt-money-list';
|
|
@@ -9076,20 +9151,20 @@ class RtNightGridComponent {
|
|
|
9076
9151
|
this.cellClick.emit(cell);
|
|
9077
9152
|
}
|
|
9078
9153
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtNightGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9079
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtNightGridComponent, isStandalone: true, selector: "rt-night-grid", inputs: { cells: { classPropertyName: "cells", publicName: "cells", isSignal: true, isRequired: true, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { cellClick: "cellClick" }, host: { classAttribute: "rt-night-grid" }, ngImport: i0, template: "<div rtBlock=\"rt-night-grid\" qa-dataid=\"night-grid\" role=\"
|
|
9154
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtNightGridComponent, isStandalone: true, selector: "rt-night-grid", inputs: { cells: { classPropertyName: "cells", publicName: "cells", isSignal: true, isRequired: true, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { cellClick: "cellClick" }, host: { classAttribute: "rt-night-grid" }, ngImport: i0, template: "<!--\n \u0413\u0440\u0443\u043F\u043F\u0430, \u0430 \u043D\u0435 \u0441\u043F\u0438\u0441\u043E\u043A: \u043A\u043B\u0435\u0442\u043A\u0438 \u2014 \u043D\u0430\u0441\u0442\u043E\u044F\u0449\u0438\u0435 \u043A\u043D\u043E\u043F\u043A\u0438, \u0438 `role=\"listitem\"` \u043D\u0430 \u043D\u0438\u0445\n \u043F\u0435\u0440\u0435\u0431\u0438\u0432\u0430\u043B \u0431\u044B \u0440\u043E\u043B\u044C \u043A\u043D\u043E\u043F\u043A\u0438, \u0442\u0430\u043A \u0447\u0442\u043E \u0441\u043A\u0440\u0438\u043D\u0440\u0438\u0434\u0435\u0440 \u043D\u0430\u0437\u044B\u0432\u0430\u043B \u0431\u044B \u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u0441\u043F\u0438\u0441\u043A\u0430 \u0438\n \u0443\u043C\u0430\u043B\u0447\u0438\u0432\u0430\u043B, \u0447\u0442\u043E \u043F\u043E \u043D\u0435\u043C\u0443 \u043D\u0430\u0436\u0438\u043C\u0430\u044E\u0442. \u041E\u0431\u0435\u0440\u043D\u0443\u0442\u044C \u043A\u0430\u0436\u0434\u0443\u044E \u043A\u043D\u043E\u043F\u043A\u0443 \u0432 `listitem` \u0442\u043E\u0436\u0435\n \u043D\u0435\u043B\u044C\u0437\u044F: \u043A\u043B\u0435\u0442\u043A\u0438 \u2014 \u043F\u0440\u044F\u043C\u044B\u0435 \u0434\u0435\u0442\u0438 grid-\u043A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u0430, \u043E\u0431\u0451\u0440\u0442\u043A\u0430 \u0440\u0430\u0437\u0432\u0430\u043B\u0438\u043B\u0430 \u0431\u044B \u0440\u0430\u0441\u043A\u043B\u0430\u0434\u043A\u0443.\n-->\n<div rtBlock=\"rt-night-grid\" qa-dataid=\"night-grid\" role=\"group\" [attr.aria-label]=\"ariaText()\">\n @for (cell of cells(); track cell.id) {\n <button\n rtElem=\"cell\"\n qa-dataid=\"night-grid-cell\"\n type=\"button\"\n [attr.data-id]=\"cell.id\"\n [attr.data-state]=\"cell.state\"\n [rtMod]=\"{ state: cell.state }\"\n [attr.title]=\"cell.title\"\n [attr.aria-label]=\"cell.title\"\n (click)=\"onCellClick(cell)\"></button>\n }\n</div>\n", styles: ["@charset \"UTF-8\";rt-night-grid{display:block}rt-night-grid .rt-night-grid{display:grid;gap:var(--rt-space-1);grid-template-columns:repeat(auto-fit,minmax(16px,1fr))}rt-night-grid .rt-night-grid__cell{padding:0;border:none;border-radius:var(--rt-radius-sm);aspect-ratio:1;background:var(--rt-color-bg-surface-subtle);cursor:pointer}rt-night-grid .rt-night-grid__cell:hover{outline:var(--rt-border-width-thin) solid var(--rt-color-border-strong)}rt-night-grid .rt-night-grid__cell:focus-visible{outline:var(--rt-border-width-thin) solid var(--rt-color-border-focus);outline-offset:1px}rt-night-grid .rt-night-grid__cell--state--primary{background:var(--rt-color-state-success)}rt-night-grid .rt-night-grid__cell--state--secondary{background:color-mix(in srgb,var(--rt-color-state-success) 35%,transparent)}\n"], dependencies: [{ kind: "directive", type:
|
|
9080
9155
|
// standalone components / directives
|
|
9081
|
-
BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
9156
|
+
BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
9082
9157
|
}
|
|
9083
9158
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtNightGridComponent, decorators: [{
|
|
9084
9159
|
type: Component,
|
|
9085
|
-
args: [{ selector: 'rt-night-grid', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
9160
|
+
args: [{ selector: 'rt-night-grid', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
9086
9161
|
// standalone components / directives
|
|
9087
9162
|
BlockDirective,
|
|
9088
9163
|
ElemDirective,
|
|
9089
9164
|
ModDirective,
|
|
9090
9165
|
], host: {
|
|
9091
9166
|
class: BEM_BLOCK$m,
|
|
9092
|
-
}, template: "<div rtBlock=\"rt-night-grid\" qa-dataid=\"night-grid\" role=\"
|
|
9167
|
+
}, template: "<!--\n \u0413\u0440\u0443\u043F\u043F\u0430, \u0430 \u043D\u0435 \u0441\u043F\u0438\u0441\u043E\u043A: \u043A\u043B\u0435\u0442\u043A\u0438 \u2014 \u043D\u0430\u0441\u0442\u043E\u044F\u0449\u0438\u0435 \u043A\u043D\u043E\u043F\u043A\u0438, \u0438 `role=\"listitem\"` \u043D\u0430 \u043D\u0438\u0445\n \u043F\u0435\u0440\u0435\u0431\u0438\u0432\u0430\u043B \u0431\u044B \u0440\u043E\u043B\u044C \u043A\u043D\u043E\u043F\u043A\u0438, \u0442\u0430\u043A \u0447\u0442\u043E \u0441\u043A\u0440\u0438\u043D\u0440\u0438\u0434\u0435\u0440 \u043D\u0430\u0437\u044B\u0432\u0430\u043B \u0431\u044B \u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u0441\u043F\u0438\u0441\u043A\u0430 \u0438\n \u0443\u043C\u0430\u043B\u0447\u0438\u0432\u0430\u043B, \u0447\u0442\u043E \u043F\u043E \u043D\u0435\u043C\u0443 \u043D\u0430\u0436\u0438\u043C\u0430\u044E\u0442. \u041E\u0431\u0435\u0440\u043D\u0443\u0442\u044C \u043A\u0430\u0436\u0434\u0443\u044E \u043A\u043D\u043E\u043F\u043A\u0443 \u0432 `listitem` \u0442\u043E\u0436\u0435\n \u043D\u0435\u043B\u044C\u0437\u044F: \u043A\u043B\u0435\u0442\u043A\u0438 \u2014 \u043F\u0440\u044F\u043C\u044B\u0435 \u0434\u0435\u0442\u0438 grid-\u043A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u0430, \u043E\u0431\u0451\u0440\u0442\u043A\u0430 \u0440\u0430\u0437\u0432\u0430\u043B\u0438\u043B\u0430 \u0431\u044B \u0440\u0430\u0441\u043A\u043B\u0430\u0434\u043A\u0443.\n-->\n<div rtBlock=\"rt-night-grid\" qa-dataid=\"night-grid\" role=\"group\" [attr.aria-label]=\"ariaText()\">\n @for (cell of cells(); track cell.id) {\n <button\n rtElem=\"cell\"\n qa-dataid=\"night-grid-cell\"\n type=\"button\"\n [attr.data-id]=\"cell.id\"\n [attr.data-state]=\"cell.state\"\n [rtMod]=\"{ state: cell.state }\"\n [attr.title]=\"cell.title\"\n [attr.aria-label]=\"cell.title\"\n (click)=\"onCellClick(cell)\"></button>\n }\n</div>\n", styles: ["@charset \"UTF-8\";rt-night-grid{display:block}rt-night-grid .rt-night-grid{display:grid;gap:var(--rt-space-1);grid-template-columns:repeat(auto-fit,minmax(16px,1fr))}rt-night-grid .rt-night-grid__cell{padding:0;border:none;border-radius:var(--rt-radius-sm);aspect-ratio:1;background:var(--rt-color-bg-surface-subtle);cursor:pointer}rt-night-grid .rt-night-grid__cell:hover{outline:var(--rt-border-width-thin) solid var(--rt-color-border-strong)}rt-night-grid .rt-night-grid__cell:focus-visible{outline:var(--rt-border-width-thin) solid var(--rt-color-border-focus);outline-offset:1px}rt-night-grid .rt-night-grid__cell--state--primary{background:var(--rt-color-state-success)}rt-night-grid .rt-night-grid__cell--state--secondary{background:color-mix(in srgb,var(--rt-color-state-success) 35%,transparent)}\n"] }]
|
|
9093
9168
|
}], propDecorators: { cells: [{ type: i0.Input, args: [{ isSignal: true, alias: "cells", required: true }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], cellClick: [{ type: i0.Output, args: ["cellClick"] }] } });
|
|
9094
9169
|
|
|
9095
9170
|
const BEM_BLOCK$l = 'rt-notifications-bell';
|
|
@@ -9486,7 +9561,7 @@ class RtPhotoViewerComponent {
|
|
|
9486
9561
|
track.scrollTo({ left: track.clientWidth * this.currentIndex(), behavior: 'instant' });
|
|
9487
9562
|
}
|
|
9488
9563
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtPhotoViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9489
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtPhotoViewerComponent, isStandalone: true, selector: "rt-photo-viewer", host: { attributes: { "role": "dialog", "aria-modal": "true", "tabindex": "-1" }, listeners: { "keydown.escape": "close()", "keydown.arrowLeft": "move(-1)", "keydown.arrowRight": "move(1)" }, classAttribute: "rt-photo-viewer" }, viewQueries: [{ propertyName: "track", first: true, predicate: ["track"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-container rtBlock=\"rt-photo-viewer\">\n <!-- \u041B\u043E\u0432\u0443\u0448\u043A\u0430 \u0434\u0435\u0440\u0436\u0438\u0442 Tab \u0432\u043D\u0443\u0442\u0440\u0438; \u0444\u043E\u043A\u0443\u0441 \u0441\u0442\u0430\u0432\u0438\u0442 \u0441\u0430\u043C \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442, \u043F\u043E\u044D\u0442\u043E\u043C\u0443\n \u0430\u0432\u0442\u043E-\u0437\u0430\u0445\u0432\u0430\u0442\u0430 \u0437\u0434\u0435\u0441\u044C \u043D\u0435\u0442: \u043E\u043D \u043F\u0435\u0440\u0435\u0431\u0438\u0432\u0430\u043B \u0444\u043E\u043A\u0443\u0441 \u043D\u0430 \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0449\u0438\u043A\u0435, \u0438 \u043A\u043B\u0430\u0432\u0438\u0448\u0438\n \u043F\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u0430\u043B\u0438 \u043B\u0438\u0441\u0442\u0430\u0442\u044C -->\n <div rtElem=\"surface\" cdkTrapFocus>\n <header rtElem=\"bar\">\n <span rtElem=\"counter\" qa-dataid=\"photo-viewer-counter\">{{ counter() }}</span>\n <rt-icon-button\n qa-dataid=\"photo-viewer-close\"\n icon=\"close\"\n variant=\"ghost\"\n [ariaLabel]=\"'rtKit.photoViewerClose' | transloco\"\n (clicked)=\"close()\" />\n </header>\n\n <div rtElem=\"track\" qa-dataid=\"photo-viewer-track\" #track (scroll)=\"onScroll()\">\n @for (photo of photos; track photo.id; let index = $index) {\n <figure rtElem=\"slide\" [attr.data-photo-index]=\"index\">\n @if (rendered()[index]) {\n <picture>\n @for (source of photo.picture.sources; track source.type) {\n <source sizes=\"100vw\" [type]=\"source.type\" [srcset]=\"source.srcset\" />\n }\n <img\n rtElem=\"image\"\n qa-dataid=\"photo-viewer-image\"\n decoding=\"async\"\n sizes=\"100vw\"\n [srcset]=\"photo.picture.fallbackSrcset\"\n [src]=\"photo.picture.fallbackSrc\"\n [alt]=\"photo.alt\" />\n </picture>\n }\n </figure>\n }\n </div>\n\n @if (photos.length > 1) {\n <rt-icon-button\n rtElem=\"arrow-prev\"\n qa-dataid=\"photo-viewer-prev\"\n icon=\"angle-left\"\n variant=\"ghost\"\n [ariaLabel]=\"'rtKit.photoViewerPrev' | transloco\"\n (clicked)=\"move(-1)\" />\n\n <rt-icon-button\n rtElem=\"arrow-next\"\n qa-dataid=\"photo-viewer-next\"\n icon=\"angle-right\"\n variant=\"ghost\"\n [ariaLabel]=\"'rtKit.photoViewerNext' | transloco\"\n (clicked)=\"move(1)\" />\n }\n\n <!-- \u041F\u0430\u043D\u0435\u043B\u044C \u043F\u0440\u0438\u0445\u043E\u0434\u0438\u0442 \u0441\u043D\u0430\u0440\u0443\u0436\u0438: \u0433\u0434\u0435-\u0442\u043E \u043A\u0430\u0434\u0440 \u0442\u043E\u043B\u044C\u043A\u043E \u0441\u043C\u043E\u0442\u0440\u044F\u0442, \u0433\u0434\u0435-\u0442\u043E \u0438\u043C \u0435\u0449\u0451 \u0438\n \u0443\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0442, \u0438 \u0440\u0435\u0448\u0435\u043D\u0438\u0435 \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442\u0441\u044F \u0442\u0430\u043C \u0436\u0435, \u0433\u0434\u0435 \u043A\u0430\u0434\u0440 \u0432\u0438\u0434\u0435\u043D \u043A\u0440\u0443\u043F\u043D\u043E -->\n @if (panel) {\n <footer rtElem=\"panel\" qa-dataid=\"photo-viewer-panel\">\n <ng-container\n [ngTemplateOutlet]=\"panel\"\n [ngTemplateOutletContext]=\"{ $implicit: photos[currentIndex()], index: currentIndex() }\" />\n </footer>\n }\n </div>\n</ng-container>\n", styles: ["@charset \"UTF-8\"
|
|
9564
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtPhotoViewerComponent, isStandalone: true, selector: "rt-photo-viewer", host: { attributes: { "role": "dialog", "aria-modal": "true", "tabindex": "-1" }, listeners: { "keydown.escape": "close()", "keydown.arrowLeft": "move(-1)", "keydown.arrowRight": "move(1)" }, classAttribute: "rt-photo-viewer" }, viewQueries: [{ propertyName: "track", first: true, predicate: ["track"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-container rtBlock=\"rt-photo-viewer\">\n <!-- \u041B\u043E\u0432\u0443\u0448\u043A\u0430 \u0434\u0435\u0440\u0436\u0438\u0442 Tab \u0432\u043D\u0443\u0442\u0440\u0438; \u0444\u043E\u043A\u0443\u0441 \u0441\u0442\u0430\u0432\u0438\u0442 \u0441\u0430\u043C \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442, \u043F\u043E\u044D\u0442\u043E\u043C\u0443\n \u0430\u0432\u0442\u043E-\u0437\u0430\u0445\u0432\u0430\u0442\u0430 \u0437\u0434\u0435\u0441\u044C \u043D\u0435\u0442: \u043E\u043D \u043F\u0435\u0440\u0435\u0431\u0438\u0432\u0430\u043B \u0444\u043E\u043A\u0443\u0441 \u043D\u0430 \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0449\u0438\u043A\u0435, \u0438 \u043A\u043B\u0430\u0432\u0438\u0448\u0438\n \u043F\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u0430\u043B\u0438 \u043B\u0438\u0441\u0442\u0430\u0442\u044C -->\n <div rtElem=\"surface\" cdkTrapFocus>\n <header rtElem=\"bar\">\n <span rtElem=\"counter\" qa-dataid=\"photo-viewer-counter\">{{ counter() }}</span>\n <rt-icon-button\n qa-dataid=\"photo-viewer-close\"\n icon=\"close\"\n variant=\"ghost\"\n [ariaLabel]=\"'rtKit.photoViewerClose' | transloco\"\n (clicked)=\"close()\" />\n </header>\n\n <div rtElem=\"track\" qa-dataid=\"photo-viewer-track\" #track (scroll)=\"onScroll()\">\n @for (photo of photos; track photo.id; let index = $index) {\n <figure rtElem=\"slide\" [attr.data-photo-index]=\"index\">\n @if (rendered()[index]) {\n <picture>\n @for (source of photo.picture.sources; track source.type) {\n <source sizes=\"100vw\" [type]=\"source.type\" [srcset]=\"source.srcset\" />\n }\n <img\n rtElem=\"image\"\n qa-dataid=\"photo-viewer-image\"\n decoding=\"async\"\n sizes=\"100vw\"\n [srcset]=\"photo.picture.fallbackSrcset\"\n [src]=\"photo.picture.fallbackSrc\"\n [alt]=\"photo.alt\" />\n </picture>\n }\n </figure>\n }\n </div>\n\n @if (photos.length > 1) {\n <rt-icon-button\n rtElem=\"arrow-prev\"\n qa-dataid=\"photo-viewer-prev\"\n icon=\"angle-left\"\n variant=\"ghost\"\n [ariaLabel]=\"'rtKit.photoViewerPrev' | transloco\"\n (clicked)=\"move(-1)\" />\n\n <rt-icon-button\n rtElem=\"arrow-next\"\n qa-dataid=\"photo-viewer-next\"\n icon=\"angle-right\"\n variant=\"ghost\"\n [ariaLabel]=\"'rtKit.photoViewerNext' | transloco\"\n (clicked)=\"move(1)\" />\n }\n\n <!-- \u041F\u0430\u043D\u0435\u043B\u044C \u043F\u0440\u0438\u0445\u043E\u0434\u0438\u0442 \u0441\u043D\u0430\u0440\u0443\u0436\u0438: \u0433\u0434\u0435-\u0442\u043E \u043A\u0430\u0434\u0440 \u0442\u043E\u043B\u044C\u043A\u043E \u0441\u043C\u043E\u0442\u0440\u044F\u0442, \u0433\u0434\u0435-\u0442\u043E \u0438\u043C \u0435\u0449\u0451 \u0438\n \u0443\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0442, \u0438 \u0440\u0435\u0448\u0435\u043D\u0438\u0435 \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442\u0441\u044F \u0442\u0430\u043C \u0436\u0435, \u0433\u0434\u0435 \u043A\u0430\u0434\u0440 \u0432\u0438\u0434\u0435\u043D \u043A\u0440\u0443\u043F\u043D\u043E -->\n @if (panel) {\n <footer rtElem=\"panel\" qa-dataid=\"photo-viewer-panel\">\n <ng-container\n [ngTemplateOutlet]=\"panel\"\n [ngTemplateOutletContext]=\"{ $implicit: photos[currentIndex()], index: currentIndex() }\" />\n </footer>\n }\n </div>\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-photo-viewer{display:block;width:100vw;height:100vh;height:100dvh;background:var(--rt-color-bg-inverse)}.rt-photo-viewer__surface{position:absolute;inset:0}.rt-photo-viewer__bar{position:absolute;z-index:1;top:0;right:0;left:0;display:flex;align-items:center;justify-content:space-between;padding:var(--rt-space-4) var(--rt-space-5);color:var(--rt-color-text-inverse);gap:var(--rt-space-4)}.rt-photo-viewer__counter{font-size:var(--rt-text-sm);font-variant-numeric:tabular-nums}.rt-photo-viewer__track{display:flex;overflow:auto hidden;width:100%;height:100%;scroll-snap-type:x mandatory;scrollbar-width:none}.rt-photo-viewer__slide{display:flex;flex:0 0 100%;align-items:center;justify-content:center;padding:var(--rt-space-10) var(--rt-space-4);margin:0;scroll-snap-align:center}.rt-photo-viewer__slide picture{display:flex;width:100%;height:100%;align-items:center;justify-content:center}.rt-photo-viewer__image{display:block;max-width:100%;max-height:100%;object-fit:contain}.rt-photo-viewer__panel{position:absolute;z-index:1;right:0;bottom:0;left:0;padding:var(--rt-space-4) var(--rt-space-5);background:var(--rt-color-bg-surface);color:var(--rt-color-text-primary)}.rt-photo-viewer__bar rt-icon-button,.rt-photo-viewer__arrow-prev,.rt-photo-viewer__arrow-next{--rt-icon-button-color: var(--rt-color-text-inverse);--rt-icon-button-color-bg-hover: color-mix(in srgb, var(--rt-color-text-inverse) 24%, transparent);border-radius:var(--rt-radius-md);background:color-mix(in srgb,var(--rt-color-bg-inverse) 55%,transparent)}.rt-photo-viewer__arrow-prev,.rt-photo-viewer__arrow-next{position:absolute;top:50%;transform:translateY(-50%)}.rt-photo-viewer__arrow-prev{left:var(--rt-space-3)}.rt-photo-viewer__arrow-next{right:var(--rt-space-3)}.rt-photo-viewer:has(.rt-photo-viewer__panel) .rt-photo-viewer__slide{padding-bottom:var(--rt-space-20)}@media(width<=700px){.rt-photo-viewer__arrow-prev,.rt-photo-viewer__arrow-next{display:none}.rt-photo-viewer__slide{padding:var(--rt-space-12) 0}}\n"], dependencies: [{ kind: "directive", type:
|
|
9490
9565
|
// angular
|
|
9491
9566
|
CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type:
|
|
9492
9567
|
// rt-tools
|
|
@@ -9494,11 +9569,11 @@ class RtPhotoViewerComponent {
|
|
|
9494
9569
|
// components
|
|
9495
9570
|
RtIconButtonComponent, selector: "rt-icon-button", inputs: ["icon", "ariaLabel", "variant", "iconColor", "size", "iconSize", "shape", "type", "tooltip", "tabIndex", "loading", "disabled", "active", "indicator"], outputs: ["clicked"] }, { kind: "pipe", type:
|
|
9496
9571
|
// transloco
|
|
9497
|
-
TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
9572
|
+
TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
9498
9573
|
}
|
|
9499
9574
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtPhotoViewerComponent, decorators: [{
|
|
9500
9575
|
type: Component,
|
|
9501
|
-
args: [{ selector: 'rt-photo-viewer', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
9576
|
+
args: [{ selector: 'rt-photo-viewer', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
9502
9577
|
// angular
|
|
9503
9578
|
CdkTrapFocus,
|
|
9504
9579
|
NgTemplateOutlet,
|
|
@@ -9520,7 +9595,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
9520
9595
|
'(keydown.escape)': 'close()',
|
|
9521
9596
|
'(keydown.arrowLeft)': 'move(-1)',
|
|
9522
9597
|
'(keydown.arrowRight)': 'move(1)',
|
|
9523
|
-
}, template: "<ng-container rtBlock=\"rt-photo-viewer\">\n <!-- \u041B\u043E\u0432\u0443\u0448\u043A\u0430 \u0434\u0435\u0440\u0436\u0438\u0442 Tab \u0432\u043D\u0443\u0442\u0440\u0438; \u0444\u043E\u043A\u0443\u0441 \u0441\u0442\u0430\u0432\u0438\u0442 \u0441\u0430\u043C \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442, \u043F\u043E\u044D\u0442\u043E\u043C\u0443\n \u0430\u0432\u0442\u043E-\u0437\u0430\u0445\u0432\u0430\u0442\u0430 \u0437\u0434\u0435\u0441\u044C \u043D\u0435\u0442: \u043E\u043D \u043F\u0435\u0440\u0435\u0431\u0438\u0432\u0430\u043B \u0444\u043E\u043A\u0443\u0441 \u043D\u0430 \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0449\u0438\u043A\u0435, \u0438 \u043A\u043B\u0430\u0432\u0438\u0448\u0438\n \u043F\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u0430\u043B\u0438 \u043B\u0438\u0441\u0442\u0430\u0442\u044C -->\n <div rtElem=\"surface\" cdkTrapFocus>\n <header rtElem=\"bar\">\n <span rtElem=\"counter\" qa-dataid=\"photo-viewer-counter\">{{ counter() }}</span>\n <rt-icon-button\n qa-dataid=\"photo-viewer-close\"\n icon=\"close\"\n variant=\"ghost\"\n [ariaLabel]=\"'rtKit.photoViewerClose' | transloco\"\n (clicked)=\"close()\" />\n </header>\n\n <div rtElem=\"track\" qa-dataid=\"photo-viewer-track\" #track (scroll)=\"onScroll()\">\n @for (photo of photos; track photo.id; let index = $index) {\n <figure rtElem=\"slide\" [attr.data-photo-index]=\"index\">\n @if (rendered()[index]) {\n <picture>\n @for (source of photo.picture.sources; track source.type) {\n <source sizes=\"100vw\" [type]=\"source.type\" [srcset]=\"source.srcset\" />\n }\n <img\n rtElem=\"image\"\n qa-dataid=\"photo-viewer-image\"\n decoding=\"async\"\n sizes=\"100vw\"\n [srcset]=\"photo.picture.fallbackSrcset\"\n [src]=\"photo.picture.fallbackSrc\"\n [alt]=\"photo.alt\" />\n </picture>\n }\n </figure>\n }\n </div>\n\n @if (photos.length > 1) {\n <rt-icon-button\n rtElem=\"arrow-prev\"\n qa-dataid=\"photo-viewer-prev\"\n icon=\"angle-left\"\n variant=\"ghost\"\n [ariaLabel]=\"'rtKit.photoViewerPrev' | transloco\"\n (clicked)=\"move(-1)\" />\n\n <rt-icon-button\n rtElem=\"arrow-next\"\n qa-dataid=\"photo-viewer-next\"\n icon=\"angle-right\"\n variant=\"ghost\"\n [ariaLabel]=\"'rtKit.photoViewerNext' | transloco\"\n (clicked)=\"move(1)\" />\n }\n\n <!-- \u041F\u0430\u043D\u0435\u043B\u044C \u043F\u0440\u0438\u0445\u043E\u0434\u0438\u0442 \u0441\u043D\u0430\u0440\u0443\u0436\u0438: \u0433\u0434\u0435-\u0442\u043E \u043A\u0430\u0434\u0440 \u0442\u043E\u043B\u044C\u043A\u043E \u0441\u043C\u043E\u0442\u0440\u044F\u0442, \u0433\u0434\u0435-\u0442\u043E \u0438\u043C \u0435\u0449\u0451 \u0438\n \u0443\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0442, \u0438 \u0440\u0435\u0448\u0435\u043D\u0438\u0435 \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442\u0441\u044F \u0442\u0430\u043C \u0436\u0435, \u0433\u0434\u0435 \u043A\u0430\u0434\u0440 \u0432\u0438\u0434\u0435\u043D \u043A\u0440\u0443\u043F\u043D\u043E -->\n @if (panel) {\n <footer rtElem=\"panel\" qa-dataid=\"photo-viewer-panel\">\n <ng-container\n [ngTemplateOutlet]=\"panel\"\n [ngTemplateOutletContext]=\"{ $implicit: photos[currentIndex()], index: currentIndex() }\" />\n </footer>\n }\n </div>\n</ng-container>\n", styles: ["@charset \"UTF-8\"
|
|
9598
|
+
}, template: "<ng-container rtBlock=\"rt-photo-viewer\">\n <!-- \u041B\u043E\u0432\u0443\u0448\u043A\u0430 \u0434\u0435\u0440\u0436\u0438\u0442 Tab \u0432\u043D\u0443\u0442\u0440\u0438; \u0444\u043E\u043A\u0443\u0441 \u0441\u0442\u0430\u0432\u0438\u0442 \u0441\u0430\u043C \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442, \u043F\u043E\u044D\u0442\u043E\u043C\u0443\n \u0430\u0432\u0442\u043E-\u0437\u0430\u0445\u0432\u0430\u0442\u0430 \u0437\u0434\u0435\u0441\u044C \u043D\u0435\u0442: \u043E\u043D \u043F\u0435\u0440\u0435\u0431\u0438\u0432\u0430\u043B \u0444\u043E\u043A\u0443\u0441 \u043D\u0430 \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0449\u0438\u043A\u0435, \u0438 \u043A\u043B\u0430\u0432\u0438\u0448\u0438\n \u043F\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u0430\u043B\u0438 \u043B\u0438\u0441\u0442\u0430\u0442\u044C -->\n <div rtElem=\"surface\" cdkTrapFocus>\n <header rtElem=\"bar\">\n <span rtElem=\"counter\" qa-dataid=\"photo-viewer-counter\">{{ counter() }}</span>\n <rt-icon-button\n qa-dataid=\"photo-viewer-close\"\n icon=\"close\"\n variant=\"ghost\"\n [ariaLabel]=\"'rtKit.photoViewerClose' | transloco\"\n (clicked)=\"close()\" />\n </header>\n\n <div rtElem=\"track\" qa-dataid=\"photo-viewer-track\" #track (scroll)=\"onScroll()\">\n @for (photo of photos; track photo.id; let index = $index) {\n <figure rtElem=\"slide\" [attr.data-photo-index]=\"index\">\n @if (rendered()[index]) {\n <picture>\n @for (source of photo.picture.sources; track source.type) {\n <source sizes=\"100vw\" [type]=\"source.type\" [srcset]=\"source.srcset\" />\n }\n <img\n rtElem=\"image\"\n qa-dataid=\"photo-viewer-image\"\n decoding=\"async\"\n sizes=\"100vw\"\n [srcset]=\"photo.picture.fallbackSrcset\"\n [src]=\"photo.picture.fallbackSrc\"\n [alt]=\"photo.alt\" />\n </picture>\n }\n </figure>\n }\n </div>\n\n @if (photos.length > 1) {\n <rt-icon-button\n rtElem=\"arrow-prev\"\n qa-dataid=\"photo-viewer-prev\"\n icon=\"angle-left\"\n variant=\"ghost\"\n [ariaLabel]=\"'rtKit.photoViewerPrev' | transloco\"\n (clicked)=\"move(-1)\" />\n\n <rt-icon-button\n rtElem=\"arrow-next\"\n qa-dataid=\"photo-viewer-next\"\n icon=\"angle-right\"\n variant=\"ghost\"\n [ariaLabel]=\"'rtKit.photoViewerNext' | transloco\"\n (clicked)=\"move(1)\" />\n }\n\n <!-- \u041F\u0430\u043D\u0435\u043B\u044C \u043F\u0440\u0438\u0445\u043E\u0434\u0438\u0442 \u0441\u043D\u0430\u0440\u0443\u0436\u0438: \u0433\u0434\u0435-\u0442\u043E \u043A\u0430\u0434\u0440 \u0442\u043E\u043B\u044C\u043A\u043E \u0441\u043C\u043E\u0442\u0440\u044F\u0442, \u0433\u0434\u0435-\u0442\u043E \u0438\u043C \u0435\u0449\u0451 \u0438\n \u0443\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0442, \u0438 \u0440\u0435\u0448\u0435\u043D\u0438\u0435 \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442\u0441\u044F \u0442\u0430\u043C \u0436\u0435, \u0433\u0434\u0435 \u043A\u0430\u0434\u0440 \u0432\u0438\u0434\u0435\u043D \u043A\u0440\u0443\u043F\u043D\u043E -->\n @if (panel) {\n <footer rtElem=\"panel\" qa-dataid=\"photo-viewer-panel\">\n <ng-container\n [ngTemplateOutlet]=\"panel\"\n [ngTemplateOutletContext]=\"{ $implicit: photos[currentIndex()], index: currentIndex() }\" />\n </footer>\n }\n </div>\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-photo-viewer{display:block;width:100vw;height:100vh;height:100dvh;background:var(--rt-color-bg-inverse)}.rt-photo-viewer__surface{position:absolute;inset:0}.rt-photo-viewer__bar{position:absolute;z-index:1;top:0;right:0;left:0;display:flex;align-items:center;justify-content:space-between;padding:var(--rt-space-4) var(--rt-space-5);color:var(--rt-color-text-inverse);gap:var(--rt-space-4)}.rt-photo-viewer__counter{font-size:var(--rt-text-sm);font-variant-numeric:tabular-nums}.rt-photo-viewer__track{display:flex;overflow:auto hidden;width:100%;height:100%;scroll-snap-type:x mandatory;scrollbar-width:none}.rt-photo-viewer__slide{display:flex;flex:0 0 100%;align-items:center;justify-content:center;padding:var(--rt-space-10) var(--rt-space-4);margin:0;scroll-snap-align:center}.rt-photo-viewer__slide picture{display:flex;width:100%;height:100%;align-items:center;justify-content:center}.rt-photo-viewer__image{display:block;max-width:100%;max-height:100%;object-fit:contain}.rt-photo-viewer__panel{position:absolute;z-index:1;right:0;bottom:0;left:0;padding:var(--rt-space-4) var(--rt-space-5);background:var(--rt-color-bg-surface);color:var(--rt-color-text-primary)}.rt-photo-viewer__bar rt-icon-button,.rt-photo-viewer__arrow-prev,.rt-photo-viewer__arrow-next{--rt-icon-button-color: var(--rt-color-text-inverse);--rt-icon-button-color-bg-hover: color-mix(in srgb, var(--rt-color-text-inverse) 24%, transparent);border-radius:var(--rt-radius-md);background:color-mix(in srgb,var(--rt-color-bg-inverse) 55%,transparent)}.rt-photo-viewer__arrow-prev,.rt-photo-viewer__arrow-next{position:absolute;top:50%;transform:translateY(-50%)}.rt-photo-viewer__arrow-prev{left:var(--rt-space-3)}.rt-photo-viewer__arrow-next{right:var(--rt-space-3)}.rt-photo-viewer:has(.rt-photo-viewer__panel) .rt-photo-viewer__slide{padding-bottom:var(--rt-space-20)}@media(width<=700px){.rt-photo-viewer__arrow-prev,.rt-photo-viewer__arrow-next{display:none}.rt-photo-viewer__slide{padding:var(--rt-space-12) 0}}\n"] }]
|
|
9524
9599
|
}], ctorParameters: () => [], propDecorators: { track: [{ type: i0.ViewChild, args: ['track', { isSignal: true }] }] } });
|
|
9525
9600
|
|
|
9526
9601
|
/** Сколько всего страниц. Пустой список — одна страница, листать нечего. */
|
|
@@ -9622,7 +9697,7 @@ class RtPaginationComponent {
|
|
|
9622
9697
|
this.perPageChange.emit(value);
|
|
9623
9698
|
}
|
|
9624
9699
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtPaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9625
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtPaginationComponent, isStandalone: true, selector: "rt-pagination", inputs: { pageModel: { classPropertyName: "pageModel", publicName: "pageModel", isSignal: true, isRequired: true, transformFunction: null }, perPageOptions: { classPropertyName: "perPageOptions", publicName: "perPageOptions", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pageChange: "pageChange", perPageChange: "perPageChange" }, host: { properties: { "style.display": "isVisible() ? null : 'none'" }, classAttribute: "rt-pagination" }, ngImport: i0, template: "<ng-container rtBlock=\"rt-pagination\">\n
|
|
9700
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtPaginationComponent, isStandalone: true, selector: "rt-pagination", inputs: { pageModel: { classPropertyName: "pageModel", publicName: "pageModel", isSignal: true, isRequired: true, transformFunction: null }, perPageOptions: { classPropertyName: "perPageOptions", publicName: "perPageOptions", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pageChange: "pageChange", perPageChange: "perPageChange" }, host: { properties: { "style.display": "isVisible() ? null : 'none'" }, classAttribute: "rt-pagination" }, ngImport: i0, template: "<ng-container rtBlock=\"rt-pagination\">\n <!--\n \u0412\u0435\u0442\u043A\u0438 \u00AB\u043D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E\u00BB \u0437\u0434\u0435\u0441\u044C \u043D\u0435\u0442 \u043D\u0430\u043C\u0435\u0440\u0435\u043D\u043D\u043E: \u043F\u0443\u0441\u0442\u043E\u0439 \u043D\u0430\u0431\u043E\u0440 \u043F\u0440\u044F\u0447\u0435\u0442 \u0432\u0435\u0441\u044C\n \u0431\u0430\u0440 \u0446\u0435\u043B\u0438\u043A\u043E\u043C (`isVisible`), \u0442\u0430\u043A \u0447\u0442\u043E \u0434\u043E \u044D\u0442\u043E\u0439 \u0441\u0442\u0440\u043E\u043A\u0438 \u0434\u0435\u043B\u043E \u043D\u0435 \u0434\u043E\u0445\u043E\u0434\u0438\u0442. \u041F\u043E\u043A\u0430\n \u0442\u0430\u043A\u0430\u044F \u0432\u0435\u0442\u043A\u0430 \u0442\u0443\u0442 \u0432\u0438\u0441\u0435\u043B\u0430, \u043E\u043D\u0430 \u0447\u0438\u0442\u0430\u043B\u0430\u0441\u044C \u043A\u0430\u043A \u0440\u0430\u0431\u043E\u0447\u0435\u0435 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0435, \u0430 \u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C\n \u0435\u0451 \u0431\u044B\u043B\u043E \u043D\u0435\u043B\u044C\u0437\u044F \u043D\u0438 \u043F\u0440\u0438 \u043A\u0430\u043A\u0438\u0445 \u0432\u0445\u043E\u0434\u0430\u0445.\n -->\n <span rtElem=\"range\" qa-dataid=\"pagination-range\">\n {{ 'rtKit.uiRangeOf' | transloco: { from: rangeFrom(), to: rangeTo(), total: pageModel().totalCount } }}\n </span>\n\n @if (pageItems().length) {\n <nav rtElem=\"compact\" qa-dataid=\"pagination-compact\" [attr.aria-label]=\"'rtKit.uiPagination' | transloco\">\n <rt-icon-button\n rtElem=\"arrow\"\n qa-dataid=\"pagination-compact-prev\"\n icon=\"chevron-left\"\n variant=\"ghost\"\n size=\"sm\"\n [ariaLabel]=\"'rtKit.uiPrevPage' | transloco\"\n [tooltip]=\"'rtKit.uiBack' | transloco\"\n [disabled]=\"isFirst() || loading()\"\n (clicked)=\"goTo(pageModel().pageNumber - 1)\" />\n\n <span rtElem=\"compact-label\" qa-dataid=\"pagination-compact-label\">\n {{ 'rtKit.uiPageOf' | transloco: { page: pageModel().pageNumber, last: lastPage() } }}\n </span>\n\n <rt-icon-button\n rtElem=\"arrow\"\n qa-dataid=\"pagination-compact-next\"\n icon=\"chevron-right\"\n variant=\"ghost\"\n size=\"sm\"\n [ariaLabel]=\"'rtKit.uiNextPage' | transloco\"\n [tooltip]=\"'rtKit.uiForward' | transloco\"\n [disabled]=\"isLast() || loading()\"\n (clicked)=\"goTo(pageModel().pageNumber + 1)\" />\n </nav>\n\n <nav rtElem=\"nav\" qa-dataid=\"pagination-nav\" [attr.aria-label]=\"'rtKit.uiPagination' | transloco\">\n <rt-icon-button\n rtElem=\"arrow\"\n qa-dataid=\"pagination-prev\"\n icon=\"chevron-left\"\n variant=\"ghost\"\n size=\"sm\"\n [ariaLabel]=\"'rtKit.uiPrevPage' | transloco\"\n [tooltip]=\"'rtKit.uiBack' | transloco\"\n [disabled]=\"isFirst() || loading()\"\n (clicked)=\"goTo(pageModel().pageNumber - 1)\" />\n\n @for (item of pageItems(); track $index) {\n @if (item === 'gap') {\n <span rtElem=\"gap\" aria-hidden=\"true\">\u2026</span>\n } @else {\n <button\n rtElem=\"page\"\n qa-dataid=\"pagination-page\"\n type=\"button\"\n [attr.data-page]=\"item\"\n [rtMod]=\"{ current: item === pageModel().pageNumber }\"\n [attr.aria-current]=\"item === pageModel().pageNumber ? 'page' : null\"\n [disabled]=\"loading()\"\n (click)=\"goTo(item)\">\n {{ item }}\n </button>\n }\n }\n\n <rt-icon-button\n rtElem=\"arrow\"\n qa-dataid=\"pagination-next\"\n icon=\"chevron-right\"\n variant=\"ghost\"\n size=\"sm\"\n [ariaLabel]=\"'rtKit.uiNextPage' | transloco\"\n [tooltip]=\"'rtKit.uiForward' | transloco\"\n [disabled]=\"isLast() || loading()\"\n (clicked)=\"goTo(pageModel().pageNumber + 1)\" />\n </nav>\n }\n\n <div rtElem=\"per-page\">\n <span rtElem=\"per-page-label\">{{ 'rtKit.uiPerPage' | transloco }}</span>\n <rt-select\n qa-dataid=\"pagination-per-page\"\n [ariaLabel]=\"'rtKit.uiItemsPerPage' | transloco\"\n [options]=\"perPageSelectOptions()\"\n [clearable]=\"false\"\n [ngModel]=\"pageModel().pageSize\"\n [ngModelOptions]=\"{ standalone: true }\"\n (selectionChange)=\"onPerPage($event)\" />\n </div>\n</ng-container>\n", styles: [".rt-pagination{display:flex;align-items:center;justify-content:space-between;padding:var(--rt-space-3) var(--rt-space-xs);container-type:inline-size;gap:var(--rt-space-md)}.rt-pagination__range{color:var(--rt-color-text-muted);font-size:var(--rt-text-sm);white-space:nowrap}.rt-pagination__nav{display:flex;align-items:center;gap:var(--rt-space-xs)}.rt-pagination__compact{display:none;align-items:center;gap:var(--rt-space-xs)}.rt-pagination__compact-label{color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);white-space:nowrap}.rt-pagination__page{min-width:var(--rt-space-xl);height:var(--rt-space-xl);padding:0 var(--rt-space-sm);border:var(--rt-border-width-thin) solid var(--rt-color-border-default);border-radius:var(--rt-radius-md);background:transparent;color:var(--rt-color-text-primary);cursor:pointer;transition:background-color var(--rt-duration-fast) ease,border-color var(--rt-duration-fast) ease,color var(--rt-duration-fast) ease}.rt-pagination__page:hover:not(:disabled,.rt-pagination__page--current){border-color:var(--rt-color-border-strong);background:var(--rt-color-bg-surface-subtle)}.rt-pagination__page:focus-visible{box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:2px}.rt-pagination__page--current{border-color:var(--rt-color-border-strong);background:var(--rt-color-bg-surface-subtle);font-weight:var(--rt-font-weight-semibold)}.rt-pagination__page:disabled{cursor:default;opacity:.6}.rt-pagination__gap{padding:0 var(--rt-space-xs);color:var(--rt-color-text-muted)}.rt-pagination__per-page{display:flex;align-items:center;gap:var(--rt-space-sm)}.rt-pagination__per-page-label{color:var(--rt-color-text-muted);font-size:var(--rt-text-sm)}@container (max-width: 460px){.rt-pagination__nav,.rt-pagination__range{display:none}.rt-pagination__compact{display:flex}}\n"], dependencies: [{ kind: "ngmodule", type:
|
|
9626
9701
|
// Angular
|
|
9627
9702
|
FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type:
|
|
9628
9703
|
// standalone components / directives
|
|
@@ -9643,7 +9718,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
9643
9718
|
], host: {
|
|
9644
9719
|
class: BEM_BLOCK$i,
|
|
9645
9720
|
'[style.display]': "isVisible() ? null : 'none'",
|
|
9646
|
-
}, template: "<ng-container rtBlock=\"rt-pagination\">\n
|
|
9721
|
+
}, template: "<ng-container rtBlock=\"rt-pagination\">\n <!--\n \u0412\u0435\u0442\u043A\u0438 \u00AB\u043D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E\u00BB \u0437\u0434\u0435\u0441\u044C \u043D\u0435\u0442 \u043D\u0430\u043C\u0435\u0440\u0435\u043D\u043D\u043E: \u043F\u0443\u0441\u0442\u043E\u0439 \u043D\u0430\u0431\u043E\u0440 \u043F\u0440\u044F\u0447\u0435\u0442 \u0432\u0435\u0441\u044C\n \u0431\u0430\u0440 \u0446\u0435\u043B\u0438\u043A\u043E\u043C (`isVisible`), \u0442\u0430\u043A \u0447\u0442\u043E \u0434\u043E \u044D\u0442\u043E\u0439 \u0441\u0442\u0440\u043E\u043A\u0438 \u0434\u0435\u043B\u043E \u043D\u0435 \u0434\u043E\u0445\u043E\u0434\u0438\u0442. \u041F\u043E\u043A\u0430\n \u0442\u0430\u043A\u0430\u044F \u0432\u0435\u0442\u043A\u0430 \u0442\u0443\u0442 \u0432\u0438\u0441\u0435\u043B\u0430, \u043E\u043D\u0430 \u0447\u0438\u0442\u0430\u043B\u0430\u0441\u044C \u043A\u0430\u043A \u0440\u0430\u0431\u043E\u0447\u0435\u0435 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0435, \u0430 \u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C\n \u0435\u0451 \u0431\u044B\u043B\u043E \u043D\u0435\u043B\u044C\u0437\u044F \u043D\u0438 \u043F\u0440\u0438 \u043A\u0430\u043A\u0438\u0445 \u0432\u0445\u043E\u0434\u0430\u0445.\n -->\n <span rtElem=\"range\" qa-dataid=\"pagination-range\">\n {{ 'rtKit.uiRangeOf' | transloco: { from: rangeFrom(), to: rangeTo(), total: pageModel().totalCount } }}\n </span>\n\n @if (pageItems().length) {\n <nav rtElem=\"compact\" qa-dataid=\"pagination-compact\" [attr.aria-label]=\"'rtKit.uiPagination' | transloco\">\n <rt-icon-button\n rtElem=\"arrow\"\n qa-dataid=\"pagination-compact-prev\"\n icon=\"chevron-left\"\n variant=\"ghost\"\n size=\"sm\"\n [ariaLabel]=\"'rtKit.uiPrevPage' | transloco\"\n [tooltip]=\"'rtKit.uiBack' | transloco\"\n [disabled]=\"isFirst() || loading()\"\n (clicked)=\"goTo(pageModel().pageNumber - 1)\" />\n\n <span rtElem=\"compact-label\" qa-dataid=\"pagination-compact-label\">\n {{ 'rtKit.uiPageOf' | transloco: { page: pageModel().pageNumber, last: lastPage() } }}\n </span>\n\n <rt-icon-button\n rtElem=\"arrow\"\n qa-dataid=\"pagination-compact-next\"\n icon=\"chevron-right\"\n variant=\"ghost\"\n size=\"sm\"\n [ariaLabel]=\"'rtKit.uiNextPage' | transloco\"\n [tooltip]=\"'rtKit.uiForward' | transloco\"\n [disabled]=\"isLast() || loading()\"\n (clicked)=\"goTo(pageModel().pageNumber + 1)\" />\n </nav>\n\n <nav rtElem=\"nav\" qa-dataid=\"pagination-nav\" [attr.aria-label]=\"'rtKit.uiPagination' | transloco\">\n <rt-icon-button\n rtElem=\"arrow\"\n qa-dataid=\"pagination-prev\"\n icon=\"chevron-left\"\n variant=\"ghost\"\n size=\"sm\"\n [ariaLabel]=\"'rtKit.uiPrevPage' | transloco\"\n [tooltip]=\"'rtKit.uiBack' | transloco\"\n [disabled]=\"isFirst() || loading()\"\n (clicked)=\"goTo(pageModel().pageNumber - 1)\" />\n\n @for (item of pageItems(); track $index) {\n @if (item === 'gap') {\n <span rtElem=\"gap\" aria-hidden=\"true\">\u2026</span>\n } @else {\n <button\n rtElem=\"page\"\n qa-dataid=\"pagination-page\"\n type=\"button\"\n [attr.data-page]=\"item\"\n [rtMod]=\"{ current: item === pageModel().pageNumber }\"\n [attr.aria-current]=\"item === pageModel().pageNumber ? 'page' : null\"\n [disabled]=\"loading()\"\n (click)=\"goTo(item)\">\n {{ item }}\n </button>\n }\n }\n\n <rt-icon-button\n rtElem=\"arrow\"\n qa-dataid=\"pagination-next\"\n icon=\"chevron-right\"\n variant=\"ghost\"\n size=\"sm\"\n [ariaLabel]=\"'rtKit.uiNextPage' | transloco\"\n [tooltip]=\"'rtKit.uiForward' | transloco\"\n [disabled]=\"isLast() || loading()\"\n (clicked)=\"goTo(pageModel().pageNumber + 1)\" />\n </nav>\n }\n\n <div rtElem=\"per-page\">\n <span rtElem=\"per-page-label\">{{ 'rtKit.uiPerPage' | transloco }}</span>\n <rt-select\n qa-dataid=\"pagination-per-page\"\n [ariaLabel]=\"'rtKit.uiItemsPerPage' | transloco\"\n [options]=\"perPageSelectOptions()\"\n [clearable]=\"false\"\n [ngModel]=\"pageModel().pageSize\"\n [ngModelOptions]=\"{ standalone: true }\"\n (selectionChange)=\"onPerPage($event)\" />\n </div>\n</ng-container>\n", styles: [".rt-pagination{display:flex;align-items:center;justify-content:space-between;padding:var(--rt-space-3) var(--rt-space-xs);container-type:inline-size;gap:var(--rt-space-md)}.rt-pagination__range{color:var(--rt-color-text-muted);font-size:var(--rt-text-sm);white-space:nowrap}.rt-pagination__nav{display:flex;align-items:center;gap:var(--rt-space-xs)}.rt-pagination__compact{display:none;align-items:center;gap:var(--rt-space-xs)}.rt-pagination__compact-label{color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);white-space:nowrap}.rt-pagination__page{min-width:var(--rt-space-xl);height:var(--rt-space-xl);padding:0 var(--rt-space-sm);border:var(--rt-border-width-thin) solid var(--rt-color-border-default);border-radius:var(--rt-radius-md);background:transparent;color:var(--rt-color-text-primary);cursor:pointer;transition:background-color var(--rt-duration-fast) ease,border-color var(--rt-duration-fast) ease,color var(--rt-duration-fast) ease}.rt-pagination__page:hover:not(:disabled,.rt-pagination__page--current){border-color:var(--rt-color-border-strong);background:var(--rt-color-bg-surface-subtle)}.rt-pagination__page:focus-visible{box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:2px}.rt-pagination__page--current{border-color:var(--rt-color-border-strong);background:var(--rt-color-bg-surface-subtle);font-weight:var(--rt-font-weight-semibold)}.rt-pagination__page:disabled{cursor:default;opacity:.6}.rt-pagination__gap{padding:0 var(--rt-space-xs);color:var(--rt-color-text-muted)}.rt-pagination__per-page{display:flex;align-items:center;gap:var(--rt-space-sm)}.rt-pagination__per-page-label{color:var(--rt-color-text-muted);font-size:var(--rt-text-sm)}@container (max-width: 460px){.rt-pagination__nav,.rt-pagination__range{display:none}.rt-pagination__compact{display:flex}}\n"] }]
|
|
9647
9722
|
}], propDecorators: { pageModel: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageModel", required: true }] }], perPageOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "perPageOptions", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], pageChange: [{ type: i0.Output, args: ["pageChange"] }], perPageChange: [{ type: i0.Output, args: ["perPageChange"] }] } });
|
|
9648
9723
|
|
|
9649
9724
|
const BEM_BLOCK$h = 'rt-section-nav';
|
|
@@ -9660,14 +9735,14 @@ class RtSectionNavComponent {
|
|
|
9660
9735
|
this.itemSelect.emit(item.id);
|
|
9661
9736
|
}
|
|
9662
9737
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtSectionNavComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9663
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtSectionNavComponent, isStandalone: true, selector: "rt-section-nav", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemSelect: "itemSelect" }, host: { attributes: { "role": "navigation" }, classAttribute: "rt-section-nav" }, ngImport: i0, template: "<ng-container rtBlock=\"rt-section-nav\">\n @for (item of items(); track item.id) {\n <button\n rtElem=\"tile\"\n qa-dataid=\"section-nav-tile\"\n type=\"button\"\n [attr.data-key]=\"item.id\"\n [attr.data-active]=\"item.active\"\n [attr.aria-current]=\"item.active ? 'page' : null\"\n [rtMod]=\"{ active: item.active }\"\n (click)=\"onSelect(item)\">\n <rt-icon rtElem=\"icon\" size=\"lg\" [name]=\"item.icon\" />\n <span rtElem=\"label\">{{ item.label }}</span>\n </button>\n }\n</ng-container>\n", styles: ["
|
|
9738
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtSectionNavComponent, isStandalone: true, selector: "rt-section-nav", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemSelect: "itemSelect" }, host: { attributes: { "role": "navigation" }, classAttribute: "rt-section-nav" }, ngImport: i0, template: "<ng-container rtBlock=\"rt-section-nav\">\n @for (item of items(); track item.id) {\n <button\n rtElem=\"tile\"\n qa-dataid=\"section-nav-tile\"\n type=\"button\"\n [attr.data-key]=\"item.id\"\n [attr.data-active]=\"item.active\"\n [attr.aria-current]=\"item.active ? 'page' : null\"\n [rtMod]=\"{ active: item.active }\"\n (click)=\"onSelect(item)\">\n <rt-icon rtElem=\"icon\" size=\"lg\" [name]=\"item.icon\" />\n <span rtElem=\"label\">{{ item.label }}</span>\n </button>\n }\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-section-nav{display:flex;gap:var(--rt-space-md)}.rt-section-nav__tile{display:flex;min-width:0;flex:1 0 0;flex-direction:column;align-items:center;justify-content:center;padding:var(--rt-space-md);border:0;border-radius:var(--rt-radius-xl);background:transparent;box-shadow:none;color:var(--rt-color-text-primary);cursor:pointer;gap:var(--rt-space-2-5);transition:background var(--rt-duration-fast) ease,box-shadow var(--rt-duration-fast) ease}.rt-section-nav__tile:not(.rt-section-nav__tile--active):hover{background:var(--rt-color-bg-surface-subtle);box-shadow:var(--rt-shadow-card-soft)}.rt-section-nav__tile--active{background:var(--rt-color-bg-surface);box-shadow:var(--rt-shadow-card-soft);cursor:default}.rt-section-nav__icon{color:inherit}.rt-section-nav__label{color:inherit;font-family:var(--rt-font-family-sans);font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-bold);letter-spacing:var(--rt-letter-spacing-wide);line-height:var(--rt-leading-snug)}[data-theme=dark] .rt-section-nav__tile--active{background:var(--rt-blue-900)}\n"], dependencies: [{ kind: "component", type: RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
9664
9739
|
}
|
|
9665
9740
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtSectionNavComponent, decorators: [{
|
|
9666
9741
|
type: Component,
|
|
9667
9742
|
args: [{ selector: 'rt-section-nav', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [RtIconComponent, BlockDirective, ElemDirective, ModDirective], host: {
|
|
9668
9743
|
class: BEM_BLOCK$h,
|
|
9669
9744
|
role: 'navigation',
|
|
9670
|
-
}, template: "<ng-container rtBlock=\"rt-section-nav\">\n @for (item of items(); track item.id) {\n <button\n rtElem=\"tile\"\n qa-dataid=\"section-nav-tile\"\n type=\"button\"\n [attr.data-key]=\"item.id\"\n [attr.data-active]=\"item.active\"\n [attr.aria-current]=\"item.active ? 'page' : null\"\n [rtMod]=\"{ active: item.active }\"\n (click)=\"onSelect(item)\">\n <rt-icon rtElem=\"icon\" size=\"lg\" [name]=\"item.icon\" />\n <span rtElem=\"label\">{{ item.label }}</span>\n </button>\n }\n</ng-container>\n", styles: ["
|
|
9745
|
+
}, template: "<ng-container rtBlock=\"rt-section-nav\">\n @for (item of items(); track item.id) {\n <button\n rtElem=\"tile\"\n qa-dataid=\"section-nav-tile\"\n type=\"button\"\n [attr.data-key]=\"item.id\"\n [attr.data-active]=\"item.active\"\n [attr.aria-current]=\"item.active ? 'page' : null\"\n [rtMod]=\"{ active: item.active }\"\n (click)=\"onSelect(item)\">\n <rt-icon rtElem=\"icon\" size=\"lg\" [name]=\"item.icon\" />\n <span rtElem=\"label\">{{ item.label }}</span>\n </button>\n }\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-section-nav{display:flex;gap:var(--rt-space-md)}.rt-section-nav__tile{display:flex;min-width:0;flex:1 0 0;flex-direction:column;align-items:center;justify-content:center;padding:var(--rt-space-md);border:0;border-radius:var(--rt-radius-xl);background:transparent;box-shadow:none;color:var(--rt-color-text-primary);cursor:pointer;gap:var(--rt-space-2-5);transition:background var(--rt-duration-fast) ease,box-shadow var(--rt-duration-fast) ease}.rt-section-nav__tile:not(.rt-section-nav__tile--active):hover{background:var(--rt-color-bg-surface-subtle);box-shadow:var(--rt-shadow-card-soft)}.rt-section-nav__tile--active{background:var(--rt-color-bg-surface);box-shadow:var(--rt-shadow-card-soft);cursor:default}.rt-section-nav__icon{color:inherit}.rt-section-nav__label{color:inherit;font-family:var(--rt-font-family-sans);font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-bold);letter-spacing:var(--rt-letter-spacing-wide);line-height:var(--rt-leading-snug)}[data-theme=dark] .rt-section-nav__tile--active{background:var(--rt-blue-900)}\n"] }]
|
|
9671
9746
|
}], propDecorators: { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], itemSelect: [{ type: i0.Output, args: ["itemSelect"] }] } });
|
|
9672
9747
|
|
|
9673
9748
|
const BEM_BLOCK$g = 'rt-split-button';
|
|
@@ -9802,7 +9877,17 @@ function deltaRow(key, delta) {
|
|
|
9802
9877
|
*/
|
|
9803
9878
|
class RtStatTileComponent {
|
|
9804
9879
|
constructor() {
|
|
9805
|
-
|
|
9880
|
+
/**
|
|
9881
|
+
* Значение базы уходит параметром перевода, а не подставляется в готовую
|
|
9882
|
+
* строку: Transloco интерполирует `{{value}}` в момент перевода, и к
|
|
9883
|
+
* возвращённой строке подставлять уже нечего — от подписи оставалась одна
|
|
9884
|
+
* приставка («было», «was»), а само число пропадало.
|
|
9885
|
+
*/
|
|
9886
|
+
this.#baselineParams = computed(() => ({
|
|
9887
|
+
value: this.deltaPrimary()?.baseline ?? '',
|
|
9888
|
+
}), /* @ts-ignore */
|
|
9889
|
+
...(ngDevMode ? [{ debugName: "#baselineParams" }] : /* istanbul ignore next */ []));
|
|
9890
|
+
this.#baselineLine = translateSignal('rtKit.uiBaseline', this.#baselineParams);
|
|
9806
9891
|
/**
|
|
9807
9892
|
* Дельта к предыдущему периоду — рядом со значением. Пустая база (`percent`
|
|
9808
9893
|
* = null) не рисуется вовсе: «—» рядом с цифрой читается как поломка, а не
|
|
@@ -9818,10 +9903,7 @@ class RtStatTileComponent {
|
|
|
9818
9903
|
* (занятость, состав воронки) живёт во вторичной строке, иначе одна плитка
|
|
9819
9904
|
* растягивает ряд под самую длинную подпись.
|
|
9820
9905
|
*/
|
|
9821
|
-
this.baselineText = computed(() =>
|
|
9822
|
-
const baseline = this.deltaPrimary()?.baseline;
|
|
9823
|
-
return baseline ? this.#baselinePrefix().replace('{{value}}', baseline) : '';
|
|
9824
|
-
}, /* @ts-ignore */
|
|
9906
|
+
this.baselineText = computed(() => (this.deltaPrimary()?.baseline ? this.#baselineLine() : ''), /* @ts-ignore */
|
|
9825
9907
|
...(ngDevMode ? [{ debugName: "baselineText" }] : /* istanbul ignore next */ []));
|
|
9826
9908
|
/** Подпись метрики. */
|
|
9827
9909
|
this.label = input.required(/* @ts-ignore */
|
|
@@ -9842,7 +9924,14 @@ class RtStatTileComponent {
|
|
|
9842
9924
|
this.hint = input(null, /* @ts-ignore */
|
|
9843
9925
|
...(ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []));
|
|
9844
9926
|
}
|
|
9845
|
-
|
|
9927
|
+
/**
|
|
9928
|
+
* Значение базы уходит параметром перевода, а не подставляется в готовую
|
|
9929
|
+
* строку: Transloco интерполирует `{{value}}` в момент перевода, и к
|
|
9930
|
+
* возвращённой строке подставлять уже нечего — от подписи оставалась одна
|
|
9931
|
+
* приставка («было», «was»), а само число пропадало.
|
|
9932
|
+
*/
|
|
9933
|
+
#baselineParams;
|
|
9934
|
+
#baselineLine;
|
|
9846
9935
|
#visibleDelta(delta) {
|
|
9847
9936
|
if (!delta || delta.percent === null) {
|
|
9848
9937
|
return null;
|
|
@@ -9850,13 +9939,13 @@ class RtStatTileComponent {
|
|
|
9850
9939
|
return deltaRow('primary', delta);
|
|
9851
9940
|
}
|
|
9852
9941
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtStatTileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9853
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtStatTileComponent, isStandalone: true, selector: "rt-stat-tile", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, secondary: { classPropertyName: "secondary", publicName: "secondary", isSignal: true, isRequired: false, transformFunction: null }, deltaPrimary: { classPropertyName: "deltaPrimary", publicName: "deltaPrimary", isSignal: true, isRequired: false, transformFunction: null }, deltaSecondary: { classPropertyName: "deltaSecondary", publicName: "deltaSecondary", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-stat-tile" }, ngImport: i0, template: "<article rtBlock=\"rt-stat-tile\" qa-dataid=\"stat-tile\">\n <header rtElem=\"head\">\n <span rtElem=\"label\" qa-dataid=\"stat-tile-label\">{{ label() }}</span>\n @if (hint(); as hintText) {\n <rt-icon rtElem=\"hint\" qa-dataid=\"stat-tile-hint\" name=\"info-circle\" size=\"xs\" [attr.title]=\"hintText\" />\n }\n </header>\n\n <div rtElem=\"value-row\">\n <p rtElem=\"value\" qa-dataid=\"stat-tile-value\">{{ value() }}</p>\n\n @if (primaryDelta(); as row) {\n <span\n rtElem=\"delta\"\n qa-dataid=\"stat-tile-delta\"\n [attr.data-direction]=\"row.direction\"\n [rtMod]=\"{ direction: row.direction }\"\n [attr.title]=\"row.label\">\n <rt-icon rtElem=\"delta-icon\" size=\"xs\" [name]=\"row.icon\" />\n <span rtElem=\"delta-percent\" qa-dataid=\"stat-tile-delta-percent\">{{ row.text }}</span>\n </span>\n }\n\n @if (yearDelta(); as row) {\n <span\n rtElem=\"year\"\n qa-dataid=\"stat-tile-year\"\n [attr.data-direction]=\"row.direction\"\n [rtMod]=\"{ direction: row.direction }\"\n [attr.title]=\"row.label\">\n {{ 'rtKit.uiYearOverYear' | transloco }} {{ row.text }}\n </span>\n }\n </div>\n\n @if (baselineText(); as text) {\n <p rtElem=\"baseline\" qa-dataid=\"stat-tile-baseline\">{{ text }}</p>\n }\n\n @if (secondary(); as text) {\n <p rtElem=\"secondary\" qa-dataid=\"stat-tile-secondary\">{{ text }}</p>\n }\n</article>\n", styles: ["@charset \"UTF-8\"
|
|
9942
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtStatTileComponent, isStandalone: true, selector: "rt-stat-tile", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, secondary: { classPropertyName: "secondary", publicName: "secondary", isSignal: true, isRequired: false, transformFunction: null }, deltaPrimary: { classPropertyName: "deltaPrimary", publicName: "deltaPrimary", isSignal: true, isRequired: false, transformFunction: null }, deltaSecondary: { classPropertyName: "deltaSecondary", publicName: "deltaSecondary", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-stat-tile" }, ngImport: i0, template: "<article rtBlock=\"rt-stat-tile\" qa-dataid=\"stat-tile\">\n <header rtElem=\"head\">\n <span rtElem=\"label\" qa-dataid=\"stat-tile-label\">{{ label() }}</span>\n @if (hint(); as hintText) {\n <rt-icon rtElem=\"hint\" qa-dataid=\"stat-tile-hint\" name=\"info-circle\" size=\"xs\" [attr.title]=\"hintText\" />\n }\n </header>\n\n <div rtElem=\"value-row\">\n <p rtElem=\"value\" qa-dataid=\"stat-tile-value\">{{ value() }}</p>\n\n @if (primaryDelta(); as row) {\n <span\n rtElem=\"delta\"\n qa-dataid=\"stat-tile-delta\"\n [attr.data-direction]=\"row.direction\"\n [rtMod]=\"{ direction: row.direction }\"\n [attr.title]=\"row.label\">\n <rt-icon rtElem=\"delta-icon\" size=\"xs\" [name]=\"row.icon\" />\n <span rtElem=\"delta-percent\" qa-dataid=\"stat-tile-delta-percent\">{{ row.text }}</span>\n </span>\n }\n\n @if (yearDelta(); as row) {\n <span\n rtElem=\"year\"\n qa-dataid=\"stat-tile-year\"\n [attr.data-direction]=\"row.direction\"\n [rtMod]=\"{ direction: row.direction }\"\n [attr.title]=\"row.label\">\n {{ 'rtKit.uiYearOverYear' | transloco }} {{ row.text }}\n </span>\n }\n </div>\n\n @if (baselineText(); as text) {\n <p rtElem=\"baseline\" qa-dataid=\"stat-tile-baseline\">{{ text }}</p>\n }\n\n @if (secondary(); as text) {\n <p rtElem=\"secondary\" qa-dataid=\"stat-tile-secondary\">{{ text }}</p>\n }\n</article>\n", styles: ["@charset \"UTF-8\";rt-stat-tile{display:block}rt-stat-tile .rt-stat-tile{display:flex;height:100%;flex-direction:column;gap:var(--rt-space-2)}rt-stat-tile .rt-stat-tile__head{display:flex;align-items:center;gap:var(--rt-space-1)}rt-stat-tile .rt-stat-tile__label{color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-semibold)}rt-stat-tile .rt-stat-tile__hint{color:var(--rt-color-text-muted);cursor:help}rt-stat-tile .rt-stat-tile__value-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--rt-space-3)}rt-stat-tile .rt-stat-tile__value{margin:0;color:var(--rt-color-text-primary);font-size:var(--rt-text-3xl);font-weight:var(--rt-font-weight-bold);line-height:var(--rt-leading-none)}rt-stat-tile .rt-stat-tile__delta{display:inline-flex;align-items:center;color:var(--rt-color-text-muted);font-size:var(--rt-text-md);font-weight:var(--rt-font-weight-bold);gap:var(--rt-space-1);line-height:var(--rt-leading-none)}rt-stat-tile .rt-stat-tile__delta--direction--up{color:var(--rt-color-state-success)}rt-stat-tile .rt-stat-tile__delta--direction--down{color:var(--rt-color-state-danger)}rt-stat-tile .rt-stat-tile__year{flex:0 0 auto;padding:var(--rt-space-0-5) var(--rt-space-1-5);border-radius:var(--rt-radius-sm);background:var(--rt-color-bg-surface-subtle);color:var(--rt-color-text-muted);font-size:var(--rt-text-xs);font-weight:var(--rt-font-weight-semibold);line-height:var(--rt-leading-none);white-space:nowrap}rt-stat-tile .rt-stat-tile__year--direction--up{background:var(--rt-color-state-success-bg);color:var(--rt-color-state-success)}rt-stat-tile .rt-stat-tile__year--direction--down{background:var(--rt-color-state-danger-bg);color:var(--rt-color-state-danger)}rt-stat-tile .rt-stat-tile__baseline{overflow:hidden;margin:0;color:var(--rt-color-text-muted);font-size:var(--rt-text-sm);text-overflow:ellipsis;white-space:nowrap}rt-stat-tile .rt-stat-tile__secondary{overflow:hidden;margin:auto 0 0;color:var(--rt-color-text-muted);font-size:var(--rt-text-xs);text-overflow:ellipsis;white-space:nowrap}\n"], dependencies: [{ kind: "component", type:
|
|
9854
9943
|
// standalone components / directives
|
|
9855
|
-
RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
9944
|
+
RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
9856
9945
|
}
|
|
9857
9946
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtStatTileComponent, decorators: [{
|
|
9858
9947
|
type: Component,
|
|
9859
|
-
args: [{ selector: 'rt-stat-tile', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
9948
|
+
args: [{ selector: 'rt-stat-tile', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
9860
9949
|
// standalone components / directives
|
|
9861
9950
|
RtIconComponent,
|
|
9862
9951
|
BlockDirective,
|
|
@@ -9865,7 +9954,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
9865
9954
|
TranslocoPipe,
|
|
9866
9955
|
], host: {
|
|
9867
9956
|
class: BEM_BLOCK$f,
|
|
9868
|
-
}, template: "<article rtBlock=\"rt-stat-tile\" qa-dataid=\"stat-tile\">\n <header rtElem=\"head\">\n <span rtElem=\"label\" qa-dataid=\"stat-tile-label\">{{ label() }}</span>\n @if (hint(); as hintText) {\n <rt-icon rtElem=\"hint\" qa-dataid=\"stat-tile-hint\" name=\"info-circle\" size=\"xs\" [attr.title]=\"hintText\" />\n }\n </header>\n\n <div rtElem=\"value-row\">\n <p rtElem=\"value\" qa-dataid=\"stat-tile-value\">{{ value() }}</p>\n\n @if (primaryDelta(); as row) {\n <span\n rtElem=\"delta\"\n qa-dataid=\"stat-tile-delta\"\n [attr.data-direction]=\"row.direction\"\n [rtMod]=\"{ direction: row.direction }\"\n [attr.title]=\"row.label\">\n <rt-icon rtElem=\"delta-icon\" size=\"xs\" [name]=\"row.icon\" />\n <span rtElem=\"delta-percent\" qa-dataid=\"stat-tile-delta-percent\">{{ row.text }}</span>\n </span>\n }\n\n @if (yearDelta(); as row) {\n <span\n rtElem=\"year\"\n qa-dataid=\"stat-tile-year\"\n [attr.data-direction]=\"row.direction\"\n [rtMod]=\"{ direction: row.direction }\"\n [attr.title]=\"row.label\">\n {{ 'rtKit.uiYearOverYear' | transloco }} {{ row.text }}\n </span>\n }\n </div>\n\n @if (baselineText(); as text) {\n <p rtElem=\"baseline\" qa-dataid=\"stat-tile-baseline\">{{ text }}</p>\n }\n\n @if (secondary(); as text) {\n <p rtElem=\"secondary\" qa-dataid=\"stat-tile-secondary\">{{ text }}</p>\n }\n</article>\n", styles: ["@charset \"UTF-8\"
|
|
9957
|
+
}, template: "<article rtBlock=\"rt-stat-tile\" qa-dataid=\"stat-tile\">\n <header rtElem=\"head\">\n <span rtElem=\"label\" qa-dataid=\"stat-tile-label\">{{ label() }}</span>\n @if (hint(); as hintText) {\n <rt-icon rtElem=\"hint\" qa-dataid=\"stat-tile-hint\" name=\"info-circle\" size=\"xs\" [attr.title]=\"hintText\" />\n }\n </header>\n\n <div rtElem=\"value-row\">\n <p rtElem=\"value\" qa-dataid=\"stat-tile-value\">{{ value() }}</p>\n\n @if (primaryDelta(); as row) {\n <span\n rtElem=\"delta\"\n qa-dataid=\"stat-tile-delta\"\n [attr.data-direction]=\"row.direction\"\n [rtMod]=\"{ direction: row.direction }\"\n [attr.title]=\"row.label\">\n <rt-icon rtElem=\"delta-icon\" size=\"xs\" [name]=\"row.icon\" />\n <span rtElem=\"delta-percent\" qa-dataid=\"stat-tile-delta-percent\">{{ row.text }}</span>\n </span>\n }\n\n @if (yearDelta(); as row) {\n <span\n rtElem=\"year\"\n qa-dataid=\"stat-tile-year\"\n [attr.data-direction]=\"row.direction\"\n [rtMod]=\"{ direction: row.direction }\"\n [attr.title]=\"row.label\">\n {{ 'rtKit.uiYearOverYear' | transloco }} {{ row.text }}\n </span>\n }\n </div>\n\n @if (baselineText(); as text) {\n <p rtElem=\"baseline\" qa-dataid=\"stat-tile-baseline\">{{ text }}</p>\n }\n\n @if (secondary(); as text) {\n <p rtElem=\"secondary\" qa-dataid=\"stat-tile-secondary\">{{ text }}</p>\n }\n</article>\n", styles: ["@charset \"UTF-8\";rt-stat-tile{display:block}rt-stat-tile .rt-stat-tile{display:flex;height:100%;flex-direction:column;gap:var(--rt-space-2)}rt-stat-tile .rt-stat-tile__head{display:flex;align-items:center;gap:var(--rt-space-1)}rt-stat-tile .rt-stat-tile__label{color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-semibold)}rt-stat-tile .rt-stat-tile__hint{color:var(--rt-color-text-muted);cursor:help}rt-stat-tile .rt-stat-tile__value-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--rt-space-3)}rt-stat-tile .rt-stat-tile__value{margin:0;color:var(--rt-color-text-primary);font-size:var(--rt-text-3xl);font-weight:var(--rt-font-weight-bold);line-height:var(--rt-leading-none)}rt-stat-tile .rt-stat-tile__delta{display:inline-flex;align-items:center;color:var(--rt-color-text-muted);font-size:var(--rt-text-md);font-weight:var(--rt-font-weight-bold);gap:var(--rt-space-1);line-height:var(--rt-leading-none)}rt-stat-tile .rt-stat-tile__delta--direction--up{color:var(--rt-color-state-success)}rt-stat-tile .rt-stat-tile__delta--direction--down{color:var(--rt-color-state-danger)}rt-stat-tile .rt-stat-tile__year{flex:0 0 auto;padding:var(--rt-space-0-5) var(--rt-space-1-5);border-radius:var(--rt-radius-sm);background:var(--rt-color-bg-surface-subtle);color:var(--rt-color-text-muted);font-size:var(--rt-text-xs);font-weight:var(--rt-font-weight-semibold);line-height:var(--rt-leading-none);white-space:nowrap}rt-stat-tile .rt-stat-tile__year--direction--up{background:var(--rt-color-state-success-bg);color:var(--rt-color-state-success)}rt-stat-tile .rt-stat-tile__year--direction--down{background:var(--rt-color-state-danger-bg);color:var(--rt-color-state-danger)}rt-stat-tile .rt-stat-tile__baseline{overflow:hidden;margin:0;color:var(--rt-color-text-muted);font-size:var(--rt-text-sm);text-overflow:ellipsis;white-space:nowrap}rt-stat-tile .rt-stat-tile__secondary{overflow:hidden;margin:auto 0 0;color:var(--rt-color-text-muted);font-size:var(--rt-text-xs);text-overflow:ellipsis;white-space:nowrap}\n"] }]
|
|
9869
9958
|
}], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], secondary: [{ type: i0.Input, args: [{ isSignal: true, alias: "secondary", required: false }] }], deltaPrimary: [{ type: i0.Input, args: [{ isSignal: true, alias: "deltaPrimary", required: false }] }], deltaSecondary: [{ type: i0.Input, args: [{ isSignal: true, alias: "deltaSecondary", required: false }] }], hint: [{ type: i0.Input, args: [{ isSignal: true, alias: "hint", required: false }] }] } });
|
|
9870
9959
|
|
|
9871
9960
|
const BEM_BLOCK$e = 'rt-stepper';
|
|
@@ -9884,12 +9973,24 @@ const BEM_BLOCK$e = 'rt-stepper';
|
|
|
9884
9973
|
*/
|
|
9885
9974
|
class RtStepperComponent {
|
|
9886
9975
|
constructor() {
|
|
9887
|
-
|
|
9888
|
-
|
|
9889
|
-
|
|
9890
|
-
|
|
9976
|
+
/**
|
|
9977
|
+
* Номер шага, зажатый в набор. Индекс приходит снаружи и может выйти за
|
|
9978
|
+
* границы; полоса и якорь подписи это уже переживали, а вот объявление для
|
|
9979
|
+
* скринридера — нет: при `currentIndex: 99` на трёх шагах на прогрессбаре
|
|
9980
|
+
* оказывалось `aria-valuenow="100"` при `aria-valuemax="3"`, а подпись шага
|
|
9981
|
+
* пропадала вовсе. Зажимаем один раз здесь, чтобы показ и объявление не
|
|
9982
|
+
* могли разойтись.
|
|
9983
|
+
*/
|
|
9984
|
+
this.#safeIndex = computed(() => {
|
|
9985
|
+
const total = this.steps().length;
|
|
9986
|
+
return Math.max(0, Math.min(this.currentIndex(), total - 1));
|
|
9891
9987
|
}, /* @ts-ignore */
|
|
9988
|
+
...(ngDevMode ? [{ debugName: "#safeIndex" }] : /* istanbul ignore next */ []));
|
|
9989
|
+
this.currentStep = computed(() => this.steps()[this.#safeIndex()] ?? null, /* @ts-ignore */
|
|
9892
9990
|
...(ngDevMode ? [{ debugName: "currentStep" }] : /* istanbul ignore next */ []));
|
|
9991
|
+
/** Номер текущего шага для скринридера: `0`, когда шагов нет вовсе. */
|
|
9992
|
+
this.currentStepNumber = computed(() => (this.steps().length === 0 ? 0 : this.#safeIndex() + 1), /* @ts-ignore */
|
|
9993
|
+
...(ngDevMode ? [{ debugName: "currentStepNumber" }] : /* istanbul ignore next */ []));
|
|
9893
9994
|
/**
|
|
9894
9995
|
* Доля заполненной полосы от 0 до 100. На один шаг и меньше — 0%, иначе
|
|
9895
9996
|
* `idx / (total - 1)`. Без clamp в шаблоне получаем переполнение если
|
|
@@ -9897,11 +9998,10 @@ class RtStepperComponent {
|
|
|
9897
9998
|
*/
|
|
9898
9999
|
this.progressPercent = computed(() => {
|
|
9899
10000
|
const total = this.steps().length;
|
|
9900
|
-
const idx = this.currentIndex();
|
|
9901
10001
|
if (total <= 1) {
|
|
9902
10002
|
return 0;
|
|
9903
10003
|
}
|
|
9904
|
-
return
|
|
10004
|
+
return (this.#safeIndex() / (total - 1)) * 100;
|
|
9905
10005
|
}, /* @ts-ignore */
|
|
9906
10006
|
...(ngDevMode ? [{ debugName: "progressPercent" }] : /* istanbul ignore next */ []));
|
|
9907
10007
|
this.totalSteps = computed(() => this.steps().length, /* @ts-ignore */
|
|
@@ -9913,7 +10013,7 @@ class RtStepperComponent {
|
|
|
9913
10013
|
*/
|
|
9914
10014
|
this.labelAnchor = computed(() => {
|
|
9915
10015
|
const total = this.steps().length;
|
|
9916
|
-
const idx = this
|
|
10016
|
+
const idx = this.#safeIndex();
|
|
9917
10017
|
if (idx <= 0) {
|
|
9918
10018
|
return 'start';
|
|
9919
10019
|
}
|
|
@@ -9936,21 +10036,30 @@ class RtStepperComponent {
|
|
|
9936
10036
|
...(ngDevMode ? [{ debugName: "steps" }] : /* istanbul ignore next */ []));
|
|
9937
10037
|
this.currentIndex = input(0, { ...(ngDevMode ? { debugName: "currentIndex" } : /* istanbul ignore next */ {}), transform: numberAttribute });
|
|
9938
10038
|
}
|
|
10039
|
+
/**
|
|
10040
|
+
* Номер шага, зажатый в набор. Индекс приходит снаружи и может выйти за
|
|
10041
|
+
* границы; полоса и якорь подписи это уже переживали, а вот объявление для
|
|
10042
|
+
* скринридера — нет: при `currentIndex: 99` на трёх шагах на прогрессбаре
|
|
10043
|
+
* оказывалось `aria-valuenow="100"` при `aria-valuemax="3"`, а подпись шага
|
|
10044
|
+
* пропадала вовсе. Зажимаем один раз здесь, чтобы показ и объявление не
|
|
10045
|
+
* могли разойтись.
|
|
10046
|
+
*/
|
|
10047
|
+
#safeIndex;
|
|
9939
10048
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtStepperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9940
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtStepperComponent, isStandalone: true, selector: "rt-stepper", inputs: { steps: { classPropertyName: "steps", publicName: "steps", isSignal: true, isRequired: false, transformFunction: null }, currentIndex: { classPropertyName: "currentIndex", publicName: "currentIndex", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-stepper" }, ngImport: i0, template: "@let current = currentStep();\n<div\n rtBlock=\"rt-stepper\"\n qa-dataid=\"stepper\"\n role=\"progressbar\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"totalSteps()\"\n [attr.aria-valuenow]=\"
|
|
10049
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtStepperComponent, isStandalone: true, selector: "rt-stepper", inputs: { steps: { classPropertyName: "steps", publicName: "steps", isSignal: true, isRequired: false, transformFunction: null }, currentIndex: { classPropertyName: "currentIndex", publicName: "currentIndex", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-stepper" }, ngImport: i0, template: "@let current = currentStep();\n<div\n rtBlock=\"rt-stepper\"\n qa-dataid=\"stepper\"\n role=\"progressbar\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"totalSteps()\"\n [attr.aria-valuenow]=\"currentStepNumber()\"\n [attr.aria-valuetext]=\"current?.label ?? null\">\n <div rtElem=\"rail\">\n @if (current) {\n <p rtElem=\"label\" qa-dataid=\"stepper-label\" [rtMod]=\"{ anchor: labelAnchor() }\" [style.left.%]=\"progressPercent()\">\n {{ current.label }}\n </p>\n }\n <div rtElem=\"track-band\">\n <span rtElem=\"track\" aria-hidden=\"true\"></span>\n <span rtElem=\"progress\" qa-dataid=\"stepper-progress\" aria-hidden=\"true\" [style.width.%]=\"progressPercent()\"></span>\n <ul rtElem=\"points\">\n @for (step of steps(); track $index; let i = $index) {\n <li\n rtElem=\"point\"\n qa-dataid=\"stepper-point\"\n aria-hidden=\"true\"\n [rtMod]=\"{\n current: i === currentIndex(),\n complete: i < currentIndex(),\n }\"></li>\n }\n </ul>\n </div>\n </div>\n @for (paragraph of descriptionParagraphs(); track $index) {\n <p rtElem=\"description\" qa-dataid=\"stepper-description\">{{ paragraph }}</p>\n }\n</div>\n", styles: ["@charset \"UTF-8\";rt-stepper{display:block}rt-stepper .rt-stepper{display:flex;flex-direction:column;gap:var(--rt-space-3)}rt-stepper .rt-stepper__rail{position:relative;block-size:39px}rt-stepper .rt-stepper__label{position:absolute;margin:0;color:var(--rt-color-stepper-current);font-size:var(--rt-text-xs);font-weight:var(--rt-font-weight-regular);inset-block-start:0;letter-spacing:var(--rt-letter-spacing-wide);line-height:var(--rt-leading-none);transition:left var(--rt-duration-fast) ease-out;white-space:nowrap}rt-stepper .rt-stepper__label--anchor--start{transform:translate(0)}rt-stepper .rt-stepper__label--anchor--center{transform:translate(-50%)}rt-stepper .rt-stepper__label--anchor--end{transform:translate(-100%)}rt-stepper .rt-stepper__track-band{position:absolute;display:flex;align-items:center;block-size:16px;inset-block-end:0;inset-inline:0}rt-stepper .rt-stepper__track,rt-stepper .rt-stepper__progress{position:absolute;border-radius:var(--rt-radius-full);block-size:2px;inset-block-start:50%;inset-inline-start:0;transform:translateY(-50%)}rt-stepper .rt-stepper__track{background:var(--rt-color-stepper-track);inset-inline-end:0}rt-stepper .rt-stepper__progress{background:var(--rt-color-stepper-progress);transition:width var(--rt-duration-fast) ease-out}rt-stepper .rt-stepper__points{position:relative;display:flex;align-items:center;justify-content:space-between;padding:0;margin:0;inline-size:100%;list-style:none}rt-stepper .rt-stepper__point{border-radius:var(--rt-radius-full);background:var(--rt-color-stepper-track);block-size:8px;inline-size:8px;transition:inline-size var(--rt-duration-fast) ease-out,block-size var(--rt-duration-fast) ease-out,background var(--rt-duration-fast) ease-out}rt-stepper .rt-stepper__point--complete{background:var(--rt-color-stepper-progress)}rt-stepper .rt-stepper__point--current{background:var(--rt-color-stepper-current);block-size:16px;box-shadow:var(--rt-shadow-step-indicator);inline-size:16px}rt-stepper .rt-stepper__description{margin:0;color:var(--rt-color-text-primary);font-size:var(--rt-text-xs);letter-spacing:var(--rt-letter-spacing-wide);line-height:var(--rt-leading-snug)}rt-stepper .rt-stepper__description+rt-stepper .rt-stepper__description{margin-block-start:var(--rt-space-2-5)}\n"], dependencies: [{ kind: "directive", type:
|
|
9941
10050
|
// standalone components / directives
|
|
9942
|
-
BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
10051
|
+
BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
9943
10052
|
}
|
|
9944
10053
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtStepperComponent, decorators: [{
|
|
9945
10054
|
type: Component,
|
|
9946
|
-
args: [{ selector: 'rt-stepper', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
10055
|
+
args: [{ selector: 'rt-stepper', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
9947
10056
|
// standalone components / directives
|
|
9948
10057
|
BlockDirective,
|
|
9949
10058
|
ElemDirective,
|
|
9950
10059
|
ModDirective,
|
|
9951
10060
|
], host: {
|
|
9952
10061
|
class: BEM_BLOCK$e,
|
|
9953
|
-
}, template: "@let current = currentStep();\n<div\n rtBlock=\"rt-stepper\"\n qa-dataid=\"stepper\"\n role=\"progressbar\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"totalSteps()\"\n [attr.aria-valuenow]=\"
|
|
10062
|
+
}, template: "@let current = currentStep();\n<div\n rtBlock=\"rt-stepper\"\n qa-dataid=\"stepper\"\n role=\"progressbar\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"totalSteps()\"\n [attr.aria-valuenow]=\"currentStepNumber()\"\n [attr.aria-valuetext]=\"current?.label ?? null\">\n <div rtElem=\"rail\">\n @if (current) {\n <p rtElem=\"label\" qa-dataid=\"stepper-label\" [rtMod]=\"{ anchor: labelAnchor() }\" [style.left.%]=\"progressPercent()\">\n {{ current.label }}\n </p>\n }\n <div rtElem=\"track-band\">\n <span rtElem=\"track\" aria-hidden=\"true\"></span>\n <span rtElem=\"progress\" qa-dataid=\"stepper-progress\" aria-hidden=\"true\" [style.width.%]=\"progressPercent()\"></span>\n <ul rtElem=\"points\">\n @for (step of steps(); track $index; let i = $index) {\n <li\n rtElem=\"point\"\n qa-dataid=\"stepper-point\"\n aria-hidden=\"true\"\n [rtMod]=\"{\n current: i === currentIndex(),\n complete: i < currentIndex(),\n }\"></li>\n }\n </ul>\n </div>\n </div>\n @for (paragraph of descriptionParagraphs(); track $index) {\n <p rtElem=\"description\" qa-dataid=\"stepper-description\">{{ paragraph }}</p>\n }\n</div>\n", styles: ["@charset \"UTF-8\";rt-stepper{display:block}rt-stepper .rt-stepper{display:flex;flex-direction:column;gap:var(--rt-space-3)}rt-stepper .rt-stepper__rail{position:relative;block-size:39px}rt-stepper .rt-stepper__label{position:absolute;margin:0;color:var(--rt-color-stepper-current);font-size:var(--rt-text-xs);font-weight:var(--rt-font-weight-regular);inset-block-start:0;letter-spacing:var(--rt-letter-spacing-wide);line-height:var(--rt-leading-none);transition:left var(--rt-duration-fast) ease-out;white-space:nowrap}rt-stepper .rt-stepper__label--anchor--start{transform:translate(0)}rt-stepper .rt-stepper__label--anchor--center{transform:translate(-50%)}rt-stepper .rt-stepper__label--anchor--end{transform:translate(-100%)}rt-stepper .rt-stepper__track-band{position:absolute;display:flex;align-items:center;block-size:16px;inset-block-end:0;inset-inline:0}rt-stepper .rt-stepper__track,rt-stepper .rt-stepper__progress{position:absolute;border-radius:var(--rt-radius-full);block-size:2px;inset-block-start:50%;inset-inline-start:0;transform:translateY(-50%)}rt-stepper .rt-stepper__track{background:var(--rt-color-stepper-track);inset-inline-end:0}rt-stepper .rt-stepper__progress{background:var(--rt-color-stepper-progress);transition:width var(--rt-duration-fast) ease-out}rt-stepper .rt-stepper__points{position:relative;display:flex;align-items:center;justify-content:space-between;padding:0;margin:0;inline-size:100%;list-style:none}rt-stepper .rt-stepper__point{border-radius:var(--rt-radius-full);background:var(--rt-color-stepper-track);block-size:8px;inline-size:8px;transition:inline-size var(--rt-duration-fast) ease-out,block-size var(--rt-duration-fast) ease-out,background var(--rt-duration-fast) ease-out}rt-stepper .rt-stepper__point--complete{background:var(--rt-color-stepper-progress)}rt-stepper .rt-stepper__point--current{background:var(--rt-color-stepper-current);block-size:16px;box-shadow:var(--rt-shadow-step-indicator);inline-size:16px}rt-stepper .rt-stepper__description{margin:0;color:var(--rt-color-text-primary);font-size:var(--rt-text-xs);letter-spacing:var(--rt-letter-spacing-wide);line-height:var(--rt-leading-snug)}rt-stepper .rt-stepper__description+rt-stepper .rt-stepper__description{margin-block-start:var(--rt-space-2-5)}\n"] }]
|
|
9954
10063
|
}], propDecorators: { steps: [{ type: i0.Input, args: [{ isSignal: true, alias: "steps", required: false }] }], currentIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentIndex", required: false }] }] } });
|
|
9955
10064
|
|
|
9956
10065
|
const BEM_BLOCK$d = 'rt-copy-cell';
|
|
@@ -11053,7 +11162,7 @@ class RtTableSettingsAsideComponent extends RtRouteAsideComponent {
|
|
|
11053
11162
|
this.onClose();
|
|
11054
11163
|
}
|
|
11055
11164
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtTableSettingsAsideComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11056
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: RtTableSettingsAsideComponent, isStandalone: true, selector: "rt-table-settings-aside", host: { classAttribute: "rt-table-settings-aside" }, usesInheritance: true, ngImport: i0, template: "<ng-container rtContainerRightSidenavPanel #panel=\"rtContainerRightPanel\" (cancelled)=\"onCancel()\" (closed)=\"onClosed()\" />\n\n<rt-aside [ariaLabel]=\"'rtKit.uiColumnSettings' | transloco\">\n <rt-aside-header [title]=\"'rtKit.uiColumnSettingsTitle' | transloco\" (dismiss)=\"onClose()\">\n <rt-icon-button\n asideActions\n qa-dataid=\"table-settings-reset\"\n icon=\"undo\"\n variant=\"ghost\"\n [tooltip]=\"'rtKit.uiResetDefaults' | transloco\"\n [ariaLabel]=\"'rtKit.uiResetDefaults' | transloco\"\n (clicked)=\"onReset()\" />\n </rt-aside-header>\n\n <rt-table-settings-panel [(items)]=\"items\" />\n\n <rt-aside-footer>\n <button\n rtButton\n asideDismiss\n qa-dataid=\"table-settings-close\"\n type=\"button\"\n appearance=\"text\"\n [label]=\"'rtKit.uiClose' | transloco\"\n [attr.aria-label]=\"'rtKit.uiClose' | transloco\"\n (click)=\"onClose()\"></button>\n <button\n rtButton\n asidePrimary\n qa-dataid=\"table-settings-save\"\n type=\"button\"\n [label]=\"'rtKit.uiSave' | transloco\"\n [attr.aria-label]=\"'rtKit.uiSave' | transloco\"\n (click)=\"onSave()\"></button>\n </rt-aside-footer>\n</rt-aside>\n", styles: ["@charset \"UTF-8\"
|
|
11165
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: RtTableSettingsAsideComponent, isStandalone: true, selector: "rt-table-settings-aside", host: { classAttribute: "rt-table-settings-aside" }, usesInheritance: true, ngImport: i0, template: "<ng-container rtContainerRightSidenavPanel #panel=\"rtContainerRightPanel\" (cancelled)=\"onCancel()\" (closed)=\"onClosed()\" />\n\n<rt-aside [ariaLabel]=\"'rtKit.uiColumnSettings' | transloco\">\n <rt-aside-header [title]=\"'rtKit.uiColumnSettingsTitle' | transloco\" (dismiss)=\"onClose()\">\n <rt-icon-button\n asideActions\n qa-dataid=\"table-settings-reset\"\n icon=\"undo\"\n variant=\"ghost\"\n [tooltip]=\"'rtKit.uiResetDefaults' | transloco\"\n [ariaLabel]=\"'rtKit.uiResetDefaults' | transloco\"\n (clicked)=\"onReset()\" />\n </rt-aside-header>\n\n <rt-table-settings-panel [(items)]=\"items\" />\n\n <rt-aside-footer>\n <button\n rtButton\n asideDismiss\n qa-dataid=\"table-settings-close\"\n type=\"button\"\n appearance=\"text\"\n [label]=\"'rtKit.uiClose' | transloco\"\n [attr.aria-label]=\"'rtKit.uiClose' | transloco\"\n (click)=\"onClose()\"></button>\n <button\n rtButton\n asidePrimary\n qa-dataid=\"table-settings-save\"\n type=\"button\"\n [label]=\"'rtKit.uiSave' | transloco\"\n [attr.aria-label]=\"'rtKit.uiSave' | transloco\"\n (click)=\"onSave()\"></button>\n </rt-aside-footer>\n</rt-aside>\n", styles: ["@charset \"UTF-8\";.rt-table-settings-aside{display:contents}\n"], dependencies: [{ kind: "component", type: RtAsideComponent, selector: "rt-aside", inputs: ["size", "contentLayout", "width", "ariaLabel"] }, { kind: "component", type: RtAsideFooterComponent, selector: "rt-aside-footer" }, { kind: "component", type: RtAsideHeaderComponent, selector: "rt-aside-header", inputs: ["title", "overline", "badges", "closable", "loading"], outputs: ["dismiss"] }, { kind: "directive", type: RtButtonDirective, selector: "button[rtButton], a[rtButton]", inputs: ["label", "icon", "iconPos", "theme", "appearance", "size", "rounded", "loading", "loadingIcon"] }, { kind: "directive", type: RtContainerRightSidenavPanelDirective, selector: "[rtContainerRightSidenavPanel]", outputs: ["opened", "closed", "cancelled"], exportAs: ["rtContainerRightPanel"] }, { kind: "component", type: RtIconButtonComponent, selector: "rt-icon-button", inputs: ["icon", "ariaLabel", "variant", "iconColor", "size", "iconSize", "shape", "type", "tooltip", "tabIndex", "loading", "disabled", "active", "indicator"], outputs: ["clicked"] }, { kind: "component", type: RtTableSettingsPanelComponent, selector: "rt-table-settings-panel", inputs: ["items"], outputs: ["itemsChange"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
11057
11166
|
}
|
|
11058
11167
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtTableSettingsAsideComponent, decorators: [{
|
|
11059
11168
|
type: Component,
|
|
@@ -11068,7 +11177,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
11068
11177
|
TranslocoPipe,
|
|
11069
11178
|
], host: {
|
|
11070
11179
|
class: BEM_BLOCK$9,
|
|
11071
|
-
}, template: "<ng-container rtContainerRightSidenavPanel #panel=\"rtContainerRightPanel\" (cancelled)=\"onCancel()\" (closed)=\"onClosed()\" />\n\n<rt-aside [ariaLabel]=\"'rtKit.uiColumnSettings' | transloco\">\n <rt-aside-header [title]=\"'rtKit.uiColumnSettingsTitle' | transloco\" (dismiss)=\"onClose()\">\n <rt-icon-button\n asideActions\n qa-dataid=\"table-settings-reset\"\n icon=\"undo\"\n variant=\"ghost\"\n [tooltip]=\"'rtKit.uiResetDefaults' | transloco\"\n [ariaLabel]=\"'rtKit.uiResetDefaults' | transloco\"\n (clicked)=\"onReset()\" />\n </rt-aside-header>\n\n <rt-table-settings-panel [(items)]=\"items\" />\n\n <rt-aside-footer>\n <button\n rtButton\n asideDismiss\n qa-dataid=\"table-settings-close\"\n type=\"button\"\n appearance=\"text\"\n [label]=\"'rtKit.uiClose' | transloco\"\n [attr.aria-label]=\"'rtKit.uiClose' | transloco\"\n (click)=\"onClose()\"></button>\n <button\n rtButton\n asidePrimary\n qa-dataid=\"table-settings-save\"\n type=\"button\"\n [label]=\"'rtKit.uiSave' | transloco\"\n [attr.aria-label]=\"'rtKit.uiSave' | transloco\"\n (click)=\"onSave()\"></button>\n </rt-aside-footer>\n</rt-aside>\n", styles: ["@charset \"UTF-8\"
|
|
11180
|
+
}, template: "<ng-container rtContainerRightSidenavPanel #panel=\"rtContainerRightPanel\" (cancelled)=\"onCancel()\" (closed)=\"onClosed()\" />\n\n<rt-aside [ariaLabel]=\"'rtKit.uiColumnSettings' | transloco\">\n <rt-aside-header [title]=\"'rtKit.uiColumnSettingsTitle' | transloco\" (dismiss)=\"onClose()\">\n <rt-icon-button\n asideActions\n qa-dataid=\"table-settings-reset\"\n icon=\"undo\"\n variant=\"ghost\"\n [tooltip]=\"'rtKit.uiResetDefaults' | transloco\"\n [ariaLabel]=\"'rtKit.uiResetDefaults' | transloco\"\n (clicked)=\"onReset()\" />\n </rt-aside-header>\n\n <rt-table-settings-panel [(items)]=\"items\" />\n\n <rt-aside-footer>\n <button\n rtButton\n asideDismiss\n qa-dataid=\"table-settings-close\"\n type=\"button\"\n appearance=\"text\"\n [label]=\"'rtKit.uiClose' | transloco\"\n [attr.aria-label]=\"'rtKit.uiClose' | transloco\"\n (click)=\"onClose()\"></button>\n <button\n rtButton\n asidePrimary\n qa-dataid=\"table-settings-save\"\n type=\"button\"\n [label]=\"'rtKit.uiSave' | transloco\"\n [attr.aria-label]=\"'rtKit.uiSave' | transloco\"\n (click)=\"onSave()\"></button>\n </rt-aside-footer>\n</rt-aside>\n", styles: ["@charset \"UTF-8\";.rt-table-settings-aside{display:contents}\n"] }]
|
|
11072
11181
|
}], ctorParameters: () => [] });
|
|
11073
11182
|
|
|
11074
11183
|
/**
|
|
@@ -11403,8 +11512,6 @@ class RtTextareaComponent extends RtFormControlBase {
|
|
|
11403
11512
|
super(...arguments);
|
|
11404
11513
|
this.fieldEl = viewChild('fieldEl', /* @ts-ignore */
|
|
11405
11514
|
...(ngDevMode ? [{ debugName: "fieldEl" }] : /* istanbul ignore next */ []));
|
|
11406
|
-
this.effectiveDisabled = computed(() => this.disabled() || this.isDisabled(), /* @ts-ignore */
|
|
11407
|
-
...(ngDevMode ? [{ debugName: "effectiveDisabled" }] : /* istanbul ignore next */ []));
|
|
11408
11515
|
this.hasValue = computed(() => this.value() !== '', /* @ts-ignore */
|
|
11409
11516
|
...(ngDevMode ? [{ debugName: "hasValue" }] : /* istanbul ignore next */ []));
|
|
11410
11517
|
this.displayText = computed(() => this.value(), /* @ts-ignore */
|
|
@@ -11435,7 +11542,7 @@ class RtTextareaComponent extends RtFormControlBase {
|
|
|
11435
11542
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtTextareaComponent, isStandalone: true, selector: "rt-textarea", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, resize: { classPropertyName: "resize", publicName: "resize", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.rt-textarea--size--sm": "size() === 'sm'", "class.rt-textarea--size--lg": "size() === 'lg'", "class.rt-textarea--disabled": "isDisabled()", "class.rt-textarea--readonly": "readonly()", "class.rt-textarea--invalid": "isInvalid()", "class.rt-textarea--borderless": "!bordered()" }, classAttribute: "rt-textarea" }, providers: [
|
|
11436
11543
|
// Алиас базового токена — для contentChild(RtFormControlBase) в rt-field.
|
|
11437
11544
|
{ provide: RtFormControlBase, useExisting: forwardRef(() => RtTextareaComponent) },
|
|
11438
|
-
], viewQueries: [{ propertyName: "fieldEl", first: true, predicate: ["fieldEl"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ng-container rtBlock=\"rt-textarea\">\n @if (isReadonly()) {\n <span rtElem=\"readonly\" qa-dataid=\"textarea-readonly\" [rtMod]=\"{ empty: !displayText() }\">{{ displayText() || '\u2014' }}</span>\n } @else {\n <textarea\n #fieldEl\n rtElem=\"control\"\n qa-dataid=\"textarea-control\"\n [attr.id]=\"effectiveControlId()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-invalid]=\"isInvalid() || null\"\n [style.resize]=\"resize()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"
|
|
11545
|
+
], viewQueries: [{ propertyName: "fieldEl", first: true, predicate: ["fieldEl"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ng-container rtBlock=\"rt-textarea\">\n @if (isReadonly()) {\n <span rtElem=\"readonly\" qa-dataid=\"textarea-readonly\" [rtMod]=\"{ empty: !displayText() }\">{{ displayText() || '\u2014' }}</span>\n } @else {\n <textarea\n #fieldEl\n rtElem=\"control\"\n qa-dataid=\"textarea-control\"\n [attr.id]=\"effectiveControlId()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-invalid]=\"isInvalid() || null\"\n [style.resize]=\"resize()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [readOnly]=\"readonly()\"\n [rows]=\"rows()\"\n [value]=\"value()\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"></textarea>\n }\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-textarea{display:block;width:100%}.rt-textarea--borderless .rt-textarea__control{border-color:transparent}.rt-textarea__control{width:100%;min-height:var(--rt-textarea-min-height);box-sizing:border-box;padding:var(--rt-textarea-padding-y) var(--rt-input-padding-x);border:var(--rt-input-border-width) solid var(--rt-input-color-border);border-radius:var(--rt-input-radius);background-color:var(--rt-input-color-bg);color:var(--rt-input-color-text);font-family:inherit;font-size:var(--rt-input-font-size);line-height:var(--rt-textarea-line-height);transition:var(--rt-input-transition)}.rt-textarea__control::placeholder{color:var(--rt-input-color-text-placeholder);opacity:1}.rt-textarea__control:focus-visible{border-color:var(--rt-input-color-border-focus);box-shadow:var(--rt-input-focus-shadow);outline:2px solid transparent;outline-offset:var(--rt-input-focus-outline-offset)}.rt-textarea__control:disabled{background-color:var(--rt-input-color-bg-disabled);cursor:not-allowed}.rt-textarea--size--sm .rt-textarea__control{min-height:var(--rt-textarea-min-height-sm)}.rt-textarea--size--lg .rt-textarea__control{min-height:var(--rt-textarea-min-height-lg)}.rt-textarea--invalid .rt-textarea__control{border-color:var(--rt-input-color-border-error)}.rt-textarea--invalid .rt-textarea__control:focus-visible{box-shadow:var(--rt-input-focus-shadow-error)}.rt-textarea--disabled{opacity:var(--rt-input-disabled-opacity)}.rt-textarea__readonly{display:block;color:var(--rt-field-value-color);font-size:var(--rt-field-value-font-size);white-space:pre-wrap}.rt-textarea__readonly--empty{color:var(--rt-field-value-empty-color)}\n"], dependencies: [{ kind: "directive", type:
|
|
11439
11546
|
// standalone components / directives
|
|
11440
11547
|
BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
11441
11548
|
}
|
|
@@ -11457,7 +11564,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
11457
11564
|
'[class.rt-textarea--readonly]': 'readonly()',
|
|
11458
11565
|
'[class.rt-textarea--invalid]': 'isInvalid()',
|
|
11459
11566
|
'[class.rt-textarea--borderless]': '!bordered()',
|
|
11460
|
-
}, template: "<ng-container rtBlock=\"rt-textarea\">\n @if (isReadonly()) {\n <span rtElem=\"readonly\" qa-dataid=\"textarea-readonly\" [rtMod]=\"{ empty: !displayText() }\">{{ displayText() || '\u2014' }}</span>\n } @else {\n <textarea\n #fieldEl\n rtElem=\"control\"\n qa-dataid=\"textarea-control\"\n [attr.id]=\"effectiveControlId()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-invalid]=\"isInvalid() || null\"\n [style.resize]=\"resize()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"
|
|
11567
|
+
}, template: "<ng-container rtBlock=\"rt-textarea\">\n @if (isReadonly()) {\n <span rtElem=\"readonly\" qa-dataid=\"textarea-readonly\" [rtMod]=\"{ empty: !displayText() }\">{{ displayText() || '\u2014' }}</span>\n } @else {\n <textarea\n #fieldEl\n rtElem=\"control\"\n qa-dataid=\"textarea-control\"\n [attr.id]=\"effectiveControlId()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-invalid]=\"isInvalid() || null\"\n [style.resize]=\"resize()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [readOnly]=\"readonly()\"\n [rows]=\"rows()\"\n [value]=\"value()\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"></textarea>\n }\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-textarea{display:block;width:100%}.rt-textarea--borderless .rt-textarea__control{border-color:transparent}.rt-textarea__control{width:100%;min-height:var(--rt-textarea-min-height);box-sizing:border-box;padding:var(--rt-textarea-padding-y) var(--rt-input-padding-x);border:var(--rt-input-border-width) solid var(--rt-input-color-border);border-radius:var(--rt-input-radius);background-color:var(--rt-input-color-bg);color:var(--rt-input-color-text);font-family:inherit;font-size:var(--rt-input-font-size);line-height:var(--rt-textarea-line-height);transition:var(--rt-input-transition)}.rt-textarea__control::placeholder{color:var(--rt-input-color-text-placeholder);opacity:1}.rt-textarea__control:focus-visible{border-color:var(--rt-input-color-border-focus);box-shadow:var(--rt-input-focus-shadow);outline:2px solid transparent;outline-offset:var(--rt-input-focus-outline-offset)}.rt-textarea__control:disabled{background-color:var(--rt-input-color-bg-disabled);cursor:not-allowed}.rt-textarea--size--sm .rt-textarea__control{min-height:var(--rt-textarea-min-height-sm)}.rt-textarea--size--lg .rt-textarea__control{min-height:var(--rt-textarea-min-height-lg)}.rt-textarea--invalid .rt-textarea__control{border-color:var(--rt-input-color-border-error)}.rt-textarea--invalid .rt-textarea__control:focus-visible{box-shadow:var(--rt-input-focus-shadow-error)}.rt-textarea--disabled{opacity:var(--rt-input-disabled-opacity)}.rt-textarea__readonly{display:block;color:var(--rt-field-value-color);font-size:var(--rt-field-value-font-size);white-space:pre-wrap}.rt-textarea__readonly--empty{color:var(--rt-field-value-empty-color)}\n"] }]
|
|
11461
11568
|
}], propDecorators: { fieldEl: [{ type: i0.ViewChild, args: ['fieldEl', { isSignal: true }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], rows: [{ type: i0.Input, args: [{ isSignal: true, alias: "rows", required: false }] }], resize: [{ type: i0.Input, args: [{ isSignal: true, alias: "resize", required: false }] }] } });
|
|
11462
11569
|
|
|
11463
11570
|
const BEM_BLOCK$6 = 'rt-toggle-switch';
|
|
@@ -11470,27 +11577,30 @@ const BEM_BLOCK$6 = 'rt-toggle-switch';
|
|
|
11470
11577
|
* `useExisting: forwardRef(...)` — `useClass` на self-reference вызывает
|
|
11471
11578
|
* NG0200 cycle при boot'е.
|
|
11472
11579
|
*
|
|
11473
|
-
*
|
|
11474
|
-
*
|
|
11475
|
-
*
|
|
11476
|
-
*
|
|
11580
|
+
* Отключение складывается из двух независимых источников: входа `disabled` и
|
|
11581
|
+
* слова формы (CVA `setDisabledState`). Отключено, если так сказал любой из
|
|
11582
|
+
* них. Сводить их в один signal нельзя: форма зовёт `setDisabledState` при
|
|
11583
|
+
* связывании контрола, то есть раньше, чем переключатель впервые обновит своё
|
|
11584
|
+
* вью, и мирроринг входа затирал бы её слово — контрол, созданный отключённым,
|
|
11585
|
+
* оказывался бы кликабельным.
|
|
11477
11586
|
*
|
|
11478
11587
|
* Опциональные иконки `iconOff` / `iconOn` рисуются внутри трека статично:
|
|
11479
11588
|
* off-иконка в начальной половине, on-иконка в конечной. Бегунок непрозрачен
|
|
11480
11589
|
* и наезжает на иконку активного состояния, так что видна всегда иконка того
|
|
11481
11590
|
* состояния, куда переключится контрол.
|
|
11482
11591
|
*
|
|
11483
|
-
* ViewEncapsulation —
|
|
11592
|
+
* ViewEncapsulation.None — стили таргетируют имя элемента и BEM-класс блока.
|
|
11484
11593
|
*/
|
|
11485
11594
|
class RtToggleSwitchComponent {
|
|
11486
|
-
#onChange;
|
|
11487
|
-
#onTouched;
|
|
11488
11595
|
constructor() {
|
|
11489
11596
|
this.#onChange = () => undefined;
|
|
11490
11597
|
this.#onTouched = () => undefined;
|
|
11598
|
+
/** Отключение, назначенное формой через CVA (`setDisabledState`). */
|
|
11599
|
+
this.#disabledByForm = signal(false, /* @ts-ignore */
|
|
11600
|
+
...(ngDevMode ? [{ debugName: "#disabledByForm" }] : /* istanbul ignore next */ []));
|
|
11491
11601
|
this.isOn = signal(false, /* @ts-ignore */
|
|
11492
11602
|
...(ngDevMode ? [{ debugName: "isOn" }] : /* istanbul ignore next */ []));
|
|
11493
|
-
this.isDisabled =
|
|
11603
|
+
this.isDisabled = computed(() => this.disabled() || this.#disabledByForm(), /* @ts-ignore */
|
|
11494
11604
|
...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
|
|
11495
11605
|
/**
|
|
11496
11606
|
* BEM-модификаторы для `[rtMod]`. Собираем в .ts, потому что
|
|
@@ -11518,13 +11628,11 @@ class RtToggleSwitchComponent {
|
|
|
11518
11628
|
this.iconOn = input(null, /* @ts-ignore */
|
|
11519
11629
|
...(ngDevMode ? [{ debugName: "iconOn" }] : /* istanbul ignore next */ []));
|
|
11520
11630
|
this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
11521
|
-
// Синхронизируем signal-input `disabled` в `isDisabled`, чтобы
|
|
11522
|
-
// `[disabled]="..."` и `setDisabledState(...)` (CVA) писали в одно
|
|
11523
|
-
// и то же место. Effect живёт в injection context конструктора.
|
|
11524
|
-
effect(() => {
|
|
11525
|
-
this.isDisabled.set(this.disabled());
|
|
11526
|
-
});
|
|
11527
11631
|
}
|
|
11632
|
+
#onChange;
|
|
11633
|
+
#onTouched;
|
|
11634
|
+
/** Отключение, назначенное формой через CVA (`setDisabledState`). */
|
|
11635
|
+
#disabledByForm;
|
|
11528
11636
|
writeValue(value) {
|
|
11529
11637
|
this.isOn.set(value === true);
|
|
11530
11638
|
}
|
|
@@ -11535,7 +11643,7 @@ class RtToggleSwitchComponent {
|
|
|
11535
11643
|
this.#onTouched = fn;
|
|
11536
11644
|
}
|
|
11537
11645
|
setDisabledState(disabled) {
|
|
11538
|
-
this.
|
|
11646
|
+
this.#disabledByForm.set(disabled);
|
|
11539
11647
|
}
|
|
11540
11648
|
toggle() {
|
|
11541
11649
|
if (this.isDisabled()) {
|
|
@@ -11553,13 +11661,13 @@ class RtToggleSwitchComponent {
|
|
|
11553
11661
|
useExisting: forwardRef(() => RtToggleSwitchComponent),
|
|
11554
11662
|
multi: true,
|
|
11555
11663
|
},
|
|
11556
|
-
], ngImport: i0, template: "<button\n rtBlock=\"rt-toggle-switch\"\n qa-dataid=\"toggle-switch-control\"\n type=\"button\"\n role=\"switch\"\n [rtMod]=\"bemMods()\"\n [attr.id]=\"inputId()\"\n [attr.aria-checked]=\"isOn()\"\n [attr.aria-label]=\"ariaLabel()\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggle()\">\n <span rtElem=\"track\">\n @if (iconOff(); as iconOffName) {\n <rt-icon rtElem=\"icon-off\" size=\"sm\" [name]=\"iconOffName\" />\n }\n @if (iconOn(); as iconOnName) {\n <rt-icon rtElem=\"icon-on\" size=\"sm\" [name]=\"iconOnName\" />\n }\n <span rtElem=\"thumb\"></span>\n </span>\n</button>\n", styles: ["@charset \"UTF-8\"
|
|
11664
|
+
], ngImport: i0, template: "<button\n rtBlock=\"rt-toggle-switch\"\n qa-dataid=\"toggle-switch-control\"\n type=\"button\"\n role=\"switch\"\n [rtMod]=\"bemMods()\"\n [attr.id]=\"inputId()\"\n [attr.aria-checked]=\"isOn()\"\n [attr.aria-label]=\"ariaLabel()\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggle()\">\n <span rtElem=\"track\">\n @if (iconOff(); as iconOffName) {\n <rt-icon rtElem=\"icon-off\" size=\"sm\" [name]=\"iconOffName\" />\n }\n @if (iconOn(); as iconOnName) {\n <rt-icon rtElem=\"icon-on\" size=\"sm\" [name]=\"iconOnName\" />\n }\n <span rtElem=\"thumb\"></span>\n </span>\n</button>\n", styles: ["@charset \"UTF-8\";rt-toggle-switch{display:inline-flex}rt-toggle-switch .rt-toggle-switch{--rt-toggle-track-width: 42px;--rt-toggle-track-height: 24px;--rt-toggle-thumb-size: 18px;--rt-toggle-thumb-inset: 3px;--rt-toggle-thumb-travel: 18px;--rt-toggle-icon-inset: 4px;display:inline-flex;padding:0;border:none;background:none;cursor:pointer}rt-toggle-switch .rt-toggle-switch--md{--rt-toggle-track-width: 52px;--rt-toggle-thumb-travel: 28px}rt-toggle-switch .rt-toggle-switch--lg{--rt-toggle-track-width: 60px;--rt-toggle-track-height: 30px;--rt-toggle-thumb-size: 24px;--rt-toggle-thumb-travel: 30px;--rt-toggle-icon-inset: 6px}rt-toggle-switch .rt-toggle-switch:focus-visible{border-radius:var(--rt-radius-full);box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:2px}rt-toggle-switch .rt-toggle-switch--disabled{cursor:not-allowed;opacity:.5}rt-toggle-switch .rt-toggle-switch__track{position:relative;display:inline-block;width:var(--rt-toggle-track-width);height:var(--rt-toggle-track-height);border-radius:var(--rt-radius-full);background:var(--rt-toggle-color-track);box-shadow:var(--rt-toggle-shadow-border);color:var(--rt-toggle-color-icon);transition:background var(--rt-duration-fast) ease,box-shadow var(--rt-duration-fast) ease}rt-toggle-switch .rt-toggle-switch--on rt-toggle-switch .rt-toggle-switch__track{background:var(--rt-toggle-color-track-on);box-shadow:none}rt-toggle-switch .rt-toggle-switch__icon-off,rt-toggle-switch .rt-toggle-switch__icon-on{position:absolute;inset-block-start:50%;transform:translateY(-50%)}rt-toggle-switch .rt-toggle-switch__icon-off{inset-inline-start:var(--rt-toggle-icon-inset)}rt-toggle-switch .rt-toggle-switch__icon-on{inset-inline-end:var(--rt-toggle-icon-inset)}rt-toggle-switch .rt-toggle-switch__thumb{position:absolute;width:var(--rt-toggle-thumb-size);height:var(--rt-toggle-thumb-size);border-radius:var(--rt-radius-full);background:var(--rt-toggle-color-thumb);box-shadow:var(--rt-toggle-shadow-thumb);inset-block-start:var(--rt-toggle-thumb-inset);inset-inline-start:var(--rt-toggle-thumb-inset);transition:transform var(--rt-duration-fast) ease}rt-toggle-switch .rt-toggle-switch--on rt-toggle-switch .rt-toggle-switch__thumb{transform:translate(var(--rt-toggle-thumb-travel))}\n"], dependencies: [{ kind: "component", type:
|
|
11557
11665
|
// standalone components / directives
|
|
11558
|
-
RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
11666
|
+
RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
11559
11667
|
}
|
|
11560
11668
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtToggleSwitchComponent, decorators: [{
|
|
11561
11669
|
type: Component,
|
|
11562
|
-
args: [{ selector: 'rt-toggle-switch', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
11670
|
+
args: [{ selector: 'rt-toggle-switch', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
11563
11671
|
// standalone components / directives
|
|
11564
11672
|
RtIconComponent,
|
|
11565
11673
|
BlockDirective,
|
|
@@ -11573,8 +11681,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
11573
11681
|
},
|
|
11574
11682
|
], host: {
|
|
11575
11683
|
class: BEM_BLOCK$6,
|
|
11576
|
-
}, template: "<button\n rtBlock=\"rt-toggle-switch\"\n qa-dataid=\"toggle-switch-control\"\n type=\"button\"\n role=\"switch\"\n [rtMod]=\"bemMods()\"\n [attr.id]=\"inputId()\"\n [attr.aria-checked]=\"isOn()\"\n [attr.aria-label]=\"ariaLabel()\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggle()\">\n <span rtElem=\"track\">\n @if (iconOff(); as iconOffName) {\n <rt-icon rtElem=\"icon-off\" size=\"sm\" [name]=\"iconOffName\" />\n }\n @if (iconOn(); as iconOnName) {\n <rt-icon rtElem=\"icon-on\" size=\"sm\" [name]=\"iconOnName\" />\n }\n <span rtElem=\"thumb\"></span>\n </span>\n</button>\n", styles: ["@charset \"UTF-8\"
|
|
11577
|
-
}],
|
|
11684
|
+
}, template: "<button\n rtBlock=\"rt-toggle-switch\"\n qa-dataid=\"toggle-switch-control\"\n type=\"button\"\n role=\"switch\"\n [rtMod]=\"bemMods()\"\n [attr.id]=\"inputId()\"\n [attr.aria-checked]=\"isOn()\"\n [attr.aria-label]=\"ariaLabel()\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggle()\">\n <span rtElem=\"track\">\n @if (iconOff(); as iconOffName) {\n <rt-icon rtElem=\"icon-off\" size=\"sm\" [name]=\"iconOffName\" />\n }\n @if (iconOn(); as iconOnName) {\n <rt-icon rtElem=\"icon-on\" size=\"sm\" [name]=\"iconOnName\" />\n }\n <span rtElem=\"thumb\"></span>\n </span>\n</button>\n", styles: ["@charset \"UTF-8\";rt-toggle-switch{display:inline-flex}rt-toggle-switch .rt-toggle-switch{--rt-toggle-track-width: 42px;--rt-toggle-track-height: 24px;--rt-toggle-thumb-size: 18px;--rt-toggle-thumb-inset: 3px;--rt-toggle-thumb-travel: 18px;--rt-toggle-icon-inset: 4px;display:inline-flex;padding:0;border:none;background:none;cursor:pointer}rt-toggle-switch .rt-toggle-switch--md{--rt-toggle-track-width: 52px;--rt-toggle-thumb-travel: 28px}rt-toggle-switch .rt-toggle-switch--lg{--rt-toggle-track-width: 60px;--rt-toggle-track-height: 30px;--rt-toggle-thumb-size: 24px;--rt-toggle-thumb-travel: 30px;--rt-toggle-icon-inset: 6px}rt-toggle-switch .rt-toggle-switch:focus-visible{border-radius:var(--rt-radius-full);box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:2px}rt-toggle-switch .rt-toggle-switch--disabled{cursor:not-allowed;opacity:.5}rt-toggle-switch .rt-toggle-switch__track{position:relative;display:inline-block;width:var(--rt-toggle-track-width);height:var(--rt-toggle-track-height);border-radius:var(--rt-radius-full);background:var(--rt-toggle-color-track);box-shadow:var(--rt-toggle-shadow-border);color:var(--rt-toggle-color-icon);transition:background var(--rt-duration-fast) ease,box-shadow var(--rt-duration-fast) ease}rt-toggle-switch .rt-toggle-switch--on rt-toggle-switch .rt-toggle-switch__track{background:var(--rt-toggle-color-track-on);box-shadow:none}rt-toggle-switch .rt-toggle-switch__icon-off,rt-toggle-switch .rt-toggle-switch__icon-on{position:absolute;inset-block-start:50%;transform:translateY(-50%)}rt-toggle-switch .rt-toggle-switch__icon-off{inset-inline-start:var(--rt-toggle-icon-inset)}rt-toggle-switch .rt-toggle-switch__icon-on{inset-inline-end:var(--rt-toggle-icon-inset)}rt-toggle-switch .rt-toggle-switch__thumb{position:absolute;width:var(--rt-toggle-thumb-size);height:var(--rt-toggle-thumb-size);border-radius:var(--rt-radius-full);background:var(--rt-toggle-color-thumb);box-shadow:var(--rt-toggle-shadow-thumb);inset-block-start:var(--rt-toggle-thumb-inset);inset-inline-start:var(--rt-toggle-thumb-inset);transition:transform var(--rt-duration-fast) ease}rt-toggle-switch .rt-toggle-switch--on rt-toggle-switch .rt-toggle-switch__thumb{transform:translate(var(--rt-toggle-thumb-travel))}\n"] }]
|
|
11685
|
+
}], propDecorators: { inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], iconOff: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconOff", required: false }] }], iconOn: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconOn", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
|
|
11578
11686
|
|
|
11579
11687
|
/**
|
|
11580
11688
|
* Модель `<rt-toggle-switch>`: один корневой неймспейс с префиксом `I`.
|
|
@@ -11616,15 +11724,15 @@ class RtThemeToggleComponent {
|
|
|
11616
11724
|
this.#theme.toggle();
|
|
11617
11725
|
}
|
|
11618
11726
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtThemeToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11619
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtThemeToggleComponent, isStandalone: true, selector: "rt-theme-toggle", inputs: { appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-theme-toggle" }, ngImport: i0, template: "@if (isSwitch()) {\n <rt-toggle-switch\n qa-dataid=\"theme-toggle-control\"\n size=\"md\"\n iconOff=\"ico-sun\"\n iconOn=\"moon\"\n [ariaLabel]=\"label\"\n [ngModel]=\"isDark()\"\n (ngModelChange)=\"onToggle()\" />\n} @else {\n <rt-icon-button\n qa-dataid=\"theme-toggle-control\"\n variant=\"ghost\"\n size=\"md\"\n shape=\"circle\"\n [ariaLabel]=\"label\"\n [icon]=\"iconName()\"\n [active]=\"isDark()\"\n (clicked)=\"onToggle()\" />\n}\n", styles: ["
|
|
11727
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtThemeToggleComponent, isStandalone: true, selector: "rt-theme-toggle", inputs: { appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-theme-toggle" }, ngImport: i0, template: "@if (isSwitch()) {\n <rt-toggle-switch\n qa-dataid=\"theme-toggle-control\"\n size=\"md\"\n iconOff=\"ico-sun\"\n iconOn=\"moon\"\n [ariaLabel]=\"label\"\n [ngModel]=\"isDark()\"\n (ngModelChange)=\"onToggle()\" />\n} @else {\n <rt-icon-button\n qa-dataid=\"theme-toggle-control\"\n variant=\"ghost\"\n size=\"md\"\n shape=\"circle\"\n [ariaLabel]=\"label\"\n [icon]=\"iconName()\"\n [active]=\"isDark()\"\n (clicked)=\"onToggle()\" />\n}\n", styles: ["@charset \"UTF-8\";.rt-theme-toggle{display:inline-flex}\n"], dependencies: [{ kind: "ngmodule", type:
|
|
11620
11728
|
// angular
|
|
11621
11729
|
FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type:
|
|
11622
11730
|
// standalone components / directives
|
|
11623
|
-
RtIconButtonComponent, selector: "rt-icon-button", inputs: ["icon", "ariaLabel", "variant", "iconColor", "size", "iconSize", "shape", "type", "tooltip", "tabIndex", "loading", "disabled", "active", "indicator"], outputs: ["clicked"] }, { kind: "component", type: RtToggleSwitchComponent, selector: "rt-toggle-switch", inputs: ["inputId", "ariaLabel", "size", "iconOff", "iconOn", "disabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
11731
|
+
RtIconButtonComponent, selector: "rt-icon-button", inputs: ["icon", "ariaLabel", "variant", "iconColor", "size", "iconSize", "shape", "type", "tooltip", "tabIndex", "loading", "disabled", "active", "indicator"], outputs: ["clicked"] }, { kind: "component", type: RtToggleSwitchComponent, selector: "rt-toggle-switch", inputs: ["inputId", "ariaLabel", "size", "iconOff", "iconOn", "disabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
11624
11732
|
}
|
|
11625
11733
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtThemeToggleComponent, decorators: [{
|
|
11626
11734
|
type: Component,
|
|
11627
|
-
args: [{ selector: 'rt-theme-toggle', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
11735
|
+
args: [{ selector: 'rt-theme-toggle', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
11628
11736
|
// angular
|
|
11629
11737
|
FormsModule,
|
|
11630
11738
|
// standalone components / directives
|
|
@@ -11632,7 +11740,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
11632
11740
|
RtToggleSwitchComponent,
|
|
11633
11741
|
], host: {
|
|
11634
11742
|
class: BEM_BLOCK$5,
|
|
11635
|
-
}, template: "@if (isSwitch()) {\n <rt-toggle-switch\n qa-dataid=\"theme-toggle-control\"\n size=\"md\"\n iconOff=\"ico-sun\"\n iconOn=\"moon\"\n [ariaLabel]=\"label\"\n [ngModel]=\"isDark()\"\n (ngModelChange)=\"onToggle()\" />\n} @else {\n <rt-icon-button\n qa-dataid=\"theme-toggle-control\"\n variant=\"ghost\"\n size=\"md\"\n shape=\"circle\"\n [ariaLabel]=\"label\"\n [icon]=\"iconName()\"\n [active]=\"isDark()\"\n (clicked)=\"onToggle()\" />\n}\n", styles: ["
|
|
11743
|
+
}, template: "@if (isSwitch()) {\n <rt-toggle-switch\n qa-dataid=\"theme-toggle-control\"\n size=\"md\"\n iconOff=\"ico-sun\"\n iconOn=\"moon\"\n [ariaLabel]=\"label\"\n [ngModel]=\"isDark()\"\n (ngModelChange)=\"onToggle()\" />\n} @else {\n <rt-icon-button\n qa-dataid=\"theme-toggle-control\"\n variant=\"ghost\"\n size=\"md\"\n shape=\"circle\"\n [ariaLabel]=\"label\"\n [icon]=\"iconName()\"\n [active]=\"isDark()\"\n (clicked)=\"onToggle()\" />\n}\n", styles: ["@charset \"UTF-8\";.rt-theme-toggle{display:inline-flex}\n"] }]
|
|
11636
11744
|
}], propDecorators: { appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }] } });
|
|
11637
11745
|
|
|
11638
11746
|
/**
|
|
@@ -11903,20 +12011,20 @@ class RtTimelineComponent {
|
|
|
11903
12011
|
...(ngDevMode ? [{ debugName: "steps" }] : /* istanbul ignore next */ []));
|
|
11904
12012
|
}
|
|
11905
12013
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtTimelineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11906
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtTimelineComponent, isStandalone: true, selector: "rt-timeline", inputs: { steps: { classPropertyName: "steps", publicName: "steps", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-timeline" }, ngImport: i0, template: "<ol rtBlock=\"rt-timeline\" qa-dataid=\"timeline\">\n @for (step of steps(); track $index; let last = $last) {\n <li rtElem=\"item\" qa-dataid=\"timeline-item\" [attr.data-status]=\"step.status\" [rtMod]=\"{ status: step.status }\">\n <span rtElem=\"rail\" aria-hidden=\"true\">\n <span rtElem=\"dot\" [rtMod]=\"{ status: step.status }\"></span>\n @if (!last) {\n <span rtElem=\"line\"></span>\n }\n </span>\n <span rtElem=\"body\">\n <span rtElem=\"label\" qa-dataid=\"timeline-item-label\">{{ step.label }}</span>\n @if (step.meta || step.actor) {\n <span rtElem=\"meta\">\n @if (step.meta) {\n <span rtElem=\"time\" qa-dataid=\"timeline-item-time\">{{ step.meta }}</span>\n }\n @if (step.actor) {\n <span rtElem=\"actor\" qa-dataid=\"timeline-item-actor\">{{ step.actor }}</span>\n }\n </span>\n }\n </span>\n </li>\n }\n</ol>\n", styles: ["@charset \"UTF-8\"
|
|
12014
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtTimelineComponent, isStandalone: true, selector: "rt-timeline", inputs: { steps: { classPropertyName: "steps", publicName: "steps", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-timeline" }, ngImport: i0, template: "<ol rtBlock=\"rt-timeline\" qa-dataid=\"timeline\">\n @for (step of steps(); track $index; let last = $last) {\n <li rtElem=\"item\" qa-dataid=\"timeline-item\" [attr.data-status]=\"step.status\" [rtMod]=\"{ status: step.status }\">\n <span rtElem=\"rail\" aria-hidden=\"true\">\n <span rtElem=\"dot\" [rtMod]=\"{ status: step.status }\"></span>\n @if (!last) {\n <span rtElem=\"line\"></span>\n }\n </span>\n <span rtElem=\"body\">\n <span rtElem=\"label\" qa-dataid=\"timeline-item-label\">{{ step.label }}</span>\n @if (step.meta || step.actor) {\n <span rtElem=\"meta\">\n @if (step.meta) {\n <span rtElem=\"time\" qa-dataid=\"timeline-item-time\">{{ step.meta }}</span>\n }\n @if (step.actor) {\n <span rtElem=\"actor\" qa-dataid=\"timeline-item-actor\">{{ step.actor }}</span>\n }\n </span>\n }\n </span>\n </li>\n }\n</ol>\n", styles: ["@charset \"UTF-8\";rt-timeline{display:block}rt-timeline .rt-timeline{display:flex;flex-direction:column;padding:0;margin:0;list-style:none}rt-timeline .rt-timeline__item{display:flex;gap:var(--rt-space-sm)}rt-timeline .rt-timeline__item:last-child .rt-timeline__body{padding-block-end:0}rt-timeline .rt-timeline__rail{display:flex;flex-direction:column;align-items:center;inline-size:16px}rt-timeline .rt-timeline__dot{box-sizing:border-box;flex:none;border-radius:var(--rt-radius-full);background:var(--rt-color-stepper-track);block-size:10px;inline-size:10px;margin-block-start:var(--rt-space-xs)}rt-timeline .rt-timeline__dot--status--complete{background:var(--rt-color-stepper-progress)}rt-timeline .rt-timeline__dot--status--current{background:var(--rt-color-stepper-current);block-size:14px;box-shadow:var(--rt-shadow-step-indicator);inline-size:14px;margin-block-start:var(--rt-space-2xs)}rt-timeline .rt-timeline__dot--status--pending{border:var(--rt-border-width-thin) solid var(--rt-color-stepper-track);background:transparent}rt-timeline .rt-timeline__line{flex:1 1 auto;background:var(--rt-color-stepper-track);inline-size:2px;margin-block-start:var(--rt-space-2xs)}rt-timeline .rt-timeline__body{display:flex;flex-direction:column;gap:var(--rt-space-2xs);padding-block-end:var(--rt-space-md)}rt-timeline .rt-timeline__label{color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);line-height:var(--rt-leading-snug)}rt-timeline .rt-timeline__meta{display:inline-flex;flex-wrap:wrap;color:var(--rt-color-text-muted);font-size:var(--rt-text-xs);gap:var(--rt-space-xs);line-height:var(--rt-leading-snug)}rt-timeline .rt-timeline__actor:before{content:\"\\b7\";margin-inline-end:var(--rt-space-xs)}\n"], dependencies: [{ kind: "directive", type:
|
|
11907
12015
|
// standalone components / directives
|
|
11908
|
-
BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
12016
|
+
BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
11909
12017
|
}
|
|
11910
12018
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtTimelineComponent, decorators: [{
|
|
11911
12019
|
type: Component,
|
|
11912
|
-
args: [{ selector: 'rt-timeline', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
12020
|
+
args: [{ selector: 'rt-timeline', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
11913
12021
|
// standalone components / directives
|
|
11914
12022
|
BlockDirective,
|
|
11915
12023
|
ElemDirective,
|
|
11916
12024
|
ModDirective,
|
|
11917
12025
|
], host: {
|
|
11918
12026
|
class: BEM_BLOCK$3,
|
|
11919
|
-
}, template: "<ol rtBlock=\"rt-timeline\" qa-dataid=\"timeline\">\n @for (step of steps(); track $index; let last = $last) {\n <li rtElem=\"item\" qa-dataid=\"timeline-item\" [attr.data-status]=\"step.status\" [rtMod]=\"{ status: step.status }\">\n <span rtElem=\"rail\" aria-hidden=\"true\">\n <span rtElem=\"dot\" [rtMod]=\"{ status: step.status }\"></span>\n @if (!last) {\n <span rtElem=\"line\"></span>\n }\n </span>\n <span rtElem=\"body\">\n <span rtElem=\"label\" qa-dataid=\"timeline-item-label\">{{ step.label }}</span>\n @if (step.meta || step.actor) {\n <span rtElem=\"meta\">\n @if (step.meta) {\n <span rtElem=\"time\" qa-dataid=\"timeline-item-time\">{{ step.meta }}</span>\n }\n @if (step.actor) {\n <span rtElem=\"actor\" qa-dataid=\"timeline-item-actor\">{{ step.actor }}</span>\n }\n </span>\n }\n </span>\n </li>\n }\n</ol>\n", styles: ["@charset \"UTF-8\"
|
|
12027
|
+
}, template: "<ol rtBlock=\"rt-timeline\" qa-dataid=\"timeline\">\n @for (step of steps(); track $index; let last = $last) {\n <li rtElem=\"item\" qa-dataid=\"timeline-item\" [attr.data-status]=\"step.status\" [rtMod]=\"{ status: step.status }\">\n <span rtElem=\"rail\" aria-hidden=\"true\">\n <span rtElem=\"dot\" [rtMod]=\"{ status: step.status }\"></span>\n @if (!last) {\n <span rtElem=\"line\"></span>\n }\n </span>\n <span rtElem=\"body\">\n <span rtElem=\"label\" qa-dataid=\"timeline-item-label\">{{ step.label }}</span>\n @if (step.meta || step.actor) {\n <span rtElem=\"meta\">\n @if (step.meta) {\n <span rtElem=\"time\" qa-dataid=\"timeline-item-time\">{{ step.meta }}</span>\n }\n @if (step.actor) {\n <span rtElem=\"actor\" qa-dataid=\"timeline-item-actor\">{{ step.actor }}</span>\n }\n </span>\n }\n </span>\n </li>\n }\n</ol>\n", styles: ["@charset \"UTF-8\";rt-timeline{display:block}rt-timeline .rt-timeline{display:flex;flex-direction:column;padding:0;margin:0;list-style:none}rt-timeline .rt-timeline__item{display:flex;gap:var(--rt-space-sm)}rt-timeline .rt-timeline__item:last-child .rt-timeline__body{padding-block-end:0}rt-timeline .rt-timeline__rail{display:flex;flex-direction:column;align-items:center;inline-size:16px}rt-timeline .rt-timeline__dot{box-sizing:border-box;flex:none;border-radius:var(--rt-radius-full);background:var(--rt-color-stepper-track);block-size:10px;inline-size:10px;margin-block-start:var(--rt-space-xs)}rt-timeline .rt-timeline__dot--status--complete{background:var(--rt-color-stepper-progress)}rt-timeline .rt-timeline__dot--status--current{background:var(--rt-color-stepper-current);block-size:14px;box-shadow:var(--rt-shadow-step-indicator);inline-size:14px;margin-block-start:var(--rt-space-2xs)}rt-timeline .rt-timeline__dot--status--pending{border:var(--rt-border-width-thin) solid var(--rt-color-stepper-track);background:transparent}rt-timeline .rt-timeline__line{flex:1 1 auto;background:var(--rt-color-stepper-track);inline-size:2px;margin-block-start:var(--rt-space-2xs)}rt-timeline .rt-timeline__body{display:flex;flex-direction:column;gap:var(--rt-space-2xs);padding-block-end:var(--rt-space-md)}rt-timeline .rt-timeline__label{color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);line-height:var(--rt-leading-snug)}rt-timeline .rt-timeline__meta{display:inline-flex;flex-wrap:wrap;color:var(--rt-color-text-muted);font-size:var(--rt-text-xs);gap:var(--rt-space-xs);line-height:var(--rt-leading-snug)}rt-timeline .rt-timeline__actor:before{content:\"\\b7\";margin-inline-end:var(--rt-space-xs)}\n"] }]
|
|
11920
12028
|
}], propDecorators: { steps: [{ type: i0.Input, args: [{ isSignal: true, alias: "steps", required: false }] }] } });
|
|
11921
12029
|
|
|
11922
12030
|
const BEM_BLOCK$2 = 'rt-welcome-dialog';
|
|
@@ -11952,13 +12060,13 @@ class RtWelcomeDialogComponent {
|
|
|
11952
12060
|
this.#dialogRef.close();
|
|
11953
12061
|
}
|
|
11954
12062
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtWelcomeDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11955
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtWelcomeDialogComponent, isStandalone: true, selector: "rt-welcome-dialog", host: { classAttribute: "rt-welcome-dialog" }, ngImport: i0, template: "<rt-dialog width=\"335px\" [ariaLabel]=\"'rtKit.uiWelcomeAria' | transloco\">\n <div rtBlock=\"rt-welcome-dialog\">\n <div rtElem=\"text\">\n @if (title) {\n <h2 rtElem=\"title\" qa-dataid=\"welcome-dialog-title\">{{ title }}</h2>\n }\n @for (paragraph of paragraphs; track $index) {\n <p rtElem=\"description\" qa-dataid=\"welcome-dialog-description\">{{ paragraph }}</p>\n }\n </div>\n <!-- rtButton-\u0434\u0438\u0440\u0435\u043A\u0442\u0438\u0432\u0430 \u0440\u0435\u043D\u0434\u0435\u0440\u0438\u0442 label \u0447\u0435\u0440\u0435\u0437 Renderer2 \u0432 afterNextRender \u2014\n \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E child-\u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0430 \u0432 template \u043D\u0435\u0442 \u043D\u0430\u043C\u0435\u0440\u0435\u043D\u043D\u043E. -->\n <!-- eslint-disable-next-line @angular-eslint/template/elements-content -->\n <button\n rtButton\n rtElem=\"cta\"\n qa-dataid=\"welcome-dialog-cta\"\n type=\"button\"\n theme=\"primary\"\n appearance=\"filled\"\n [label]=\"ctaLabel()\"\n (click)=\"onClose()\"></button>\n </div>\n</rt-dialog>\n", styles: ["@charset \"UTF-8\"
|
|
12063
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtWelcomeDialogComponent, isStandalone: true, selector: "rt-welcome-dialog", host: { classAttribute: "rt-welcome-dialog" }, ngImport: i0, template: "<rt-dialog width=\"335px\" [ariaLabel]=\"'rtKit.uiWelcomeAria' | transloco\">\n <div rtBlock=\"rt-welcome-dialog\">\n <div rtElem=\"text\">\n @if (title) {\n <h2 rtElem=\"title\" qa-dataid=\"welcome-dialog-title\">{{ title }}</h2>\n }\n @for (paragraph of paragraphs; track $index) {\n <p rtElem=\"description\" qa-dataid=\"welcome-dialog-description\">{{ paragraph }}</p>\n }\n </div>\n <!-- rtButton-\u0434\u0438\u0440\u0435\u043A\u0442\u0438\u0432\u0430 \u0440\u0435\u043D\u0434\u0435\u0440\u0438\u0442 label \u0447\u0435\u0440\u0435\u0437 Renderer2 \u0432 afterNextRender \u2014\n \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E child-\u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0430 \u0432 template \u043D\u0435\u0442 \u043D\u0430\u043C\u0435\u0440\u0435\u043D\u043D\u043E. -->\n <!-- eslint-disable-next-line @angular-eslint/template/elements-content -->\n <button\n rtButton\n rtElem=\"cta\"\n qa-dataid=\"welcome-dialog-cta\"\n type=\"button\"\n theme=\"primary\"\n appearance=\"filled\"\n [label]=\"ctaLabel()\"\n (click)=\"onClose()\"></button>\n </div>\n</rt-dialog>\n", styles: ["@charset \"UTF-8\";rt-welcome-dialog{display:contents}rt-welcome-dialog .rt-welcome-dialog{display:flex;flex-direction:column;padding:var(--rt-space-16) var(--rt-space-5);gap:var(--rt-space-5)}rt-welcome-dialog .rt-welcome-dialog__text{display:flex;flex-direction:column;gap:var(--rt-space-2-5);text-align:center}rt-welcome-dialog .rt-welcome-dialog__title{margin:0;color:var(--rt-color-text-primary);font-family:var(--rt-font-family-sans);font-size:var(--rt-text-md);font-weight:var(--rt-font-weight-bold);line-height:var(--rt-leading-snug)}rt-welcome-dialog .rt-welcome-dialog__description{margin:0;color:var(--rt-color-text-primary);font-family:var(--rt-font-family-sans);font-size:var(--rt-text-xs);font-weight:var(--rt-font-weight-regular);line-height:var(--rt-leading-snug);white-space:pre-line}rt-welcome-dialog .rt-welcome-dialog__cta{--rt-btn-font-size: 14px;width:100%;letter-spacing:0}\n"], dependencies: [{ kind: "directive", type:
|
|
11956
12064
|
// standalone components / directives
|
|
11957
|
-
RtButtonDirective, selector: "button[rtButton], a[rtButton]", inputs: ["label", "icon", "iconPos", "theme", "appearance", "size", "rounded", "loading", "loadingIcon"] }, { kind: "component", type: RtDialogComponent, selector: "rt-dialog", inputs: ["size", "width", "ariaLabel"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
12065
|
+
RtButtonDirective, selector: "button[rtButton], a[rtButton]", inputs: ["label", "icon", "iconPos", "theme", "appearance", "size", "rounded", "loading", "loadingIcon"] }, { kind: "component", type: RtDialogComponent, selector: "rt-dialog", inputs: ["size", "width", "ariaLabel"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
11958
12066
|
}
|
|
11959
12067
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtWelcomeDialogComponent, decorators: [{
|
|
11960
12068
|
type: Component,
|
|
11961
|
-
args: [{ selector: 'rt-welcome-dialog', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
12069
|
+
args: [{ selector: 'rt-welcome-dialog', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
11962
12070
|
// standalone components / directives
|
|
11963
12071
|
RtButtonDirective,
|
|
11964
12072
|
RtDialogComponent,
|
|
@@ -11967,7 +12075,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
11967
12075
|
TranslocoPipe,
|
|
11968
12076
|
], host: {
|
|
11969
12077
|
class: BEM_BLOCK$2,
|
|
11970
|
-
}, template: "<rt-dialog width=\"335px\" [ariaLabel]=\"'rtKit.uiWelcomeAria' | transloco\">\n <div rtBlock=\"rt-welcome-dialog\">\n <div rtElem=\"text\">\n @if (title) {\n <h2 rtElem=\"title\" qa-dataid=\"welcome-dialog-title\">{{ title }}</h2>\n }\n @for (paragraph of paragraphs; track $index) {\n <p rtElem=\"description\" qa-dataid=\"welcome-dialog-description\">{{ paragraph }}</p>\n }\n </div>\n <!-- rtButton-\u0434\u0438\u0440\u0435\u043A\u0442\u0438\u0432\u0430 \u0440\u0435\u043D\u0434\u0435\u0440\u0438\u0442 label \u0447\u0435\u0440\u0435\u0437 Renderer2 \u0432 afterNextRender \u2014\n \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E child-\u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0430 \u0432 template \u043D\u0435\u0442 \u043D\u0430\u043C\u0435\u0440\u0435\u043D\u043D\u043E. -->\n <!-- eslint-disable-next-line @angular-eslint/template/elements-content -->\n <button\n rtButton\n rtElem=\"cta\"\n qa-dataid=\"welcome-dialog-cta\"\n type=\"button\"\n theme=\"primary\"\n appearance=\"filled\"\n [label]=\"ctaLabel()\"\n (click)=\"onClose()\"></button>\n </div>\n</rt-dialog>\n", styles: ["@charset \"UTF-8\"
|
|
12078
|
+
}, template: "<rt-dialog width=\"335px\" [ariaLabel]=\"'rtKit.uiWelcomeAria' | transloco\">\n <div rtBlock=\"rt-welcome-dialog\">\n <div rtElem=\"text\">\n @if (title) {\n <h2 rtElem=\"title\" qa-dataid=\"welcome-dialog-title\">{{ title }}</h2>\n }\n @for (paragraph of paragraphs; track $index) {\n <p rtElem=\"description\" qa-dataid=\"welcome-dialog-description\">{{ paragraph }}</p>\n }\n </div>\n <!-- rtButton-\u0434\u0438\u0440\u0435\u043A\u0442\u0438\u0432\u0430 \u0440\u0435\u043D\u0434\u0435\u0440\u0438\u0442 label \u0447\u0435\u0440\u0435\u0437 Renderer2 \u0432 afterNextRender \u2014\n \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E child-\u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0430 \u0432 template \u043D\u0435\u0442 \u043D\u0430\u043C\u0435\u0440\u0435\u043D\u043D\u043E. -->\n <!-- eslint-disable-next-line @angular-eslint/template/elements-content -->\n <button\n rtButton\n rtElem=\"cta\"\n qa-dataid=\"welcome-dialog-cta\"\n type=\"button\"\n theme=\"primary\"\n appearance=\"filled\"\n [label]=\"ctaLabel()\"\n (click)=\"onClose()\"></button>\n </div>\n</rt-dialog>\n", styles: ["@charset \"UTF-8\";rt-welcome-dialog{display:contents}rt-welcome-dialog .rt-welcome-dialog{display:flex;flex-direction:column;padding:var(--rt-space-16) var(--rt-space-5);gap:var(--rt-space-5)}rt-welcome-dialog .rt-welcome-dialog__text{display:flex;flex-direction:column;gap:var(--rt-space-2-5);text-align:center}rt-welcome-dialog .rt-welcome-dialog__title{margin:0;color:var(--rt-color-text-primary);font-family:var(--rt-font-family-sans);font-size:var(--rt-text-md);font-weight:var(--rt-font-weight-bold);line-height:var(--rt-leading-snug)}rt-welcome-dialog .rt-welcome-dialog__description{margin:0;color:var(--rt-color-text-primary);font-family:var(--rt-font-family-sans);font-size:var(--rt-text-xs);font-weight:var(--rt-font-weight-regular);line-height:var(--rt-leading-snug);white-space:pre-line}rt-welcome-dialog .rt-welcome-dialog__cta{--rt-btn-font-size: 14px;width:100%;letter-spacing:0}\n"] }]
|
|
11971
12079
|
}], ctorParameters: () => [] });
|
|
11972
12080
|
|
|
11973
12081
|
class RtWorkspaceDesktopOnlyDirective {
|