feature-libs/cart/saved-cart/root/saved-cart-root.module.ts
import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';
import {
AuthGuard,
CmsConfig,
provideDefaultConfig,
provideDefaultConfigFactory,
RoutingConfig,
} from '@spartacus/core';
import {
CmsPageGuard,
ORDER_ENTRIES_CONTEXT,
PageLayoutComponent,
} from '@spartacus/storefront';
import {
CART_SAVED_CART_CORE_FEATURE,
CART_SAVED_CART_FEATURE,
} from './feature-name';
import { SavedCartOrderEntriesContext } from './pages/saved-cart-details-page/saved-cart-order-entries-context';
import { NewSavedCartOrderEntriesContext } from './pages/saved-carts-page/new-saved-cart-order-entries-context';
// TODO: Inline this factory when we start releasing Ivy compiled libraries
export function defaultCartSavedCartComponentsConfig(): CmsConfig {
const config: CmsConfig = {
featureModules: {
[CART_SAVED_CART_FEATURE]: {
cmsComponents: [
'AddToSavedCartsComponent',
'AccountSavedCartHistoryComponent',
'SavedCartDetailsOverviewComponent',
'SavedCartDetailsItemsComponent',
'SavedCartDetailsActionComponent',
],
},
// by default core is bundled together with components
[CART_SAVED_CART_CORE_FEATURE]: CART_SAVED_CART_FEATURE,
},
};
return config;
}
@NgModule({
imports: [
RouterModule.forChild([
{
// @ts-ignore
path: null,
canActivate: [AuthGuard, CmsPageGuard],
component: PageLayoutComponent,
data: {
cxRoute: 'savedCartsDetails',
cxContext: {
[ORDER_ENTRIES_CONTEXT]: SavedCartOrderEntriesContext,
},
},
},
{
// @ts-ignore
path: null,
canActivate: [AuthGuard, CmsPageGuard],
component: PageLayoutComponent,
data: {
cxRoute: 'savedCarts',
cxContext: {
[ORDER_ENTRIES_CONTEXT]: NewSavedCartOrderEntriesContext,
},
},
},
]),
],
providers: [
provideDefaultConfigFactory(defaultCartSavedCartComponentsConfig),
provideDefaultConfig(<RoutingConfig>{
routing: {
routes: {
savedCarts: {
paths: ['my-account/saved-carts'],
},
savedCartsDetails: {
paths: ['my-account/saved-cart/:savedCartId'],
paramsMapping: { savedCartId: 'savedCartId' },
},
},
},
}),
],
})
export class SavedCartRootModule {}