@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
JavaScript
(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