@rt-tools/ui-kit-v2 0.41.0 → 0.43.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.
Files changed (56) hide show
  1. package/fesm2022/rt-tools-ui-kit-v2-calendar.mjs +4 -4
  2. package/fesm2022/rt-tools-ui-kit-v2-calendar.mjs.map +1 -1
  3. package/fesm2022/rt-tools-ui-kit-v2-core.mjs +22 -0
  4. package/fesm2022/rt-tools-ui-kit-v2-core.mjs.map +1 -1
  5. package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs +155 -100
  6. package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs.map +1 -1
  7. package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs +2 -2
  8. package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs.map +1 -1
  9. package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs +1778 -18
  10. package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs.map +1 -1
  11. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs +22 -5
  12. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs.map +1 -1
  13. package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs +34 -11
  14. package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs.map +1 -1
  15. package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs +725 -47
  16. package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs.map +1 -1
  17. package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs +6 -0
  18. package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs.map +1 -1
  19. package/fesm2022/rt-tools-ui-kit-v2-workspace.mjs +217 -6
  20. package/fesm2022/rt-tools-ui-kit-v2-workspace.mjs.map +1 -1
  21. package/package.json +1 -1
  22. package/src/lib/components/calendar/CONTEXT.md +4 -2
  23. package/src/lib/components/calendar/rt-calendar.component.scss +29 -2
  24. package/src/lib/components/date-picker/CONTEXT.md +5 -0
  25. package/src/lib/components/date-picker/panel/CONTEXT.md +42 -0
  26. package/src/lib/components/date-picker/panel/rt-date-panel.component.scss +55 -2
  27. package/src/lib/components/page-header/CONTEXT.md +35 -1
  28. package/src/lib/components/page-header/bar/rt-page-bar.component.scss +161 -0
  29. package/src/lib/components/page-header/rail/rt-page-actions.component.scss +115 -0
  30. package/src/lib/components/page-header/rail/rt-page-phone-menu.component.scss +129 -0
  31. package/src/lib/components/page-header/rail/rt-page-rail.component.scss +281 -0
  32. package/src/lib/components/page-header/rail/rt-page-user.component.scss +76 -0
  33. package/src/lib/components/page-header/rt-page-header.component.scss +5 -0
  34. package/src/lib/components/page-header/stories/component/test-page-header-vertical.component.scss +72 -0
  35. package/src/lib/components/page-header/stories/component/test-page-table.component.scss +81 -0
  36. package/src/lib/components/page-header/user/rt-page-header-user.component.scss +6 -0
  37. package/src/lib/components/stepper/CONTEXT.md +34 -2
  38. package/src/lib/components/stepper/rt-stepper.component.scss +62 -43
  39. package/src/lib/components/tabs/CONTEXT.md +30 -1
  40. package/src/lib/components/tabs/rt-tabs-arrows.scss +140 -0
  41. package/src/lib/components/tabs/rt-tabs-more-menu.scss +126 -0
  42. package/src/lib/components/tabs/rt-tabs-more.component.scss +29 -0
  43. package/src/lib/components/tabs/rt-tabs.component.scss +18 -61
  44. package/src/lib/components/workspace/CONTEXT.md +11 -1
  45. package/src/lib/components/workspace/rt-workspace.component.scss +51 -3
  46. package/src/rich-editor/lib/components/chat/CONTEXT.md +12 -2
  47. package/src/rich-editor/lib/components/chat/rt-chat-messenger.scss +9 -3
  48. package/src/rich-editor/lib/components/chat/rt-chat-translation.scss +92 -0
  49. package/types/rt-tools-ui-kit-v2-calendar.d.ts +13 -1
  50. package/types/rt-tools-ui-kit-v2-core.d.ts +9 -1
  51. package/types/rt-tools-ui-kit-v2-date-picker.d.ts +157 -5
  52. package/types/rt-tools-ui-kit-v2-page-header.d.ts +202 -2
  53. package/types/rt-tools-ui-kit-v2-rich-editor.d.ts +25 -0
  54. package/types/rt-tools-ui-kit-v2-stepper.d.ts +20 -6
  55. package/types/rt-tools-ui-kit-v2-tabs.d.ts +120 -1
  56. package/types/rt-tools-ui-kit-v2-workspace.d.ts +33 -1
@@ -556,6 +556,8 @@ var RtWorkspaceDetailsComponent = class RtWorkspaceDetailsComponent {
556
556
  "invalidMessage",
557
557
  "tooltip",
558
558
  "closable",
559
+ "pinned",
560
+ "contextMenu",
559
561
  "closeTooltip",
560
562
  "closeTooltipPlacement"
561
563
  ]
@@ -569,11 +571,15 @@ var RtWorkspaceDetailsComponent = class RtWorkspaceDetailsComponent {
569
571
  "direction",
570
572
  "stretch",
571
573
  "dense",
574
+ "closeOn",
572
575
  "contentScrollable",
573
576
  "headerOnly",
574
577
  "preserveContent",
575
578
  "activation",
579
+ "overflow",
580
+ "moreLimit",
576
581
  "scrollArrows",
582
+ "arrowLook",
577
583
  "scrollStep",
578
584
  "animationDuration",
579
585
  "contentTabIndex"
@@ -1 +1 @@
1
- {"version":3,"file":"rt-tools-ui-kit-v2-workspace-details.mjs","names":[],"sources":["../../../projects/ui-kit-v2/src/lib/components/workspace-details/rt-workspace-details.component.ts","../../../projects/ui-kit-v2/src/lib/components/workspace-details/rt-workspace-details.component.html"],"sourcesContent":["import { BooleanInput } from '@angular/cdk/coercion';\nimport { DecimalPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n InputSignal,\n InputSignalWithTransform,\n output,\n OutputEmitterRef,\n signal,\n Signal,\n untracked,\n ViewEncapsulation,\n WritableSignal,\n} from '@angular/core';\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\n\nimport { BlockDirective, ElemDirective } from '@rt-tools/core';\n\nimport { RT_KIT_LABELS, TRtKitLabelMap } from '@rt-tools/ui-kit-v2/core';\nimport { NotificationBus } from '@rt-tools/ui-kit-v2/core';\n\nimport { RtAsideSectionComponent } from '@rt-tools/ui-kit-v2/aside-section';\nimport { RtButtonDirective } from '@rt-tools/ui-kit-v2/button';\nimport { RtConfirmDirective } from '@rt-tools/ui-kit-v2/confirm-popover';\nimport { RtDetailListComponent } from '@rt-tools/ui-kit-v2/detail-list';\nimport { RtDetailRowComponent } from '@rt-tools/ui-kit-v2/detail-list';\nimport { RtEmptyStateComponent } from '@rt-tools/ui-kit-v2/empty-state';\nimport { RtFieldComponent } from '@rt-tools/ui-kit-v2/field';\nimport { RtIconButtonComponent } from '@rt-tools/ui-kit-v2/icon-button';\nimport { RtMoneyListComponent } from '@rt-tools/ui-kit-v2/money-list';\nimport { RtMoneyRowComponent } from '@rt-tools/ui-kit-v2/money-list';\nimport { RtNoteComponent } from '@rt-tools/ui-kit-v2/note';\nimport { RtSelectComponent } from '@rt-tools/ui-kit-v2/select';\nimport { RtServiceLogoComponent } from '@rt-tools/ui-kit-v2/service-logo';\nimport { RtSpinnerComponent } from '@rt-tools/ui-kit-v2/spinner';\nimport { RtTabDirective } from '@rt-tools/ui-kit-v2/tabs';\nimport { RtTabsComponent } from '@rt-tools/ui-kit-v2/tabs';\nimport { RtTextareaComponent } from '@rt-tools/ui-kit-v2/textarea';\nimport { RtTimelineComponent } from '@rt-tools/ui-kit-v2/timeline';\nimport { RtToggleSwitchComponent } from '@rt-tools/ui-kit-v2/toggle-switch';\nimport { IRtWorkspaceDetails } from './rt-workspace-details.model';\n\nconst BEM_BLOCK: string = 'rt-workspace-details';\n\ninterface ITransitionFormShape {\n to_key: FormControl<string | null>;\n note: FormControl<string | null>;\n}\n\n@Component({\n selector: 'rt-workspace-details',\n templateUrl: './rt-workspace-details.component.html',\n styleUrls: ['./rt-workspace-details.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n // Angular\n DecimalPipe,\n FormsModule,\n NgTemplateOutlet,\n ReactiveFormsModule,\n\n // standalone components / directives\n RtAsideSectionComponent,\n RtButtonDirective,\n RtConfirmDirective,\n RtDetailListComponent,\n RtDetailRowComponent,\n RtEmptyStateComponent,\n RtFieldComponent,\n RtIconButtonComponent,\n RtMoneyListComponent,\n RtMoneyRowComponent,\n RtNoteComponent,\n RtSelectComponent,\n RtServiceLogoComponent,\n RtSpinnerComponent,\n RtTabDirective,\n RtTabsComponent,\n RtTextareaComponent,\n RtTimelineComponent,\n RtToggleSwitchComponent,\n BlockDirective,\n ElemDirective,\n ],\n host: {\n class: BEM_BLOCK,\n },\n})\nexport class RtWorkspaceDetailsComponent {\n readonly #notificationBus: NotificationBus = inject(NotificationBus);\n\n readonly #lastEntityId: WritableSignal<number | null | undefined> = signal<number | null | undefined>(undefined);\n\n readonly #lastAgentId: WritableSignal<number | null | undefined> = signal<number | null | undefined>(undefined);\n\n #lastTransitionSuccess: string | null = null;\n\n #lastTransitionError: string | null = null;\n\n #lastTransitionSubmitError: string | null = null;\n\n #lastAuditError: string | null = null;\n\n #lastPanelError: string | null = null;\n\n protected readonly t: Signal<TRtKitLabelMap> = inject(RT_KIT_LABELS);\n\n protected readonly editingAgent: WritableSignal<boolean> = signal<boolean>(false);\n\n protected readonly selectedAgentId: WritableSignal<number | null> = signal<number | null>(null);\n\n protected readonly transitionForm: FormGroup<ITransitionFormShape> = new FormGroup<ITransitionFormShape>({\n to_key: new FormControl<string | null>(null, {\n validators: [Validators.required],\n }),\n note: new FormControl<string | null>(null),\n });\n\n protected readonly hasTabs: Signal<boolean> = computed((): boolean => this.transition() !== null || this.audit() !== null);\n\n protected readonly noTransitions: Signal<boolean> = computed((): boolean => {\n const transition: IRtWorkspaceDetails.Transition | null = this.transition();\n return transition !== null && !transition.loading && transition.error === null && transition.options.length === 0;\n });\n\n protected readonly canSaveReassign: Signal<boolean> = computed((): boolean => {\n const edit: IRtWorkspaceDetails.AgentEdit | null = this.agentEdit();\n const selected: number | null = this.selectedAgentId();\n return edit !== null && selected !== null && selected !== edit.currentAgentId;\n });\n\n public readonly title: InputSignal<string | null> = input<string | null>(null);\n\n public readonly entityId: InputSignal<number | null> = input<number | null>(null);\n\n public readonly loading: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n public readonly busy: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n public readonly rows: InputSignal<readonly IRtWorkspaceDetails.Row[]> = input<readonly IRtWorkspaceDetails.Row[]>([]);\n\n /** Верх сведений о человеке над строками: без него сведения начинаются со строк */\n public readonly profile: InputSignal<IRtWorkspaceDetails.Profile | null> = input<IRtWorkspaceDetails.Profile | null>(null);\n\n public readonly agentEdit: InputSignal<IRtWorkspaceDetails.AgentEdit | null> = input<IRtWorkspaceDetails.AgentEdit | null>(null);\n\n public readonly money: InputSignal<readonly IRtWorkspaceDetails.MoneyRow[]> = input<readonly IRtWorkspaceDetails.MoneyRow[]>([]);\n\n public readonly toggles: InputSignal<readonly IRtWorkspaceDetails.Toggle[]> = input<readonly IRtWorkspaceDetails.Toggle[]>([]);\n\n public readonly toggleHint: InputSignal<string | null> = input<string | null>(null);\n\n public readonly transition: InputSignal<IRtWorkspaceDetails.Transition | null> = input<IRtWorkspaceDetails.Transition | null>(null);\n\n public readonly audit: InputSignal<IRtWorkspaceDetails.Audit | null> = input<IRtWorkspaceDetails.Audit | null>(null);\n\n public readonly actions: InputSignal<readonly IRtWorkspaceDetails.Action[]> = input<readonly IRtWorkspaceDetails.Action[]>([]);\n\n public readonly error: InputSignal<string | null> = input<string | null>(null);\n\n public readonly toggleChange: OutputEmitterRef<IRtWorkspaceDetails.ToggleChange> = output<IRtWorkspaceDetails.ToggleChange>();\n\n public readonly agentReassign: OutputEmitterRef<number> = output<number>();\n\n public readonly transitionSubmit: OutputEmitterRef<IRtWorkspaceDetails.TransitionSubmit> =\n output<IRtWorkspaceDetails.TransitionSubmit>();\n\n public readonly transitionSuccessClose: OutputEmitterRef<void> = output<void>();\n\n public readonly transitionErrorClose: OutputEmitterRef<void> = output<void>();\n\n public readonly auditLoadMore: OutputEmitterRef<void> = output<void>();\n\n public readonly actionClicked: OutputEmitterRef<string> = output<string>();\n\n constructor() {\n effect((): void => {\n const id: number | null = this.entityId();\n if (id === untracked((): number | null | undefined => this.#lastEntityId())) {\n return;\n }\n this.#lastEntityId.set(id);\n this.editingAgent.set(false);\n this.selectedAgentId.set(untracked((): IRtWorkspaceDetails.AgentEdit | null => this.agentEdit())?.currentAgentId ?? null);\n this.transitionForm.reset();\n });\n\n effect((): void => {\n const currentAgentId: number | null = this.agentEdit()?.currentAgentId ?? null;\n if (currentAgentId === untracked((): number | null | undefined => this.#lastAgentId())) {\n return;\n }\n this.#lastAgentId.set(currentAgentId);\n this.editingAgent.set(false);\n this.selectedAgentId.set(currentAgentId);\n });\n\n effect((): void => {\n if (this.transition()?.success != null) {\n this.transitionForm.reset();\n }\n });\n\n effect((): void => {\n const successText: string | null = this.transition()?.success ?? null;\n if (successText !== null && successText !== this.#lastTransitionSuccess) {\n this.transitionSuccessClose.emit();\n }\n this.#lastTransitionSuccess = successText;\n });\n\n effect((): void => {\n const submitError: string | null = this.transition()?.submitError ?? null;\n if (submitError !== null && submitError !== this.#lastTransitionSubmitError) {\n this.#notificationBus.error(submitError);\n this.transitionErrorClose.emit();\n }\n this.#lastTransitionSubmitError = submitError;\n });\n\n effect((): void => {\n const transitionError: string | null = this.transition()?.error ?? null;\n if (transitionError !== null && transitionError !== this.#lastTransitionError) {\n this.#notificationBus.error(transitionError);\n }\n this.#lastTransitionError = transitionError;\n });\n\n effect((): void => {\n const auditError: string | null = this.audit()?.error ?? null;\n if (auditError !== null && auditError !== this.#lastAuditError) {\n this.#notificationBus.error(auditError);\n }\n this.#lastAuditError = auditError;\n });\n\n effect((): void => {\n const panelError: string | null = this.error();\n if (panelError !== null && panelError !== this.#lastPanelError) {\n this.#notificationBus.error(panelError);\n }\n this.#lastPanelError = panelError;\n });\n }\n\n protected startEditAgent(): void {\n const edit: IRtWorkspaceDetails.AgentEdit | null = this.agentEdit();\n if (edit === null || !edit.canEdit || this.busy()) {\n return;\n }\n this.selectedAgentId.set(edit.currentAgentId);\n this.editingAgent.set(true);\n }\n\n protected cancelEditAgent(): void {\n const edit: IRtWorkspaceDetails.AgentEdit | null = this.agentEdit();\n if (edit !== null && edit.loading) {\n return;\n }\n this.selectedAgentId.set(edit?.currentAgentId ?? null);\n this.editingAgent.set(false);\n }\n\n protected onReassign(): void {\n const agentId: number | null = this.selectedAgentId();\n if (agentId === null || !this.canSaveReassign() || this.busy()) {\n return;\n }\n this.agentReassign.emit(agentId);\n }\n\n protected onSelectedAgentChange(agentId: number | null): void {\n this.selectedAgentId.set(agentId);\n }\n\n protected onToggleChange(toggle: IRtWorkspaceDetails.Toggle, value: boolean): void {\n if (toggle.value === value) {\n return;\n }\n this.toggleChange.emit({ id: toggle.id, value });\n }\n\n protected onTransitionSubmit(): void {\n const transition: IRtWorkspaceDetails.Transition | null = this.transition();\n if (transition === null || transition.submitting) {\n return;\n }\n if (!this.transitionForm.valid) {\n this.transitionForm.markAllAsTouched();\n return;\n }\n\n const value: ReturnType<typeof this.transitionForm.getRawValue> = this.transitionForm.getRawValue();\n this.transitionSubmit.emit({\n stageKey: value.to_key ?? '',\n comment: value.note?.trim() ?? '',\n });\n }\n\n protected onAuditLoadMore(): void {\n this.auditLoadMore.emit();\n }\n\n protected onAction(action: IRtWorkspaceDetails.Action): void {\n if ((action.disabled ?? false) || this.busy()) {\n return;\n }\n this.actionClicked.emit(action.id);\n }\n}\n","<ng-container rtBlock=\"rt-workspace-details\">\n @if (title(); as headTitle) {\n <header rtElem=\"head\">\n <span rtElem=\"head-title\" qa-dataid=\"workspace-details-title\">{{ headTitle }}</span>\n </header>\n }\n\n @if (hasTabs()) {\n <rt-tabs rtElem=\"tabs\" qa-dataid=\"workspace-details-tabs\">\n <ng-template rtTab=\"details\" [label]=\"t().uiDetails\">\n <ng-container [ngTemplateOutlet]=\"detailsTpl\" />\n </ng-template>\n\n <ng-template rtTab=\"transition\" [label]=\"t().uiStageTransition\" [hidden]=\"transition() === null\">\n @if (transition(); as stageTransition) {\n @if (stageTransition.currentStageLabel; as stageLabel) {\n <rt-detail-list>\n <rt-detail-row qa-dataid=\"workspace-details-current-stage\" [label]=\"t().uiCurrentStage\">\n {{ stageLabel }}\n </rt-detail-row>\n </rt-detail-list>\n }\n\n @if (noTransitions()) {\n <rt-note qa-dataid=\"workspace-details-no-transitions\">{{ stageTransition.noTransitionsText }}</rt-note>\n } @else {\n <form\n rtElem=\"transition-form\"\n qa-dataid=\"workspace-details-transition-form\"\n [formGroup]=\"transitionForm\"\n (ngSubmit)=\"onTransitionSubmit()\">\n <rt-field\n [label]=\"t().uiTargetStage\"\n [loading]=\"stageTransition.loading\"\n [errors]=\"{ required: t().uiTargetStageRequired }\">\n <rt-select\n formControlName=\"to_key\"\n qa-dataid=\"workspace-details-transition-stage\"\n [placeholder]=\"t().uiPickTransition\"\n [options]=\"stageTransition.options\" />\n </rt-field>\n\n <rt-field [label]=\"t().uiCommentOptional\" [hint]=\"t().uiStageNoteHint\" [loading]=\"stageTransition.loading\">\n <rt-textarea formControlName=\"note\" qa-dataid=\"workspace-details-transition-note\" rows=\"3\" />\n </rt-field>\n\n <button\n rtButton\n rtElem=\"transition-submit\"\n qa-dataid=\"workspace-details-transition-submit\"\n type=\"submit\"\n [label]=\"t().uiMoveStage\"\n [attr.aria-label]=\"t().uiMoveStageAria\"\n [loading]=\"stageTransition.submitting\"\n [disabled]=\"stageTransition.loading || busy()\"></button>\n </form>\n }\n }\n </ng-template>\n\n <ng-template rtTab=\"audit\" [label]=\"t().uiHistory\" [hidden]=\"audit() === null\">\n @if (audit(); as auditFeed) {\n <div rtElem=\"audit\" qa-dataid=\"workspace-details-audit\">\n @if (auditFeed.loading) {\n <rt-spinner rtElem=\"audit-loading\" qa-dataid=\"workspace-details-audit-loading\" />\n } @else if (auditFeed.steps.length === 0) {\n <rt-empty-state\n qa-dataid=\"workspace-details-audit-empty\"\n icon=\"history\"\n [description]=\"t().uiAuditEmptyHint\"\n [title]=\"auditFeed.emptyText\" />\n } @else {\n <rt-timeline qa-dataid=\"workspace-details-audit-timeline\" [steps]=\"auditFeed.steps\" />\n }\n\n @if (auditFeed.hasMore) {\n <button\n rtButton\n rtElem=\"audit-more\"\n qa-dataid=\"workspace-details-audit-more\"\n type=\"button\"\n appearance=\"text\"\n [label]=\"t().uiLoadMore\"\n [attr.aria-label]=\"t().uiLoadMore\"\n [loading]=\"auditFeed.loadingMore\"\n [disabled]=\"auditFeed.loadingMore\"\n (click)=\"onAuditLoadMore()\"></button>\n }\n </div>\n }\n </ng-template>\n </rt-tabs>\n } @else {\n <div rtElem=\"body\">\n <ng-container [ngTemplateOutlet]=\"detailsTpl\" />\n </div>\n }\n\n <ng-template #detailsTpl>\n @if (profile(); as person) {\n <div rtElem=\"profile\" qa-dataid=\"workspace-details-profile\">\n @if (person.sign; as sign) {\n <rt-service-logo size=\"md\" [logos]=\"[sign]\" />\n }\n <span rtElem=\"profile-name\">{{ person.name }}</span>\n <span rtElem=\"profile-contact\">{{ person.contact }}</span>\n </div>\n }\n @if (rows().length > 0) {\n <rt-detail-list>\n @for (row of rows(); track row.label) {\n <rt-detail-row qa-dataid=\"workspace-details-row\" [label]=\"row.label\" [loading]=\"loading()\">\n @if (row.agent && agentEdit(); as edit) {\n @if (!editingAgent()) {\n <div rtElem=\"agent-view\">\n <span rtElem=\"agent-name\" qa-dataid=\"workspace-details-agent-name\">{{ edit.currentLabel }}</span>\n <rt-icon-button\n qa-dataid=\"workspace-details-agent-edit\"\n icon=\"pencil\"\n size=\"sm\"\n [ariaLabel]=\"t().uiChangeAgent\"\n [tooltip]=\"edit.canEdit ? edit.editTooltip : edit.cannotEditTooltip\"\n [disabled]=\"!edit.canEdit || busy()\"\n (clicked)=\"startEditAgent()\" />\n </div>\n } @else {\n <div rtElem=\"agent-edit\">\n <rt-select\n qa-dataid=\"workspace-details-agent-select\"\n [placeholder]=\"t().uiPickAgent\"\n [ngModel]=\"selectedAgentId()\"\n [ngModelOptions]=\"{ standalone: true }\"\n [options]=\"edit.options\"\n [clearable]=\"false\"\n (ngModelChange)=\"onSelectedAgentChange($event)\" />\n <rt-icon-button\n qa-dataid=\"workspace-details-agent-save\"\n icon=\"check\"\n size=\"sm\"\n rtConfirmTone=\"primary\"\n [ariaLabel]=\"t().uiSaveNewAgent\"\n [rtConfirmTitle]=\"t().uiReplaceAgentTitle\"\n [rtConfirmLabel]=\"t().uiReplace\"\n [tooltip]=\"canSaveReassign() ? t().uiSaveNewAgent : t().uiPickAnotherAgent\"\n [loading]=\"edit.loading\"\n [disabled]=\"!canSaveReassign() || busy()\"\n [rtConfirm]=\"edit.confirmText\"\n [rtConfirmDisabled]=\"!canSaveReassign() || busy()\"\n (confirmed)=\"onReassign()\" />\n <rt-icon-button\n qa-dataid=\"workspace-details-agent-cancel\"\n icon=\"ico-close\"\n size=\"sm\"\n [ariaLabel]=\"t().uiRevert\"\n [tooltip]=\"t().uiRevert\"\n [disabled]=\"edit.loading\"\n (clicked)=\"cancelEditAgent()\" />\n </div>\n }\n } @else {\n {{ row.value }}\n }\n </rt-detail-row>\n }\n </rt-detail-list>\n }\n\n @if (money().length > 0) {\n <rt-money-list>\n @for (moneyRow of money(); track moneyRow.label) {\n <rt-money-row\n qa-dataid=\"workspace-details-money-row\"\n [label]=\"moneyRow.label\"\n [total]=\"moneyRow.total ?? false\"\n [loading]=\"loading()\">\n {{ moneyRow.amount | number: moneyRow.format ?? '1.0-0' }} ₽\n </rt-money-row>\n }\n </rt-money-list>\n }\n\n @if (toggles().length > 0 || toggleHint()) {\n <rt-aside-section>\n @for (toggle of toggles(); track toggle.id) {\n <div rtElem=\"toggle-row\" qa-dataid=\"workspace-details-toggle-row\" [attr.data-id]=\"toggle.id\">\n <span rtElem=\"toggle-label\" qa-dataid=\"workspace-details-toggle-label\">{{ toggle.label }}</span>\n <rt-toggle-switch\n qa-dataid=\"workspace-details-toggle\"\n [inputId]=\"toggle.id\"\n [ariaLabel]=\"toggle.label\"\n [ngModel]=\"toggle.value\"\n [ngModelOptions]=\"{ standalone: true }\"\n [disabled]=\"(toggle.disabled ?? false) || busy()\"\n (ngModelChange)=\"onToggleChange(toggle, $event)\" />\n </div>\n }\n @if (toggleHint(); as hint) {\n <p rtElem=\"toggle-hint\" qa-dataid=\"workspace-details-toggle-hint\">{{ hint }}</p>\n }\n </rt-aside-section>\n }\n </ng-template>\n\n <footer rtElem=\"footer\">\n @for (panelAction of actions(); track panelAction.id) {\n @if (panelAction.confirm; as confirm) {\n <button\n rtButton\n rtElem=\"footer-action\"\n qa-dataid=\"workspace-details-action\"\n type=\"button\"\n [attr.data-id]=\"panelAction.id\"\n [theme]=\"panelAction.theme ?? 'primary'\"\n [appearance]=\"panelAction.appearance ?? 'filled'\"\n [label]=\"panelAction.label\"\n [icon]=\"panelAction.icon\"\n [attr.aria-label]=\"panelAction.label\"\n [rtConfirmTitle]=\"confirm.title\"\n [rtConfirmLabel]=\"confirm.label\"\n [rtConfirmTone]=\"confirm.tone\"\n [loading]=\"panelAction.loading ?? false\"\n [disabled]=\"(panelAction.disabled ?? false) || busy()\"\n [rtConfirm]=\"confirm.text\"\n [rtConfirmDisabled]=\"(panelAction.disabled ?? false) || busy()\"\n (confirmed)=\"onAction(panelAction)\"></button>\n } @else {\n <button\n rtButton\n rtElem=\"footer-action\"\n qa-dataid=\"workspace-details-action\"\n type=\"button\"\n [attr.data-id]=\"panelAction.id\"\n [theme]=\"panelAction.theme ?? 'primary'\"\n [appearance]=\"panelAction.appearance ?? 'filled'\"\n [label]=\"panelAction.label\"\n [icon]=\"panelAction.icon\"\n [attr.aria-label]=\"panelAction.label\"\n [loading]=\"panelAction.loading ?? false\"\n [disabled]=\"(panelAction.disabled ?? false) || busy()\"\n (click)=\"onAction(panelAction)\"></button>\n }\n }\n </footer>\n</ng-container>\n"],"mappings":"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"}
1
+ {"version":3,"file":"rt-tools-ui-kit-v2-workspace-details.mjs","names":[],"sources":["../../../projects/ui-kit-v2/src/lib/components/workspace-details/rt-workspace-details.component.ts","../../../projects/ui-kit-v2/src/lib/components/workspace-details/rt-workspace-details.component.html"],"sourcesContent":["import { BooleanInput } from '@angular/cdk/coercion';\nimport { DecimalPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n InputSignal,\n InputSignalWithTransform,\n output,\n OutputEmitterRef,\n signal,\n Signal,\n untracked,\n ViewEncapsulation,\n WritableSignal,\n} from '@angular/core';\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\n\nimport { BlockDirective, ElemDirective } from '@rt-tools/core';\n\nimport { RT_KIT_LABELS, TRtKitLabelMap } from '@rt-tools/ui-kit-v2/core';\nimport { NotificationBus } from '@rt-tools/ui-kit-v2/core';\n\nimport { RtAsideSectionComponent } from '@rt-tools/ui-kit-v2/aside-section';\nimport { RtButtonDirective } from '@rt-tools/ui-kit-v2/button';\nimport { RtConfirmDirective } from '@rt-tools/ui-kit-v2/confirm-popover';\nimport { RtDetailListComponent } from '@rt-tools/ui-kit-v2/detail-list';\nimport { RtDetailRowComponent } from '@rt-tools/ui-kit-v2/detail-list';\nimport { RtEmptyStateComponent } from '@rt-tools/ui-kit-v2/empty-state';\nimport { RtFieldComponent } from '@rt-tools/ui-kit-v2/field';\nimport { RtIconButtonComponent } from '@rt-tools/ui-kit-v2/icon-button';\nimport { RtMoneyListComponent } from '@rt-tools/ui-kit-v2/money-list';\nimport { RtMoneyRowComponent } from '@rt-tools/ui-kit-v2/money-list';\nimport { RtNoteComponent } from '@rt-tools/ui-kit-v2/note';\nimport { RtSelectComponent } from '@rt-tools/ui-kit-v2/select';\nimport { RtServiceLogoComponent } from '@rt-tools/ui-kit-v2/service-logo';\nimport { RtSpinnerComponent } from '@rt-tools/ui-kit-v2/spinner';\nimport { RtTabDirective } from '@rt-tools/ui-kit-v2/tabs';\nimport { RtTabsComponent } from '@rt-tools/ui-kit-v2/tabs';\nimport { RtTextareaComponent } from '@rt-tools/ui-kit-v2/textarea';\nimport { RtTimelineComponent } from '@rt-tools/ui-kit-v2/timeline';\nimport { RtToggleSwitchComponent } from '@rt-tools/ui-kit-v2/toggle-switch';\nimport { IRtWorkspaceDetails } from './rt-workspace-details.model';\n\nconst BEM_BLOCK: string = 'rt-workspace-details';\n\ninterface ITransitionFormShape {\n to_key: FormControl<string | null>;\n note: FormControl<string | null>;\n}\n\n@Component({\n selector: 'rt-workspace-details',\n templateUrl: './rt-workspace-details.component.html',\n styleUrls: ['./rt-workspace-details.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n // Angular\n DecimalPipe,\n FormsModule,\n NgTemplateOutlet,\n ReactiveFormsModule,\n\n // standalone components / directives\n RtAsideSectionComponent,\n RtButtonDirective,\n RtConfirmDirective,\n RtDetailListComponent,\n RtDetailRowComponent,\n RtEmptyStateComponent,\n RtFieldComponent,\n RtIconButtonComponent,\n RtMoneyListComponent,\n RtMoneyRowComponent,\n RtNoteComponent,\n RtSelectComponent,\n RtServiceLogoComponent,\n RtSpinnerComponent,\n RtTabDirective,\n RtTabsComponent,\n RtTextareaComponent,\n RtTimelineComponent,\n RtToggleSwitchComponent,\n BlockDirective,\n ElemDirective,\n ],\n host: {\n class: BEM_BLOCK,\n },\n})\nexport class RtWorkspaceDetailsComponent {\n readonly #notificationBus: NotificationBus = inject(NotificationBus);\n\n readonly #lastEntityId: WritableSignal<number | null | undefined> = signal<number | null | undefined>(undefined);\n\n readonly #lastAgentId: WritableSignal<number | null | undefined> = signal<number | null | undefined>(undefined);\n\n #lastTransitionSuccess: string | null = null;\n\n #lastTransitionError: string | null = null;\n\n #lastTransitionSubmitError: string | null = null;\n\n #lastAuditError: string | null = null;\n\n #lastPanelError: string | null = null;\n\n protected readonly t: Signal<TRtKitLabelMap> = inject(RT_KIT_LABELS);\n\n protected readonly editingAgent: WritableSignal<boolean> = signal<boolean>(false);\n\n protected readonly selectedAgentId: WritableSignal<number | null> = signal<number | null>(null);\n\n protected readonly transitionForm: FormGroup<ITransitionFormShape> = new FormGroup<ITransitionFormShape>({\n to_key: new FormControl<string | null>(null, {\n validators: [Validators.required],\n }),\n note: new FormControl<string | null>(null),\n });\n\n protected readonly hasTabs: Signal<boolean> = computed((): boolean => this.transition() !== null || this.audit() !== null);\n\n protected readonly noTransitions: Signal<boolean> = computed((): boolean => {\n const transition: IRtWorkspaceDetails.Transition | null = this.transition();\n return transition !== null && !transition.loading && transition.error === null && transition.options.length === 0;\n });\n\n protected readonly canSaveReassign: Signal<boolean> = computed((): boolean => {\n const edit: IRtWorkspaceDetails.AgentEdit | null = this.agentEdit();\n const selected: number | null = this.selectedAgentId();\n return edit !== null && selected !== null && selected !== edit.currentAgentId;\n });\n\n public readonly title: InputSignal<string | null> = input<string | null>(null);\n\n public readonly entityId: InputSignal<number | null> = input<number | null>(null);\n\n public readonly loading: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n public readonly busy: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n public readonly rows: InputSignal<readonly IRtWorkspaceDetails.Row[]> = input<readonly IRtWorkspaceDetails.Row[]>([]);\n\n /** Верх сведений о человеке над строками: без него сведения начинаются со строк */\n public readonly profile: InputSignal<IRtWorkspaceDetails.Profile | null> = input<IRtWorkspaceDetails.Profile | null>(null);\n\n public readonly agentEdit: InputSignal<IRtWorkspaceDetails.AgentEdit | null> = input<IRtWorkspaceDetails.AgentEdit | null>(null);\n\n public readonly money: InputSignal<readonly IRtWorkspaceDetails.MoneyRow[]> = input<readonly IRtWorkspaceDetails.MoneyRow[]>([]);\n\n public readonly toggles: InputSignal<readonly IRtWorkspaceDetails.Toggle[]> = input<readonly IRtWorkspaceDetails.Toggle[]>([]);\n\n public readonly toggleHint: InputSignal<string | null> = input<string | null>(null);\n\n public readonly transition: InputSignal<IRtWorkspaceDetails.Transition | null> = input<IRtWorkspaceDetails.Transition | null>(null);\n\n public readonly audit: InputSignal<IRtWorkspaceDetails.Audit | null> = input<IRtWorkspaceDetails.Audit | null>(null);\n\n public readonly actions: InputSignal<readonly IRtWorkspaceDetails.Action[]> = input<readonly IRtWorkspaceDetails.Action[]>([]);\n\n public readonly error: InputSignal<string | null> = input<string | null>(null);\n\n public readonly toggleChange: OutputEmitterRef<IRtWorkspaceDetails.ToggleChange> = output<IRtWorkspaceDetails.ToggleChange>();\n\n public readonly agentReassign: OutputEmitterRef<number> = output<number>();\n\n public readonly transitionSubmit: OutputEmitterRef<IRtWorkspaceDetails.TransitionSubmit> =\n output<IRtWorkspaceDetails.TransitionSubmit>();\n\n public readonly transitionSuccessClose: OutputEmitterRef<void> = output<void>();\n\n public readonly transitionErrorClose: OutputEmitterRef<void> = output<void>();\n\n public readonly auditLoadMore: OutputEmitterRef<void> = output<void>();\n\n public readonly actionClicked: OutputEmitterRef<string> = output<string>();\n\n constructor() {\n effect((): void => {\n const id: number | null = this.entityId();\n if (id === untracked((): number | null | undefined => this.#lastEntityId())) {\n return;\n }\n this.#lastEntityId.set(id);\n this.editingAgent.set(false);\n this.selectedAgentId.set(untracked((): IRtWorkspaceDetails.AgentEdit | null => this.agentEdit())?.currentAgentId ?? null);\n this.transitionForm.reset();\n });\n\n effect((): void => {\n const currentAgentId: number | null = this.agentEdit()?.currentAgentId ?? null;\n if (currentAgentId === untracked((): number | null | undefined => this.#lastAgentId())) {\n return;\n }\n this.#lastAgentId.set(currentAgentId);\n this.editingAgent.set(false);\n this.selectedAgentId.set(currentAgentId);\n });\n\n effect((): void => {\n if (this.transition()?.success != null) {\n this.transitionForm.reset();\n }\n });\n\n effect((): void => {\n const successText: string | null = this.transition()?.success ?? null;\n if (successText !== null && successText !== this.#lastTransitionSuccess) {\n this.transitionSuccessClose.emit();\n }\n this.#lastTransitionSuccess = successText;\n });\n\n effect((): void => {\n const submitError: string | null = this.transition()?.submitError ?? null;\n if (submitError !== null && submitError !== this.#lastTransitionSubmitError) {\n this.#notificationBus.error(submitError);\n this.transitionErrorClose.emit();\n }\n this.#lastTransitionSubmitError = submitError;\n });\n\n effect((): void => {\n const transitionError: string | null = this.transition()?.error ?? null;\n if (transitionError !== null && transitionError !== this.#lastTransitionError) {\n this.#notificationBus.error(transitionError);\n }\n this.#lastTransitionError = transitionError;\n });\n\n effect((): void => {\n const auditError: string | null = this.audit()?.error ?? null;\n if (auditError !== null && auditError !== this.#lastAuditError) {\n this.#notificationBus.error(auditError);\n }\n this.#lastAuditError = auditError;\n });\n\n effect((): void => {\n const panelError: string | null = this.error();\n if (panelError !== null && panelError !== this.#lastPanelError) {\n this.#notificationBus.error(panelError);\n }\n this.#lastPanelError = panelError;\n });\n }\n\n protected startEditAgent(): void {\n const edit: IRtWorkspaceDetails.AgentEdit | null = this.agentEdit();\n if (edit === null || !edit.canEdit || this.busy()) {\n return;\n }\n this.selectedAgentId.set(edit.currentAgentId);\n this.editingAgent.set(true);\n }\n\n protected cancelEditAgent(): void {\n const edit: IRtWorkspaceDetails.AgentEdit | null = this.agentEdit();\n if (edit !== null && edit.loading) {\n return;\n }\n this.selectedAgentId.set(edit?.currentAgentId ?? null);\n this.editingAgent.set(false);\n }\n\n protected onReassign(): void {\n const agentId: number | null = this.selectedAgentId();\n if (agentId === null || !this.canSaveReassign() || this.busy()) {\n return;\n }\n this.agentReassign.emit(agentId);\n }\n\n protected onSelectedAgentChange(agentId: number | null): void {\n this.selectedAgentId.set(agentId);\n }\n\n protected onToggleChange(toggle: IRtWorkspaceDetails.Toggle, value: boolean): void {\n if (toggle.value === value) {\n return;\n }\n this.toggleChange.emit({ id: toggle.id, value });\n }\n\n protected onTransitionSubmit(): void {\n const transition: IRtWorkspaceDetails.Transition | null = this.transition();\n if (transition === null || transition.submitting) {\n return;\n }\n if (!this.transitionForm.valid) {\n this.transitionForm.markAllAsTouched();\n return;\n }\n\n const value: ReturnType<typeof this.transitionForm.getRawValue> = this.transitionForm.getRawValue();\n this.transitionSubmit.emit({\n stageKey: value.to_key ?? '',\n comment: value.note?.trim() ?? '',\n });\n }\n\n protected onAuditLoadMore(): void {\n this.auditLoadMore.emit();\n }\n\n protected onAction(action: IRtWorkspaceDetails.Action): void {\n if ((action.disabled ?? false) || this.busy()) {\n return;\n }\n this.actionClicked.emit(action.id);\n }\n}\n","<ng-container rtBlock=\"rt-workspace-details\">\n @if (title(); as headTitle) {\n <header rtElem=\"head\">\n <span rtElem=\"head-title\" qa-dataid=\"workspace-details-title\">{{ headTitle }}</span>\n </header>\n }\n\n @if (hasTabs()) {\n <rt-tabs rtElem=\"tabs\" qa-dataid=\"workspace-details-tabs\">\n <ng-template rtTab=\"details\" [label]=\"t().uiDetails\">\n <ng-container [ngTemplateOutlet]=\"detailsTpl\" />\n </ng-template>\n\n <ng-template rtTab=\"transition\" [label]=\"t().uiStageTransition\" [hidden]=\"transition() === null\">\n @if (transition(); as stageTransition) {\n @if (stageTransition.currentStageLabel; as stageLabel) {\n <rt-detail-list>\n <rt-detail-row qa-dataid=\"workspace-details-current-stage\" [label]=\"t().uiCurrentStage\">\n {{ stageLabel }}\n </rt-detail-row>\n </rt-detail-list>\n }\n\n @if (noTransitions()) {\n <rt-note qa-dataid=\"workspace-details-no-transitions\">{{ stageTransition.noTransitionsText }}</rt-note>\n } @else {\n <form\n rtElem=\"transition-form\"\n qa-dataid=\"workspace-details-transition-form\"\n [formGroup]=\"transitionForm\"\n (ngSubmit)=\"onTransitionSubmit()\">\n <rt-field\n [label]=\"t().uiTargetStage\"\n [loading]=\"stageTransition.loading\"\n [errors]=\"{ required: t().uiTargetStageRequired }\">\n <rt-select\n formControlName=\"to_key\"\n qa-dataid=\"workspace-details-transition-stage\"\n [placeholder]=\"t().uiPickTransition\"\n [options]=\"stageTransition.options\" />\n </rt-field>\n\n <rt-field [label]=\"t().uiCommentOptional\" [hint]=\"t().uiStageNoteHint\" [loading]=\"stageTransition.loading\">\n <rt-textarea formControlName=\"note\" qa-dataid=\"workspace-details-transition-note\" rows=\"3\" />\n </rt-field>\n\n <button\n rtButton\n rtElem=\"transition-submit\"\n qa-dataid=\"workspace-details-transition-submit\"\n type=\"submit\"\n [label]=\"t().uiMoveStage\"\n [attr.aria-label]=\"t().uiMoveStageAria\"\n [loading]=\"stageTransition.submitting\"\n [disabled]=\"stageTransition.loading || busy()\"></button>\n </form>\n }\n }\n </ng-template>\n\n <ng-template rtTab=\"audit\" [label]=\"t().uiHistory\" [hidden]=\"audit() === null\">\n @if (audit(); as auditFeed) {\n <div rtElem=\"audit\" qa-dataid=\"workspace-details-audit\">\n @if (auditFeed.loading) {\n <rt-spinner rtElem=\"audit-loading\" qa-dataid=\"workspace-details-audit-loading\" />\n } @else if (auditFeed.steps.length === 0) {\n <rt-empty-state\n qa-dataid=\"workspace-details-audit-empty\"\n icon=\"history\"\n [description]=\"t().uiAuditEmptyHint\"\n [title]=\"auditFeed.emptyText\" />\n } @else {\n <rt-timeline qa-dataid=\"workspace-details-audit-timeline\" [steps]=\"auditFeed.steps\" />\n }\n\n @if (auditFeed.hasMore) {\n <button\n rtButton\n rtElem=\"audit-more\"\n qa-dataid=\"workspace-details-audit-more\"\n type=\"button\"\n appearance=\"text\"\n [label]=\"t().uiLoadMore\"\n [attr.aria-label]=\"t().uiLoadMore\"\n [loading]=\"auditFeed.loadingMore\"\n [disabled]=\"auditFeed.loadingMore\"\n (click)=\"onAuditLoadMore()\"></button>\n }\n </div>\n }\n </ng-template>\n </rt-tabs>\n } @else {\n <div rtElem=\"body\">\n <ng-container [ngTemplateOutlet]=\"detailsTpl\" />\n </div>\n }\n\n <ng-template #detailsTpl>\n @if (profile(); as person) {\n <div rtElem=\"profile\" qa-dataid=\"workspace-details-profile\">\n @if (person.sign; as sign) {\n <rt-service-logo size=\"md\" [logos]=\"[sign]\" />\n }\n <span rtElem=\"profile-name\">{{ person.name }}</span>\n <span rtElem=\"profile-contact\">{{ person.contact }}</span>\n </div>\n }\n @if (rows().length > 0) {\n <rt-detail-list>\n @for (row of rows(); track row.label) {\n <rt-detail-row qa-dataid=\"workspace-details-row\" [label]=\"row.label\" [loading]=\"loading()\">\n @if (row.agent && agentEdit(); as edit) {\n @if (!editingAgent()) {\n <div rtElem=\"agent-view\">\n <span rtElem=\"agent-name\" qa-dataid=\"workspace-details-agent-name\">{{ edit.currentLabel }}</span>\n <rt-icon-button\n qa-dataid=\"workspace-details-agent-edit\"\n icon=\"pencil\"\n size=\"sm\"\n [ariaLabel]=\"t().uiChangeAgent\"\n [tooltip]=\"edit.canEdit ? edit.editTooltip : edit.cannotEditTooltip\"\n [disabled]=\"!edit.canEdit || busy()\"\n (clicked)=\"startEditAgent()\" />\n </div>\n } @else {\n <div rtElem=\"agent-edit\">\n <rt-select\n qa-dataid=\"workspace-details-agent-select\"\n [placeholder]=\"t().uiPickAgent\"\n [ngModel]=\"selectedAgentId()\"\n [ngModelOptions]=\"{ standalone: true }\"\n [options]=\"edit.options\"\n [clearable]=\"false\"\n (ngModelChange)=\"onSelectedAgentChange($event)\" />\n <rt-icon-button\n qa-dataid=\"workspace-details-agent-save\"\n icon=\"check\"\n size=\"sm\"\n rtConfirmTone=\"primary\"\n [ariaLabel]=\"t().uiSaveNewAgent\"\n [rtConfirmTitle]=\"t().uiReplaceAgentTitle\"\n [rtConfirmLabel]=\"t().uiReplace\"\n [tooltip]=\"canSaveReassign() ? t().uiSaveNewAgent : t().uiPickAnotherAgent\"\n [loading]=\"edit.loading\"\n [disabled]=\"!canSaveReassign() || busy()\"\n [rtConfirm]=\"edit.confirmText\"\n [rtConfirmDisabled]=\"!canSaveReassign() || busy()\"\n (confirmed)=\"onReassign()\" />\n <rt-icon-button\n qa-dataid=\"workspace-details-agent-cancel\"\n icon=\"ico-close\"\n size=\"sm\"\n [ariaLabel]=\"t().uiRevert\"\n [tooltip]=\"t().uiRevert\"\n [disabled]=\"edit.loading\"\n (clicked)=\"cancelEditAgent()\" />\n </div>\n }\n } @else {\n {{ row.value }}\n }\n </rt-detail-row>\n }\n </rt-detail-list>\n }\n\n @if (money().length > 0) {\n <rt-money-list>\n @for (moneyRow of money(); track moneyRow.label) {\n <rt-money-row\n qa-dataid=\"workspace-details-money-row\"\n [label]=\"moneyRow.label\"\n [total]=\"moneyRow.total ?? false\"\n [loading]=\"loading()\">\n {{ moneyRow.amount | number: moneyRow.format ?? '1.0-0' }} ₽\n </rt-money-row>\n }\n </rt-money-list>\n }\n\n @if (toggles().length > 0 || toggleHint()) {\n <rt-aside-section>\n @for (toggle of toggles(); track toggle.id) {\n <div rtElem=\"toggle-row\" qa-dataid=\"workspace-details-toggle-row\" [attr.data-id]=\"toggle.id\">\n <span rtElem=\"toggle-label\" qa-dataid=\"workspace-details-toggle-label\">{{ toggle.label }}</span>\n <rt-toggle-switch\n qa-dataid=\"workspace-details-toggle\"\n [inputId]=\"toggle.id\"\n [ariaLabel]=\"toggle.label\"\n [ngModel]=\"toggle.value\"\n [ngModelOptions]=\"{ standalone: true }\"\n [disabled]=\"(toggle.disabled ?? false) || busy()\"\n (ngModelChange)=\"onToggleChange(toggle, $event)\" />\n </div>\n }\n @if (toggleHint(); as hint) {\n <p rtElem=\"toggle-hint\" qa-dataid=\"workspace-details-toggle-hint\">{{ hint }}</p>\n }\n </rt-aside-section>\n }\n </ng-template>\n\n <footer rtElem=\"footer\">\n @for (panelAction of actions(); track panelAction.id) {\n @if (panelAction.confirm; as confirm) {\n <button\n rtButton\n rtElem=\"footer-action\"\n qa-dataid=\"workspace-details-action\"\n type=\"button\"\n [attr.data-id]=\"panelAction.id\"\n [theme]=\"panelAction.theme ?? 'primary'\"\n [appearance]=\"panelAction.appearance ?? 'filled'\"\n [label]=\"panelAction.label\"\n [icon]=\"panelAction.icon\"\n [attr.aria-label]=\"panelAction.label\"\n [rtConfirmTitle]=\"confirm.title\"\n [rtConfirmLabel]=\"confirm.label\"\n [rtConfirmTone]=\"confirm.tone\"\n [loading]=\"panelAction.loading ?? false\"\n [disabled]=\"(panelAction.disabled ?? false) || busy()\"\n [rtConfirm]=\"confirm.text\"\n [rtConfirmDisabled]=\"(panelAction.disabled ?? false) || busy()\"\n (confirmed)=\"onAction(panelAction)\"></button>\n } @else {\n <button\n rtButton\n rtElem=\"footer-action\"\n qa-dataid=\"workspace-details-action\"\n type=\"button\"\n [attr.data-id]=\"panelAction.id\"\n [theme]=\"panelAction.theme ?? 'primary'\"\n [appearance]=\"panelAction.appearance ?? 'filled'\"\n [label]=\"panelAction.label\"\n [icon]=\"panelAction.icon\"\n [attr.aria-label]=\"panelAction.label\"\n [loading]=\"panelAction.loading ?? false\"\n [disabled]=\"(panelAction.disabled ?? false) || busy()\"\n (click)=\"onAction(panelAction)\"></button>\n }\n }\n </footer>\n</ng-container>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAgDA,MAAM,YAAoB;AA+C1B,IAAa,8BAAb,MAAa,4BAA2B;CAC3B;CAEA;CAEA;CAET;CAEA;CAEA;CAEA;CAEA;CA4EA,cAAA;EA1FS,KAAA,mBAAoC,OAAO,eAAe;EAE1D,KAAA,gBAA2D,OAAkC,QAAU,GAAA,YAAA,CAAA,EAAA,WAAA,gBAAA,CAAA,+BAAA,CAAA,CAAA;EAEvG,KAAA,eAA0D,OAAkC,QAAU,GAAA,YAAA,CAAA,EAAA,WAAA,eAAA,CAAA,+BAAA,CAAA,CAAA;EAE/G,KAAA,yBAAwC;EAExC,KAAA,uBAAsC;EAEtC,KAAA,6BAA4C;EAE5C,KAAA,kBAAiC;EAEjC,KAAA,kBAAiC;EAEd,KAAA,IAA4B,OAAO,aAAa;EAEhD,KAAA,eAAwC,OAAgB,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,eAAA,CAAA,+BAAA,CAAA,CAAA;EAE9D,KAAA,kBAAiD,OAAsB,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,kBAAA,CAAA,+BAAA,CAAA,CAAA;EAE5E,KAAA,iBAAkD,IAAI,UAAgC;GACrG,QAAQ,IAAI,YAA2B,MAAM,EACzC,YAAY,CAAC,WAAW,QAAQ,EACnC,CAAA;GACD,MAAM,IAAI,YAA2B,IAAI;EAC5C,CAAA;EAEkB,KAAA,UAA2B,eAAwB,KAAK,WAAU,MAAO,QAAQ,KAAK,MAAK,MAAO,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;EAEvG,KAAA,gBAAiC,eAAuB;GACvE,MAAM,aAAoD,KAAK,WAAU;GACzE,OAAO,eAAe,QAAQ,CAAC,WAAW,WAAW,WAAW,UAAU,QAAQ,WAAW,QAAQ,WAAW;EACpH,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,gBAAA,CAAA,+BAAA,CAAA,CAAA;EAEiB,KAAA,kBAAmC,eAAuB;GACzE,MAAM,OAA6C,KAAK,UAAS;GACjE,MAAM,WAA0B,KAAK,gBAAe;GACpD,OAAO,SAAS,QAAQ,aAAa,QAAQ,aAAa,KAAK;EACnE,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,kBAAA,CAAA,+BAAA,CAAA,CAAA;EAEc,KAAA,QAAoC,MAAqB,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;EAE9D,KAAA,WAAuC,MAAqB,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;EAEjE,KAAA,UAA2D,MAA6B,OAAK;GAAA,GAAA,YAAA,EAAA,WAAA,UAAA,+BAAA,CAAA;GACzG,WAAW;EAAgB,CAAA;EAGf,KAAA,OAAwD,MAA6B,OAAK;GAAA,GAAA,YAAA,EAAA,WAAA,OAAA,+BAAA,CAAA;GACtG,WAAW;EAAgB,CAAA;EAGf,KAAA,OAAwD,MAA0C,CAAA,GAAG,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;EAGrG,KAAA,UAA2D,MAA0C,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;EAE1G,KAAA,YAA+D,MAA4C,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,YAAA,CAAA,+BAAA,CAAA,CAAA;EAEhH,KAAA,QAA8D,MAA+C,CAAA,GAAG,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;EAEhH,KAAA,UAA8D,MAA6C,CAAA,GAAG,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;EAE9G,KAAA,aAAyC,MAAqB,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,aAAA,CAAA,+BAAA,CAAA,CAAA;EAEnE,KAAA,aAAiE,MAA6C,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,aAAA,CAAA,+BAAA,CAAA,CAAA;EAEnH,KAAA,QAAuD,MAAwC,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;EAEpG,KAAA,UAA8D,MAA6C,CAAA,GAAG,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;EAE9G,KAAA,QAAoC,MAAqB,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;EAE9D,KAAA,eAAmE,OAAM;EAEzE,KAAA,gBAA0C,OAAM;EAEhD,KAAA,mBACZ,OAAM;EAEM,KAAA,yBAAiD,OAAM;EAEvD,KAAA,uBAA+C,OAAM;EAErD,KAAA,gBAAwC,OAAM;EAE9C,KAAA,gBAA0C,OAAM;EAG5D,aAAkB;GACd,MAAM,KAAoB,KAAK,SAAQ;GACvC,IAAI,OAAO,gBAA2C,KAAK,cAAa,CAAE,GACtE;GAEJ,KAAK,cAAc,IAAI,EAAE;GACzB,KAAK,aAAa,IAAI,KAAK;GAC3B,KAAK,gBAAgB,IAAI,gBAAsD,KAAK,UAAS,CAAE,CAAC,EAAE,kBAAkB,IAAI;GACxH,KAAK,eAAe,MAAK;EAC7B,CAAC;EAED,aAAkB;GACd,MAAM,iBAAgC,KAAK,UAAS,CAAE,EAAE,kBAAkB;GAC1E,IAAI,mBAAmB,gBAA2C,KAAK,aAAY,CAAE,GACjF;GAEJ,KAAK,aAAa,IAAI,cAAc;GACpC,KAAK,aAAa,IAAI,KAAK;GAC3B,KAAK,gBAAgB,IAAI,cAAc;EAC3C,CAAC;EAED,aAAkB;GACd,IAAI,KAAK,WAAU,CAAE,EAAE,WAAW,MAC9B,KAAK,eAAe,MAAK;EAEjC,CAAC;EAED,aAAkB;GACd,MAAM,cAA6B,KAAK,WAAU,CAAE,EAAE,WAAW;GACjE,IAAI,gBAAgB,QAAQ,gBAAgB,KAAK,wBAC7C,KAAK,uBAAuB,KAAI;GAEpC,KAAK,yBAAyB;EAClC,CAAC;EAED,aAAkB;GACd,MAAM,cAA6B,KAAK,WAAU,CAAE,EAAE,eAAe;GACrE,IAAI,gBAAgB,QAAQ,gBAAgB,KAAK,4BAA4B;IACzE,KAAK,iBAAiB,MAAM,WAAW;IACvC,KAAK,qBAAqB,KAAI;GAClC;GACA,KAAK,6BAA6B;EACtC,CAAC;EAED,aAAkB;GACd,MAAM,kBAAiC,KAAK,WAAU,CAAE,EAAE,SAAS;GACnE,IAAI,oBAAoB,QAAQ,oBAAoB,KAAK,sBACrD,KAAK,iBAAiB,MAAM,eAAe;GAE/C,KAAK,uBAAuB;EAChC,CAAC;EAED,aAAkB;GACd,MAAM,aAA4B,KAAK,MAAK,CAAE,EAAE,SAAS;GACzD,IAAI,eAAe,QAAQ,eAAe,KAAK,iBAC3C,KAAK,iBAAiB,MAAM,UAAU;GAE1C,KAAK,kBAAkB;EAC3B,CAAC;EAED,aAAkB;GACd,MAAM,aAA4B,KAAK,MAAK;GAC5C,IAAI,eAAe,QAAQ,eAAe,KAAK,iBAC3C,KAAK,iBAAiB,MAAM,UAAU;GAE1C,KAAK,kBAAkB;EAC3B,CAAC;CACL;CAEU,iBAAc;EACpB,MAAM,OAA6C,KAAK,UAAS;EACjE,IAAI,SAAS,QAAQ,CAAC,KAAK,WAAW,KAAK,KAAI,GAC3C;EAEJ,KAAK,gBAAgB,IAAI,KAAK,cAAc;EAC5C,KAAK,aAAa,IAAI,IAAI;CAC9B;CAEU,kBAAe;EACrB,MAAM,OAA6C,KAAK,UAAS;EACjE,IAAI,SAAS,QAAQ,KAAK,SACtB;EAEJ,KAAK,gBAAgB,IAAI,MAAM,kBAAkB,IAAI;EACrD,KAAK,aAAa,IAAI,KAAK;CAC/B;CAEU,aAAU;EAChB,MAAM,UAAyB,KAAK,gBAAe;EACnD,IAAI,YAAY,QAAQ,CAAC,KAAK,gBAAe,KAAM,KAAK,KAAI,GACxD;EAEJ,KAAK,cAAc,KAAK,OAAO;CACnC;CAEU,sBAAsB,SAAsB;EAClD,KAAK,gBAAgB,IAAI,OAAO;CACpC;CAEU,eAAe,QAAoC,OAAc;EACvE,IAAI,OAAO,UAAU,OACjB;EAEJ,KAAK,aAAa,KAAK;GAAE,IAAI,OAAO;GAAI;EAAK,CAAE;CACnD;CAEU,qBAAkB;EACxB,MAAM,aAAoD,KAAK,WAAU;EACzE,IAAI,eAAe,QAAQ,WAAW,YAClC;EAEJ,IAAI,CAAC,KAAK,eAAe,OAAO;GAC5B,KAAK,eAAe,iBAAgB;GACpC;EACJ;EAEA,MAAM,QAA4D,KAAK,eAAe,YAAW;EACjG,KAAK,iBAAiB,KAAK;GACvB,UAAU,MAAM,UAAU;GAC1B,SAAS,MAAM,MAAM,KAAI,KAAM;EAClC,CAAA;CACL;CAEU,kBAAe;EACrB,KAAK,cAAc,KAAI;CAC3B;CAEU,SAAS,QAAkC;EACjD,KAAK,OAAO,YAAY,UAAU,KAAK,KAAI,GACvC;EAEJ,KAAK,cAAc,KAAK,OAAO,EAAE;CACrC;CAhOS;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAA2B,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAA3B;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAA2B,cAAA;GAAA,UAAA;GAAA,QAAA;IAAA,OAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,UAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,SAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,MAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,MAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,SAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,WAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,OAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,SAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,YAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,YAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,OAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,SAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,OAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;GAAA;GAAA,SAAA;IAAA,cAAA;IAAA,eAAA;IAAA,kBAAA;IAAA,wBAAA;IAAA,sBAAA;IAAA,eAAA;IAAA,eAAA;GAAA;GAAA,MAAA,EAAA,gBAAA,uBAAA;GAAA,UAAA;GAAA,UC/FxC;GAoPA,QAAA,CAAA,ovGAAA;GAAA,cAAA;IAAA;KAAA,MAAA;KAAA,MDpLQ;IAAW;IAAA;KAAA,MAAA;KAAA,MAAA,GAAA;KAAA,UAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAAA,GAAA;KAAA,UAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAAA,GAAA;KAAA,UAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAAA,GAAA;KAAA,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;KAAA;KAAA,SAAA,CAAA,eAAA;KAAA,UAAA,CAAA,SAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACX;KAAgB,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;KAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAChB;IAAmB;IAAA;KAAA,MAAA;KAAA,MAAA,GAAA;KAAA,UAAA;KAAA,QAAA,CAAA,WAAA;KAAA,SAAA,CAAA,UAAA;KAAA,UAAA,CAAA,QAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAAA,GAAA;KAAA,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;KAAA;KAAA,SAAA,CAAA,eAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAGnB;KAAuB,UAAA;KAAA,QAAA,CAAA,SAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACvB;KAAiB,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACjB;KAAkB,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;KAAA,SAAA,CAAA,WAAA;KAAA,UAAA,CAAA,WAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAClB;KAAqB,UAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACrB;KAAoB,UAAA;KAAA,QAAA,CAAA,SAAA,SAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACpB;KAAqB,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACrB;KAAgB,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAChB;KAAqB,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;KAAA,SAAA,CAAA,SAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACrB;KAAoB,UAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACpB;KAAmB,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;KAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACnB;KAAe,UAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACf;KAAiB,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;KAAA,SAAA,CAAA,iBAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACjB;KAAsB,UAAA;KAAA,QAAA,CAAA,SAAA,MAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACtB;KAAkB,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAClB;KAAc,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACd;KAAe,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;KAAA,SAAA,CAAA,kBAAA,UAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACf;KAAmB,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACnB;KAAmB,UAAA;KAAA,QAAA,CAAA,OAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACnB;KAAuB,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACvB;KAAc,UAAA;KAAA,QAAA,CAAA,OAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACd;KAAa,UAAA;KAAA,QAAA,CAAA,OAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MA1Bb;KAAW,MAAA;IAAA;GAAA;GAAA,iBAAA,GAAA,wBAAA;GAAA,eAAA,GAAA,kBAAA;EAAA,CAAA;CAAA;;AAgCN,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAA2B,YAAA,CAAA;EAxCvC,MAAA;EACa,MAAA,CAAA;GAAA,UAAA;GAAsB,iBAGf,wBAAwB;GAAM,eAChC,kBAAkB;GAAI,SAC5B;IAEL;IACA;IACA;IACA;IAGA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACH;GAAA,MACK,EACF,OAAO,UACV;GAAA,UAAA;GAAA,QAAA,CAAA,ovGAAA;EAAA,CAAA"}
@@ -1,9 +1,124 @@
1
+ import { BreakpointObserver } from "@angular/cdk/layout";
1
2
  import { NgTemplateOutlet } from "@angular/common";
2
3
  import * as i0 from "@angular/core";
3
- import { ChangeDetectionStrategy, Component, DestroyRef, Directive, ElementRef, Renderer2, TemplateRef, ViewEncapsulation, booleanAttribute, computed, contentChild, effect, inject, input, numberAttribute, output, signal, untracked } from "@angular/core";
4
+ import { ChangeDetectionStrategy, Component, DestroyRef, Directive, ElementRef, Injector, Renderer2, TemplateRef, ViewEncapsulation, booleanAttribute, computed, contentChild, effect, inject, input, numberAttribute, output, signal, untracked } from "@angular/core";
5
+ import { takeUntilDestroyed, toObservable, toSignal } from "@angular/core/rxjs-interop";
6
+ import { Subject, map, mergeMap, of, switchMap } from "rxjs";
4
7
  import { BlockDirective, ElemDirective, ModDirective, StorageService } from "@rt-tools/core";
5
- import { RT_KIT_LABELS } from "@rt-tools/ui-kit-v2/core";
8
+ import { RT_ASIDE_DATA, RtAsideComponent, RtAsideFooterComponent, RtAsideRef, RtAsideService } from "@rt-tools/ui-kit-v2/aside";
9
+ import { BreakpointsService, RT_KIT_LABELS } from "@rt-tools/ui-kit-v2/core";
6
10
  import { RtIconButtonComponent } from "@rt-tools/ui-kit-v2/icon-button";
11
+ import { RtButtonDirective } from "@rt-tools/ui-kit-v2/button";
12
+ const BEM_BLOCK$1 = "rt-workspace-aside-overlay";
13
+ var RtWorkspaceAsideOverlayComponent = class RtWorkspaceAsideOverlayComponent {
14
+ constructor() {
15
+ this.#asideRef = inject(RtAsideRef);
16
+ this.t = inject(RT_KIT_LABELS);
17
+ this.data = inject(RT_ASIDE_DATA);
18
+ this.injector = inject(Injector);
19
+ this.width = `min(${this.data.width}px, 100dvw)`;
20
+ }
21
+ #asideRef;
22
+ close() {
23
+ this.#asideRef.close();
24
+ }
25
+ static {
26
+ this.ɵfac = i0.ɵɵngDeclareFactory({
27
+ minVersion: "12.0.0",
28
+ version: "22.2.2",
29
+ ngImport: i0,
30
+ type: RtWorkspaceAsideOverlayComponent,
31
+ deps: [],
32
+ target: i0.ɵɵFactoryTarget.Component
33
+ });
34
+ }
35
+ static {
36
+ this.ɵcmp = i0.ɵɵngDeclareComponent({
37
+ minVersion: "14.0.0",
38
+ version: "22.2.2",
39
+ type: RtWorkspaceAsideOverlayComponent,
40
+ isStandalone: true,
41
+ selector: "rt-workspace-aside-overlay",
42
+ host: { classAttribute: "rt-workspace-aside-overlay" },
43
+ ngImport: i0,
44
+ template: "<rt-aside modal trapFocus [width]=\"width\" [style.--rt-aside-narrow-width]=\"width\" [ariaLabel]=\"t().uiDetails\">\n <ng-container [ngTemplateOutlet]=\"data.template\" [ngTemplateOutletContext]=\"data.context\" [ngTemplateOutletInjector]=\"injector\" />\n <rt-aside-footer>\n <button\n rtButton\n asideDismiss\n qa-dataid=\"workspace-aside-overlay-close\"\n type=\"button\"\n [label]=\"t().uiClose\"\n [attr.aria-label]=\"t().uiClose\"\n (click)=\"close()\"></button>\n </rt-aside-footer>\n</rt-aside>\n",
45
+ dependencies: [
46
+ {
47
+ kind: "directive",
48
+ type: NgTemplateOutlet,
49
+ selector: "[ngTemplateOutlet]",
50
+ inputs: [
51
+ "ngTemplateOutletContext",
52
+ "ngTemplateOutlet",
53
+ "ngTemplateOutletInjector"
54
+ ]
55
+ },
56
+ {
57
+ kind: "component",
58
+ type: RtAsideComponent,
59
+ selector: "rt-aside",
60
+ inputs: [
61
+ "size",
62
+ "contentLayout",
63
+ "width",
64
+ "ariaLabel",
65
+ "requestError",
66
+ "trapFocus",
67
+ "modal",
68
+ "pending"
69
+ ]
70
+ },
71
+ {
72
+ kind: "component",
73
+ type: RtAsideFooterComponent,
74
+ selector: "rt-aside-footer",
75
+ inputs: ["phoneCloseLabel"]
76
+ },
77
+ {
78
+ kind: "directive",
79
+ type: RtButtonDirective,
80
+ selector: "button[rtButton], a[rtButton]",
81
+ inputs: [
82
+ "label",
83
+ "icon",
84
+ "iconPos",
85
+ "theme",
86
+ "appearance",
87
+ "size",
88
+ "loading",
89
+ "loadingIcon",
90
+ "loadingLabel",
91
+ "pressed"
92
+ ]
93
+ }
94
+ ],
95
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
96
+ encapsulation: i0.ViewEncapsulation.None
97
+ });
98
+ }
99
+ };
100
+ i0.ɵɵngDeclareClassMetadata({
101
+ minVersion: "12.0.0",
102
+ version: "22.2.2",
103
+ ngImport: i0,
104
+ type: RtWorkspaceAsideOverlayComponent,
105
+ decorators: [{
106
+ type: Component,
107
+ args: [{
108
+ selector: "rt-workspace-aside-overlay",
109
+ changeDetection: ChangeDetectionStrategy.OnPush,
110
+ encapsulation: ViewEncapsulation.None,
111
+ imports: [
112
+ NgTemplateOutlet,
113
+ RtAsideComponent,
114
+ RtAsideFooterComponent,
115
+ RtButtonDirective
116
+ ],
117
+ host: { class: BEM_BLOCK$1 },
118
+ template: "<rt-aside modal trapFocus [width]=\"width\" [style.--rt-aside-narrow-width]=\"width\" [ariaLabel]=\"t().uiDetails\">\n <ng-container [ngTemplateOutlet]=\"data.template\" [ngTemplateOutletContext]=\"data.context\" [ngTemplateOutletInjector]=\"injector\" />\n <rt-aside-footer>\n <button\n rtButton\n asideDismiss\n qa-dataid=\"workspace-aside-overlay-close\"\n type=\"button\"\n [label]=\"t().uiClose\"\n [attr.aria-label]=\"t().uiClose\"\n (click)=\"close()\"></button>\n </rt-aside-footer>\n</rt-aside>\n"
119
+ }]
120
+ }]
121
+ });
7
122
  var RtWorkspaceDesktopOnlyDirective = class RtWorkspaceDesktopOnlyDirective {
8
123
  static {
9
124
  this.ɵfac = i0.ɵɵngDeclareFactory({
@@ -157,11 +272,22 @@ i0.ɵɵngDeclareClassMetadata({
157
272
  const BEM_BLOCK = "rt-workspace";
158
273
  const STORAGE_PREFIX = "rt-workspace:";
159
274
  const KEYBOARD_STEP = 16;
275
+ const ASIDE_OVERLAY_PANE = "rt-workspace-aside-pane";
276
+ function breakpointAttribute(value) {
277
+ return value === null || value === "" ? null : numberAttribute(value);
278
+ }
160
279
  var RtWorkspaceComponent = class RtWorkspaceComponent {
161
280
  #storage;
162
281
  #renderer;
163
282
  #hostRef;
164
283
  #destroyRef;
284
+ #breakpoints;
285
+ #observer;
286
+ #asides;
287
+ #injector;
288
+ #overlayOpenedSource;
289
+ #viewportSingle;
290
+ #overlayRef;
165
291
  #listWidthOverride;
166
292
  #asideWidthOverride;
167
293
  #asideCollapsed;
@@ -175,6 +301,13 @@ var RtWorkspaceComponent = class RtWorkspaceComponent {
175
301
  this.#renderer = inject(Renderer2);
176
302
  this.#hostRef = inject(ElementRef);
177
303
  this.#destroyRef = inject(DestroyRef);
304
+ this.#breakpoints = inject(BreakpointsService);
305
+ this.#observer = inject(BreakpointObserver);
306
+ this.#asides = inject(RtAsideService);
307
+ this.#injector = inject(Injector);
308
+ this.#overlayOpenedSource = new Subject();
309
+ this.#viewportSingle = toSignal(toObservable(computed(() => this.singleColumnBreakpoint())).pipe(switchMap((breakpoint) => breakpoint === null ? of(false) : this.#observer.observe(`(max-width: ${breakpoint}px)`).pipe(map((state) => state.matches)))), { initialValue: false });
310
+ this.#overlayRef = null;
178
311
  this.#listWidthOverride = signal(null, ...ngDevMode ? [{ debugName: "#listWidthOverride" }] : /* istanbul ignore next */ []);
179
312
  this.#asideWidthOverride = signal(null, ...ngDevMode ? [{ debugName: "#asideWidthOverride" }] : /* istanbul ignore next */ []);
180
313
  this.#asideCollapsed = signal(false, ...ngDevMode ? [{ debugName: "#asideCollapsed" }] : /* istanbul ignore next */ []);
@@ -189,6 +322,12 @@ var RtWorkspaceComponent = class RtWorkspaceComponent {
189
322
  this.asideSlot = contentChild(RtWorkspaceAsideDirective, ...ngDevMode ? [{ debugName: "asideSlot" }] : /* istanbul ignore next */ []);
190
323
  this.resizing = this.#resizing.asReadonly();
191
324
  this.slotContext = { $implicit: this };
325
+ this.singleColumn = computed(() => {
326
+ const breakpoint = this.singleColumnBreakpoint();
327
+ if (breakpoint === null) return false;
328
+ const placeWidth = this.#breakpoints.placeWidth();
329
+ return placeWidth === null ? this.#viewportSingle() : placeWidth <= breakpoint;
330
+ }, ...ngDevMode ? [{ debugName: "singleColumn" }] : /* istanbul ignore next */ []);
192
331
  this.storageKey = input(null, ...ngDevMode ? [{ debugName: "storageKey" }] : /* istanbul ignore next */ []);
193
332
  this.hasActive = input(false, {
194
333
  ...ngDevMode ? { debugName: "hasActive" } : /* istanbul ignore next */ {},
@@ -226,7 +365,16 @@ var RtWorkspaceComponent = class RtWorkspaceComponent {
226
365
  ...ngDevMode ? { debugName: "centerMinWidth" } : /* istanbul ignore next */ {},
227
366
  transform: numberAttribute
228
367
  });
368
+ this.singleColumnBreakpoint = input(null, {
369
+ ...ngDevMode ? { debugName: "singleColumnBreakpoint" } : /* istanbul ignore next */ {},
370
+ transform: breakpointAttribute
371
+ });
372
+ this.asideOverlayWidth = input(540, {
373
+ ...ngDevMode ? { debugName: "asideOverlayWidth" } : /* istanbul ignore next */ {},
374
+ transform: numberAttribute
375
+ });
229
376
  this.backClicked = output();
377
+ this.asideOverlay = computed(() => this.singleColumnBreakpoint() !== null && this.#breakpoints.narrow() && !this.singleColumn(), ...ngDevMode ? [{ debugName: "asideOverlay" }] : /* istanbul ignore next */ []);
230
378
  this.listWidth = computed(() => this.#listWidthOverride() ?? this.listDefaultWidth(), ...ngDevMode ? [{ debugName: "listWidth" }] : /* istanbul ignore next */ []);
231
379
  this.asideWidth = computed(() => this.#asideWidthOverride() ?? this.asideDefaultWidth(), ...ngDevMode ? [{ debugName: "asideWidth" }] : /* istanbul ignore next */ []);
232
380
  this.asideCollapsed = this.#asideCollapsed.asReadonly();
@@ -237,6 +385,15 @@ var RtWorkspaceComponent = class RtWorkspaceComponent {
237
385
  this.#restoredKey = key;
238
386
  untracked(() => this.#restoreFromStorage(key));
239
387
  });
388
+ effect(() => {
389
+ const template = this.asideSlot()?.templateRef;
390
+ const shown = this.#asideOpen() && this.asideOverlay();
391
+ untracked(() => shown && template ? this.#openOverlay(template) : this.#closeOverlay());
392
+ });
393
+ this.#overlayOpenedSource.pipe(mergeMap((ref) => ref.afterClosed().pipe(map(() => ref))), takeUntilDestroyed()).subscribe((ref) => {
394
+ if (this.#overlayRef === ref) this.#overlayRef = null;
395
+ this.#asideOpen.set(false);
396
+ });
240
397
  this.#destroyRef.onDestroy(() => this.#stopDragging());
241
398
  }
242
399
  toggleAsideCollapsed() {
@@ -289,6 +446,26 @@ var RtWorkspaceComponent = class RtWorkspaceComponent {
289
446
  (kind === "list" ? this.#listWidthOverride : this.#asideWidthOverride).set(null);
290
447
  this.#persist();
291
448
  }
449
+ #openOverlay(template) {
450
+ if (this.#overlayRef !== null) return;
451
+ const data = {
452
+ template,
453
+ context: this.slotContext,
454
+ width: this.asideOverlayWidth()
455
+ };
456
+ const ref = this.#asides.open(RtWorkspaceAsideOverlayComponent, {
457
+ data,
458
+ injector: this.#injector,
459
+ panelClass: ASIDE_OVERLAY_PANE
460
+ });
461
+ this.#overlayRef = ref;
462
+ this.#overlayOpenedSource.next(ref);
463
+ }
464
+ #closeOverlay() {
465
+ const ref = this.#overlayRef;
466
+ this.#overlayRef = null;
467
+ ref?.close();
468
+ }
292
469
  #onDragMove(event) {
293
470
  const drag = this.#dragState;
294
471
  if (drag === null) return;
@@ -421,6 +598,20 @@ var RtWorkspaceComponent = class RtWorkspaceComponent {
421
598
  isSignal: true,
422
599
  isRequired: false,
423
600
  transformFunction: null
601
+ },
602
+ singleColumnBreakpoint: {
603
+ classPropertyName: "singleColumnBreakpoint",
604
+ publicName: "singleColumnBreakpoint",
605
+ isSignal: true,
606
+ isRequired: false,
607
+ transformFunction: null
608
+ },
609
+ asideOverlayWidth: {
610
+ classPropertyName: "asideOverlayWidth",
611
+ publicName: "asideOverlayWidth",
612
+ isSignal: true,
613
+ isRequired: false,
614
+ transformFunction: null
424
615
  }
425
616
  },
426
617
  outputs: { backClicked: "backClicked" },
@@ -428,6 +619,8 @@ var RtWorkspaceComponent = class RtWorkspaceComponent {
428
619
  properties: {
429
620
  "class.rt-workspace--has-active": "hasActive()",
430
621
  "class.rt-workspace--cards": "cards()",
622
+ "class.rt-workspace--breakpoint": "singleColumnBreakpoint() !== null",
623
+ "class.rt-workspace--single": "singleColumn()",
431
624
  "class.rt-workspace--aside-collapsed": "asideCollapsed()",
432
625
  "class.rt-workspace--resizing": "resizing()",
433
626
  "style.--rt-workspace-list-size": "listWidth() + 'px'",
@@ -459,8 +652,8 @@ var RtWorkspaceComponent = class RtWorkspaceComponent {
459
652
  }
460
653
  ],
461
654
  ngImport: i0,
462
- template: "<ng-container rtBlock=\"rt-workspace\">\n @if (listSlot()) {\n <section rtElem=\"list\" qa-dataid=\"workspace-list\">\n <ng-container [ngTemplateOutlet]=\"listSlot()?.templateRef ?? null\" [ngTemplateOutletContext]=\"slotContext\" />\n </section>\n\n <div\n rtElem=\"handle\"\n qa-dataid=\"workspace-handle-list\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n tabindex=\"0\"\n [attr.aria-label]=\"t().uiResizeList\"\n [rtMod]=\"{ list: true }\"\n [attr.aria-valuenow]=\"listWidth()\"\n [attr.aria-valuemin]=\"listMinWidth()\"\n [attr.aria-valuemax]=\"listMaxWidth()\"\n (pointerdown)=\"onHandlePointerDown($event, 'list')\"\n (dblclick)=\"onHandleReset('list')\"\n (keydown)=\"onHandleKeydown($event, 'list')\"></div>\n }\n\n <section rtElem=\"center\" qa-dataid=\"workspace-center\">\n @if (hasActive()) {\n <div rtElem=\"mobile-toolbar\">\n <rt-icon-button\n qa-dataid=\"workspace-back\"\n icon=\"arrow-left\"\n variant=\"secondary\"\n [ariaLabel]=\"t().uiBackToList\"\n [tooltip]=\"t().uiToList\"\n (clicked)=\"onBackClicked()\" />\n <rt-icon-button\n qa-dataid=\"workspace-open-details\"\n icon=\"info-circle\"\n variant=\"secondary\"\n [ariaLabel]=\"t().uiShowDetails\"\n [tooltip]=\"t().uiDetails\"\n (clicked)=\"openAside()\" />\n </div>\n }\n <ng-container [ngTemplateOutlet]=\"centerSlot()?.templateRef ?? null\" [ngTemplateOutletContext]=\"slotContext\" />\n </section>\n\n @if (asideSlot()) {\n <div\n rtElem=\"handle\"\n qa-dataid=\"workspace-handle-aside\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n tabindex=\"0\"\n [attr.aria-label]=\"t().uiResizeDetails\"\n [rtMod]=\"{ aside: true }\"\n [attr.aria-valuenow]=\"asideWidth()\"\n [attr.aria-valuemin]=\"asideMinWidth()\"\n [attr.aria-valuemax]=\"asideMaxWidth()\"\n (pointerdown)=\"onHandlePointerDown($event, 'aside')\"\n (dblclick)=\"onHandleReset('aside')\"\n (keydown)=\"onHandleKeydown($event, 'aside')\"></div>\n\n <section rtElem=\"aside\" qa-dataid=\"workspace-aside\" [rtMod]=\"{ open: asideOpen() }\">\n <ng-container [ngTemplateOutlet]=\"asideSlot()?.templateRef ?? null\" [ngTemplateOutletContext]=\"slotContext\" />\n </section>\n }\n</ng-container>\n",
463
- styles: ["@layer rt-kit.components{.rt-workspace{--rt-workspace-border-width: var(--rt-border-width-thin);--rt-workspace-handle-line-width: var(--rt-border-width-medium);--rt-workspace-handle-transition-duration: var(--rt-duration-fast);--rt-workspace-panel-transition-duration: var(--rt-duration-base);--rt-workspace-aside-shadow: var(--rt-shadow-md);position:relative;display:flex;flex-direction:row;block-size:calc(100dvh - var(--rt-header-height, 0px));min-block-size:0}.rt-workspace__list{display:flex;flex:0 0 var(--rt-workspace-list-size, 320px);flex-direction:column;border-inline-end:var(--rt-workspace-border-width) solid var(--rt-color-border-strong);min-inline-size:0}.rt-workspace__center{display:flex;flex:1 1 auto;flex-direction:column;min-block-size:0;min-inline-size:0;padding-inline:var(--rt-space-4)}.rt-workspace__mobile-toolbar{display:none}.rt-workspace__aside{display:flex;flex:0 0 var(--rt-workspace-aside-size, 360px);flex-direction:column;border-inline-start:var(--rt-workspace-border-width) solid var(--rt-color-border-strong);min-inline-size:0}.rt-workspace__aside .rt-tabs{--rt-tabs-list-min-height: calc(56px + var(--rt-space-2) + var(--rt-space-1) + var(--rt-border-width-thin));--rt-tabs-list-align: flex-end;--rt-tabs-list-padding-inline: var(--rt-space-1);--rt-tabs-list-border-color: var(--rt-color-border-strong);--rt-tabs-content-padding-top: 0}.rt-workspace__handle{position:relative;z-index:1;flex:0 0 auto;background:transparent;cursor:col-resize;inline-size:var(--rt-space-2);margin-inline:calc(-1 * var(--rt-space-1));touch-action:none}.rt-workspace__handle:before{position:absolute;background:transparent;content:\"\";inline-size:var(--rt-workspace-handle-line-width);inset-block:0;inset-inline-start:50%;transform:translate(-50%);transition:background var(--rt-workspace-handle-transition-duration) ease}.rt-workspace__handle:hover:before,.rt-workspace__handle:focus-visible:before{background:var(--rt-color-border-strong)}.rt-workspace__handle:focus-visible{outline:none}.rt-workspace__handle:focus-visible:before{background:var(--rt-color-border-focus)}@container rt-place (width <= 1080px){.rt-workspace__desktop-only{display:none}}@media(width<=1080px){:where(html:not(:has(.rt-container))) .rt-workspace__desktop-only{display:none}}@container rt-place (width <= 1080px){.rt-workspace__mobile-toolbar{display:flex;justify-content:space-between;padding:var(--rt-space-2) var(--rt-space-4) 0}.rt-workspace__handle{display:none}.rt-workspace__aside{position:absolute;z-index:2;flex-basis:360px;background:var(--rt-color-bg-surface);box-shadow:var(--rt-workspace-aside-shadow);inset-block:0;inset-inline-end:0;max-inline-size:90%;transform:translate(100%);transition:transform var(--rt-workspace-panel-transition-duration) ease}.rt-workspace__aside--open{transform:translate(0)}}@media(width<=1080px){:where(html:not(:has(.rt-container))) .rt-workspace__mobile-toolbar{display:flex;justify-content:space-between;padding:var(--rt-space-2) var(--rt-space-4) 0}:where(html:not(:has(.rt-container))) .rt-workspace__handle{display:none}:where(html:not(:has(.rt-container))) .rt-workspace__aside{position:absolute;z-index:2;flex-basis:360px;background:var(--rt-color-bg-surface);box-shadow:var(--rt-workspace-aside-shadow);inset-block:0;inset-inline-end:0;max-inline-size:90%;transform:translate(100%);transition:transform var(--rt-workspace-panel-transition-duration) ease}:where(html:not(:has(.rt-container))) .rt-workspace__aside--open{transform:translate(0)}}@container rt-place (width <= 768px){.rt-workspace__list{flex-basis:100%}}@media(width<=768px){:where(html:not(:has(.rt-container))) .rt-workspace__list{flex-basis:100%}}@container rt-place (width > 1080px){.rt-workspace__aside{overflow:hidden;transition:flex-basis var(--rt-workspace-panel-transition-duration) ease,border-inline-start-width var(--rt-workspace-panel-transition-duration) ease,opacity var(--rt-workspace-panel-transition-duration) ease;will-change:flex-basis}}@media(width>1080px){:where(html:not(:has(.rt-container))) .rt-workspace__aside{overflow:hidden;transition:flex-basis var(--rt-workspace-panel-transition-duration) ease,border-inline-start-width var(--rt-workspace-panel-transition-duration) ease,opacity var(--rt-workspace-panel-transition-duration) ease;will-change:flex-basis}}@container rt-place (width <= 768px){.rt-workspace--has-active .rt-workspace__list{display:none}.rt-workspace--has-active .rt-workspace__center{flex-basis:100%}}@media(width<=768px){:where(html:not(:has(.rt-container))) .rt-workspace--has-active .rt-workspace__list{display:none}:where(html:not(:has(.rt-container))) .rt-workspace--has-active .rt-workspace__center{flex-basis:100%}}@container rt-place (width > 1080px){.rt-workspace--aside-collapsed .rt-workspace__aside{flex-basis:0;border-inline-start-width:0;min-inline-size:0;opacity:0;pointer-events:none;transition:flex-basis var(--rt-workspace-panel-transition-duration) ease,border-inline-start-width var(--rt-workspace-panel-transition-duration) ease,opacity var(--rt-workspace-panel-transition-duration) ease,visibility 0s linear var(--rt-workspace-panel-transition-duration);visibility:hidden}.rt-workspace--aside-collapsed .rt-workspace__handle--aside{display:none}}@media(width>1080px){:where(html:not(:has(.rt-container))) .rt-workspace--aside-collapsed .rt-workspace__aside{flex-basis:0;border-inline-start-width:0;min-inline-size:0;opacity:0;pointer-events:none;transition:flex-basis var(--rt-workspace-panel-transition-duration) ease,border-inline-start-width var(--rt-workspace-panel-transition-duration) ease,opacity var(--rt-workspace-panel-transition-duration) ease,visibility 0s linear var(--rt-workspace-panel-transition-duration);visibility:hidden}:where(html:not(:has(.rt-container))) .rt-workspace--aside-collapsed .rt-workspace__handle--aside{display:none}}.rt-workspace--cards{--rt-workspace-card-gap: var(--rt-space-4);--rt-workspace-card-radius: var(--rt-radius-xl);gap:0}.rt-workspace--cards .rt-workspace__list,.rt-workspace--cards .rt-workspace__center,.rt-workspace--cards .rt-workspace__aside{overflow:hidden;border:var(--rt-workspace-border-width) solid var(--rt-color-border-subtle);border-radius:var(--rt-workspace-card-radius);background:var(--rt-color-bg-surface)}.rt-workspace--cards .rt-workspace__center{padding-inline:0}.rt-workspace--cards .rt-workspace__handle{inline-size:var(--rt-workspace-card-gap);margin-inline:0}@container rt-place (width <= 1080px){.rt-workspace--cards{gap:var(--rt-workspace-card-gap)}}@media(width<=1080px){:where(html:not(:has(.rt-container))) .rt-workspace--cards{gap:var(--rt-workspace-card-gap)}}@container rt-place (width <= 768px){.rt-workspace--cards{gap:0}}@media(width<=768px){:where(html:not(:has(.rt-container))) .rt-workspace--cards{gap:0}}.rt-workspace--resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}.rt-workspace--resizing .rt-workspace__list,.rt-workspace--resizing .rt-workspace__aside{transition:none}@media(prefers-reduced-motion:reduce){.rt-workspace__aside{transition:none}}}\n"],
655
+ template: "<ng-container rtBlock=\"rt-workspace\">\n @if (listSlot()) {\n <section rtElem=\"list\" qa-dataid=\"workspace-list\">\n <ng-container [ngTemplateOutlet]=\"listSlot()?.templateRef ?? null\" [ngTemplateOutletContext]=\"slotContext\" />\n </section>\n\n <div\n rtElem=\"handle\"\n qa-dataid=\"workspace-handle-list\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n tabindex=\"0\"\n [attr.aria-label]=\"t().uiResizeList\"\n [rtMod]=\"{ list: true }\"\n [attr.aria-valuenow]=\"listWidth()\"\n [attr.aria-valuemin]=\"listMinWidth()\"\n [attr.aria-valuemax]=\"listMaxWidth()\"\n (pointerdown)=\"onHandlePointerDown($event, 'list')\"\n (dblclick)=\"onHandleReset('list')\"\n (keydown)=\"onHandleKeydown($event, 'list')\"></div>\n }\n\n <section rtElem=\"center\" qa-dataid=\"workspace-center\">\n @if (hasActive()) {\n <div rtElem=\"mobile-toolbar\">\n <rt-icon-button\n qa-dataid=\"workspace-back\"\n icon=\"arrow-left\"\n variant=\"secondary\"\n [ariaLabel]=\"t().uiBackToList\"\n [tooltip]=\"t().uiToList\"\n (clicked)=\"onBackClicked()\" />\n <rt-icon-button\n qa-dataid=\"workspace-open-details\"\n icon=\"info-circle\"\n variant=\"secondary\"\n [ariaLabel]=\"t().uiShowDetails\"\n [tooltip]=\"t().uiDetails\"\n (clicked)=\"openAside()\" />\n </div>\n }\n <ng-container [ngTemplateOutlet]=\"centerSlot()?.templateRef ?? null\" [ngTemplateOutletContext]=\"slotContext\" />\n </section>\n\n @if (asideSlot()) {\n <div\n rtElem=\"handle\"\n qa-dataid=\"workspace-handle-aside\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n tabindex=\"0\"\n [attr.aria-label]=\"t().uiResizeDetails\"\n [rtMod]=\"{ aside: true }\"\n [attr.aria-valuenow]=\"asideWidth()\"\n [attr.aria-valuemin]=\"asideMinWidth()\"\n [attr.aria-valuemax]=\"asideMaxWidth()\"\n (pointerdown)=\"onHandlePointerDown($event, 'aside')\"\n (dblclick)=\"onHandleReset('aside')\"\n (keydown)=\"onHandleKeydown($event, 'aside')\"></div>\n\n <!-- Панель, открытая поверх окна, рисует тот же шаблон сама: дважды он не выводится -->\n <section rtElem=\"aside\" qa-dataid=\"workspace-aside\" [rtMod]=\"{ open: asideOpen(), overlay: asideOverlay() }\">\n <ng-container\n [ngTemplateOutlet]=\"asideOverlay() ? null : (asideSlot()?.templateRef ?? null)\"\n [ngTemplateOutletContext]=\"slotContext\" />\n </section>\n }\n</ng-container>\n",
656
+ styles: ["@layer rt-kit.components{.rt-workspace{--rt-workspace-border-width: var(--rt-border-width-thin);--rt-workspace-handle-line-width: var(--rt-border-width-medium);--rt-workspace-handle-transition-duration: var(--rt-duration-fast);--rt-workspace-panel-transition-duration: var(--rt-duration-base);--rt-workspace-aside-shadow: var(--rt-shadow-md);position:relative;display:flex;flex-direction:row;block-size:calc(100dvh - var(--rt-header-height, 0px));min-block-size:0}.rt-workspace__list{display:flex;flex:0 0 var(--rt-workspace-list-size, 320px);flex-direction:column;border-inline-end:var(--rt-workspace-border-width) solid var(--rt-color-border-strong);min-inline-size:0}.rt-workspace__center{display:flex;flex:1 1 auto;flex-direction:column;min-block-size:0;min-inline-size:0;padding-inline:var(--rt-space-4)}.rt-workspace__mobile-toolbar{display:none}.rt-workspace__aside{display:flex;flex:0 0 var(--rt-workspace-aside-size, 360px);flex-direction:column;border-inline-start:var(--rt-workspace-border-width) solid var(--rt-color-border-strong);min-inline-size:0}.rt-workspace__aside .rt-tabs{--rt-tabs-list-min-height: calc(56px + var(--rt-space-2) + var(--rt-space-1) + var(--rt-border-width-thin));--rt-tabs-list-align: flex-end;--rt-tabs-list-padding-inline: var(--rt-space-1);--rt-tabs-list-border-color: var(--rt-color-border-strong);--rt-tabs-content-padding-top: 0}.rt-workspace__handle{position:relative;z-index:1;flex:0 0 auto;background:transparent;cursor:col-resize;inline-size:var(--rt-space-2);margin-inline:calc(-1 * var(--rt-space-1));touch-action:none}.rt-workspace__handle:before{position:absolute;background:transparent;content:\"\";inline-size:var(--rt-workspace-handle-line-width);inset-block:0;inset-inline-start:50%;transform:translate(-50%);transition:background var(--rt-workspace-handle-transition-duration) ease}.rt-workspace__handle:hover:before,.rt-workspace__handle:focus-visible:before{background:var(--rt-color-border-strong)}.rt-workspace__handle:focus-visible{outline:none}.rt-workspace__handle:focus-visible:before{background:var(--rt-color-border-focus)}@container rt-place (width <= 1080px){.rt-workspace__desktop-only{display:none}}@media(width<=1080px){:where(html:not(:has(.rt-container))) .rt-workspace__desktop-only{display:none}}@container rt-place (width <= 1080px){.rt-workspace__mobile-toolbar{display:flex;justify-content:space-between;padding:var(--rt-space-2) var(--rt-space-4) 0}.rt-workspace__handle{display:none}.rt-workspace__aside{position:absolute;z-index:2;flex-basis:360px;background:var(--rt-color-bg-surface);box-shadow:var(--rt-workspace-aside-shadow);inset-block:0;inset-inline-end:0;max-inline-size:90%;transform:translate(100%);transition:transform var(--rt-workspace-panel-transition-duration) ease}.rt-workspace__aside--open{transform:translate(0)}}@media(width<=1080px){:where(html:not(:has(.rt-container))) .rt-workspace__mobile-toolbar{display:flex;justify-content:space-between;padding:var(--rt-space-2) var(--rt-space-4) 0}:where(html:not(:has(.rt-container))) .rt-workspace__handle{display:none}:where(html:not(:has(.rt-container))) .rt-workspace__aside{position:absolute;z-index:2;flex-basis:360px;background:var(--rt-color-bg-surface);box-shadow:var(--rt-workspace-aside-shadow);inset-block:0;inset-inline-end:0;max-inline-size:90%;transform:translate(100%);transition:transform var(--rt-workspace-panel-transition-duration) ease}:where(html:not(:has(.rt-container))) .rt-workspace__aside--open{transform:translate(0)}}@container rt-place (width <= 768px){.rt-workspace:not(.rt-workspace--breakpoint) .rt-workspace__list{flex-basis:100%}}@media(width<=768px){:where(html:not(:has(.rt-container))) .rt-workspace:not(.rt-workspace--breakpoint) .rt-workspace__list{flex-basis:100%}}.rt-workspace__aside--overlay{display:none}@container rt-place (width > 1080px){.rt-workspace__aside{overflow:hidden;transition:flex-basis var(--rt-workspace-panel-transition-duration) ease,border-inline-start-width var(--rt-workspace-panel-transition-duration) ease,opacity var(--rt-workspace-panel-transition-duration) ease;will-change:flex-basis}}@media(width>1080px){:where(html:not(:has(.rt-container))) .rt-workspace__aside{overflow:hidden;transition:flex-basis var(--rt-workspace-panel-transition-duration) ease,border-inline-start-width var(--rt-workspace-panel-transition-duration) ease,opacity var(--rt-workspace-panel-transition-duration) ease;will-change:flex-basis}}.rt-workspace--single .rt-workspace__list{flex-basis:100%}.rt-workspace--single.rt-workspace--has-active .rt-workspace__list{display:none}.rt-workspace--single.rt-workspace--has-active .rt-workspace__center{flex-basis:100%}.rt-workspace--single.rt-workspace--cards{gap:0}@container rt-place (width <= 768px){.rt-workspace--has-active:not(.rt-workspace--breakpoint) .rt-workspace__list{display:none}.rt-workspace--has-active:not(.rt-workspace--breakpoint) .rt-workspace__center{flex-basis:100%}}@media(width<=768px){:where(html:not(:has(.rt-container))) .rt-workspace--has-active:not(.rt-workspace--breakpoint) .rt-workspace__list{display:none}:where(html:not(:has(.rt-container))) .rt-workspace--has-active:not(.rt-workspace--breakpoint) .rt-workspace__center{flex-basis:100%}}@container rt-place (width > 1080px){.rt-workspace--aside-collapsed .rt-workspace__aside{flex-basis:0;border-inline-start-width:0;min-inline-size:0;opacity:0;pointer-events:none;transition:flex-basis var(--rt-workspace-panel-transition-duration) ease,border-inline-start-width var(--rt-workspace-panel-transition-duration) ease,opacity var(--rt-workspace-panel-transition-duration) ease,visibility 0s linear var(--rt-workspace-panel-transition-duration);visibility:hidden}.rt-workspace--aside-collapsed .rt-workspace__handle--aside{display:none}}@media(width>1080px){:where(html:not(:has(.rt-container))) .rt-workspace--aside-collapsed .rt-workspace__aside{flex-basis:0;border-inline-start-width:0;min-inline-size:0;opacity:0;pointer-events:none;transition:flex-basis var(--rt-workspace-panel-transition-duration) ease,border-inline-start-width var(--rt-workspace-panel-transition-duration) ease,opacity var(--rt-workspace-panel-transition-duration) ease,visibility 0s linear var(--rt-workspace-panel-transition-duration);visibility:hidden}:where(html:not(:has(.rt-container))) .rt-workspace--aside-collapsed .rt-workspace__handle--aside{display:none}}.rt-workspace--cards{--rt-workspace-card-gap: var(--rt-space-4);--rt-workspace-card-radius: var(--rt-radius-xl);gap:0}.rt-workspace--cards .rt-workspace__list,.rt-workspace--cards .rt-workspace__center,.rt-workspace--cards .rt-workspace__aside{overflow:hidden;border:var(--rt-workspace-border-width) solid var(--rt-color-border-subtle);border-radius:var(--rt-workspace-card-radius);background:var(--rt-color-bg-surface)}.rt-workspace--cards .rt-workspace__center{padding-inline:0}.rt-workspace--cards .rt-workspace__handle{inline-size:var(--rt-workspace-card-gap);margin-inline:0}@container rt-place (width <= 1080px){.rt-workspace--cards{gap:var(--rt-workspace-card-gap)}}@media(width<=1080px){:where(html:not(:has(.rt-container))) .rt-workspace--cards{gap:var(--rt-workspace-card-gap)}}@container rt-place (width <= 768px){.rt-workspace--cards:not(.rt-workspace--breakpoint){gap:0}}@media(width<=768px){:where(html:not(:has(.rt-container))) .rt-workspace--cards:not(.rt-workspace--breakpoint){gap:0}}.rt-workspace--resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}.rt-workspace--resizing .rt-workspace__list,.rt-workspace--resizing .rt-workspace__aside{transition:none}@media(prefers-reduced-motion:reduce){.rt-workspace__aside{transition:none}}.rt-workspace-aside-overlay{display:contents}.rt-workspace-aside-overlay .rt-aside__content{display:flex;flex-direction:column;padding:0}@media(width<=768px){.rt-aside-overlay.rt-workspace-aside-pane{width:auto;max-width:100dvw}}}\n"],
464
657
  dependencies: [
465
658
  {
466
659
  kind: "directive",
@@ -544,13 +737,15 @@ i0.ɵɵngDeclareClassMetadata({
544
737
  class: BEM_BLOCK,
545
738
  "[class.rt-workspace--has-active]": "hasActive()",
546
739
  "[class.rt-workspace--cards]": "cards()",
740
+ "[class.rt-workspace--breakpoint]": "singleColumnBreakpoint() !== null",
741
+ "[class.rt-workspace--single]": "singleColumn()",
547
742
  "[class.rt-workspace--aside-collapsed]": "asideCollapsed()",
548
743
  "[class.rt-workspace--resizing]": "resizing()",
549
744
  "[style.--rt-workspace-list-size]": "listWidth() + 'px'",
550
745
  "[style.--rt-workspace-aside-size]": "asideWidth() + 'px'"
551
746
  },
552
- template: "<ng-container rtBlock=\"rt-workspace\">\n @if (listSlot()) {\n <section rtElem=\"list\" qa-dataid=\"workspace-list\">\n <ng-container [ngTemplateOutlet]=\"listSlot()?.templateRef ?? null\" [ngTemplateOutletContext]=\"slotContext\" />\n </section>\n\n <div\n rtElem=\"handle\"\n qa-dataid=\"workspace-handle-list\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n tabindex=\"0\"\n [attr.aria-label]=\"t().uiResizeList\"\n [rtMod]=\"{ list: true }\"\n [attr.aria-valuenow]=\"listWidth()\"\n [attr.aria-valuemin]=\"listMinWidth()\"\n [attr.aria-valuemax]=\"listMaxWidth()\"\n (pointerdown)=\"onHandlePointerDown($event, 'list')\"\n (dblclick)=\"onHandleReset('list')\"\n (keydown)=\"onHandleKeydown($event, 'list')\"></div>\n }\n\n <section rtElem=\"center\" qa-dataid=\"workspace-center\">\n @if (hasActive()) {\n <div rtElem=\"mobile-toolbar\">\n <rt-icon-button\n qa-dataid=\"workspace-back\"\n icon=\"arrow-left\"\n variant=\"secondary\"\n [ariaLabel]=\"t().uiBackToList\"\n [tooltip]=\"t().uiToList\"\n (clicked)=\"onBackClicked()\" />\n <rt-icon-button\n qa-dataid=\"workspace-open-details\"\n icon=\"info-circle\"\n variant=\"secondary\"\n [ariaLabel]=\"t().uiShowDetails\"\n [tooltip]=\"t().uiDetails\"\n (clicked)=\"openAside()\" />\n </div>\n }\n <ng-container [ngTemplateOutlet]=\"centerSlot()?.templateRef ?? null\" [ngTemplateOutletContext]=\"slotContext\" />\n </section>\n\n @if (asideSlot()) {\n <div\n rtElem=\"handle\"\n qa-dataid=\"workspace-handle-aside\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n tabindex=\"0\"\n [attr.aria-label]=\"t().uiResizeDetails\"\n [rtMod]=\"{ aside: true }\"\n [attr.aria-valuenow]=\"asideWidth()\"\n [attr.aria-valuemin]=\"asideMinWidth()\"\n [attr.aria-valuemax]=\"asideMaxWidth()\"\n (pointerdown)=\"onHandlePointerDown($event, 'aside')\"\n (dblclick)=\"onHandleReset('aside')\"\n (keydown)=\"onHandleKeydown($event, 'aside')\"></div>\n\n <section rtElem=\"aside\" qa-dataid=\"workspace-aside\" [rtMod]=\"{ open: asideOpen() }\">\n <ng-container [ngTemplateOutlet]=\"asideSlot()?.templateRef ?? null\" [ngTemplateOutletContext]=\"slotContext\" />\n </section>\n }\n</ng-container>\n",
553
- styles: ["@layer rt-kit.components{.rt-workspace{--rt-workspace-border-width: var(--rt-border-width-thin);--rt-workspace-handle-line-width: var(--rt-border-width-medium);--rt-workspace-handle-transition-duration: var(--rt-duration-fast);--rt-workspace-panel-transition-duration: var(--rt-duration-base);--rt-workspace-aside-shadow: var(--rt-shadow-md);position:relative;display:flex;flex-direction:row;block-size:calc(100dvh - var(--rt-header-height, 0px));min-block-size:0}.rt-workspace__list{display:flex;flex:0 0 var(--rt-workspace-list-size, 320px);flex-direction:column;border-inline-end:var(--rt-workspace-border-width) solid var(--rt-color-border-strong);min-inline-size:0}.rt-workspace__center{display:flex;flex:1 1 auto;flex-direction:column;min-block-size:0;min-inline-size:0;padding-inline:var(--rt-space-4)}.rt-workspace__mobile-toolbar{display:none}.rt-workspace__aside{display:flex;flex:0 0 var(--rt-workspace-aside-size, 360px);flex-direction:column;border-inline-start:var(--rt-workspace-border-width) solid var(--rt-color-border-strong);min-inline-size:0}.rt-workspace__aside .rt-tabs{--rt-tabs-list-min-height: calc(56px + var(--rt-space-2) + var(--rt-space-1) + var(--rt-border-width-thin));--rt-tabs-list-align: flex-end;--rt-tabs-list-padding-inline: var(--rt-space-1);--rt-tabs-list-border-color: var(--rt-color-border-strong);--rt-tabs-content-padding-top: 0}.rt-workspace__handle{position:relative;z-index:1;flex:0 0 auto;background:transparent;cursor:col-resize;inline-size:var(--rt-space-2);margin-inline:calc(-1 * var(--rt-space-1));touch-action:none}.rt-workspace__handle:before{position:absolute;background:transparent;content:\"\";inline-size:var(--rt-workspace-handle-line-width);inset-block:0;inset-inline-start:50%;transform:translate(-50%);transition:background var(--rt-workspace-handle-transition-duration) ease}.rt-workspace__handle:hover:before,.rt-workspace__handle:focus-visible:before{background:var(--rt-color-border-strong)}.rt-workspace__handle:focus-visible{outline:none}.rt-workspace__handle:focus-visible:before{background:var(--rt-color-border-focus)}@container rt-place (width <= 1080px){.rt-workspace__desktop-only{display:none}}@media(width<=1080px){:where(html:not(:has(.rt-container))) .rt-workspace__desktop-only{display:none}}@container rt-place (width <= 1080px){.rt-workspace__mobile-toolbar{display:flex;justify-content:space-between;padding:var(--rt-space-2) var(--rt-space-4) 0}.rt-workspace__handle{display:none}.rt-workspace__aside{position:absolute;z-index:2;flex-basis:360px;background:var(--rt-color-bg-surface);box-shadow:var(--rt-workspace-aside-shadow);inset-block:0;inset-inline-end:0;max-inline-size:90%;transform:translate(100%);transition:transform var(--rt-workspace-panel-transition-duration) ease}.rt-workspace__aside--open{transform:translate(0)}}@media(width<=1080px){:where(html:not(:has(.rt-container))) .rt-workspace__mobile-toolbar{display:flex;justify-content:space-between;padding:var(--rt-space-2) var(--rt-space-4) 0}:where(html:not(:has(.rt-container))) .rt-workspace__handle{display:none}:where(html:not(:has(.rt-container))) .rt-workspace__aside{position:absolute;z-index:2;flex-basis:360px;background:var(--rt-color-bg-surface);box-shadow:var(--rt-workspace-aside-shadow);inset-block:0;inset-inline-end:0;max-inline-size:90%;transform:translate(100%);transition:transform var(--rt-workspace-panel-transition-duration) ease}:where(html:not(:has(.rt-container))) .rt-workspace__aside--open{transform:translate(0)}}@container rt-place (width <= 768px){.rt-workspace__list{flex-basis:100%}}@media(width<=768px){:where(html:not(:has(.rt-container))) .rt-workspace__list{flex-basis:100%}}@container rt-place (width > 1080px){.rt-workspace__aside{overflow:hidden;transition:flex-basis var(--rt-workspace-panel-transition-duration) ease,border-inline-start-width var(--rt-workspace-panel-transition-duration) ease,opacity var(--rt-workspace-panel-transition-duration) ease;will-change:flex-basis}}@media(width>1080px){:where(html:not(:has(.rt-container))) .rt-workspace__aside{overflow:hidden;transition:flex-basis var(--rt-workspace-panel-transition-duration) ease,border-inline-start-width var(--rt-workspace-panel-transition-duration) ease,opacity var(--rt-workspace-panel-transition-duration) ease;will-change:flex-basis}}@container rt-place (width <= 768px){.rt-workspace--has-active .rt-workspace__list{display:none}.rt-workspace--has-active .rt-workspace__center{flex-basis:100%}}@media(width<=768px){:where(html:not(:has(.rt-container))) .rt-workspace--has-active .rt-workspace__list{display:none}:where(html:not(:has(.rt-container))) .rt-workspace--has-active .rt-workspace__center{flex-basis:100%}}@container rt-place (width > 1080px){.rt-workspace--aside-collapsed .rt-workspace__aside{flex-basis:0;border-inline-start-width:0;min-inline-size:0;opacity:0;pointer-events:none;transition:flex-basis var(--rt-workspace-panel-transition-duration) ease,border-inline-start-width var(--rt-workspace-panel-transition-duration) ease,opacity var(--rt-workspace-panel-transition-duration) ease,visibility 0s linear var(--rt-workspace-panel-transition-duration);visibility:hidden}.rt-workspace--aside-collapsed .rt-workspace__handle--aside{display:none}}@media(width>1080px){:where(html:not(:has(.rt-container))) .rt-workspace--aside-collapsed .rt-workspace__aside{flex-basis:0;border-inline-start-width:0;min-inline-size:0;opacity:0;pointer-events:none;transition:flex-basis var(--rt-workspace-panel-transition-duration) ease,border-inline-start-width var(--rt-workspace-panel-transition-duration) ease,opacity var(--rt-workspace-panel-transition-duration) ease,visibility 0s linear var(--rt-workspace-panel-transition-duration);visibility:hidden}:where(html:not(:has(.rt-container))) .rt-workspace--aside-collapsed .rt-workspace__handle--aside{display:none}}.rt-workspace--cards{--rt-workspace-card-gap: var(--rt-space-4);--rt-workspace-card-radius: var(--rt-radius-xl);gap:0}.rt-workspace--cards .rt-workspace__list,.rt-workspace--cards .rt-workspace__center,.rt-workspace--cards .rt-workspace__aside{overflow:hidden;border:var(--rt-workspace-border-width) solid var(--rt-color-border-subtle);border-radius:var(--rt-workspace-card-radius);background:var(--rt-color-bg-surface)}.rt-workspace--cards .rt-workspace__center{padding-inline:0}.rt-workspace--cards .rt-workspace__handle{inline-size:var(--rt-workspace-card-gap);margin-inline:0}@container rt-place (width <= 1080px){.rt-workspace--cards{gap:var(--rt-workspace-card-gap)}}@media(width<=1080px){:where(html:not(:has(.rt-container))) .rt-workspace--cards{gap:var(--rt-workspace-card-gap)}}@container rt-place (width <= 768px){.rt-workspace--cards{gap:0}}@media(width<=768px){:where(html:not(:has(.rt-container))) .rt-workspace--cards{gap:0}}.rt-workspace--resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}.rt-workspace--resizing .rt-workspace__list,.rt-workspace--resizing .rt-workspace__aside{transition:none}@media(prefers-reduced-motion:reduce){.rt-workspace__aside{transition:none}}}\n"]
747
+ template: "<ng-container rtBlock=\"rt-workspace\">\n @if (listSlot()) {\n <section rtElem=\"list\" qa-dataid=\"workspace-list\">\n <ng-container [ngTemplateOutlet]=\"listSlot()?.templateRef ?? null\" [ngTemplateOutletContext]=\"slotContext\" />\n </section>\n\n <div\n rtElem=\"handle\"\n qa-dataid=\"workspace-handle-list\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n tabindex=\"0\"\n [attr.aria-label]=\"t().uiResizeList\"\n [rtMod]=\"{ list: true }\"\n [attr.aria-valuenow]=\"listWidth()\"\n [attr.aria-valuemin]=\"listMinWidth()\"\n [attr.aria-valuemax]=\"listMaxWidth()\"\n (pointerdown)=\"onHandlePointerDown($event, 'list')\"\n (dblclick)=\"onHandleReset('list')\"\n (keydown)=\"onHandleKeydown($event, 'list')\"></div>\n }\n\n <section rtElem=\"center\" qa-dataid=\"workspace-center\">\n @if (hasActive()) {\n <div rtElem=\"mobile-toolbar\">\n <rt-icon-button\n qa-dataid=\"workspace-back\"\n icon=\"arrow-left\"\n variant=\"secondary\"\n [ariaLabel]=\"t().uiBackToList\"\n [tooltip]=\"t().uiToList\"\n (clicked)=\"onBackClicked()\" />\n <rt-icon-button\n qa-dataid=\"workspace-open-details\"\n icon=\"info-circle\"\n variant=\"secondary\"\n [ariaLabel]=\"t().uiShowDetails\"\n [tooltip]=\"t().uiDetails\"\n (clicked)=\"openAside()\" />\n </div>\n }\n <ng-container [ngTemplateOutlet]=\"centerSlot()?.templateRef ?? null\" [ngTemplateOutletContext]=\"slotContext\" />\n </section>\n\n @if (asideSlot()) {\n <div\n rtElem=\"handle\"\n qa-dataid=\"workspace-handle-aside\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n tabindex=\"0\"\n [attr.aria-label]=\"t().uiResizeDetails\"\n [rtMod]=\"{ aside: true }\"\n [attr.aria-valuenow]=\"asideWidth()\"\n [attr.aria-valuemin]=\"asideMinWidth()\"\n [attr.aria-valuemax]=\"asideMaxWidth()\"\n (pointerdown)=\"onHandlePointerDown($event, 'aside')\"\n (dblclick)=\"onHandleReset('aside')\"\n (keydown)=\"onHandleKeydown($event, 'aside')\"></div>\n\n <!-- Панель, открытая поверх окна, рисует тот же шаблон сама: дважды он не выводится -->\n <section rtElem=\"aside\" qa-dataid=\"workspace-aside\" [rtMod]=\"{ open: asideOpen(), overlay: asideOverlay() }\">\n <ng-container\n [ngTemplateOutlet]=\"asideOverlay() ? null : (asideSlot()?.templateRef ?? null)\"\n [ngTemplateOutletContext]=\"slotContext\" />\n </section>\n }\n</ng-container>\n",
748
+ styles: ["@layer rt-kit.components{.rt-workspace{--rt-workspace-border-width: var(--rt-border-width-thin);--rt-workspace-handle-line-width: var(--rt-border-width-medium);--rt-workspace-handle-transition-duration: var(--rt-duration-fast);--rt-workspace-panel-transition-duration: var(--rt-duration-base);--rt-workspace-aside-shadow: var(--rt-shadow-md);position:relative;display:flex;flex-direction:row;block-size:calc(100dvh - var(--rt-header-height, 0px));min-block-size:0}.rt-workspace__list{display:flex;flex:0 0 var(--rt-workspace-list-size, 320px);flex-direction:column;border-inline-end:var(--rt-workspace-border-width) solid var(--rt-color-border-strong);min-inline-size:0}.rt-workspace__center{display:flex;flex:1 1 auto;flex-direction:column;min-block-size:0;min-inline-size:0;padding-inline:var(--rt-space-4)}.rt-workspace__mobile-toolbar{display:none}.rt-workspace__aside{display:flex;flex:0 0 var(--rt-workspace-aside-size, 360px);flex-direction:column;border-inline-start:var(--rt-workspace-border-width) solid var(--rt-color-border-strong);min-inline-size:0}.rt-workspace__aside .rt-tabs{--rt-tabs-list-min-height: calc(56px + var(--rt-space-2) + var(--rt-space-1) + var(--rt-border-width-thin));--rt-tabs-list-align: flex-end;--rt-tabs-list-padding-inline: var(--rt-space-1);--rt-tabs-list-border-color: var(--rt-color-border-strong);--rt-tabs-content-padding-top: 0}.rt-workspace__handle{position:relative;z-index:1;flex:0 0 auto;background:transparent;cursor:col-resize;inline-size:var(--rt-space-2);margin-inline:calc(-1 * var(--rt-space-1));touch-action:none}.rt-workspace__handle:before{position:absolute;background:transparent;content:\"\";inline-size:var(--rt-workspace-handle-line-width);inset-block:0;inset-inline-start:50%;transform:translate(-50%);transition:background var(--rt-workspace-handle-transition-duration) ease}.rt-workspace__handle:hover:before,.rt-workspace__handle:focus-visible:before{background:var(--rt-color-border-strong)}.rt-workspace__handle:focus-visible{outline:none}.rt-workspace__handle:focus-visible:before{background:var(--rt-color-border-focus)}@container rt-place (width <= 1080px){.rt-workspace__desktop-only{display:none}}@media(width<=1080px){:where(html:not(:has(.rt-container))) .rt-workspace__desktop-only{display:none}}@container rt-place (width <= 1080px){.rt-workspace__mobile-toolbar{display:flex;justify-content:space-between;padding:var(--rt-space-2) var(--rt-space-4) 0}.rt-workspace__handle{display:none}.rt-workspace__aside{position:absolute;z-index:2;flex-basis:360px;background:var(--rt-color-bg-surface);box-shadow:var(--rt-workspace-aside-shadow);inset-block:0;inset-inline-end:0;max-inline-size:90%;transform:translate(100%);transition:transform var(--rt-workspace-panel-transition-duration) ease}.rt-workspace__aside--open{transform:translate(0)}}@media(width<=1080px){:where(html:not(:has(.rt-container))) .rt-workspace__mobile-toolbar{display:flex;justify-content:space-between;padding:var(--rt-space-2) var(--rt-space-4) 0}:where(html:not(:has(.rt-container))) .rt-workspace__handle{display:none}:where(html:not(:has(.rt-container))) .rt-workspace__aside{position:absolute;z-index:2;flex-basis:360px;background:var(--rt-color-bg-surface);box-shadow:var(--rt-workspace-aside-shadow);inset-block:0;inset-inline-end:0;max-inline-size:90%;transform:translate(100%);transition:transform var(--rt-workspace-panel-transition-duration) ease}:where(html:not(:has(.rt-container))) .rt-workspace__aside--open{transform:translate(0)}}@container rt-place (width <= 768px){.rt-workspace:not(.rt-workspace--breakpoint) .rt-workspace__list{flex-basis:100%}}@media(width<=768px){:where(html:not(:has(.rt-container))) .rt-workspace:not(.rt-workspace--breakpoint) .rt-workspace__list{flex-basis:100%}}.rt-workspace__aside--overlay{display:none}@container rt-place (width > 1080px){.rt-workspace__aside{overflow:hidden;transition:flex-basis var(--rt-workspace-panel-transition-duration) ease,border-inline-start-width var(--rt-workspace-panel-transition-duration) ease,opacity var(--rt-workspace-panel-transition-duration) ease;will-change:flex-basis}}@media(width>1080px){:where(html:not(:has(.rt-container))) .rt-workspace__aside{overflow:hidden;transition:flex-basis var(--rt-workspace-panel-transition-duration) ease,border-inline-start-width var(--rt-workspace-panel-transition-duration) ease,opacity var(--rt-workspace-panel-transition-duration) ease;will-change:flex-basis}}.rt-workspace--single .rt-workspace__list{flex-basis:100%}.rt-workspace--single.rt-workspace--has-active .rt-workspace__list{display:none}.rt-workspace--single.rt-workspace--has-active .rt-workspace__center{flex-basis:100%}.rt-workspace--single.rt-workspace--cards{gap:0}@container rt-place (width <= 768px){.rt-workspace--has-active:not(.rt-workspace--breakpoint) .rt-workspace__list{display:none}.rt-workspace--has-active:not(.rt-workspace--breakpoint) .rt-workspace__center{flex-basis:100%}}@media(width<=768px){:where(html:not(:has(.rt-container))) .rt-workspace--has-active:not(.rt-workspace--breakpoint) .rt-workspace__list{display:none}:where(html:not(:has(.rt-container))) .rt-workspace--has-active:not(.rt-workspace--breakpoint) .rt-workspace__center{flex-basis:100%}}@container rt-place (width > 1080px){.rt-workspace--aside-collapsed .rt-workspace__aside{flex-basis:0;border-inline-start-width:0;min-inline-size:0;opacity:0;pointer-events:none;transition:flex-basis var(--rt-workspace-panel-transition-duration) ease,border-inline-start-width var(--rt-workspace-panel-transition-duration) ease,opacity var(--rt-workspace-panel-transition-duration) ease,visibility 0s linear var(--rt-workspace-panel-transition-duration);visibility:hidden}.rt-workspace--aside-collapsed .rt-workspace__handle--aside{display:none}}@media(width>1080px){:where(html:not(:has(.rt-container))) .rt-workspace--aside-collapsed .rt-workspace__aside{flex-basis:0;border-inline-start-width:0;min-inline-size:0;opacity:0;pointer-events:none;transition:flex-basis var(--rt-workspace-panel-transition-duration) ease,border-inline-start-width var(--rt-workspace-panel-transition-duration) ease,opacity var(--rt-workspace-panel-transition-duration) ease,visibility 0s linear var(--rt-workspace-panel-transition-duration);visibility:hidden}:where(html:not(:has(.rt-container))) .rt-workspace--aside-collapsed .rt-workspace__handle--aside{display:none}}.rt-workspace--cards{--rt-workspace-card-gap: var(--rt-space-4);--rt-workspace-card-radius: var(--rt-radius-xl);gap:0}.rt-workspace--cards .rt-workspace__list,.rt-workspace--cards .rt-workspace__center,.rt-workspace--cards .rt-workspace__aside{overflow:hidden;border:var(--rt-workspace-border-width) solid var(--rt-color-border-subtle);border-radius:var(--rt-workspace-card-radius);background:var(--rt-color-bg-surface)}.rt-workspace--cards .rt-workspace__center{padding-inline:0}.rt-workspace--cards .rt-workspace__handle{inline-size:var(--rt-workspace-card-gap);margin-inline:0}@container rt-place (width <= 1080px){.rt-workspace--cards{gap:var(--rt-workspace-card-gap)}}@media(width<=1080px){:where(html:not(:has(.rt-container))) .rt-workspace--cards{gap:var(--rt-workspace-card-gap)}}@container rt-place (width <= 768px){.rt-workspace--cards:not(.rt-workspace--breakpoint){gap:0}}@media(width<=768px){:where(html:not(:has(.rt-container))) .rt-workspace--cards:not(.rt-workspace--breakpoint){gap:0}}.rt-workspace--resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}.rt-workspace--resizing .rt-workspace__list,.rt-workspace--resizing .rt-workspace__aside{transition:none}@media(prefers-reduced-motion:reduce){.rt-workspace__aside{transition:none}}.rt-workspace-aside-overlay{display:contents}.rt-workspace-aside-overlay .rt-aside__content{display:flex;flex-direction:column;padding:0}@media(width<=768px){.rt-aside-overlay.rt-workspace-aside-pane{width:auto;max-width:100dvw}}}\n"]
554
749
  }]
555
750
  }],
556
751
  ctorParameters: () => [],
@@ -647,6 +842,22 @@ i0.ɵɵngDeclareClassMetadata({
647
842
  required: false
648
843
  }]
649
844
  }],
845
+ singleColumnBreakpoint: [{
846
+ type: i0.Input,
847
+ args: [{
848
+ isSignal: true,
849
+ alias: "singleColumnBreakpoint",
850
+ required: false
851
+ }]
852
+ }],
853
+ asideOverlayWidth: [{
854
+ type: i0.Input,
855
+ args: [{
856
+ isSignal: true,
857
+ alias: "asideOverlayWidth",
858
+ required: false
859
+ }]
860
+ }],
650
861
  backClicked: [{
651
862
  type: i0.Output,
652
863
  args: ["backClicked"]