@spartacus/storefront
Version:
Spartacus Storefront is a package that you can include in your application, which allows you to add default storefront features.
56 lines • 12.5 kB
JavaScript
import { ChangeDetectionStrategy, Component } from '@angular/core';
import { PromotionLocation, } from '@spartacus/core';
import { combineLatest, of } from 'rxjs';
import { filter, map, tap } from 'rxjs/operators';
import * as i0 from "@angular/core";
import * as i1 from "@spartacus/core";
import * as i2 from "../validation/cart-warnings/cart-validation-warnings.component";
import * as i3 from "../../misc/promotions/promotions.component";
import * as i4 from "../cart-shared/cart-item-list/cart-item-list.component";
import * as i5 from "@angular/common";
export class CartDetailsComponent {
constructor(activeCartService, selectiveCartService, authService, routingService) {
this.activeCartService = activeCartService;
this.selectiveCartService = selectiveCartService;
this.authService = authService;
this.routingService = routingService;
this.loggedIn = false;
this.promotionLocation = PromotionLocation.ActiveCart;
}
ngOnInit() {
this.cart$ = this.activeCartService.getActive();
this.entries$ = this.activeCartService
.getEntries()
.pipe(filter((entries) => entries.length > 0));
this.selectiveCartEnabled = this.selectiveCartService.isEnabled();
this.cartLoaded$ = combineLatest([
this.activeCartService.isStable(),
this.selectiveCartEnabled
? this.selectiveCartService.isStable()
: of(false),
this.authService.isUserLoggedIn(),
]).pipe(tap(([, , loggedIn]) => (this.loggedIn = loggedIn)), map(([cartLoaded, sflLoaded, loggedIn]) => loggedIn && this.selectiveCartEnabled
? cartLoaded && sflLoaded
: cartLoaded));
}
saveForLater(item) {
if (this.loggedIn) {
this.activeCartService.removeEntry(item);
this.selectiveCartService.addEntry(item.product.code, item.quantity);
}
else {
this.routingService.go({ cxRoute: 'login' });
}
}
}
CartDetailsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: CartDetailsComponent, deps: [{ token: i1.ActiveCartService }, { token: i1.SelectiveCartService }, { token: i1.AuthService }, { token: i1.RoutingService }], target: i0.ɵɵFactoryTarget.Component });
CartDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.5", type: CartDetailsComponent, selector: "cx-cart-details", ngImport: i0, template: "<ng-container *ngIf=\"cart$ | async as cart\">\n <ng-container *ngIf=\"entries$ | async as entries\">\n <div *ngIf=\"cart.totalItems > 0\" class=\"cart-details-wrapper\">\n <ng-container *cxFeatureLevel=\"'4.2'\">\n <cx-cart-validation-warnings></cx-cart-validation-warnings>\n </ng-container>\n\n <h4 class=\"cx-total\">\n {{ 'cartDetails.cartName' | cxTranslate: { code: cart.code } }}\n </h4>\n\n <cx-promotions\n [promotions]=\"\n (cart.appliedOrderPromotions || []).concat(\n cart.potentialOrderPromotions || []\n )\n \"\n ></cx-promotions>\n\n <cx-cart-item-list\n [items]=\"entries\"\n [cartIsLoading]=\"!(cartLoaded$ | async)\"\n [promotionLocation]=\"promotionLocation\"\n [options]=\"{\n isSaveForLater: false,\n optionalBtn: saveForLaterBtn\n }\"\n ></cx-cart-item-list>\n </div>\n </ng-container>\n</ng-container>\n\n<ng-template let-ctx #saveForLaterBtn>\n <div\n *ngIf=\"selectiveCartEnabled\"\n class=\"col-md-3 col-lg-3 col-xl-3 cx-sfl-btn\"\n >\n <button\n class=\"link cx-action-link\"\n [disabled]=\"ctx.loading\"\n (click)=\"saveForLater(ctx.item)\"\n type=\"button\"\n >\n {{ 'saveForLaterItems.saveForLater' | cxTranslate }}\n </button>\n </div>\n</ng-template>\n", components: [{ type: i2.CartValidationWarningsComponent, selector: "cx-cart-validation-warnings" }, { type: i3.PromotionsComponent, selector: "cx-promotions", inputs: ["promotions"] }, { type: i4.CartItemListComponent, selector: "cx-cart-item-list", inputs: ["readonly", "hasHeader", "options", "cartId", "items", "promotionLocation", "cartIsLoading"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.FeatureLevelDirective, selector: "[cxFeatureLevel]", inputs: ["cxFeatureLevel"] }], pipes: { "async": i5.AsyncPipe, "cxTranslate": i1.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: CartDetailsComponent, decorators: [{
type: Component,
args: [{
selector: 'cx-cart-details',
templateUrl: './cart-details.component.html',
changeDetection: ChangeDetectionStrategy.OnPush,
}]
}], ctorParameters: function () { return [{ type: i1.ActiveCartService }, { type: i1.SelectiveCartService }, { type: i1.AuthService }, { type: i1.RoutingService }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0b3JlZnJvbnRsaWIvY21zLWNvbXBvbmVudHMvY2FydC9jYXJ0LWRldGFpbHMvY2FydC1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0b3JlZnJvbnRsaWIvY21zLWNvbXBvbmVudHMvY2FydC9jYXJ0LWRldGFpbHMvY2FydC1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUtMLGlCQUFpQixHQUdsQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBT2xELE1BQU0sT0FBTyxvQkFBb0I7SUFRL0IsWUFDWSxpQkFBb0MsRUFDcEMsb0JBQTBDLEVBQzFDLFdBQXdCLEVBQ3hCLGNBQThCO1FBSDlCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFSMUMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixzQkFBaUIsR0FBc0IsaUJBQWlCLENBQUMsVUFBVSxDQUFDO0lBUWpFLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFaEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsaUJBQWlCO2FBQ25DLFVBQVUsRUFBRTthQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVqRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWxFLElBQUksQ0FBQyxXQUFXLEdBQUcsYUFBYSxDQUFDO1lBQy9CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUU7WUFDakMsSUFBSSxDQUFDLG9CQUFvQjtnQkFDdkIsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUU7Z0JBQ3RDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ2IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUU7U0FDbEMsQ0FBQyxDQUFDLElBQUksQ0FDTCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQUFBRCxFQUFHLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLENBQUMsRUFDbkQsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FDeEMsUUFBUSxJQUFJLElBQUksQ0FBQyxvQkFBb0I7WUFDbkMsQ0FBQyxDQUFDLFVBQVUsSUFBSSxTQUFTO1lBQ3pCLENBQUMsQ0FBQyxVQUFVLENBQ2YsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFnQjtRQUMzQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN0RTthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUM5QztJQUNILENBQUM7O2lIQS9DVSxvQkFBb0I7cUdBQXBCLG9CQUFvQix1RENsQmpDLDQyQ0ErQ0E7MkZEN0JhLG9CQUFvQjtrQkFMaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixXQUFXLEVBQUUsK0JBQStCO29CQUM1QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFjdGl2ZUNhcnRTZXJ2aWNlLFxuICBBdXRoU2VydmljZSxcbiAgQ2FydCxcbiAgT3JkZXJFbnRyeSxcbiAgUHJvbW90aW9uTG9jYXRpb24sXG4gIFJvdXRpbmdTZXJ2aWNlLFxuICBTZWxlY3RpdmVDYXJ0U2VydmljZSxcbn0gZnJvbSAnQHNwYXJ0YWN1cy9jb3JlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjeC1jYXJ0LWRldGFpbHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FydC1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENhcnREZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY2FydCQ6IE9ic2VydmFibGU8Q2FydD47XG4gIGVudHJpZXMkOiBPYnNlcnZhYmxlPE9yZGVyRW50cnlbXT47XG4gIGNhcnRMb2FkZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBsb2dnZWRJbiA9IGZhbHNlO1xuICBwcm9tb3Rpb25Mb2NhdGlvbjogUHJvbW90aW9uTG9jYXRpb24gPSBQcm9tb3Rpb25Mb2NhdGlvbi5BY3RpdmVDYXJ0O1xuICBzZWxlY3RpdmVDYXJ0RW5hYmxlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgYWN0aXZlQ2FydFNlcnZpY2U6IEFjdGl2ZUNhcnRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBzZWxlY3RpdmVDYXJ0U2VydmljZTogU2VsZWN0aXZlQ2FydFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgcm91dGluZ1NlcnZpY2U6IFJvdXRpbmdTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNhcnQkID0gdGhpcy5hY3RpdmVDYXJ0U2VydmljZS5nZXRBY3RpdmUoKTtcblxuICAgIHRoaXMuZW50cmllcyQgPSB0aGlzLmFjdGl2ZUNhcnRTZXJ2aWNlXG4gICAgICAuZ2V0RW50cmllcygpXG4gICAgICAucGlwZShmaWx0ZXIoKGVudHJpZXMpID0+IGVudHJpZXMubGVuZ3RoID4gMCkpO1xuXG4gICAgdGhpcy5zZWxlY3RpdmVDYXJ0RW5hYmxlZCA9IHRoaXMuc2VsZWN0aXZlQ2FydFNlcnZpY2UuaXNFbmFibGVkKCk7XG5cbiAgICB0aGlzLmNhcnRMb2FkZWQkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmFjdGl2ZUNhcnRTZXJ2aWNlLmlzU3RhYmxlKCksXG4gICAgICB0aGlzLnNlbGVjdGl2ZUNhcnRFbmFibGVkXG4gICAgICAgID8gdGhpcy5zZWxlY3RpdmVDYXJ0U2VydmljZS5pc1N0YWJsZSgpXG4gICAgICAgIDogb2YoZmFsc2UpLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5pc1VzZXJMb2dnZWRJbigpLFxuICAgIF0pLnBpcGUoXG4gICAgICB0YXAoKFssICwgbG9nZ2VkSW5dKSA9PiAodGhpcy5sb2dnZWRJbiA9IGxvZ2dlZEluKSksXG4gICAgICBtYXAoKFtjYXJ0TG9hZGVkLCBzZmxMb2FkZWQsIGxvZ2dlZEluXSkgPT5cbiAgICAgICAgbG9nZ2VkSW4gJiYgdGhpcy5zZWxlY3RpdmVDYXJ0RW5hYmxlZFxuICAgICAgICAgID8gY2FydExvYWRlZCAmJiBzZmxMb2FkZWRcbiAgICAgICAgICA6IGNhcnRMb2FkZWRcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgc2F2ZUZvckxhdGVyKGl0ZW06IE9yZGVyRW50cnkpIHtcbiAgICBpZiAodGhpcy5sb2dnZWRJbikge1xuICAgICAgdGhpcy5hY3RpdmVDYXJ0U2VydmljZS5yZW1vdmVFbnRyeShpdGVtKTtcbiAgICAgIHRoaXMuc2VsZWN0aXZlQ2FydFNlcnZpY2UuYWRkRW50cnkoaXRlbS5wcm9kdWN0LmNvZGUsIGl0ZW0ucXVhbnRpdHkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLmdvKHsgY3hSb3V0ZTogJ2xvZ2luJyB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJjYXJ0JCB8IGFzeW5jIGFzIGNhcnRcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVudHJpZXMkIHwgYXN5bmMgYXMgZW50cmllc1wiPlxuICAgIDxkaXYgKm5nSWY9XCJjYXJ0LnRvdGFsSXRlbXMgPiAwXCIgY2xhc3M9XCJjYXJ0LWRldGFpbHMtd3JhcHBlclwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqY3hGZWF0dXJlTGV2ZWw9XCInNC4yJ1wiPlxuICAgICAgICA8Y3gtY2FydC12YWxpZGF0aW9uLXdhcm5pbmdzPjwvY3gtY2FydC12YWxpZGF0aW9uLXdhcm5pbmdzPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxoNCBjbGFzcz1cImN4LXRvdGFsXCI+XG4gICAgICAgIHt7ICdjYXJ0RGV0YWlscy5jYXJ0TmFtZScgfCBjeFRyYW5zbGF0ZTogeyBjb2RlOiBjYXJ0LmNvZGUgfSB9fVxuICAgICAgPC9oND5cblxuICAgICAgPGN4LXByb21vdGlvbnNcbiAgICAgICAgW3Byb21vdGlvbnNdPVwiXG4gICAgICAgICAgKGNhcnQuYXBwbGllZE9yZGVyUHJvbW90aW9ucyB8fCBbXSkuY29uY2F0KFxuICAgICAgICAgICAgY2FydC5wb3RlbnRpYWxPcmRlclByb21vdGlvbnMgfHwgW11cbiAgICAgICAgICApXG4gICAgICAgIFwiXG4gICAgICA+PC9jeC1wcm9tb3Rpb25zPlxuXG4gICAgICA8Y3gtY2FydC1pdGVtLWxpc3RcbiAgICAgICAgW2l0ZW1zXT1cImVudHJpZXNcIlxuICAgICAgICBbY2FydElzTG9hZGluZ109XCIhKGNhcnRMb2FkZWQkIHwgYXN5bmMpXCJcbiAgICAgICAgW3Byb21vdGlvbkxvY2F0aW9uXT1cInByb21vdGlvbkxvY2F0aW9uXCJcbiAgICAgICAgW29wdGlvbnNdPVwie1xuICAgICAgICAgIGlzU2F2ZUZvckxhdGVyOiBmYWxzZSxcbiAgICAgICAgICBvcHRpb25hbEJ0bjogc2F2ZUZvckxhdGVyQnRuXG4gICAgICAgIH1cIlxuICAgICAgPjwvY3gtY2FydC1pdGVtLWxpc3Q+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSBsZXQtY3R4ICNzYXZlRm9yTGF0ZXJCdG4+XG4gIDxkaXZcbiAgICAqbmdJZj1cInNlbGVjdGl2ZUNhcnRFbmFibGVkXCJcbiAgICBjbGFzcz1cImNvbC1tZC0zIGNvbC1sZy0zIGNvbC14bC0zIGN4LXNmbC1idG5cIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJsaW5rIGN4LWFjdGlvbi1saW5rXCJcbiAgICAgIFtkaXNhYmxlZF09XCJjdHgubG9hZGluZ1wiXG4gICAgICAoY2xpY2spPVwic2F2ZUZvckxhdGVyKGN0eC5pdGVtKVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICA+XG4gICAgICB7eyAnc2F2ZUZvckxhdGVySXRlbXMuc2F2ZUZvckxhdGVyJyB8IGN4VHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==