feat(ux): implement sprint 11 user experience module
This commit is contained in:
@@ -8,6 +8,9 @@ import { RegionSelectorComponent } from '../region-selector/region-selector.comp
|
||||
import { LangRoutePipe } from '../../pipes/lang-route.pipe';
|
||||
import { TranslatePipe } from '../../i18n/translate.pipe';
|
||||
import { UiRuntimeFacade } from '../../facades/runtime/ui-runtime.facade';
|
||||
import { UserExperienceFacade } from '../../facades/platform/user-experience.facade';
|
||||
import { ConfigService } from '../../core/config/config.service';
|
||||
import { DEFAULT_USER_EXPERIENCE_CONFIG } from '../../shared/models/config';
|
||||
|
||||
@Component({
|
||||
selector: 'app-header',
|
||||
@@ -25,6 +28,12 @@ export class HeaderComponent {
|
||||
private document = inject(DOCUMENT);
|
||||
private langService = inject(LanguageService);
|
||||
private uiRuntime = inject(UiRuntimeFacade);
|
||||
private uxFacade = inject(UserExperienceFacade);
|
||||
private configService = inject(ConfigService);
|
||||
|
||||
readonly wishlistCount = this.uxFacade.wishlistCount;
|
||||
readonly compareCount = this.uxFacade.compareCount;
|
||||
readonly userExperienceConfig = this.resolveUserExperienceConfig();
|
||||
|
||||
constructor(private cartService: CartService, private router: Router) {
|
||||
this.cartItemCount = this.cartService.itemCount;
|
||||
@@ -89,6 +98,18 @@ export class HeaderComponent {
|
||||
});
|
||||
}
|
||||
|
||||
navigateToWishlist(): void {
|
||||
this.closeMenu();
|
||||
const lang = this.langService.currentLanguage();
|
||||
this.router.navigate([`/${lang}/wishlist`]);
|
||||
}
|
||||
|
||||
navigateToCompare(): void {
|
||||
this.closeMenu();
|
||||
const lang = this.langService.currentLanguage();
|
||||
this.router.navigate([`/${lang}/compare`]);
|
||||
}
|
||||
|
||||
formatCartTotal(total: number): string {
|
||||
const locale = this.langService.currentLanguage() === 'en'
|
||||
? 'en-US'
|
||||
@@ -104,4 +125,21 @@ export class HeaderComponent {
|
||||
|
||||
return `${amount} ${currencySymbol}`;
|
||||
}
|
||||
|
||||
private resolveUserExperienceConfig() {
|
||||
const raw = (this.configService.getBootstrapSnapshot() as any)?.userExperience ?? {};
|
||||
|
||||
return {
|
||||
...DEFAULT_USER_EXPERIENCE_CONFIG,
|
||||
...raw,
|
||||
wishlist: {
|
||||
...DEFAULT_USER_EXPERIENCE_CONFIG.wishlist,
|
||||
...(raw.wishlist ?? {})
|
||||
},
|
||||
compare: {
|
||||
...DEFAULT_USER_EXPERIENCE_CONFIG.compare,
|
||||
...(raw.compare ?? {})
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user