UNPKG

@spartacus/cart

Version:

`@spartacus/cart` is a package that you can include in your application, which allows you to use various cart features.

239 lines (230 loc) 10.8 kB
import * as i0 from '@angular/core'; import { Injectable, isDevMode, NgModule } from '@angular/core'; import * as i2 from '@spartacus/core'; import { Config, facadeFactory, provideDefaultConfigFactory, provideDefaultConfig } from '@spartacus/core'; import { Subject, forkJoin, of, from } from 'rxjs'; import { take, catchError, switchMap, filter, tap } from 'rxjs/operators'; import { OrderEntriesSource, ProductImportStatus, CmsPageGuard, PageLayoutComponent, ORDER_ENTRIES_CONTEXT } from '@spartacus/storefront'; import * as i1 from '@angular/router'; import { RouterModule } from '@angular/router'; const defaultQuickOrderConfig = { quickOrder: { searchForm: { displayProductImages: true, maxProducts: 5, minCharactersBeforeRequest: 3, }, }, }; class QuickOrderConfig { } QuickOrderConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: QuickOrderConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); QuickOrderConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: QuickOrderConfig, providedIn: 'root', useExisting: Config }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: QuickOrderConfig, decorators: [{ type: Injectable, args: [{ providedIn: 'root', useExisting: Config, }] }] }); const CART_QUICK_ORDER_FEATURE = 'cartQuickOrder'; const CART_QUICK_ORDER_CORE_FEATURE = 'cartQuickOrderCore'; function quickOrderFacadeFactory() { return facadeFactory({ facade: QuickOrderFacade, feature: CART_QUICK_ORDER_CORE_FEATURE, methods: [ 'addProduct', 'addToCart', 'clearList', 'canAdd', 'setListLimit', 'getEntries', 'getProductAdded', 'loadEntries', 'softDeleteEntry', 'search', 'searchProducts', 'setProductAdded', 'updateEntryQuantity', 'getSoftDeletedEntries', 'restoreSoftDeletedEntry', 'hardDeleteEntry', 'clearDeletedEntries', 'getNonPurchasableProductError', 'setNonPurchasableProductError', 'clearNonPurchasableProductError', ], }); } class QuickOrderFacade { } QuickOrderFacade.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: QuickOrderFacade, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); QuickOrderFacade.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: QuickOrderFacade, providedIn: 'root', useFactory: quickOrderFacadeFactory }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: QuickOrderFacade, decorators: [{ type: Injectable, args: [{ providedIn: 'root', useFactory: quickOrderFacadeFactory, }] }] }); class QuickOrderOrderEntriesContext { constructor(quickOrderService, productConnector) { this.quickOrderService = quickOrderService; this.productConnector = productConnector; this.type = OrderEntriesSource.QUICK_ORDER; } getEntries() { return this.quickOrderService.getEntries(); } addEntries(productsData) { const results$ = new Subject(); forkJoin(productsData.map((productData) => this.productConnector.get(productData.productCode).pipe(take(1), catchError((response) => { this.handleErrors(response, productData.productCode, results$); return of(null); })))) .pipe(switchMap((products) => from(products).pipe(filter((product) => !!product), switchMap((product) => this.quickOrderService.canAdd(product.code).pipe(take(1), tap((canAdd) => { const productData = productsData.find((p) => p.productCode === product.code); if (canAdd) { this.handleResults(product, productData, results$); this.quickOrderService.addProduct(product, productData.quantity); } else { results$.next({ productCode: productData.productCode, statusCode: ProductImportStatus.LIMIT_EXCEEDED, }); } })))))) .subscribe(); return results$.pipe(take(productsData.length)); } handleResults(product, productData, results$) { var _a, _b; if (((_a = product.stock) === null || _a === void 0 ? void 0 : _a.stockLevel) && productData.quantity >= product.stock.stockLevel) { results$.next({ productCode: productData.productCode, productName: product === null || product === void 0 ? void 0 : product.name, statusCode: ProductImportStatus.LOW_STOCK, quantity: productData.quantity, quantityAdded: product.stock.stockLevel, }); } else if (((_b = product.stock) === null || _b === void 0 ? void 0 : _b.stockLevelStatus) === 'outOfStock') { results$.next({ productCode: productData.productCode, statusCode: ProductImportStatus.NO_STOCK, productName: product === null || product === void 0 ? void 0 : product.name, }); } else { results$.next({ productCode: productData.productCode, statusCode: ProductImportStatus.SUCCESS, }); } } handleErrors(response, productCode, results$) { var _a; if (((_a = response === null || response === void 0 ? void 0 : response.error) === null || _a === void 0 ? void 0 : _a.errors[0].type) === 'UnknownIdentifierError') { results$.next({ productCode, statusCode: ProductImportStatus.UNKNOWN_IDENTIFIER, }); } else { if (isDevMode()) { console.warn('Unrecognized cart add entry action type while mapping messages', response); } results$.next({ productCode, statusCode: ProductImportStatus.UNKNOWN_ERROR, }); } } } QuickOrderOrderEntriesContext.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: QuickOrderOrderEntriesContext, deps: [{ token: QuickOrderFacade }, { token: i2.ProductConnector }], target: i0.ɵɵFactoryTarget.Injectable }); QuickOrderOrderEntriesContext.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: QuickOrderOrderEntriesContext, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: QuickOrderOrderEntriesContext, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: function () { return [{ type: QuickOrderFacade }, { type: i2.ProductConnector }]; } }); function defaultQuickOrderComponentsConfig() { const config = { featureModules: { [CART_QUICK_ORDER_FEATURE]: { cmsComponents: ['QuickOrderComponent', 'CartQuickOrderFormComponent'], }, // by default core is bundled together with components [CART_QUICK_ORDER_CORE_FEATURE]: CART_QUICK_ORDER_FEATURE, }, }; return config; } const defaultQuickOrderRoutingConfig = { routing: { routes: { quickOrder: { paths: ['my-account/quick-order'], }, }, }, }; class QuickOrderRootModule { } QuickOrderRootModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: QuickOrderRootModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); QuickOrderRootModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: QuickOrderRootModule, imports: [i1.RouterModule] }); QuickOrderRootModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: QuickOrderRootModule, providers: [ provideDefaultConfigFactory(defaultQuickOrderComponentsConfig), provideDefaultConfig(defaultQuickOrderRoutingConfig), provideDefaultConfig(defaultQuickOrderConfig), ], imports: [[ RouterModule.forChild([ { // @ts-ignore path: null, canActivate: [CmsPageGuard], component: PageLayoutComponent, data: { cxRoute: 'quickOrder', cxContext: { [ORDER_ENTRIES_CONTEXT]: QuickOrderOrderEntriesContext, }, }, }, ]), ]] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: QuickOrderRootModule, decorators: [{ type: NgModule, args: [{ imports: [ RouterModule.forChild([ { // @ts-ignore path: null, canActivate: [CmsPageGuard], component: PageLayoutComponent, data: { cxRoute: 'quickOrder', cxContext: { [ORDER_ENTRIES_CONTEXT]: QuickOrderOrderEntriesContext, }, }, }, ]), ], providers: [ provideDefaultConfigFactory(defaultQuickOrderComponentsConfig), provideDefaultConfig(defaultQuickOrderRoutingConfig), provideDefaultConfig(defaultQuickOrderConfig), ], }] }] }); /** * Generated bundle index. Do not edit. */ export { CART_QUICK_ORDER_CORE_FEATURE, CART_QUICK_ORDER_FEATURE, QuickOrderConfig, QuickOrderFacade, QuickOrderOrderEntriesContext, QuickOrderRootModule, defaultQuickOrderComponentsConfig, defaultQuickOrderConfig, defaultQuickOrderRoutingConfig, quickOrderFacadeFactory }; //# sourceMappingURL=spartacus-cart-quick-order-root.js.map