@rt-tools/ui-kit-v2 0.42.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.
- package/fesm2022/rt-tools-ui-kit-v2-core.mjs +22 -0
- package/fesm2022/rt-tools-ui-kit-v2-core.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs +1778 -18
- package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs +19 -5
- package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs +34 -11
- package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs +725 -47
- package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs +6 -0
- package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-workspace.mjs +217 -6
- package/fesm2022/rt-tools-ui-kit-v2-workspace.mjs.map +1 -1
- package/package.json +1 -1
- package/src/lib/components/page-header/CONTEXT.md +35 -1
- package/src/lib/components/page-header/bar/rt-page-bar.component.scss +161 -0
- package/src/lib/components/page-header/rail/rt-page-actions.component.scss +115 -0
- package/src/lib/components/page-header/rail/rt-page-phone-menu.component.scss +129 -0
- package/src/lib/components/page-header/rail/rt-page-rail.component.scss +281 -0
- package/src/lib/components/page-header/rail/rt-page-user.component.scss +76 -0
- package/src/lib/components/page-header/rt-page-header.component.scss +5 -0
- package/src/lib/components/page-header/stories/component/test-page-header-vertical.component.scss +72 -0
- package/src/lib/components/page-header/stories/component/test-page-table.component.scss +81 -0
- package/src/lib/components/page-header/user/rt-page-header-user.component.scss +6 -0
- package/src/lib/components/stepper/CONTEXT.md +34 -2
- package/src/lib/components/stepper/rt-stepper.component.scss +62 -43
- package/src/lib/components/tabs/CONTEXT.md +30 -1
- package/src/lib/components/tabs/rt-tabs-arrows.scss +140 -0
- package/src/lib/components/tabs/rt-tabs-more-menu.scss +126 -0
- package/src/lib/components/tabs/rt-tabs-more.component.scss +29 -0
- package/src/lib/components/tabs/rt-tabs.component.scss +18 -61
- package/src/lib/components/workspace/CONTEXT.md +11 -1
- package/src/lib/components/workspace/rt-workspace.component.scss +51 -3
- package/src/rich-editor/lib/components/chat/CONTEXT.md +11 -1
- package/src/rich-editor/lib/components/chat/rt-chat-messenger.scss +9 -3
- package/src/rich-editor/lib/components/chat/rt-chat-translation.scss +92 -0
- package/types/rt-tools-ui-kit-v2-core.d.ts +9 -1
- package/types/rt-tools-ui-kit-v2-page-header.d.ts +202 -2
- package/types/rt-tools-ui-kit-v2-rich-editor.d.ts +23 -0
- package/types/rt-tools-ui-kit-v2-stepper.d.ts +20 -6
- package/types/rt-tools-ui-kit-v2-tabs.d.ts +120 -1
- 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":"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"}
|
|
@@ -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 {
|
|
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
|
|
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
|
|
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"]
|