@veloceapps/sdk 8.0.0-98 → 8.0.0-99

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. package/cms/cms.actions.d.ts +4 -0
  2. package/cms/types/integration.types.d.ts +1 -0
  3. package/cms/vendor-map.d.ts +4 -2
  4. package/esm2020/cms/cms.actions.mjs +11 -1
  5. package/esm2020/cms/modules/runtime/services/compilation.service.mjs +5 -1
  6. package/esm2020/cms/types/integration.types.mjs +1 -1
  7. package/esm2020/cms/vendor-map.mjs +5 -3
  8. package/esm2020/src/components/doc-gen/doc-gen.component.mjs +25 -21
  9. package/esm2020/src/components/flow-header/flow-header.component.mjs +119 -0
  10. package/esm2020/src/components/flow-header/flow-header.module.mjs +19 -0
  11. package/esm2020/src/components/flow-header/index.mjs +2 -0
  12. package/esm2020/src/components/guided-selling/guided-selling.component.mjs +24 -21
  13. package/esm2020/src/configure-primeng.mjs +33 -0
  14. package/esm2020/src/flow.component.mjs +4 -4
  15. package/esm2020/src/flow.module.mjs +7 -5
  16. package/esm2020/src/services/flow-dialog.service.mjs +5 -1
  17. package/esm2020/src/services/flow-router.service.mjs +15 -1
  18. package/esm2020/src/services/flow.service.mjs +18 -5
  19. package/esm2020/src/services/index.mjs +3 -1
  20. package/esm2020/src/types/flow-customization.types.mjs +1 -1
  21. package/fesm2015/veloceapps-sdk-cms.mjs +18 -3
  22. package/fesm2015/veloceapps-sdk-cms.mjs.map +1 -1
  23. package/fesm2015/veloceapps-sdk.mjs +455 -1059
  24. package/fesm2015/veloceapps-sdk.mjs.map +1 -1
  25. package/fesm2020/veloceapps-sdk-cms.mjs +18 -3
  26. package/fesm2020/veloceapps-sdk-cms.mjs.map +1 -1
  27. package/fesm2020/veloceapps-sdk.mjs +455 -1059
  28. package/fesm2020/veloceapps-sdk.mjs.map +1 -1
  29. package/package.json +1 -1
  30. package/src/components/flow-header/flow-header.component.d.ts +28 -0
  31. package/src/components/flow-header/flow-header.module.d.ts +9 -0
  32. package/src/components/flow-header/index.d.ts +1 -0
  33. package/src/configure-primeng.d.ts +1 -0
  34. package/src/flow.module.d.ts +2 -2
  35. package/src/services/flow-dialog.service.d.ts +1 -0
  36. package/src/services/flow-router.service.d.ts +1 -0
  37. package/src/services/flow.service.d.ts +3 -1
  38. package/src/services/index.d.ts +2 -0
  39. package/src/types/flow-customization.types.d.ts +1 -1
  40. package/esm2020/src/components/header/cart-overlay/cart-preview.component.mjs +0 -119
  41. package/esm2020/src/components/header/cart-overlay/cart-preview.module.mjs +0 -47
  42. package/esm2020/src/components/header/header.component.mjs +0 -355
  43. package/esm2020/src/components/header/header.module.mjs +0 -52
  44. package/esm2020/src/components/header/header.types.mjs +0 -2
  45. package/esm2020/src/components/header/metrics/index.mjs +0 -2
  46. package/esm2020/src/components/header/metrics/metrics.component.mjs +0 -255
  47. package/esm2020/src/components/header/metrics/metrics.definitions.mjs +0 -2
  48. package/esm2020/src/components/header/metrics/metrics.module.mjs +0 -69
  49. package/src/components/header/cart-overlay/cart-preview.component.d.ts +0 -36
  50. package/src/components/header/cart-overlay/cart-preview.module.d.ts +0 -14
  51. package/src/components/header/header.component.d.ts +0 -70
  52. package/src/components/header/header.module.d.ts +0 -16
  53. package/src/components/header/header.types.d.ts +0 -20
  54. package/src/components/header/metrics/index.d.ts +0 -1
  55. package/src/components/header/metrics/metrics.component.d.ts +0 -67
  56. package/src/components/header/metrics/metrics.definitions.d.ts +0 -1
  57. package/src/components/header/metrics/metrics.module.d.ts +0 -18
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@veloceapps/sdk",
3
- "version": "8.0.0-98",
3
+ "version": "8.0.0-99",
4
4
  "private": false,
5
5
  "peerDependencies": {
6
6
  "@angular/animations": "~15.2.0",
@@ -0,0 +1,28 @@
1
+ import { OnDestroy } from '@angular/core';
2
+ import { UITemplatesApiService } from '@veloceapps/api';
3
+ import { ToastService } from '@veloceapps/components';
4
+ import { UIDefinition } from '@veloceapps/core';
5
+ import { QuoteDraftService } from '@veloceapps/sdk/core';
6
+ import { BehaviorSubject } from 'rxjs';
7
+ import { FlowService } from '../../services';
8
+ import { FlowCustomization } from '../../types';
9
+ import * as i0 from "@angular/core";
10
+ export declare class FlowHeaderComponent implements OnDestroy {
11
+ private quoteDraftService;
12
+ private templatesApi;
13
+ private toastService;
14
+ private flowService;
15
+ private customizationService?;
16
+ uiDefinition$: BehaviorSubject<UIDefinition | null>;
17
+ private templateApiName;
18
+ private destroy$;
19
+ constructor(quoteDraftService: QuoteDraftService, templatesApi: UITemplatesApiService, toastService: ToastService, flowService: FlowService, customizationService?: FlowCustomization | undefined);
20
+ ngOnDestroy(): void;
21
+ private initialize;
22
+ private getTemplateRootComponent$;
23
+ private getLocalTemplateComponentMeta$;
24
+ private getFlowHeaderComponentMeta$;
25
+ private generateUIDefinition$;
26
+ static ɵfac: i0.ɵɵFactoryDeclaration<FlowHeaderComponent, [null, null, null, null, { optional: true; }]>;
27
+ static ɵcmp: i0.ɵɵComponentDeclaration<FlowHeaderComponent, "vl-flow-new-header", never, {}, {}, never, never, false, never>;
28
+ }
@@ -0,0 +1,9 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./flow-header.component";
3
+ import * as i2 from "@angular/common";
4
+ import * as i3 from "@veloceapps/sdk/cms";
5
+ export declare class FlowNewHeaderModule {
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<FlowNewHeaderModule, never>;
7
+ static ɵmod: i0.ɵɵNgModuleDeclaration<FlowNewHeaderModule, [typeof i1.FlowHeaderComponent], [typeof i2.CommonModule, typeof i3.PreviewModule], [typeof i1.FlowHeaderComponent]>;
8
+ static ɵinj: i0.ɵɵInjectorDeclaration<FlowNewHeaderModule>;
9
+ }
@@ -0,0 +1 @@
1
+ export * from './flow-header.module';
@@ -0,0 +1 @@
1
+ export declare const configurePrimengShadowDOM: () => void;
@@ -5,13 +5,13 @@ import * as i3 from "@veloceapps/components";
5
5
  import * as i4 from "./flow-routing.module";
6
6
  import * as i5 from "@veloceapps/api";
7
7
  import * as i6 from "@veloceapps/sdk/cms";
8
- import * as i7 from "./components/header/header.module";
8
+ import * as i7 from "./components/flow-header/flow-header.module";
9
9
  import * as i8 from "./components/dialog/dialog.module";
10
10
  import * as i9 from "@veloceapps/sdk/core";
11
11
  import * as i10 from "./components/doc-gen/doc-gen.module";
12
12
  import * as i11 from "./components/guided-selling/guided-selling.module";
13
13
  export declare class FlowModule {
14
14
  static ɵfac: i0.ɵɵFactoryDeclaration<FlowModule, never>;
15
- static ɵmod: i0.ɵɵNgModuleDeclaration<FlowModule, [typeof i1.FlowComponent], [typeof i2.CommonModule, typeof i3.LetDirectiveModule, typeof i4.FlowRoutingModule, typeof i5.ApiModule, typeof i6.LauncherModule, typeof i3.LoaderModule, typeof i7.FlowHeaderModule, typeof i8.FlowDialogModule, typeof i9.SdkCoreModule, typeof i10.DocGenModule, typeof i11.GuidedSellingModule], never>;
15
+ static ɵmod: i0.ɵɵNgModuleDeclaration<FlowModule, [typeof i1.FlowComponent], [typeof i2.CommonModule, typeof i3.LetDirectiveModule, typeof i4.FlowRoutingModule, typeof i5.ApiModule, typeof i6.LauncherModule, typeof i3.LoaderModule, typeof i7.FlowNewHeaderModule, typeof i8.FlowDialogModule, typeof i9.SdkCoreModule, typeof i10.DocGenModule, typeof i11.GuidedSellingModule], never>;
16
16
  static ɵinj: i0.ɵɵInjectorDeclaration<FlowModule>;
17
17
  }
@@ -21,6 +21,7 @@ export declare class FlowDialogService {
21
21
  showDocgenReadonlyDialog(): Observable<boolean>;
22
22
  showDocgenOutsideShoppingCartDialog(): Observable<boolean>;
23
23
  showDocgenUnsavedChangesDialog(): Observable<boolean>;
24
+ showDialog(dialog: keyof Omit<FlowDialogService, 'show' | 'constructor'>): Observable<boolean>;
24
25
  static ɵfac: i0.ɵɵFactoryDeclaration<FlowDialogService, never>;
25
26
  static ɵprov: i0.ɵɵInjectableDeclaration<FlowDialogService>;
26
27
  }
@@ -30,6 +30,7 @@ export declare class FlowRouterService {
30
30
  isCatalogRoute$(): Observable<boolean>;
31
31
  isAssetsRoute$(): Observable<boolean>;
32
32
  navigateBack(): void;
33
+ navigateTo(path: string, productId?: string, lineItemId?: string): void;
33
34
  navigateToProductConfiguration(productId: string, lineItemId?: string): void;
34
35
  navigateToShoppingCart(): void;
35
36
  navigateToCatalog(): void;
@@ -4,6 +4,7 @@ import { IntegrationState } from '@veloceapps/sdk/cms';
4
4
  import { ConfigurationService, FlowConfigurationService, QuoteDraftService } from '@veloceapps/sdk/core';
5
5
  import { Observable } from 'rxjs';
6
6
  import { FlowRouterService } from './flow-router.service';
7
+ import { FlowDialogService } from './flow-dialog.service';
7
8
  import * as i0 from "@angular/core";
8
9
  export declare class FlowService {
9
10
  private integrationState;
@@ -12,11 +13,12 @@ export declare class FlowService {
12
13
  private configurationService;
13
14
  private flowConfigurationService;
14
15
  private flowsApiService;
16
+ private flowDialogService;
15
17
  private readonly flowSubj$;
16
18
  flow$: Observable<Flow | null>;
17
19
  get flow(): Flow | null;
18
20
  private cleanup$;
19
- constructor(integrationState: IntegrationState, flowRouterService: FlowRouterService, quoteDraftService: QuoteDraftService, configurationService: ConfigurationService, flowConfigurationService: FlowConfigurationService, flowsApiService: FlowsApiService);
21
+ constructor(integrationState: IntegrationState, flowRouterService: FlowRouterService, quoteDraftService: QuoteDraftService, configurationService: ConfigurationService, flowConfigurationService: FlowConfigurationService, flowsApiService: FlowsApiService, flowDialogService: FlowDialogService);
20
22
  cleanup(): void;
21
23
  setFlow(flow?: Flow): void;
22
24
  setFlowById$(flowId: string): Observable<boolean>;
@@ -1 +1,3 @@
1
1
  export * from './flow.service';
2
+ export * from './flow-router.service';
3
+ export * from './flow-dialog.service';
@@ -8,5 +8,5 @@ export interface FlowCustomization {
8
8
  getShoppingCartComponent?(templateName: string): Observable<TemplateComponentWithAttachments | null>;
9
9
  getCatalogComponent?(templateName: string): Observable<TemplateComponentWithAttachments | null>;
10
10
  getAssetsComponent?(templateName: string): Observable<TemplateComponentWithAttachments | null>;
11
- getTemplateComponent?(templateName: string): Observable<TemplateComponentWithAttachments | null>;
11
+ getTemplateComponent?(templateName: string): Observable<TemplateComponentWithAttachments[] | null>;
12
12
  }
@@ -1,119 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Input, ViewChild, } from '@angular/core';
2
- import { FormControl, FormGroup } from '@angular/forms';
3
- import { FlowConfigurationService, ProductImagesService, QuoteDraftService } from '@veloceapps/sdk/core';
4
- import { OverlayPanel } from 'primeng/overlaypanel';
5
- import { BehaviorSubject, Subject, combineLatest, filter, map, takeUntil } from 'rxjs';
6
- import { FlowRouterService } from '../../../services/flow-router.service';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@veloceapps/sdk/core";
9
- import * as i2 from "../../../services/flow-router.service";
10
- import * as i3 from "@angular/common";
11
- import * as i4 from "@angular/forms";
12
- import * as i5 from "primeng/button";
13
- import * as i6 from "primeng/overlaypanel";
14
- import * as i7 from "primeng/api";
15
- import * as i8 from "@veloceapps/components";
16
- import * as i9 from "primeng/virtualscroller";
17
- export class CartPreviewComponent {
18
- constructor(flowConfiguration, routerService, productImagesService, quoteDraftService) {
19
- this.flowConfiguration = flowConfiguration;
20
- this.routerService = routerService;
21
- this.productImagesService = productImagesService;
22
- this.quoteDraftService = quoteDraftService;
23
- this.productRowHeight = 65;
24
- this.form = new FormGroup({});
25
- this.hasTermInProducts = false;
26
- this.scrollHeight = 0;
27
- this.shouldUpdate$ = new BehaviorSubject(true);
28
- this.destroyed$ = new Subject();
29
- this.lockedProductId$ = combineLatest([this.routerService.route$, this.routerService.isConfigurationRoute$()]).pipe(map(([route, isConfigurationRoute]) => {
30
- if (!isConfigurationRoute) {
31
- return null;
32
- }
33
- return route.queryParams['productId'];
34
- }));
35
- this.isEditMode$ = this.quoteDraftService.isEditMode$();
36
- }
37
- ngOnChanges(changes) {
38
- const { products } = changes;
39
- if (products) {
40
- this.shouldUpdate$.next(true);
41
- this.scrollHeight = Math.min(this.products.length * this.productRowHeight, 460);
42
- }
43
- }
44
- ngAfterViewInit() {
45
- combineLatest([this.lockedProductId$, this.isEditMode$, this.shouldUpdate$, this.overlayPanel.onShow])
46
- .pipe(filter(() => this.overlayPanel.overlayVisible), takeUntil(this.destroyed$))
47
- .subscribe(([lockedProductId, isEditMode]) => this.updateControls(this.products, isEditMode, lockedProductId));
48
- }
49
- ngOnDestroy() {
50
- this.destroyed$.next();
51
- this.destroyed$.complete();
52
- }
53
- getImageUrl(productId) {
54
- return this.productImagesService.getImageUrl$(productId);
55
- }
56
- navigateToProductConfiguration(productId, lineItemId) {
57
- this.overlayPanel.hide();
58
- this.routerService.navigateToProductConfiguration(productId, lineItemId);
59
- }
60
- controlBlurHandler(product) {
61
- const control = this.form.get(product.id);
62
- if (!control || control.invalid) {
63
- return;
64
- }
65
- this.flowConfiguration.update([
66
- {
67
- dataType: 'LINEITEM',
68
- attributeType: 'QTY',
69
- id: product.id,
70
- newValue: control.value,
71
- },
72
- ]);
73
- }
74
- deleteHandler(product) {
75
- this.flowConfiguration.delete([product.id]);
76
- }
77
- deleteAllHandler() {
78
- const productIds = this.products.map(product => product.id);
79
- this.flowConfiguration.delete(productIds);
80
- }
81
- updateControls(products, isEditMode, lockedProductId) {
82
- const ids = [];
83
- products.forEach(item => {
84
- if (!item.id) {
85
- return;
86
- }
87
- ids.push(item.id);
88
- let control = this.form.get(item.id);
89
- if (!control) {
90
- control = new FormControl(item.qty, []);
91
- this.form.addControl(item.id, control);
92
- }
93
- else {
94
- control.setValue(item.qty);
95
- }
96
- if (!isEditMode || item.deleted || item.productId === lockedProductId) {
97
- control.disable();
98
- }
99
- else {
100
- control.enable();
101
- }
102
- });
103
- const removedIds = Object.keys(this.form.controls).filter(id => !ids.includes(id));
104
- removedIds.forEach(id => this.form.removeControl(id));
105
- this.hasTermInProducts = products.some((item) => item.hasTerm);
106
- }
107
- }
108
- CartPreviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CartPreviewComponent, deps: [{ token: i1.FlowConfigurationService }, { token: i2.FlowRouterService }, { token: i1.ProductImagesService }, { token: i1.QuoteDraftService }], target: i0.ɵɵFactoryTarget.Component });
109
- CartPreviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CartPreviewComponent, selector: "vl-cart-preview", inputs: { products: "products" }, viewQueries: [{ propertyName: "overlayPanel", first: true, predicate: OverlayPanel, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<p-overlayPanel\n styleClass=\"catalog-overlay flow-header-overlay center no-padding\"\n showTransitionOptions=\"0ms\"\n hideTransitionOptions=\"0ms\"\n>\n <ng-template pTemplate>\n <div class=\"flow-header-overlay__wrapper\" *vlLet=\"lockedProductId$ | async as lockedProductId\">\n <ng-container *vlLet=\"isEditMode$ | async as isEditMode\">\n <ng-container *ngIf=\"products.length > 0; else empty\">\n <h2 class=\"flow-header-overlay__title\">\n <span>Products ({{ products.length }})</span>\n <i class=\"vl-icon vl-cross close-icon\" (click)=\"overlayPanel.hide()\"></i>\n </h2>\n\n <p-virtualScroller [value]=\"products\" scrollHeight=\"{{ scrollHeight }}px\" [itemSize]=\"productRowHeight\">\n <ng-template pTemplate=\"item\" let-product>\n <div\n class=\"product item\"\n *vlLet=\"!isEditMode || product.deleted as isReadonlyProduct\"\n [class.readonly]=\"isReadonlyProduct\"\n [class.deleted]=\"product.deleted\"\n >\n <ng-container *vlLet=\"lockedProductId === product.productId as isLockedProduct\">\n <div class=\"product__info\">\n <div class=\"product__image-wrapper\">\n <div\n *ngIf=\"getImageUrl(product.productId) | async as imageUrl; else noImage\"\n class=\"product__image\"\n [ngStyle]=\"{ 'background-image': 'url(' + imageUrl + ')' }\"\n ></div>\n </div>\n <div class=\"flex flex-column justify-content-center\">\n <div class=\"word-break product-name\" [class.line-through]=\"product.deleted\">\n {{ product.name }}\n </div>\n <div class=\"actions\" *ngIf=\"!isReadonlyProduct\">\n <p-button\n label=\"Configure\"\n [disabled]=\"isLockedProduct || !product.configurable || product.hasTerm\"\n styleClass=\"p-button-link p-button-sm\"\n (onClick)=\"navigateToProductConfiguration(product.productId, product.id)\"\n ></p-button>\n <p-button\n label=\"Delete\"\n [disabled]=\"isLockedProduct || product.hasTerm\"\n styleClass=\"p-button-link p-button-sm p-button-secondary\"\n (onClick)=\"deleteHandler(product)\"\n ></p-button>\n </div>\n </div>\n </div>\n\n <ng-container *ngIf=\"form.get(product.id) as control\">\n <div class=\"qty\" *ngIf=\"!isReadonlyProduct; else readonlyQty\">\n <vl-quantity-control\n [formControl]=\"$any(control)\"\n (valueChange)=\"controlBlurHandler(product)\"\n ></vl-quantity-control>\n </div>\n <ng-template #readonlyQty\n ><span class=\"text-right\">{{ control.value }}</span></ng-template\n >\n </ng-container>\n </ng-container>\n </div>\n </ng-template>\n </p-virtualScroller>\n\n <ng-template #noImage>\n <i class=\"vl-icon vl-no-image no-image-icon\"></i>\n </ng-template>\n\n <div class=\"flex footer\">\n <p-button\n label=\"Clear Cart\"\n styleClass=\"p-button-link p-button-sm pl-0 pr-0\"\n [disabled]=\"!isEditMode || !!lockedProductId || hasTermInProducts\"\n (onClick)=\"deleteAllHandler()\"\n ></p-button>\n </div>\n </ng-container>\n </ng-container>\n\n <ng-template #empty>\n <h2 class=\"flow-header-overlay__title\">\n <span>Empty Cart</span>\n <i class=\"vl-icon vl-cross close-icon\" (click)=\"overlayPanel.hide()\"></i>\n </h2>\n\n <span class=\"empty-state\">\n <i class=\"vl-icon vl-bag\"></i>\n There are no products added to the Shopping Cart yet.\n </span>\n </ng-template>\n </div>\n </ng-template>\n</p-overlayPanel>\n", styles: ["p-virtualscroller ::ng-deep .p-virtualscroller-header{background:none;padding:0;border:none;font-weight:unset}.flow-header-overlay *{font-family:var(--cg-font-family)}.flow-header-overlay__wrapper{display:flex;flex-direction:column;width:460px;max-height:600px}.flow-header-overlay__wrapper .close-icon{cursor:pointer}.flow-header-overlay__title{display:flex;justify-content:space-between;align-items:center;margin:0 0 8px;font-size:16px;font-style:normal;font-weight:500;line-height:20px}.empty-state{background:var(--cg-bg-color);padding:16px;display:flex;gap:8px;justify-content:center;font-size:12px;font-weight:300;line-height:16px;letter-spacing:.3px}.product{display:grid;grid-template-columns:auto 100px;padding:8px 0;border-bottom:1px solid var(--cg-border-color)}.product.readonly{align-items:center}.product.deleted{opacity:.5}.product.item{height:65px;overflow:hidden}.product__info{display:flex;gap:16px}.product__image-wrapper{flex-shrink:0;height:48px;width:48px;display:flex;justify-content:center;align-items:center;background:var(--cg-bg-color-hover);border-radius:4px}.product__image{background-size:contain;background-repeat:no-repeat;background-position:center;height:calc(100% - 12px);width:calc(100% - 12px)}.product .product-name{margin-bottom:4px;font-size:14px;font-weight:500;line-height:20px}.product .actions{display:flex;gap:16px}.footer{padding-top:8px}.word-break{word-break:break-word}.no-image-icon{height:24px;width:24px}.qty{display:flex;align-items:center}.flow-header-overlay__wrapper ::ng-deep .p-button-link{padding:0;font-size:12px;font-weight:400;line-height:18px;letter-spacing:.3px;color:var(--cg-primary-color)}.flow-header-overlay__wrapper ::ng-deep .p-button-link:hover:enabled{color:var(--cg-text-color-secondary)}.flow-header-overlay__wrapper ::ng-deep .p-button-link:hover:enabled .p-button-label{text-decoration:none}.flow-header-overlay__wrapper ::ng-deep .p-button-link.p-button-secondary{color:var(--cg-text-color-secondary)}.flow-header-overlay__wrapper ::ng-deep .p-button-link.p-button-secondary:hover:enabled{color:var(--cg-primary-color)}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i6.OverlayPanel, selector: "p-overlayPanel", inputs: ["dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "directive", type: i7.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i8.LetDirective, selector: "[vlLet]", inputs: ["vlLet"] }, { kind: "component", type: i9.VirtualScroller, selector: "p-virtualScroller", inputs: ["value", "itemSize", "style", "styleClass", "scrollHeight", "lazy", "rows", "minBufferPx", "maxBufferPx", "delay", "trackBy", "totalRecords", "first", "cache"], outputs: ["onLazyLoad"] }, { kind: "component", type: i8.QuantityControlComponent, selector: "vl-quantity-control", outputs: ["valueChange"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
110
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CartPreviewComponent, decorators: [{
111
- type: Component,
112
- args: [{ selector: 'vl-cart-preview', changeDetection: ChangeDetectionStrategy.OnPush, template: "<p-overlayPanel\n styleClass=\"catalog-overlay flow-header-overlay center no-padding\"\n showTransitionOptions=\"0ms\"\n hideTransitionOptions=\"0ms\"\n>\n <ng-template pTemplate>\n <div class=\"flow-header-overlay__wrapper\" *vlLet=\"lockedProductId$ | async as lockedProductId\">\n <ng-container *vlLet=\"isEditMode$ | async as isEditMode\">\n <ng-container *ngIf=\"products.length > 0; else empty\">\n <h2 class=\"flow-header-overlay__title\">\n <span>Products ({{ products.length }})</span>\n <i class=\"vl-icon vl-cross close-icon\" (click)=\"overlayPanel.hide()\"></i>\n </h2>\n\n <p-virtualScroller [value]=\"products\" scrollHeight=\"{{ scrollHeight }}px\" [itemSize]=\"productRowHeight\">\n <ng-template pTemplate=\"item\" let-product>\n <div\n class=\"product item\"\n *vlLet=\"!isEditMode || product.deleted as isReadonlyProduct\"\n [class.readonly]=\"isReadonlyProduct\"\n [class.deleted]=\"product.deleted\"\n >\n <ng-container *vlLet=\"lockedProductId === product.productId as isLockedProduct\">\n <div class=\"product__info\">\n <div class=\"product__image-wrapper\">\n <div\n *ngIf=\"getImageUrl(product.productId) | async as imageUrl; else noImage\"\n class=\"product__image\"\n [ngStyle]=\"{ 'background-image': 'url(' + imageUrl + ')' }\"\n ></div>\n </div>\n <div class=\"flex flex-column justify-content-center\">\n <div class=\"word-break product-name\" [class.line-through]=\"product.deleted\">\n {{ product.name }}\n </div>\n <div class=\"actions\" *ngIf=\"!isReadonlyProduct\">\n <p-button\n label=\"Configure\"\n [disabled]=\"isLockedProduct || !product.configurable || product.hasTerm\"\n styleClass=\"p-button-link p-button-sm\"\n (onClick)=\"navigateToProductConfiguration(product.productId, product.id)\"\n ></p-button>\n <p-button\n label=\"Delete\"\n [disabled]=\"isLockedProduct || product.hasTerm\"\n styleClass=\"p-button-link p-button-sm p-button-secondary\"\n (onClick)=\"deleteHandler(product)\"\n ></p-button>\n </div>\n </div>\n </div>\n\n <ng-container *ngIf=\"form.get(product.id) as control\">\n <div class=\"qty\" *ngIf=\"!isReadonlyProduct; else readonlyQty\">\n <vl-quantity-control\n [formControl]=\"$any(control)\"\n (valueChange)=\"controlBlurHandler(product)\"\n ></vl-quantity-control>\n </div>\n <ng-template #readonlyQty\n ><span class=\"text-right\">{{ control.value }}</span></ng-template\n >\n </ng-container>\n </ng-container>\n </div>\n </ng-template>\n </p-virtualScroller>\n\n <ng-template #noImage>\n <i class=\"vl-icon vl-no-image no-image-icon\"></i>\n </ng-template>\n\n <div class=\"flex footer\">\n <p-button\n label=\"Clear Cart\"\n styleClass=\"p-button-link p-button-sm pl-0 pr-0\"\n [disabled]=\"!isEditMode || !!lockedProductId || hasTermInProducts\"\n (onClick)=\"deleteAllHandler()\"\n ></p-button>\n </div>\n </ng-container>\n </ng-container>\n\n <ng-template #empty>\n <h2 class=\"flow-header-overlay__title\">\n <span>Empty Cart</span>\n <i class=\"vl-icon vl-cross close-icon\" (click)=\"overlayPanel.hide()\"></i>\n </h2>\n\n <span class=\"empty-state\">\n <i class=\"vl-icon vl-bag\"></i>\n There are no products added to the Shopping Cart yet.\n </span>\n </ng-template>\n </div>\n </ng-template>\n</p-overlayPanel>\n", styles: ["p-virtualscroller ::ng-deep .p-virtualscroller-header{background:none;padding:0;border:none;font-weight:unset}.flow-header-overlay *{font-family:var(--cg-font-family)}.flow-header-overlay__wrapper{display:flex;flex-direction:column;width:460px;max-height:600px}.flow-header-overlay__wrapper .close-icon{cursor:pointer}.flow-header-overlay__title{display:flex;justify-content:space-between;align-items:center;margin:0 0 8px;font-size:16px;font-style:normal;font-weight:500;line-height:20px}.empty-state{background:var(--cg-bg-color);padding:16px;display:flex;gap:8px;justify-content:center;font-size:12px;font-weight:300;line-height:16px;letter-spacing:.3px}.product{display:grid;grid-template-columns:auto 100px;padding:8px 0;border-bottom:1px solid var(--cg-border-color)}.product.readonly{align-items:center}.product.deleted{opacity:.5}.product.item{height:65px;overflow:hidden}.product__info{display:flex;gap:16px}.product__image-wrapper{flex-shrink:0;height:48px;width:48px;display:flex;justify-content:center;align-items:center;background:var(--cg-bg-color-hover);border-radius:4px}.product__image{background-size:contain;background-repeat:no-repeat;background-position:center;height:calc(100% - 12px);width:calc(100% - 12px)}.product .product-name{margin-bottom:4px;font-size:14px;font-weight:500;line-height:20px}.product .actions{display:flex;gap:16px}.footer{padding-top:8px}.word-break{word-break:break-word}.no-image-icon{height:24px;width:24px}.qty{display:flex;align-items:center}.flow-header-overlay__wrapper ::ng-deep .p-button-link{padding:0;font-size:12px;font-weight:400;line-height:18px;letter-spacing:.3px;color:var(--cg-primary-color)}.flow-header-overlay__wrapper ::ng-deep .p-button-link:hover:enabled{color:var(--cg-text-color-secondary)}.flow-header-overlay__wrapper ::ng-deep .p-button-link:hover:enabled .p-button-label{text-decoration:none}.flow-header-overlay__wrapper ::ng-deep .p-button-link.p-button-secondary{color:var(--cg-text-color-secondary)}.flow-header-overlay__wrapper ::ng-deep .p-button-link.p-button-secondary:hover:enabled{color:var(--cg-primary-color)}\n"] }]
113
- }], ctorParameters: function () { return [{ type: i1.FlowConfigurationService }, { type: i2.FlowRouterService }, { type: i1.ProductImagesService }, { type: i1.QuoteDraftService }]; }, propDecorators: { overlayPanel: [{
114
- type: ViewChild,
115
- args: [OverlayPanel]
116
- }], products: [{
117
- type: Input
118
- }] } });
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3NyYy9jb21wb25lbnRzL2hlYWRlci9jYXJ0LW92ZXJsYXkvY2FydC1wcmV2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3NyYy9jb21wb25lbnRzL2hlYWRlci9jYXJ0LW92ZXJsYXkvY2FydC1wcmV2aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFJTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7Ozs7OztBQVMxRSxNQUFNLE9BQU8sb0JBQW9CO0lBZ0IvQixZQUNVLGlCQUEyQyxFQUMzQyxhQUFnQyxFQUNoQyxvQkFBMEMsRUFDMUMsaUJBQW9DO1FBSHBDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBMEI7UUFDM0Msa0JBQWEsR0FBYixhQUFhLENBQW1CO1FBQ2hDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQWY5QixxQkFBZ0IsR0FBRyxF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QUM1QjtZQUVELElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLGVBQWUsRUFBRTtnQkFDckUsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ25CO2lCQUFNO2dCQUNMLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUNsQjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25GLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBbUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hGLENBQUM7O2lIQXpIVSxvQkFBb0I7cUdBQXBCLG9CQUFvQix1SUFDcEIsWUFBWSxxRUN4QnpCLDYzSUFpR0E7MkZEMUVhLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDRSxpQkFBaUIsbUJBR1YsdUJBQXVCLENBQUMsTUFBTTtrTkFHZixZQUFZO3NCQUEzQyxTQUFTO3VCQUFDLFlBQVk7Z0JBRVAsUUFBUTtzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGbG93Q29uZmlndXJhdGlvblNlcnZpY2UsIFByb2R1Y3RJbWFnZXNTZXJ2aWNlLCBRdW90ZURyYWZ0U2VydmljZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL3Nkay9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXlQYW5lbCB9IGZyb20gJ3ByaW1lbmcvb3ZlcmxheXBhbmVsJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZmlsdGVyLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmxvd1JvdXRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9mbG93LXJvdXRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEhlYWRlclByb2R1Y3QgfSBmcm9tICcuLi9oZWFkZXIudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2bC1jYXJ0LXByZXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FydC1wcmV2aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FydC1wcmV2aWV3LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDYXJ0UHJldmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZChPdmVybGF5UGFuZWwpIHB1YmxpYyBvdmVybGF5UGFuZWwhOiBPdmVybGF5UGFuZWw7XG5cbiAgQElucHV0KCkgcHVibGljIHByb2R1Y3RzITogSGVhZGVyUHJvZHVjdFtdO1xuXG4gIHB1YmxpYyByZWFkb25seSBwcm9kdWN0Um93SGVpZ2h0ID0gNjU7XG5cbiAgcHVibGljIGZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgcHVibGljIGxvY2tlZFByb2R1Y3RJZCQ6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD47XG4gIHB1YmxpYyBpc0VkaXRNb2RlJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHVibGljIGhhc1Rlcm1JblByb2R1Y3RzID0gZmFsc2U7XG4gIHB1YmxpYyBzY3JvbGxIZWlnaHQgPSAwO1xuXG4gIHByaXZhdGUgc2hvdWxkVXBkYXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3QodHJ1ZSk7XG4gIHByaXZhdGUgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmbG93Q29uZmlndXJhdGlvbjogRmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyU2VydmljZTogRmxvd1JvdXRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcm9kdWN0SW1hZ2VzU2VydmljZTogUHJvZHVjdEltYWdlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBxdW90ZURyYWZ0U2VydmljZTogUXVvdGVEcmFmdFNlcnZpY2UsXG4gICkge1xuICAgIHRoaXMubG9ja2VkUHJvZHVjdElkJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMucm91dGVyU2VydmljZS5yb3V0ZSQsIHRoaXMucm91dGVyU2VydmljZS5pc0NvbmZpZ3VyYXRpb25Sb3V0ZSQoKV0pLnBpcGUoXG4gICAgICBtYXAoKFtyb3V0ZSwgaXNDb25maWd1cmF0aW9uUm91dGVdKSA9PiB7XG4gICAgICAgIGlmICghaXNDb25maWd1cmF0aW9uUm91dGUpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByb3V0ZS5xdWVyeVBhcmFtc1sncHJvZHVjdElkJ107XG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgdGhpcy5pc0VkaXRNb2RlJCA9IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UuaXNFZGl0TW9kZSQoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3QgeyBwcm9kdWN0cyB9ID0gY2hhbmdlcztcblxuICAgIGlmIChwcm9kdWN0cykge1xuICAgICAgdGhpcy5zaG91bGRVcGRhdGUkLm5leHQodHJ1ZSk7XG4gICAgICB0aGlzLnNjcm9sbEhlaWdodCA9IE1hdGgubWluKHRoaXMucHJvZHVjdHMubGVuZ3RoICogdGhpcy5wcm9kdWN0Um93SGVpZ2h0LCA0NjApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5sb2NrZWRQcm9kdWN0SWQkLCB0aGlzLmlzRWRpdE1vZGUkLCB0aGlzLnNob3VsZFVwZGF0ZSQsIHRoaXMub3ZlcmxheVBhbmVsLm9uU2hvd10pXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMub3ZlcmxheVBhbmVsLm92ZXJsYXlWaXNpYmxlKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChbbG9ja2VkUHJvZHVjdElkLCBpc0VkaXRNb2RlXSkgPT4gdGhpcy51cGRhdGVDb250cm9scyh0aGlzLnByb2R1Y3RzLCBpc0VkaXRNb2RlLCBsb2NrZWRQcm9kdWN0SWQpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveWVkJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldEltYWdlVXJsKHByb2R1Y3RJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdEltYWdlc1NlcnZpY2UuZ2V0SW1hZ2VVcmwkKHByb2R1Y3RJZCk7XG4gIH1cblxuICBwdWJsaWMgbmF2aWdhdGVUb1Byb2R1Y3RDb25maWd1cmF0aW9uKHByb2R1Y3RJZDogc3RyaW5nLCBsaW5lSXRlbUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm92ZXJsYXlQYW5lbC5oaWRlKCk7XG4gICAgdGhpcy5yb3V0ZXJTZXJ2aWNlLm5hdmlnYXRlVG9Qcm9kdWN0Q29uZmlndXJhdGlvbihwcm9kdWN0SWQsIGxpbmVJdGVtSWQpO1xuICB9XG5cbiAgcHVibGljIGNvbnRyb2xCbHVySGFuZGxlcihwcm9kdWN0OiBIZWFkZXJQcm9kdWN0KTogdm9pZCB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5nZXQocHJvZHVjdC5pZCk7XG4gICAgaWYgKCFjb250cm9sIHx8IGNvbnRyb2wuaW52YWxpZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZmxvd0NvbmZpZ3VyYXRpb24udXBkYXRlKFtcbiAgICAgIHtcbiAgICAgICAgZGF0YVR5cGU6ICdMSU5FSVRFTScsXG4gICAgICAgIGF0dHJpYnV0ZVR5cGU6ICdRVFknLFxuICAgICAgICBpZDogcHJvZHVjdC5pZCxcbiAgICAgICAgbmV3VmFsdWU6IGNvbnRyb2wudmFsdWUsXG4gICAgICB9LFxuICAgIF0pO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZUhhbmRsZXIocHJvZHVjdDogSGVhZGVyUHJvZHVjdCk6IHZvaWQge1xuICAgIHRoaXMuZmxvd0NvbmZpZ3VyYXRpb24uZGVsZXRlKFtwcm9kdWN0LmlkXSk7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlQWxsSGFuZGxlcigpOiB2b2lkIHtcbiAgICBjb25zdCBwcm9kdWN0SWRzID0gdGhpcy5wcm9kdWN0cy5tYXAocHJvZHVjdCA9PiBwcm9kdWN0LmlkKTtcbiAgICB0aGlzLmZsb3dDb25maWd1cmF0aW9uLmRlbGV0ZShwcm9kdWN0SWRzKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29udHJvbHMocHJvZHVjdHM6IEhlYWRlclByb2R1Y3RbXSwgaXNFZGl0TW9kZTogYm9vbGVhbiwgbG9ja2VkUHJvZHVjdElkOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgY29uc3QgaWRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgcHJvZHVjdHMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmICghaXRlbS5pZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlkcy5wdXNoKGl0ZW0uaWQpO1xuXG4gICAgICBsZXQgY29udHJvbCA9IHRoaXMuZm9ybS5nZXQoaXRlbS5pZCk7XG5cbiAgICAgIGlmICghY29udHJvbCkge1xuICAgICAgICBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKGl0ZW0ucXR5LCBbXSk7XG4gICAgICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKGl0ZW0uaWQsIGNvbnRyb2wpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udHJvbC5zZXRWYWx1ZShpdGVtLnF0eSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNFZGl0TW9kZSB8fCBpdGVtLmRlbGV0ZWQgfHwgaXRlbS5wcm9kdWN0SWQgPT09IGxvY2tlZFByb2R1Y3RJZCkge1xuICAgICAgICBjb250cm9sLmRpc2FibGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRyb2wuZW5hYmxlKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCByZW1vdmVkSWRzID0gT2JqZWN0LmtleXModGhpcy5mb3JtLmNvbnRyb2xzKS5maWx0ZXIoaWQgPT4gIWlkcy5pbmNsdWRlcyhpZCkpO1xuICAgIHJlbW92ZWRJZHMuZm9yRWFjaChpZCA9PiB0aGlzLmZvcm0ucmVtb3ZlQ29udHJvbChpZCkpO1xuICAgIHRoaXMuaGFzVGVybUluUHJvZHVjdHMgPSBwcm9kdWN0cy5zb21lKChpdGVtOiBIZWFkZXJQcm9kdWN0KSA9PiBpdGVtLmhhc1Rlcm0pO1xuICB9XG59XG4iLCI8cC1vdmVybGF5UGFuZWxcbiAgc3R5bGVDbGFzcz1cImNhdGFsb2ctb3ZlcmxheSBmbG93LWhlYWRlci1vdmVybGF5IGNlbnRlciBuby1wYWRkaW5nXCJcbiAgc2hvd1RyYW5zaXRpb25PcHRpb25zPVwiMG1zXCJcbiAgaGlkZVRyYW5zaXRpb25PcHRpb25zPVwiMG1zXCJcbj5cbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT5cbiAgICA8ZGl2IGNsYXNzPVwiZmxvdy1oZWFkZXItb3ZlcmxheV9fd3JhcHBlclwiICp2bExldD1cImxvY2tlZFByb2R1Y3RJZCQgfCBhc3luYyBhcyBsb2NrZWRQcm9kdWN0SWRcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKnZsTGV0PVwiaXNFZGl0TW9kZSQgfCBhc3luYyBhcyBpc0VkaXRNb2RlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9kdWN0cy5sZW5ndGggPiAwOyBlbHNlIGVtcHR5XCI+XG4gICAgICAgICAgPGgyIGNsYXNzPVwiZmxvdy1oZWFkZXItb3ZlcmxheV9fdGl0bGVcIj5cbiAgICAgICAgICAgIDxzcGFuPlByb2R1Y3RzICh7eyBwcm9kdWN0cy5sZW5ndGggfX0pPC9zcGFuPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJ2bC1pY29uIHZsLWNyb3NzIGNsb3NlLWljb25cIiAoY2xpY2spPVwib3ZlcmxheVBhbmVsLmhpZGUoKVwiPjwvaT5cbiAgICAgICAgICA8L2gyPlxuXG4gICAgICAgICAgPHAtdmlydHVhbFNjcm9sbGVyIFt2YWx1ZV09XCJwcm9kdWN0c1wiIHNjcm9sbEhlaWdodD1cInt7IHNjcm9sbEhlaWdodCB9fXB4XCIgW2l0ZW1TaXplXT1cInByb2R1Y3RSb3dIZWlnaHRcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJpdGVtXCIgbGV0LXByb2R1Y3Q+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInByb2R1Y3QgaXRlbVwiXG4gICAgICAgICAgICAgICAgKnZsTGV0PVwiIWlzRWRpdE1vZGUgfHwgcHJvZHVjdC5kZWxldGVkIGFzIGlzUmVhZG9ubHlQcm9kdWN0XCJcbiAgICAgICAgICAgICAgICBbY2xhc3MucmVhZG9ubHldPVwiaXNSZWFkb25seVByb2R1Y3RcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5kZWxldGVkXT1cInByb2R1Y3QuZGVsZXRlZFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICp2bExldD1cImxvY2tlZFByb2R1Y3RJZCA9PT0gcHJvZHVjdC5wcm9kdWN0SWQgYXMgaXNMb2NrZWRQcm9kdWN0XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZHVjdF9faW5mb1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZHVjdF9faW1hZ2Utd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ2V0SW1hZ2VVcmwocHJvZHVjdC5wcm9kdWN0SWQpIHwgYXN5bmMgYXMgaW1hZ2VVcmw7IGVsc2Ugbm9JbWFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInByb2R1Y3RfX2ltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ2JhY2tncm91bmQtaW1hZ2UnOiAndXJsKCcgKyBpbWFnZVVybCArICcpJyB9XCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndvcmQtYnJlYWsgcHJvZHVjdC1uYW1lXCIgW2NsYXNzLmxpbmUtdGhyb3VnaF09XCJwcm9kdWN0LmRlbGV0ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHByb2R1Y3QubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCIgKm5nSWY9XCIhaXNSZWFkb25seVByb2R1Y3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIkNvbmZpZ3VyZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0xvY2tlZFByb2R1Y3QgfHwgIXByb2R1Y3QuY29uZmlndXJhYmxlIHx8IHByb2R1Y3QuaGFzVGVybVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1saW5rIHAtYnV0dG9uLXNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwibmF2aWdhdGVUb1Byb2R1Y3RDb25maWd1cmF0aW9uKHByb2R1Y3QucHJvZHVjdElkLCBwcm9kdWN0LmlkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9wLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIkRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0xvY2tlZFByb2R1Y3QgfHwgcHJvZHVjdC5oYXNUZXJtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVDbGFzcz1cInAtYnV0dG9uLWxpbmsgcC1idXR0b24tc20gcC1idXR0b24tc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiZGVsZXRlSGFuZGxlcihwcm9kdWN0KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9wLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm0uZ2V0KHByb2R1Y3QuaWQpIGFzIGNvbnRyb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF0eVwiICpuZ0lmPVwiIWlzUmVhZG9ubHlQcm9kdWN0OyBlbHNlIHJlYWRvbmx5UXR5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHZsLXF1YW50aXR5LWNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCIkYW55KGNvbnRyb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJjb250cm9sQmx1ckhhbmRsZXIocHJvZHVjdClcIlxuICAgICAgICAgICAgICAgICAgICAgID48L3ZsLXF1YW50aXR5LWNvbnRyb2w+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3JlYWRvbmx5UXR5XG4gICAgICAgICAgICAgICAgICAgICAgPjxzcGFuIGNsYXNzPVwidGV4dC1yaWdodFwiPnt7IGNvbnRyb2wudmFsdWUgfX08L3NwYW4+PC9uZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvcC12aXJ0dWFsU2Nyb2xsZXI+XG5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI25vSW1hZ2U+XG4gICAgICAgICAgICA8aSBjbGFzcz1cInZsLWljb24gdmwtbm8taW1hZ2Ugbm8taW1hZ2UtaWNvblwiPjwvaT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZm9vdGVyXCI+XG4gICAgICAgICAgICA8cC1idXR0b25cbiAgICAgICAgICAgICAgbGFiZWw9XCJDbGVhciBDYXJ0XCJcbiAgICAgICAgICAgICAgc3R5bGVDbGFzcz1cInAtYnV0dG9uLWxpbmsgcC1idXR0b24tc20gcGwtMCBwci0wXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0VkaXRNb2RlIHx8ICEhbG9ja2VkUHJvZHVjdElkIHx8IGhhc1Rlcm1JblByb2R1Y3RzXCJcbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiZGVsZXRlQWxsSGFuZGxlcigpXCJcbiAgICAgICAgICAgID48L3AtYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctdGVtcGxhdGUgI2VtcHR5PlxuICAgICAgICA8aDIgY2xhc3M9XCJmbG93LWhlYWRlci1vdmVybGF5X190aXRsZVwiPlxuICAgICAgICAgIDxzcGFuPkVtcHR5IENhcnQ8L3NwYW4+XG4gICAgICAgICAgPGkgY2xhc3M9XCJ2bC1pY29uIHZsLWNyb3NzIGNsb3NlLWljb25cIiAoY2xpY2spPVwib3ZlcmxheVBhbmVsLmhpZGUoKVwiPjwvaT5cbiAgICAgICAgPC9oMj5cblxuICAgICAgICA8c3BhbiBjbGFzcz1cImVtcHR5LXN0YXRlXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJ2bC1pY29uIHZsLWJhZ1wiPjwvaT5cbiAgICAgICAgICBUaGVyZSBhcmUgbm8gcHJvZHVjdHMgYWRkZWQgdG8gdGhlIFNob3BwaW5nIENhcnQgeWV0LlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9wLW92ZXJsYXlQYW5lbD5cbiJdfQ==
@@ -1,47 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { NgModule } from '@angular/core';
3
- import { ReactiveFormsModule } from '@angular/forms';
4
- import { LetDirectiveModule, QuantityControlModule } from '@veloceapps/components';
5
- import { ButtonModule } from 'primeng/button';
6
- import { InputNumberModule } from 'primeng/inputnumber';
7
- import { OverlayPanelModule } from 'primeng/overlaypanel';
8
- import { VirtualScrollerModule } from 'primeng/virtualscroller';
9
- import { CartPreviewComponent } from './cart-preview.component';
10
- import * as i0 from "@angular/core";
11
- export class CartPreviewModule {
12
- }
13
- CartPreviewModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CartPreviewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
- CartPreviewModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: CartPreviewModule, declarations: [CartPreviewComponent], imports: [CommonModule,
15
- ReactiveFormsModule,
16
- ButtonModule,
17
- OverlayPanelModule,
18
- LetDirectiveModule,
19
- InputNumberModule,
20
- VirtualScrollerModule,
21
- QuantityControlModule], exports: [CartPreviewComponent] });
22
- CartPreviewModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CartPreviewModule, imports: [CommonModule,
23
- ReactiveFormsModule,
24
- ButtonModule,
25
- OverlayPanelModule,
26
- LetDirectiveModule,
27
- InputNumberModule,
28
- VirtualScrollerModule,
29
- QuantityControlModule] });
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CartPreviewModule, decorators: [{
31
- type: NgModule,
32
- args: [{
33
- declarations: [CartPreviewComponent],
34
- imports: [
35
- CommonModule,
36
- ReactiveFormsModule,
37
- ButtonModule,
38
- OverlayPanelModule,
39
- LetDirectiveModule,
40
- InputNumberModule,
41
- VirtualScrollerModule,
42
- QuantityControlModule,
43
- ],
44
- exports: [CartPreviewComponent],
45
- }]
46
- }] });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC1wcmV2aWV3Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3NyYy9jb21wb25lbnRzL2hlYWRlci9jYXJ0LW92ZXJsYXkvY2FydC1wcmV2aWV3Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBZ0JoRSxNQUFNLE9BQU8saUJBQWlCOzs4R0FBakIsaUJBQWlCOytHQUFqQixpQkFBaUIsaUJBYmIsb0JBQW9CLGFBRWpDLFlBQVk7UUFDWixtQkFBbUI7UUFDbkIsWUFBWTtRQUNaLGtCQUFrQjtRQUNsQixrQkFBa0I7UUFDbEIsaUJBQWlCO1FBQ2pCLHFCQUFxQjtRQUNyQixxQkFBcUIsYUFFYixvQkFBb0I7K0dBRW5CLGlCQUFpQixZQVgxQixZQUFZO1FBQ1osbUJBQW1CO1FBQ25CLFlBQVk7UUFDWixrQkFBa0I7UUFDbEIsa0JBQWtCO1FBQ2xCLGlCQUFpQjtRQUNqQixxQkFBcUI7UUFDckIscUJBQXFCOzJGQUlaLGlCQUFpQjtrQkFkN0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztvQkFDcEMsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixZQUFZO3dCQUNaLGtCQUFrQjt3QkFDbEIsa0JBQWtCO3dCQUNsQixpQkFBaUI7d0JBQ2pCLHFCQUFxQjt3QkFDckIscUJBQXFCO3FCQUN0QjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztpQkFDaEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBMZXREaXJlY3RpdmVNb2R1bGUsIFF1YW50aXR5Q29udHJvbE1vZHVsZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHsgSW5wdXROdW1iZXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL2lucHV0bnVtYmVyJztcbmltcG9ydCB7IE92ZXJsYXlQYW5lbE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvb3ZlcmxheXBhbmVsJztcbmltcG9ydCB7IFZpcnR1YWxTY3JvbGxlck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdmlydHVhbHNjcm9sbGVyJztcbmltcG9ydCB7IENhcnRQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSAnLi9jYXJ0LXByZXZpZXcuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbQ2FydFByZXZpZXdDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIE92ZXJsYXlQYW5lbE1vZHVsZSxcbiAgICBMZXREaXJlY3RpdmVNb2R1bGUsXG4gICAgSW5wdXROdW1iZXJNb2R1bGUsXG4gICAgVmlydHVhbFNjcm9sbGVyTW9kdWxlLFxuICAgIFF1YW50aXR5Q29udHJvbE1vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW0NhcnRQcmV2aWV3Q29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FydFByZXZpZXdNb2R1bGUge31cbiJdfQ==