@spartacus/storefront
Version:
Spartacus Storefront is a package that you can include in your application, which allows you to add default storefront features.
44 lines • 10.5 kB
JavaScript
import { Component } from '@angular/core';
import { PromotionLocation, } from '@spartacus/core';
import { combineLatest } from 'rxjs';
import { filter, map } from 'rxjs/operators';
import * as i0 from "@angular/core";
import * as i1 from "@spartacus/core";
import * as i2 from "../cart-shared/cart-item-list/cart-item-list.component";
import * as i3 from "@angular/common";
export class SaveForLaterComponent {
constructor(cmsService, cartService, selectiveCartService) {
this.cmsService = cmsService;
this.cartService = cartService;
this.selectiveCartService = selectiveCartService;
this.CartLocation = PromotionLocation;
}
ngOnInit() {
this.isCartEmpty$ = this.cartService
.getActive()
.pipe(map((cart) => !(cart && cart.totalItems && cart.totalItems > 0)));
this.saveForLater$ = this.selectiveCartService.getCart();
this.entries$ = this.selectiveCartService
.getEntries()
.pipe(filter((entries) => entries.length > 0));
this.cartLoaded$ = combineLatest([
this.cartService.isStable(),
this.selectiveCartService.isStable(),
]).pipe(map(([cartLoaded, sflLoaded]) => cartLoaded && sflLoaded));
this.data$ = this.cmsService.getComponentData('EmptyCartParagraphComponent');
}
moveToCart(item) {
this.selectiveCartService.removeEntry(item);
this.cartService.addEntry(item.product.code, item.quantity);
}
}
SaveForLaterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: SaveForLaterComponent, deps: [{ token: i1.CmsService }, { token: i1.ActiveCartService }, { token: i1.SelectiveCartService }], target: i0.ɵɵFactoryTarget.Component });
SaveForLaterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.5", type: SaveForLaterComponent, selector: "cx-save-for-later", ngImport: i0, template: "<ng-container *ngIf=\"isCartEmpty$ | async\">\n <p\n *ngIf=\"data$ | async as data\"\n [innerHTML]=\"data.content\"\n class=\"cx-empty-cart-info\"\n ></p>\n</ng-container>\n\n<ng-container *ngIf=\"saveForLater$ | async as saveForLater\">\n <ng-container *ngIf=\"entries$ | async as entries\">\n <div *ngIf=\"saveForLater.totalItems > 0\" class=\"cart-details-wrapper\">\n <div class=\"cx-total\">\n {{\n 'saveForLaterItems.itemTotal'\n | cxTranslate: { count: saveForLater.totalItems }\n }}\n </div>\n <cx-cart-item-list\n [items]=\"entries\"\n [readonly]=\"false\"\n [cartIsLoading]=\"!(cartLoaded$ | async)\"\n [promotionLocation]=\"CartLocation.SaveForLater\"\n [options]=\"{\n isSaveForLater: true,\n optionalBtn: moveToCartBtn\n }\"\n ></cx-cart-item-list>\n </div>\n </ng-container>\n</ng-container>\n\n<ng-template let-ctx #moveToCartBtn>\n <div class=\"col-md-3 col-lg-3 col-xl-3 cx-sfl-btn\">\n <button\n class=\"link cx-action-link\"\n [disabled]=\"ctx.loading\"\n (click)=\"moveToCart(ctx.item)\"\n type=\"button\"\n >\n {{ 'saveForLaterItems.moveToCart' | cxTranslate }}\n </button>\n </div>\n</ng-template>\n", components: [{ type: i2.CartItemListComponent, selector: "cx-cart-item-list", inputs: ["readonly", "hasHeader", "options", "cartId", "items", "promotionLocation", "cartIsLoading"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i3.AsyncPipe, "cxTranslate": i1.TranslatePipe } });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: SaveForLaterComponent, decorators: [{
type: Component,
args: [{
selector: 'cx-save-for-later',
templateUrl: './save-for-later.component.html',
}]
}], ctorParameters: function () { return [{ type: i1.CmsService }, { type: i1.ActiveCartService }, { type: i1.SelectiveCartService }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZS1mb3ItbGF0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RvcmVmcm9udGxpYi9jbXMtY29tcG9uZW50cy9jYXJ0L3NhdmUtZm9yLWxhdGVyL3NhdmUtZm9yLWxhdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0b3JlZnJvbnRsaWIvY21zLWNvbXBvbmVudHMvY2FydC9zYXZlLWZvci1sYXRlci9zYXZlLWZvci1sYXRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFNTCxpQkFBaUIsR0FFbEIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsYUFBYSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBTTdDLE1BQU0sT0FBTyxxQkFBcUI7SUFTaEMsWUFDWSxVQUFzQixFQUN0QixXQUE4QixFQUM5QixvQkFBMEM7UUFGMUMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBbUI7UUFDOUIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUx0RCxpQkFBWSxHQUFHLGlCQUFpQixDQUFDO0lBTTlCLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVzthQUNqQyxTQUFTLEVBQUU7YUFDWCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDekQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsb0JBQW9CO2FBQ3RDLFVBQVUsRUFBRTthQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsV0FBVyxHQUFHLGFBQWEsQ0FBQztZQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRTtZQUMzQixJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxFQUFFO1NBQ3JDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FDM0MsNkJBQTZCLENBQzlCLENBQUM7SUFDSixDQUFDO0lBRUQsVUFBVSxDQUFDLElBQWdCO1FBQ3pCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlELENBQUM7O2tIQW5DVSxxQkFBcUI7c0dBQXJCLHFCQUFxQix5RENqQmxDLDR3Q0EyQ0E7MkZEMUJhLHFCQUFxQjtrQkFKakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixXQUFXLEVBQUUsaUNBQWlDO2lCQUMvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBY3RpdmVDYXJ0U2VydmljZSxcbiAgQ2FydCxcbiAgQ21zUGFyYWdyYXBoQ29tcG9uZW50LFxuICBDbXNTZXJ2aWNlLFxuICBPcmRlckVudHJ5LFxuICBQcm9tb3Rpb25Mb2NhdGlvbixcbiAgU2VsZWN0aXZlQ2FydFNlcnZpY2UsXG59IGZyb20gJ0BzcGFydGFjdXMvY29yZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3gtc2F2ZS1mb3ItbGF0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc2F2ZS1mb3ItbGF0ZXIuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBTYXZlRm9yTGF0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBzYXZlRm9yTGF0ZXIkOiBPYnNlcnZhYmxlPENhcnQ+O1xuICBjYXJ0JDogT2JzZXJ2YWJsZTxDYXJ0PjtcbiAgZW50cmllcyQ6IE9ic2VydmFibGU8T3JkZXJFbnRyeVtdPjtcbiAgY2FydExvYWRlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGRhdGEkOiBPYnNlcnZhYmxlPENtc1BhcmFncmFwaENvbXBvbmVudD47XG4gIGlzQ2FydEVtcHR5JDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgQ2FydExvY2F0aW9uID0gUHJvbW90aW9uTG9jYXRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGNtc1NlcnZpY2U6IENtc1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGNhcnRTZXJ2aWNlOiBBY3RpdmVDYXJ0U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgc2VsZWN0aXZlQ2FydFNlcnZpY2U6IFNlbGVjdGl2ZUNhcnRTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlzQ2FydEVtcHR5JCA9IHRoaXMuY2FydFNlcnZpY2VcbiAgICAgIC5nZXRBY3RpdmUoKVxuICAgICAgLnBpcGUobWFwKChjYXJ0KSA9PiAhKGNhcnQgJiYgY2FydC50b3RhbEl0ZW1zICYmIGNhcnQudG90YWxJdGVtcyA+IDApKSk7XG4gICAgdGhpcy5zYXZlRm9yTGF0ZXIkID0gdGhpcy5zZWxlY3RpdmVDYXJ0U2VydmljZS5nZXRDYXJ0KCk7XG4gICAgdGhpcy5lbnRyaWVzJCA9IHRoaXMuc2VsZWN0aXZlQ2FydFNlcnZpY2VcbiAgICAgIC5nZXRFbnRyaWVzKClcbiAgICAgIC5waXBlKGZpbHRlcigoZW50cmllcykgPT4gZW50cmllcy5sZW5ndGggPiAwKSk7XG4gICAgdGhpcy5jYXJ0TG9hZGVkJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5jYXJ0U2VydmljZS5pc1N0YWJsZSgpLFxuICAgICAgdGhpcy5zZWxlY3RpdmVDYXJ0U2VydmljZS5pc1N0YWJsZSgpLFxuICAgIF0pLnBpcGUobWFwKChbY2FydExvYWRlZCwgc2ZsTG9hZGVkXSkgPT4gY2FydExvYWRlZCAmJiBzZmxMb2FkZWQpKTtcbiAgICB0aGlzLmRhdGEkID0gdGhpcy5jbXNTZXJ2aWNlLmdldENvbXBvbmVudERhdGEoXG4gICAgICAnRW1wdHlDYXJ0UGFyYWdyYXBoQ29tcG9uZW50J1xuICAgICk7XG4gIH1cblxuICBtb3ZlVG9DYXJ0KGl0ZW06IE9yZGVyRW50cnkpIHtcbiAgICB0aGlzLnNlbGVjdGl2ZUNhcnRTZXJ2aWNlLnJlbW92ZUVudHJ5KGl0ZW0pO1xuICAgIHRoaXMuY2FydFNlcnZpY2UuYWRkRW50cnkoaXRlbS5wcm9kdWN0LmNvZGUsIGl0ZW0ucXVhbnRpdHkpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiaXNDYXJ0RW1wdHkkIHwgYXN5bmNcIj5cbiAgPHBcbiAgICAqbmdJZj1cImRhdGEkIHwgYXN5bmMgYXMgZGF0YVwiXG4gICAgW2lubmVySFRNTF09XCJkYXRhLmNvbnRlbnRcIlxuICAgIGNsYXNzPVwiY3gtZW1wdHktY2FydC1pbmZvXCJcbiAgPjwvcD5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwic2F2ZUZvckxhdGVyJCB8IGFzeW5jIGFzIHNhdmVGb3JMYXRlclwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW50cmllcyQgfCBhc3luYyBhcyBlbnRyaWVzXCI+XG4gICAgPGRpdiAqbmdJZj1cInNhdmVGb3JMYXRlci50b3RhbEl0ZW1zID4gMFwiIGNsYXNzPVwiY2FydC1kZXRhaWxzLXdyYXBwZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjeC10b3RhbFwiPlxuICAgICAgICB7e1xuICAgICAgICAgICdzYXZlRm9yTGF0ZXJJdGVtcy5pdGVtVG90YWwnXG4gICAgICAgICAgICB8IGN4VHJhbnNsYXRlOiB7IGNvdW50OiBzYXZlRm9yTGF0ZXIudG90YWxJdGVtcyB9XG4gICAgICAgIH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxjeC1jYXJ0LWl0ZW0tbGlzdFxuICAgICAgICBbaXRlbXNdPVwiZW50cmllc1wiXG4gICAgICAgIFtyZWFkb25seV09XCJmYWxzZVwiXG4gICAgICAgIFtjYXJ0SXNMb2FkaW5nXT1cIiEoY2FydExvYWRlZCQgfCBhc3luYylcIlxuICAgICAgICBbcHJvbW90aW9uTG9jYXRpb25dPVwiQ2FydExvY2F0aW9uLlNhdmVGb3JMYXRlclwiXG4gICAgICAgIFtvcHRpb25zXT1cIntcbiAgICAgICAgICBpc1NhdmVGb3JMYXRlcjogdHJ1ZSxcbiAgICAgICAgICBvcHRpb25hbEJ0bjogbW92ZVRvQ2FydEJ0blxuICAgICAgICB9XCJcbiAgICAgID48L2N4LWNhcnQtaXRlbS1saXN0PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgbGV0LWN0eCAjbW92ZVRvQ2FydEJ0bj5cbiAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIGNvbC1sZy0zIGNvbC14bC0zIGN4LXNmbC1idG5cIj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImxpbmsgY3gtYWN0aW9uLWxpbmtcIlxuICAgICAgW2Rpc2FibGVkXT1cImN0eC5sb2FkaW5nXCJcbiAgICAgIChjbGljayk9XCJtb3ZlVG9DYXJ0KGN0eC5pdGVtKVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICA+XG4gICAgICB7eyAnc2F2ZUZvckxhdGVySXRlbXMubW92ZVRvQ2FydCcgfCBjeFRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=