cleanup: remove tenant variant logic and enforce config-driven UI

This commit is contained in:
sdarbinyan
2026-07-05 04:07:25 +04:00
parent 79a12c0ec2
commit 6550250d13
19 changed files with 153 additions and 1102 deletions

View File

@@ -1,11 +1,14 @@
import { CommonModule } from '@angular/common';
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
import { NgComponentOutlet } from '@angular/common';
import { Router } from '@angular/router';
import { Observable } from 'rxjs';
import { PageRenderModel } from '../../dynamic-renderer/page-renderer/page-renderer.model';
import { WidgetRenderNode } from '../../dynamic-renderer/widget-host/widget-host.model';
import { ResolvedWidget } from '../../widgets/contracts/widget-component.contract';
import { WidgetHostService } from '../../dynamic-renderer/widget-host/widget-host.service';
import { LanguageService } from '../../services/language.service';
import { Category } from '../../core/categories/models/category-domain.model';
@Component({
selector: 'app-dynamic-page-layout',
@@ -33,7 +36,7 @@ import { WidgetHostService } from '../../dynamic-renderer/widget-host/widget-hos
@for (widget of section.widgets; track widget.id) {
<div class="dynamic-widget" [attr.data-widget-type]="widget.type">
@if (resolveWidget(widget, section, model.id) | async; as resolved) {
<ng-container *ngComponentOutlet="$any(resolved).component; inputs: { section: $any(resolved).section, data: $any(resolved).data }"></ng-container>
<ng-container *ngComponentOutlet="$any(resolved).component; inputs: { section: $any(resolved).section, data: $any(resolved).data }; outputs: { categorySelected: onCategorySelected.bind(this) }"></ng-container>
}
</div>
}
@@ -78,9 +81,17 @@ import { WidgetHostService } from '../../dynamic-renderer/widget-host/widget-hos
export class DynamicPageLayoutComponent {
@Input() model: PageRenderModel | null = null;
constructor(private readonly widgetHost: WidgetHostService) {}
constructor(
private readonly widgetHost: WidgetHostService,
private readonly router: Router,
private readonly languageService: LanguageService
) {}
resolveWidget(widget: WidgetRenderNode, section: PageRenderModel['sections'][number], pageId: string): Observable<ResolvedWidget> {
return this.widgetHost.resolveWidget(widget.source, section.source, pageId);
}
onCategorySelected(category: Category): void {
this.router.navigate([`/${this.languageService.currentLanguage()}/catalog`, category.id]);
}
}