feat(platform): sprint 11.5 standardization
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
||||
import { ChangeDetectionStrategy, Component, Input, inject } from '@angular/core';
|
||||
import { NgComponentOutlet } from '@angular/common';
|
||||
import { Router } from '@angular/router';
|
||||
import { Observable } from 'rxjs';
|
||||
@@ -9,6 +9,7 @@ import { ResolvedWidget } from '../../widgets/contracts/widget-component.contrac
|
||||
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';
|
||||
import { AuthService } from '../../services/auth.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-dynamic-page-layout',
|
||||
@@ -34,10 +35,19 @@ import { Category } from '../../core/categories/models/category-domain.model';
|
||||
[style.--section-align]="section.layout?.align ?? null"
|
||||
>
|
||||
@for (widget of section.widgets; track widget.id) {
|
||||
@if (isWidgetPermitted(widget.source)) {
|
||||
<div
|
||||
class="dynamic-widget"
|
||||
[attr.data-widget-type]="widget.type"
|
||||
[attr.data-widget-title]="widget.source.title ?? null"
|
||||
[attr.data-widget-subtitle]="widget.source.subtitle ?? null"
|
||||
[attr.data-widget-animation]="widget.source.animation?.name ?? null"
|
||||
[style.--widget-padding]="widget.padding ?? null"
|
||||
[style.--widget-animation-duration]="widget.source.animation?.duration ?? null"
|
||||
[style.--widget-animation-delay]="widget.source.animation?.delay ?? null"
|
||||
[style.--widget-animation-timing]="widget.source.animation?.timingFunction ?? null"
|
||||
[style.animation-name]="widget.source.animation?.name ?? null"
|
||||
[ngStyle]="widget.source.style ?? null"
|
||||
[class.dynamic-widget--desktop-hidden]="widget.visibility?.desktop === false"
|
||||
[class.dynamic-widget--tablet-hidden]="widget.visibility?.tablet === false"
|
||||
[class.dynamic-widget--mobile-hidden]="widget.visibility?.mobile === false"
|
||||
@@ -50,6 +60,7 @@ import { Category } from '../../core/categories/models/category-domain.model';
|
||||
}
|
||||
}
|
||||
</div>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
@@ -82,6 +93,9 @@ import { Category } from '../../core/categories/models/category-domain.model';
|
||||
|
||||
.dynamic-widget {
|
||||
padding: var(--widget-padding, 0);
|
||||
animation-duration: var(--widget-animation-duration, initial);
|
||||
animation-delay: var(--widget-animation-delay, initial);
|
||||
animation-timing-function: var(--widget-animation-timing, initial);
|
||||
}
|
||||
|
||||
.dynamic-section[data-section-layout='grid'] .dynamic-section__content {
|
||||
@@ -116,6 +130,8 @@ import { Category } from '../../core/categories/models/category-domain.model';
|
||||
export class DynamicPageLayoutComponent {
|
||||
@Input() model: PageRenderModel | null = null;
|
||||
|
||||
private readonly authService = inject(AuthService);
|
||||
|
||||
constructor(
|
||||
private readonly widgetHost: WidgetHostService,
|
||||
private readonly router: Router,
|
||||
@@ -129,4 +145,17 @@ export class DynamicPageLayoutComponent {
|
||||
onCategorySelected(category: Category): void {
|
||||
this.router.navigate([`/${this.languageService.currentLanguage()}/catalog`, category.id]);
|
||||
}
|
||||
|
||||
isWidgetPermitted(widget: WidgetRenderNode['source']): boolean {
|
||||
const permissions = widget.permissions;
|
||||
if (!permissions) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (permissions.requireAuthenticated && !this.authService.isAuthenticated()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user