UNPKG

@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
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==