180 lines
4.8 KiB
TypeScript
180 lines
4.8 KiB
TypeScript
import { CanMatchFn, Routes } from '@angular/router';
|
|
|
|
const SUPPORTED_LANGS = new Set(['it', 'en', 'de', 'fr']);
|
|
|
|
const langPrefixCanMatch: CanMatchFn = (_route, segments) => {
|
|
if (segments.length === 0) {
|
|
return false;
|
|
}
|
|
return SUPPORTED_LANGS.has(segments[0].path.toLowerCase());
|
|
};
|
|
|
|
const appChildRoutes: Routes = [
|
|
{
|
|
path: '',
|
|
loadComponent: () =>
|
|
import('./features/home/home.component').then((m) => m.HomeComponent),
|
|
data: {
|
|
seoTitleKey: 'SEO.ROUTES.HOME.TITLE',
|
|
seoDescriptionKey: 'SEO.ROUTES.HOME.DESCRIPTION',
|
|
},
|
|
},
|
|
{
|
|
path: 'calculator',
|
|
loadChildren: () =>
|
|
import('./features/calculator/calculator.routes').then(
|
|
(m) => m.CALCULATOR_ROUTES,
|
|
),
|
|
data: {
|
|
seoTitleKey: 'SEO.ROUTES.CALCULATOR.TITLE',
|
|
seoDescriptionKey: 'SEO.ROUTES.CALCULATOR.DESCRIPTION',
|
|
},
|
|
},
|
|
{
|
|
path: 'shop',
|
|
loadChildren: () =>
|
|
import('./features/shop/shop.routes').then((m) => m.SHOP_ROUTES),
|
|
data: {
|
|
seoTitleKey: 'SEO.ROUTES.SHOP.TITLE',
|
|
seoDescriptionKey: 'SEO.ROUTES.SHOP.DESCRIPTION',
|
|
},
|
|
},
|
|
{
|
|
path: 'about',
|
|
loadChildren: () =>
|
|
import('./features/about/about.routes').then((m) => m.ABOUT_ROUTES),
|
|
data: {
|
|
seoTitleKey: 'SEO.ROUTES.ABOUT.TITLE',
|
|
seoDescriptionKey: 'SEO.ROUTES.ABOUT.DESCRIPTION',
|
|
},
|
|
},
|
|
/* {
|
|
path: 'materials',
|
|
loadComponent: () =>
|
|
import('./features/materials/materials-page.component').then(
|
|
(m) => m.MaterialsPageComponent,
|
|
),
|
|
data: {
|
|
seoTitleKey: 'SEO.ROUTES.MATERIALS.TITLE',
|
|
seoDescriptionKey: 'SEO.ROUTES.MATERIALS.DESCRIPTION',
|
|
},
|
|
},*/
|
|
{
|
|
path: 'contact',
|
|
loadChildren: () =>
|
|
import('./features/contact/contact.routes').then((m) => m.CONTACT_ROUTES),
|
|
data: {
|
|
seoTitleKey: 'SEO.ROUTES.CONTACT.TITLE',
|
|
seoDescriptionKey: 'SEO.ROUTES.CONTACT.DESCRIPTION',
|
|
},
|
|
},
|
|
{
|
|
path: 'checkout/cad',
|
|
loadComponent: () =>
|
|
import('./features/checkout/checkout.component').then(
|
|
(m) => m.CheckoutComponent,
|
|
),
|
|
data: {
|
|
seoTitleKey: 'SEO.ROUTES.CHECKOUT.TITLE',
|
|
seoDescriptionKey: 'SEO.ROUTES.CHECKOUT.DESCRIPTION',
|
|
seoRobots: 'noindex, nofollow',
|
|
},
|
|
},
|
|
{
|
|
path: 'checkout',
|
|
loadComponent: () =>
|
|
import('./features/checkout/checkout.component').then(
|
|
(m) => m.CheckoutComponent,
|
|
),
|
|
data: {
|
|
seoTitleKey: 'SEO.ROUTES.CHECKOUT.TITLE',
|
|
seoDescriptionKey: 'SEO.ROUTES.CHECKOUT.DESCRIPTION',
|
|
seoRobots: 'noindex, nofollow',
|
|
},
|
|
},
|
|
{
|
|
path: 'order/:orderId',
|
|
loadComponent: () =>
|
|
import('./features/order/order.component').then((m) => m.OrderComponent),
|
|
data: {
|
|
seoTitleKey: 'SEO.ROUTES.ORDER.TITLE',
|
|
seoDescriptionKey: 'SEO.ROUTES.ORDER.DESCRIPTION',
|
|
seoRobots: 'noindex, nofollow',
|
|
},
|
|
},
|
|
{
|
|
path: 'co/:orderId',
|
|
loadComponent: () =>
|
|
import('./features/order/order.component').then((m) => m.OrderComponent),
|
|
data: {
|
|
seoTitleKey: 'SEO.ROUTES.ORDER.TITLE',
|
|
seoDescriptionKey: 'SEO.ROUTES.ORDER.DESCRIPTION',
|
|
seoRobots: 'noindex, nofollow',
|
|
},
|
|
},
|
|
{
|
|
path: '',
|
|
loadChildren: () =>
|
|
import('./features/legal/legal.routes').then((m) => m.LEGAL_ROUTES),
|
|
},
|
|
{
|
|
path: 'admin',
|
|
loadChildren: () =>
|
|
import('./features/admin/admin.routes').then((m) => m.ADMIN_ROUTES),
|
|
data: {
|
|
seoTitleKey: 'SEO.ROUTES.ADMIN.TITLE',
|
|
seoDescriptionKey: 'SEO.ROUTES.ADMIN.DESCRIPTION',
|
|
seoRobots: 'noindex, nofollow',
|
|
},
|
|
},
|
|
{
|
|
path: '**',
|
|
redirectTo: '',
|
|
},
|
|
];
|
|
|
|
export const routes: Routes = [
|
|
{
|
|
path: ':lang/calculator/animation-test',
|
|
canMatch: [langPrefixCanMatch],
|
|
loadComponent: () =>
|
|
import('./features/calculator/calculator-animation-test.component').then(
|
|
(m) => m.CalculatorAnimationTestComponent,
|
|
),
|
|
data: {
|
|
seoTitleKey: 'SEO.ROUTES.CALCULATOR.TITLE',
|
|
seoDescriptionKey: 'SEO.ROUTES.CALCULATOR.DESCRIPTION',
|
|
seoRobots: 'noindex, nofollow',
|
|
},
|
|
},
|
|
{
|
|
path: 'calculator/animation-test',
|
|
loadComponent: () =>
|
|
import('./features/calculator/calculator-animation-test.component').then(
|
|
(m) => m.CalculatorAnimationTestComponent,
|
|
),
|
|
data: {
|
|
seoTitleKey: 'SEO.ROUTES.CALCULATOR.TITLE',
|
|
seoDescriptionKey: 'SEO.ROUTES.CALCULATOR.DESCRIPTION',
|
|
seoRobots: 'noindex, nofollow',
|
|
},
|
|
},
|
|
{
|
|
path: ':lang',
|
|
canMatch: [langPrefixCanMatch],
|
|
loadComponent: () =>
|
|
import('./core/layout/layout.component').then((m) => m.LayoutComponent),
|
|
children: appChildRoutes,
|
|
},
|
|
{
|
|
path: '',
|
|
loadComponent: () =>
|
|
import('./core/layout/layout.component').then((m) => m.LayoutComponent),
|
|
children: appChildRoutes,
|
|
},
|
|
{
|
|
path: '**',
|
|
redirectTo: '',
|
|
},
|
|
];
|