UNPKG

@spartacus/cart

Version:

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

285 lines (272 loc) 14.9 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@spartacus/core'), require('rxjs'), require('rxjs/operators'), require('@spartacus/storefront'), require('@angular/router')) : typeof define === 'function' && define.amd ? define('@spartacus/cart/quick-order/root', ['exports', '@angular/core', '@spartacus/core', 'rxjs', 'rxjs/operators', '@spartacus/storefront', '@angular/router'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.spartacus = global.spartacus || {}, global.spartacus.cart = global.spartacus.cart || {}, global.spartacus.cart['quick-order'] = global.spartacus.cart['quick-order'] || {}, global.spartacus.cart['quick-order'].root = {}), global.ng.core, global.core, global.rxjs, global.rxjs.operators, global.storefront, global.ng.router)); }(this, (function (exports, i0, i2, rxjs, operators, storefront, i1) { 'use strict'; function _interopNamespace(e) { if (e && e.__esModule) return e; var n = Object.create(null); if (e) { Object.keys(e).forEach(function (k) { if (k !== 'default') { var d = Object.getOwnPropertyDescriptor(e, k); Object.defineProperty(n, k, d.get ? d : { enumerable: true, get: function () { return e[k]; } }); } }); } n['default'] = e; return Object.freeze(n); } var i0__namespace = /*#__PURE__*/_interopNamespace(i0); var i2__namespace = /*#__PURE__*/_interopNamespace(i2); var i1__namespace = /*#__PURE__*/_interopNamespace(i1); var defaultQuickOrderConfig = { quickOrder: { searchForm: { displayProductImages: true, maxProducts: 5, minCharactersBeforeRequest: 3, }, }, }; var QuickOrderConfig = /** @class */ (function () { function QuickOrderConfig() { } return QuickOrderConfig; }()); QuickOrderConfig.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0__namespace, type: QuickOrderConfig, deps: [], target: i0__namespace.ɵɵFactoryTarget.Injectable }); QuickOrderConfig.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0__namespace, type: QuickOrderConfig, providedIn: 'root', useExisting: i2.Config }); i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0__namespace, type: QuickOrderConfig, decorators: [{ type: i0.Injectable, args: [{ providedIn: 'root', useExisting: i2.Config, }] }] }); var CART_QUICK_ORDER_FEATURE = 'cartQuickOrder'; var CART_QUICK_ORDER_CORE_FEATURE = 'cartQuickOrderCore'; function quickOrderFacadeFactory() { return i2.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', ], }); } var QuickOrderFacade = /** @class */ (function () { function QuickOrderFacade() { } return QuickOrderFacade; }()); QuickOrderFacade.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0__namespace, type: QuickOrderFacade, deps: [], target: i0__namespace.ɵɵFactoryTarget.Injectable }); QuickOrderFacade.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0__namespace, type: QuickOrderFacade, providedIn: 'root', useFactory: quickOrderFacadeFactory }); i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0__namespace, type: QuickOrderFacade, decorators: [{ type: i0.Injectable, args: [{ providedIn: 'root', useFactory: quickOrderFacadeFactory, }] }] }); var QuickOrderOrderEntriesContext = /** @class */ (function () { function QuickOrderOrderEntriesContext(quickOrderService, productConnector) { this.quickOrderService = quickOrderService; this.productConnector = productConnector; this.type = storefront.OrderEntriesSource.QUICK_ORDER; } QuickOrderOrderEntriesContext.prototype.getEntries = function () { return this.quickOrderService.getEntries(); }; QuickOrderOrderEntriesContext.prototype.addEntries = function (productsData) { var _this = this; var results$ = new rxjs.Subject(); rxjs.forkJoin(productsData.map(function (productData) { return _this.productConnector.get(productData.productCode).pipe(operators.take(1), operators.catchError(function (response) { _this.handleErrors(response, productData.productCode, results$); return rxjs.of(null); })); })) .pipe(operators.switchMap(function (products) { return rxjs.from(products).pipe(operators.filter(function (product) { return !!product; }), operators.switchMap(function (product) { return _this.quickOrderService.canAdd(product.code).pipe(operators.take(1), operators.tap(function (canAdd) { var productData = productsData.find(function (p) { return p.productCode === product.code; }); if (canAdd) { _this.handleResults(product, productData, results$); _this.quickOrderService.addProduct(product, productData.quantity); } else { results$.next({ productCode: productData.productCode, statusCode: storefront.ProductImportStatus.LIMIT_EXCEEDED, }); } })); })); })) .subscribe(); return results$.pipe(operators.take(productsData.length)); }; QuickOrderOrderEntriesContext.prototype.handleResults = function (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: storefront.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: storefront.ProductImportStatus.NO_STOCK, productName: product === null || product === void 0 ? void 0 : product.name, }); } else { results$.next({ productCode: productData.productCode, statusCode: storefront.ProductImportStatus.SUCCESS, }); } }; QuickOrderOrderEntriesContext.prototype.handleErrors = function (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: productCode, statusCode: storefront.ProductImportStatus.UNKNOWN_IDENTIFIER, }); } else { if (i0.isDevMode()) { console.warn('Unrecognized cart add entry action type while mapping messages', response); } results$.next({ productCode: productCode, statusCode: storefront.ProductImportStatus.UNKNOWN_ERROR, }); } }; return QuickOrderOrderEntriesContext; }()); QuickOrderOrderEntriesContext.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0__namespace, type: QuickOrderOrderEntriesContext, deps: [{ token: QuickOrderFacade }, { token: i2__namespace.ProductConnector }], target: i0__namespace.ɵɵFactoryTarget.Injectable }); QuickOrderOrderEntriesContext.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0__namespace, type: QuickOrderOrderEntriesContext, providedIn: 'root' }); i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0__namespace, type: QuickOrderOrderEntriesContext, decorators: [{ type: i0.Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: function () { return [{ type: QuickOrderFacade }, { type: i2__namespace.ProductConnector }]; } }); var _a, _b; function defaultQuickOrderComponentsConfig() { var _a; var config = { featureModules: (_a = {}, _a[CART_QUICK_ORDER_FEATURE] = { cmsComponents: ['QuickOrderComponent', 'CartQuickOrderFormComponent'], }, // by default core is bundled together with components _a[CART_QUICK_ORDER_CORE_FEATURE] = CART_QUICK_ORDER_FEATURE, _a), }; return config; } var defaultQuickOrderRoutingConfig = { routing: { routes: { quickOrder: { paths: ['my-account/quick-order'], }, }, }, }; var QuickOrderRootModule = /** @class */ (function () { function QuickOrderRootModule() { } return QuickOrderRootModule; }()); QuickOrderRootModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0__namespace, type: QuickOrderRootModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule }); QuickOrderRootModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0__namespace, type: QuickOrderRootModule, imports: [i1__namespace.RouterModule] }); QuickOrderRootModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0__namespace, type: QuickOrderRootModule, providers: [ i2.provideDefaultConfigFactory(defaultQuickOrderComponentsConfig), i2.provideDefaultConfig(defaultQuickOrderRoutingConfig), i2.provideDefaultConfig(defaultQuickOrderConfig), ], imports: [[ i1.RouterModule.forChild([ { // @ts-ignore path: null, canActivate: [storefront.CmsPageGuard], component: storefront.PageLayoutComponent, data: { cxRoute: 'quickOrder', cxContext: (_a = {}, _a[storefront.ORDER_ENTRIES_CONTEXT] = QuickOrderOrderEntriesContext, _a), }, }, ]), ]] }); i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0__namespace, type: QuickOrderRootModule, decorators: [{ type: i0.NgModule, args: [{ imports: [ i1.RouterModule.forChild([ { // @ts-ignore path: null, canActivate: [storefront.CmsPageGuard], component: storefront.PageLayoutComponent, data: { cxRoute: 'quickOrder', cxContext: (_b = {}, _b[storefront.ORDER_ENTRIES_CONTEXT] = QuickOrderOrderEntriesContext, _b), }, }, ]), ], providers: [ i2.provideDefaultConfigFactory(defaultQuickOrderComponentsConfig), i2.provideDefaultConfig(defaultQuickOrderRoutingConfig), i2.provideDefaultConfig(defaultQuickOrderConfig), ], }] }] }); /** * Generated bundle index. Do not edit. */ exports.CART_QUICK_ORDER_CORE_FEATURE = CART_QUICK_ORDER_CORE_FEATURE; exports.CART_QUICK_ORDER_FEATURE = CART_QUICK_ORDER_FEATURE; exports.QuickOrderConfig = QuickOrderConfig; exports.QuickOrderFacade = QuickOrderFacade; exports.QuickOrderOrderEntriesContext = QuickOrderOrderEntriesContext; exports.QuickOrderRootModule = QuickOrderRootModule; exports.defaultQuickOrderComponentsConfig = defaultQuickOrderComponentsConfig; exports.defaultQuickOrderConfig = defaultQuickOrderConfig; exports.defaultQuickOrderRoutingConfig = defaultQuickOrderRoutingConfig; exports.quickOrderFacadeFactory = quickOrderFacadeFactory; Object.defineProperty(exports, '__esModule', { value: true }); }))); //# sourceMappingURL=spartacus-cart-quick-order-root.umd.js.map