@veloceapps/sdk 3.1.7 → 3.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/veloce-sdk-cms.umd.js +2 -1
- package/bundles/veloce-sdk-cms.umd.js.map +1 -1
- package/bundles/veloce-sdk-core.umd.js +35 -2
- package/bundles/veloce-sdk-core.umd.js.map +1 -1
- package/bundles/veloce-sdk.umd.js +208 -262
- package/bundles/veloce-sdk.umd.js.map +1 -1
- package/cms/vendor-map.d.ts +5 -2
- package/core/services/index.d.ts +1 -0
- package/core/services/product-images.service.d.ts +12 -0
- package/esm2015/cms/vendor-map.js +7 -4
- package/esm2015/core/core.module.js +4 -4
- package/esm2015/core/services/index.js +2 -1
- package/esm2015/core/services/product-images.service.js +30 -0
- package/esm2015/src/components/header/cart-overlay/cart-preview.component.js +116 -0
- package/esm2015/src/components/header/cart-overlay/cart-preview.module.js +23 -0
- package/esm2015/src/components/header/header.component.js +3 -3
- package/esm2015/src/components/header/header.module.js +5 -5
- package/esm2015/src/flow-routing.module.js +7 -24
- package/esm2015/src/guards/context.guard.js +45 -33
- package/esm2015/src/guards/product-unload.guard.js +22 -10
- package/esm2015/src/resolvers/quote.resolver.js +3 -2
- package/fesm2015/veloce-sdk-cms.js +6 -3
- package/fesm2015/veloce-sdk-cms.js.map +1 -1
- package/fesm2015/veloce-sdk-core.js +34 -8
- package/fesm2015/veloce-sdk-core.js.map +1 -1
- package/fesm2015/veloce-sdk.js +136 -184
- package/fesm2015/veloce-sdk.js.map +1 -1
- package/package.json +1 -1
- package/src/components/header/cart-overlay/{cart-overlay.component.d.ts → cart-preview.component.d.ts} +7 -10
- package/src/components/header/cart-overlay/cart-preview.module.d.ts +13 -0
- package/src/components/header/header.module.d.ts +2 -2
- package/src/guards/context.guard.d.ts +6 -4
- package/src/guards/product-unload.guard.d.ts +5 -3
- package/esm2015/src/components/header/cart-overlay/cart-overlay.component.js +0 -133
- package/esm2015/src/components/header/cart-overlay/cart-overlay.module.js +0 -23
- package/esm2015/src/resolvers/context.resolver.js +0 -44
- package/src/components/header/cart-overlay/cart-overlay.module.d.ts +0 -13
- package/src/resolvers/context.resolver.d.ts +0 -16
@@ -1,8 +1,8 @@
|
|
1
1
|
(function (global, factory) {
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common'), require('@angular/core'), require('@veloce/api'), require('@veloce/components'), require('@veloce/sdk/cms'), require('@veloce/sdk/core'), require('primeng/button'), require('primeng/dynamicdialog'), require('primeng/overlaypanel'), require('primeng/tooltip'), require('@angular/forms'), require('primeng/inputnumber'), require('rxjs'), require('@
|
3
|
-
typeof define === 'function' && define.amd ? define('@veloce/sdk', ['exports', '@angular/common', '@angular/core', '@veloce/api', '@veloce/components', '@veloce/sdk/cms', '@veloce/sdk/core', 'primeng/button', 'primeng/dynamicdialog', 'primeng/overlaypanel', 'primeng/tooltip', '@angular/forms', 'primeng/inputnumber', 'rxjs', '@
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.veloce = global.veloce || {}, global.veloce.sdk = {}), global.ng.common, global.ng.core, global["@veloce/api"], global["@veloce/components"], global.veloce.sdk.cms, global.veloce.sdk.core, global["primeng/button"], global["primeng/dynamicdialog"], global["primeng/overlaypanel"], global["primeng/tooltip"], global.ng.forms, global["primeng/inputnumber"], global.rxjs, global["@veloce/core"], global.ng.
|
5
|
-
})(this, (function (exports, i9, i0, i1$
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common'), require('@angular/core'), require('@veloce/api'), require('@veloce/components'), require('@veloce/sdk/cms'), require('@veloce/sdk/core'), require('primeng/button'), require('primeng/dynamicdialog'), require('primeng/overlaypanel'), require('primeng/tooltip'), require('@angular/forms'), require('primeng/inputnumber'), require('rxjs'), require('@angular/router'), require('primeng/api'), require('@veloce/core'), require('@angular/common/http'), require('primeng/dropdown'), require('primeng/inputtext'), require('primeng/radiobutton'), require('rxjs/operators'), require('@veloce/sdk/runtime'), require('ngx-bootstrap/tooltip')) :
|
3
|
+
typeof define === 'function' && define.amd ? define('@veloce/sdk', ['exports', '@angular/common', '@angular/core', '@veloce/api', '@veloce/components', '@veloce/sdk/cms', '@veloce/sdk/core', 'primeng/button', 'primeng/dynamicdialog', 'primeng/overlaypanel', 'primeng/tooltip', '@angular/forms', 'primeng/inputnumber', 'rxjs', '@angular/router', 'primeng/api', '@veloce/core', '@angular/common/http', 'primeng/dropdown', 'primeng/inputtext', 'primeng/radiobutton', 'rxjs/operators', '@veloce/sdk/runtime', 'ngx-bootstrap/tooltip'], factory) :
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.veloce = global.veloce || {}, global.veloce.sdk = {}), global.ng.common, global.ng.core, global["@veloce/api"], global["@veloce/components"], global.veloce.sdk.cms, global.veloce.sdk.core, global["primeng/button"], global["primeng/dynamicdialog"], global["primeng/overlaypanel"], global["primeng/tooltip"], global.ng.forms, global["primeng/inputnumber"], global.rxjs, global.ng.router, global["primeng/api"], global["@veloce/core"], global.ng.common.http, global["primeng/dropdown"], global["primeng/inputtext"], global["primeng/radiobutton"], global.rxjs.operators, global.veloce.sdk.runtime, global["ngx-bootstrap/tooltip"]));
|
5
|
+
})(this, (function (exports, i9, i0, i1$2, i3$1, i4, i2$1, i2, i1, i3, i10, i7, i5, rxjs, i1$1, i2$2, core, http, i4$1, i8, i6, operators, i4$2, i1$3) { 'use strict';
|
6
6
|
|
7
7
|
function _interopNamespace(e) {
|
8
8
|
if (e && e.__esModule) return e;
|
@@ -24,24 +24,23 @@
|
|
24
24
|
|
25
25
|
var i9__namespace = /*#__PURE__*/_interopNamespace(i9);
|
26
26
|
var i0__namespace = /*#__PURE__*/_interopNamespace(i0);
|
27
|
-
var i1__namespace$4 = /*#__PURE__*/_interopNamespace(i1$4);
|
28
|
-
var i3__namespace = /*#__PURE__*/_interopNamespace(i3);
|
29
|
-
var i4__namespace$1 = /*#__PURE__*/_interopNamespace(i4$1);
|
30
27
|
var i1__namespace$2 = /*#__PURE__*/_interopNamespace(i1$2);
|
31
|
-
var
|
32
|
-
var i1__namespace = /*#__PURE__*/_interopNamespace(i1);
|
28
|
+
var i3__namespace$1 = /*#__PURE__*/_interopNamespace(i3$1);
|
33
29
|
var i4__namespace = /*#__PURE__*/_interopNamespace(i4);
|
30
|
+
var i2__namespace$1 = /*#__PURE__*/_interopNamespace(i2$1);
|
31
|
+
var i2__namespace = /*#__PURE__*/_interopNamespace(i2);
|
32
|
+
var i1__namespace = /*#__PURE__*/_interopNamespace(i1);
|
33
|
+
var i3__namespace = /*#__PURE__*/_interopNamespace(i3);
|
34
34
|
var i10__namespace = /*#__PURE__*/_interopNamespace(i10);
|
35
35
|
var i7__namespace = /*#__PURE__*/_interopNamespace(i7);
|
36
|
-
var
|
37
|
-
var i1__namespace$3 = /*#__PURE__*/_interopNamespace(i1$3);
|
36
|
+
var i5__namespace = /*#__PURE__*/_interopNamespace(i5);
|
38
37
|
var i1__namespace$1 = /*#__PURE__*/_interopNamespace(i1$1);
|
39
|
-
var i2__namespace = /*#__PURE__*/_interopNamespace(i2);
|
40
|
-
var i4__namespace$
|
38
|
+
var i2__namespace$2 = /*#__PURE__*/_interopNamespace(i2$2);
|
39
|
+
var i4__namespace$1 = /*#__PURE__*/_interopNamespace(i4$1);
|
41
40
|
var i8__namespace = /*#__PURE__*/_interopNamespace(i8);
|
42
|
-
var i6__namespace
|
43
|
-
var i4__namespace$
|
44
|
-
var i1__namespace$
|
41
|
+
var i6__namespace = /*#__PURE__*/_interopNamespace(i6);
|
42
|
+
var i4__namespace$2 = /*#__PURE__*/_interopNamespace(i4$2);
|
43
|
+
var i1__namespace$3 = /*#__PURE__*/_interopNamespace(i1$3);
|
45
44
|
|
46
45
|
var VELOCE_FLOW_ROOT_ROUTE = 'VELOCE_FLOW_ROOT_ROUTE';
|
47
46
|
|
@@ -60,7 +59,7 @@
|
|
60
59
|
return FlowDialogComponent;
|
61
60
|
}());
|
62
61
|
FlowDialogComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowDialogComponent, deps: [{ token: i1__namespace.DynamicDialogConfig }, { token: i1__namespace.DynamicDialogRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
63
|
-
FlowDialogComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: FlowDialogComponent, selector: "vl-flow-dialog", ngImport: i0__namespace, template: "<div *ngIf=\"config.description\" class=\"description\">\n {{ config.description }}\n</div>\n\n<div class=\"form-actions\">\n <p-button\n *ngIf=\"config.secondaryButton\"\n styleClass=\"p-button-outlined button-text-bold\"\n [label]=\"config.secondaryButton!\"\n (onClick)=\"cancelHandler()\"\n ></p-button>\n <p-button\n styleClass=\"p-button p-button-filled\"\n [label]=\"config.primaryButton\"\n (onClick)=\"confirmHandler()\"\n ></p-button>\n</div>\n", styles: [":host{display:flex;flex-direction:column;width:100%}:host .description{flex:1;padding:0 24px 24px;font-weight:400;font-size:12px;line-height:16px;color:var(--vl-text-color-deep-accent)}:host .form-actions{border-top:1px solid var(--vl-border-color);padding:1.5rem 2.2rem;display:flex;justify-content:flex-end;width:100%;grid-gap:10px;gap:10px}\n"], components: [{ type:
|
62
|
+
FlowDialogComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: FlowDialogComponent, selector: "vl-flow-dialog", ngImport: i0__namespace, template: "<div *ngIf=\"config.description\" class=\"description\">\n {{ config.description }}\n</div>\n\n<div class=\"form-actions\">\n <p-button\n *ngIf=\"config.secondaryButton\"\n styleClass=\"p-button-outlined button-text-bold\"\n [label]=\"config.secondaryButton!\"\n (onClick)=\"cancelHandler()\"\n ></p-button>\n <p-button\n styleClass=\"p-button p-button-filled\"\n [label]=\"config.primaryButton\"\n (onClick)=\"confirmHandler()\"\n ></p-button>\n</div>\n", styles: [":host{display:flex;flex-direction:column;width:100%}:host .description{flex:1;padding:0 24px 24px;font-weight:400;font-size:12px;line-height:16px;color:var(--vl-text-color-deep-accent)}:host .form-actions{border-top:1px solid var(--vl-border-color);padding:1.5rem 2.2rem;display:flex;justify-content:flex-end;width:100%;grid-gap:10px;gap:10px}\n"], components: [{ type: i2__namespace.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass"], outputs: ["onClick", "onFocus", "onBlur"] }], directives: [{ type: i9__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
|
64
63
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowDialogComponent, decorators: [{
|
65
64
|
type: i0.Component,
|
66
65
|
args: [{
|
@@ -77,13 +76,13 @@
|
|
77
76
|
return FlowDialogModule;
|
78
77
|
}());
|
79
78
|
FlowDialogModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowDialogModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
|
80
|
-
FlowDialogModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowDialogModule, declarations: [FlowDialogComponent], imports: [i9.CommonModule,
|
81
|
-
FlowDialogModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowDialogModule, imports: [[i9.CommonModule,
|
79
|
+
FlowDialogModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowDialogModule, declarations: [FlowDialogComponent], imports: [i9.CommonModule, i2.ButtonModule], exports: [FlowDialogComponent] });
|
80
|
+
FlowDialogModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowDialogModule, imports: [[i9.CommonModule, i2.ButtonModule]] });
|
82
81
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowDialogModule, decorators: [{
|
83
82
|
type: i0.NgModule,
|
84
83
|
args: [{
|
85
84
|
declarations: [FlowDialogComponent],
|
86
|
-
imports: [i9.CommonModule,
|
85
|
+
imports: [i9.CommonModule, i2.ButtonModule],
|
87
86
|
exports: [FlowDialogComponent],
|
88
87
|
}]
|
89
88
|
}] });
|
@@ -526,21 +525,20 @@
|
|
526
525
|
};
|
527
526
|
return FlowRouterService;
|
528
527
|
}());
|
529
|
-
FlowRouterService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowRouterService, deps: [{ token: i1__namespace$1.Router }, { token: i1__namespace$1.ActivatedRoute }, { token:
|
528
|
+
FlowRouterService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowRouterService, deps: [{ token: i1__namespace$1.Router }, { token: i1__namespace$1.ActivatedRoute }, { token: i2__namespace$1.ContextService }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
|
530
529
|
FlowRouterService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowRouterService, providedIn: 'root' });
|
531
530
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowRouterService, decorators: [{
|
532
531
|
type: i0.Injectable,
|
533
532
|
args: [{ providedIn: 'root' }]
|
534
|
-
}], ctorParameters: function () { return [{ type: i1__namespace$1.Router }, { type: i1__namespace$1.ActivatedRoute }, { type:
|
533
|
+
}], ctorParameters: function () { return [{ type: i1__namespace$1.Router }, { type: i1__namespace$1.ActivatedRoute }, { type: i2__namespace$1.ContextService }]; } });
|
535
534
|
|
536
|
-
var
|
537
|
-
function
|
538
|
-
this.baseHttpService = baseHttpService;
|
535
|
+
var CartPreviewComponent = /** @class */ (function () {
|
536
|
+
function CartPreviewComponent(flowConfiguration, routerService, productImagesService) {
|
539
537
|
this.flowConfiguration = flowConfiguration;
|
540
538
|
this.routerService = routerService;
|
539
|
+
this.productImagesService = productImagesService;
|
541
540
|
this.form = new i7.FormGroup({});
|
542
541
|
this.shouldUpdate$ = new rxjs.BehaviorSubject(true);
|
543
|
-
this.imagesMap$ = new rxjs.BehaviorSubject({});
|
544
542
|
this.destroyed$ = new rxjs.Subject();
|
545
543
|
this.readonlyProductId$ = rxjs.combineLatest([
|
546
544
|
this.routerService.route$,
|
@@ -553,12 +551,12 @@
|
|
553
551
|
return route.queryParams.productId;
|
554
552
|
}));
|
555
553
|
}
|
556
|
-
|
554
|
+
CartPreviewComponent.prototype.ngOnChanges = function (changes) {
|
557
555
|
if (changes.products) {
|
558
556
|
this.shouldUpdate$.next(true);
|
559
557
|
}
|
560
558
|
};
|
561
|
-
|
559
|
+
CartPreviewComponent.prototype.ngAfterViewInit = function () {
|
562
560
|
var _this = this;
|
563
561
|
rxjs.combineLatest([this.readonlyProductId$, this.shouldUpdate$, this.overlayPanel.onShow])
|
564
562
|
.pipe(rxjs.filter(function () { return _this.overlayPanel.overlayVisible; }), rxjs.takeUntil(this.destroyed$))
|
@@ -567,23 +565,18 @@
|
|
567
565
|
return _this.updateControls(_this.products, readonlyProductId);
|
568
566
|
});
|
569
567
|
};
|
570
|
-
|
568
|
+
CartPreviewComponent.prototype.ngOnDestroy = function () {
|
571
569
|
this.destroyed$.next();
|
572
570
|
this.destroyed$.complete();
|
573
571
|
};
|
574
|
-
|
575
|
-
|
576
|
-
if (this.imagesMap$.value[productId] == null) {
|
577
|
-
this.imagesMap$.next(Object.assign(Object.assign({}, this.imagesMap$.value), (_b = {}, _b[productId] = '', _b)));
|
578
|
-
this.fetchProductImage(productId);
|
579
|
-
}
|
580
|
-
return this.imagesMap$.pipe(rxjs.map(function (imagesMap) { return imagesMap[productId]; }), rxjs.distinctUntilChanged());
|
572
|
+
CartPreviewComponent.prototype.getImageUrl = function (productId) {
|
573
|
+
return this.productImagesService.getImageUrl$(productId);
|
581
574
|
};
|
582
|
-
|
575
|
+
CartPreviewComponent.prototype.navigateToProductConfiguration = function (productId, lineItemId) {
|
583
576
|
this.overlayPanel.hide();
|
584
577
|
this.routerService.navigateToProductConfiguration(productId, lineItemId);
|
585
578
|
};
|
586
|
-
|
579
|
+
CartPreviewComponent.prototype.controlBlurHandler = function (product) {
|
587
580
|
var control = this.form.controls[product.id];
|
588
581
|
if (control.invalid) {
|
589
582
|
return;
|
@@ -597,29 +590,14 @@
|
|
597
590
|
},
|
598
591
|
]);
|
599
592
|
};
|
600
|
-
|
593
|
+
CartPreviewComponent.prototype.deleteHandler = function (product) {
|
601
594
|
this.flowConfiguration.delete([product.id]);
|
602
595
|
};
|
603
|
-
|
596
|
+
CartPreviewComponent.prototype.deleteAllHandler = function () {
|
604
597
|
var productIds = this.products.map(function (product) { return product.id; });
|
605
598
|
this.flowConfiguration.delete(productIds);
|
606
599
|
};
|
607
|
-
|
608
|
-
var _this = this;
|
609
|
-
this.baseHttpService
|
610
|
-
.api({
|
611
|
-
url: "/products/" + productId + "/image",
|
612
|
-
method: 'get',
|
613
|
-
responseType: 'blob',
|
614
|
-
errorHandler: rxjs.noop,
|
615
|
-
})
|
616
|
-
.pipe(rxjs.map(function (file) { return URL.createObjectURL(file); }), rxjs.catchError(function () { return rxjs.of(''); }), rxjs.tap(function (url) {
|
617
|
-
var _b;
|
618
|
-
return _this.imagesMap$.next(Object.assign(Object.assign({}, _this.imagesMap$.value), (_b = {}, _b[productId] = url, _b)));
|
619
|
-
}), rxjs.takeUntil(this.destroyed$))
|
620
|
-
.subscribe();
|
621
|
-
};
|
622
|
-
HeaderCartOverlayComponent.prototype.updateControls = function (products, readonlyProductId) {
|
600
|
+
CartPreviewComponent.prototype.updateControls = function (products, readonlyProductId) {
|
623
601
|
var _this = this;
|
624
602
|
var ids = [];
|
625
603
|
products.forEach(function (item) {
|
@@ -644,39 +622,39 @@
|
|
644
622
|
var removedIds = Object.keys(this.form.controls).filter(function (id) { return !ids.includes(id); });
|
645
623
|
removedIds.forEach(function (id) { return _this.form.removeControl(id); });
|
646
624
|
};
|
647
|
-
return
|
625
|
+
return CartPreviewComponent;
|
648
626
|
}());
|
649
|
-
|
650
|
-
|
651
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type:
|
627
|
+
CartPreviewComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: CartPreviewComponent, deps: [{ token: i2__namespace$1.FlowConfigurationService }, { token: FlowRouterService }, { token: i2__namespace$1.ProductImagesService }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
628
|
+
CartPreviewComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: CartPreviewComponent, selector: "vl-cart-preview", inputs: { products: "products" }, viewQueries: [{ propertyName: "overlayPanel", first: true, predicate: i3.OverlayPanel, descendants: true }], usesOnChanges: true, ngImport: i0__namespace, template: "<p-overlayPanel\n styleClass=\"navigation-settings-overlay flow-header-overlay center\"\n showTransitionOptions=\"0ms\"\n hideTransitionOptions=\"0ms\"\n>\n <ng-template pTemplate>\n <div class=\"flow-header-overlay__wrapper\" *vlLet=\"readonlyProductId$ | async as readonlyProductId\">\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-icon-close close-icon\" (click)=\"overlayPanel.hide()\"></i>\n </h2>\n\n <div class=\"product header\">\n <span>Product</span>\n <span class=\"text-right\">Qty</span>\n <span class=\"text-right\">MRR</span>\n <span class=\"text-right\">NRR</span>\n </div>\n\n <div class=\"scrollable-wrapper\">\n <div class=\"product\" *ngFor=\"let product of products\">\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 }}</div>\n <div>\n <p-button\n label=\"Configure\"\n [disabled]=\"!product.configurable || readonlyProductId === product.productId\"\n styleClass=\"p-button-link p-button-sm pl-0\"\n (onClick)=\"navigateToProductConfiguration(product.productId, product.id)\"\n ></p-button>\n <p-button\n label=\"Delete\"\n [disabled]=\"readonlyProductId === product.productId\"\n styleClass=\"p-button-link p-button-sm p-button-danger pl-0 pr-0\"\n (onClick)=\"deleteHandler(product)\"\n ></p-button>\n </div>\n </div>\n </div>\n\n <span>\n <p-inputNumber\n *ngIf=\"form.controls[product.id] as control\"\n class=\"qty-control\"\n [formControl]=\"$any(control)\"\n [min]=\"1\"\n [required]=\"true\"\n (onBlur)=\"controlBlurHandler(product)\"\n ></p-inputNumber>\n </span>\n <span class=\"text-right pt-3\">$0.00</span>\n <span class=\"text-right pt-3\">$0.00</span>\n </div>\n\n <ng-template #noImage>\n <i class=\"vl-icon vl-icon-no-image no-image-icon\"></i>\n </ng-template>\n </div>\n\n <div class=\"flex justify-content-end mt-3\">\n <p-button\n label=\"Clear cart\"\n styleClass=\"p-button-link p-button-sm p-button-danger pl-0 pr-0\"\n [disabled]=\"readonlyProductId\"\n (onClick)=\"deleteAllHandler()\"\n ></p-button>\n </div>\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-icon-close close-icon\" (click)=\"overlayPanel.hide()\"></i>\n </h2>\n\n <span class=\"empty-state\">There are no products added to the Shopping Cart yet.</span>\n </ng-template>\n </div>\n </ng-template>\n</p-overlayPanel>\n", styles: [".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 16px}.empty-state{color:var(--vl-text-color-deep-accent)}.scrollable-wrapper{overflow:auto}.product{display:grid;grid-template-columns:auto 60px 80px 80px;padding:16px 0}.product:not(.header){border-bottom:1px solid var(--vl-border-color)}.product.header{color:var(--vl-text-color-deep-accent)}.product__info{display:flex;grid-gap:16px;gap:16px}.product__image-wrapper{flex-shrink:0;height:64px;width:64px;display:flex;justify-content:center;align-items:center;background:var(--vl-primary-nav-overlay-bg);border-radius:4px}.product__image{background-size:contain;background-repeat:no-repeat;background-position:center;height:calc(100% - 12px);width:calc(100% - 12px)}.product .qty-control ::ng-deep .p-inputnumber-input{align-self:flex-start;text-align:right;width:100%}.word-break{word-break:break-word}.no-image-icon{color:#b4d1ef;height:18px;width:18px}\n"], components: [{ type: i3__namespace.OverlayPanel, selector: "p-overlayPanel", inputs: ["dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { type: i2__namespace.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass"], outputs: ["onClick", "onFocus", "onBlur"] }, { type: i5__namespace.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown"] }], directives: [{ type: i2__namespace$2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { type: i3__namespace$1.LetDirective, selector: "[vlLet]", inputs: ["vlLet"] }, { type: i9__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9__namespace.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i7__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7__namespace.FormControlDirective, selector: "[formControl]", inputs: ["disabled", "formControl", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i7__namespace.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }], pipes: { "async": i9__namespace.AsyncPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
|
629
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: CartPreviewComponent, decorators: [{
|
652
630
|
type: i0.Component,
|
653
631
|
args: [{
|
654
|
-
selector: 'vl-
|
655
|
-
templateUrl: './cart-
|
656
|
-
styleUrls: ['./cart-
|
632
|
+
selector: 'vl-cart-preview',
|
633
|
+
templateUrl: './cart-preview.component.html',
|
634
|
+
styleUrls: ['./cart-preview.component.scss'],
|
657
635
|
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
658
636
|
}]
|
659
|
-
}], ctorParameters: function () { return [{ type:
|
637
|
+
}], ctorParameters: function () { return [{ type: i2__namespace$1.FlowConfigurationService }, { type: FlowRouterService }, { type: i2__namespace$1.ProductImagesService }]; }, propDecorators: { overlayPanel: [{
|
660
638
|
type: i0.ViewChild,
|
661
|
-
args: [
|
639
|
+
args: [i3.OverlayPanel]
|
662
640
|
}], products: [{
|
663
641
|
type: i0.Input
|
664
642
|
}] } });
|
665
643
|
|
666
|
-
var
|
667
|
-
function
|
644
|
+
var CartPreviewModule = /** @class */ (function () {
|
645
|
+
function CartPreviewModule() {
|
668
646
|
}
|
669
|
-
return
|
647
|
+
return CartPreviewModule;
|
670
648
|
}());
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type:
|
649
|
+
CartPreviewModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: CartPreviewModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
|
650
|
+
CartPreviewModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: CartPreviewModule, declarations: [CartPreviewComponent], imports: [i9.CommonModule, i7.ReactiveFormsModule, i2.ButtonModule, i3.OverlayPanelModule, i3$1.LetDirectiveModule, i5.InputNumberModule], exports: [CartPreviewComponent] });
|
651
|
+
CartPreviewModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: CartPreviewModule, imports: [[i9.CommonModule, i7.ReactiveFormsModule, i2.ButtonModule, i3.OverlayPanelModule, i3$1.LetDirectiveModule, i5.InputNumberModule]] });
|
652
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: CartPreviewModule, decorators: [{
|
675
653
|
type: i0.NgModule,
|
676
654
|
args: [{
|
677
|
-
declarations: [
|
678
|
-
imports: [i9.CommonModule, i7.ReactiveFormsModule,
|
679
|
-
exports: [
|
655
|
+
declarations: [CartPreviewComponent],
|
656
|
+
imports: [i9.CommonModule, i7.ReactiveFormsModule, i2.ButtonModule, i3.OverlayPanelModule, i3$1.LetDirectiveModule, i5.InputNumberModule],
|
657
|
+
exports: [CartPreviewComponent],
|
680
658
|
}]
|
681
659
|
}] });
|
682
660
|
|
@@ -750,11 +728,11 @@
|
|
750
728
|
};
|
751
729
|
return FlowDialogService;
|
752
730
|
}());
|
753
|
-
FlowDialogService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowDialogService, deps: [{ token: i1__namespace.DialogService }, { token:
|
731
|
+
FlowDialogService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowDialogService, deps: [{ token: i1__namespace.DialogService }, { token: i2__namespace$1.ContextService }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
|
754
732
|
FlowDialogService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowDialogService });
|
755
733
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowDialogService, decorators: [{
|
756
734
|
type: i0.Injectable
|
757
|
-
}], ctorParameters: function () { return [{ type: i1__namespace.DialogService }, { type:
|
735
|
+
}], ctorParameters: function () { return [{ type: i1__namespace.DialogService }, { type: i2__namespace$1.ContextService }]; } });
|
758
736
|
|
759
737
|
var FlowHeaderComponent = /** @class */ (function () {
|
760
738
|
function FlowHeaderComponent(contextService, quoteDraftService, quoteApiService, sfApiService, flowConfiguration, routerService, dialogService) {
|
@@ -791,14 +769,14 @@
|
|
791
769
|
};
|
792
770
|
Object.defineProperty(FlowHeaderComponent.prototype, "isAccountMode", {
|
793
771
|
get: function () {
|
794
|
-
return this.mode ===
|
772
|
+
return this.mode === core.ConfigurationContextMode.ACCOUNT;
|
795
773
|
},
|
796
774
|
enumerable: false,
|
797
775
|
configurable: true
|
798
776
|
});
|
799
777
|
Object.defineProperty(FlowHeaderComponent.prototype, "isQuoteMode", {
|
800
778
|
get: function () {
|
801
|
-
return this.mode ===
|
779
|
+
return this.mode === core.ConfigurationContextMode.QUOTE;
|
802
780
|
},
|
803
781
|
enumerable: false,
|
804
782
|
configurable: true
|
@@ -824,7 +802,7 @@
|
|
824
802
|
FlowHeaderComponent.prototype.saveButtonClickHandler = function () {
|
825
803
|
var _this = this;
|
826
804
|
if (!this.quoteDraftService.isEditMode()) {
|
827
|
-
if (this.mode ===
|
805
|
+
if (this.mode === core.ConfigurationContextMode.QUOTE) {
|
828
806
|
this.dialogService.showQuoteReadonlyModeDialog().subscribe();
|
829
807
|
}
|
830
808
|
else {
|
@@ -832,7 +810,7 @@
|
|
832
810
|
}
|
833
811
|
return;
|
834
812
|
}
|
835
|
-
if (this.mode ===
|
813
|
+
if (this.mode === core.ConfigurationContextMode.ACCOUNT && !this.quoteDraftService.hasUnsavedChanges) {
|
836
814
|
this.dialogService.showAccountNoChangesDialog().subscribe();
|
837
815
|
return;
|
838
816
|
}
|
@@ -850,7 +828,7 @@
|
|
850
828
|
.upsertQuote(quoteDraft)
|
851
829
|
.pipe(rxjs.tap(function () {
|
852
830
|
// navigate back to quote on successful save
|
853
|
-
if (_this.mode ===
|
831
|
+
if (_this.mode === core.ConfigurationContextMode.QUOTE) {
|
854
832
|
_this.back();
|
855
833
|
}
|
856
834
|
}), rxjs.finalize(function () { return _this.isSaveInProgress$.next(false); }))
|
@@ -858,11 +836,11 @@
|
|
858
836
|
};
|
859
837
|
FlowHeaderComponent.prototype.submitButtonClickHandler = function () {
|
860
838
|
var _this = this;
|
861
|
-
if (this.mode ===
|
839
|
+
if (this.mode === core.ConfigurationContextMode.QUOTE && !this.quoteDraftService.isEditMode()) {
|
862
840
|
this.dialogService.showReadonlyQuoteSubmitFailureDialog();
|
863
841
|
return;
|
864
842
|
}
|
865
|
-
if (this.mode ===
|
843
|
+
if (this.mode === core.ConfigurationContextMode.ACCOUNT) {
|
866
844
|
this.dialogService.showAccountSubmitFailureDialog();
|
867
845
|
return;
|
868
846
|
}
|
@@ -932,8 +910,8 @@
|
|
932
910
|
};
|
933
911
|
return FlowHeaderComponent;
|
934
912
|
}());
|
935
|
-
FlowHeaderComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowHeaderComponent, deps: [{ token:
|
936
|
-
FlowHeaderComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: FlowHeaderComponent, selector: "vl-flow-header", ngImport: i0__namespace, template: "<div class=\"flow-info\" *vlLet=\"objectDetails$ | async as details\">\n <nav class=\"nav-item nav-back\" (click)=\"back()\">\n <i class=\"nav-icon vl-icon vl-icon-arrow-left\"></i>\n\n <span> Back </span>\n <span *ngIf=\"objectName\" class=\"object-name\"> To {{ objectName }}</span>\n </nav>\n\n <ng-container *ngIf=\"isAccountMode\">\n <span class=\"dot-separator\"></span>\n\n <span>Account name</span>\n\n <nav class=\"account-name\" [pTooltip]=\"contextProperties.Name ?? ''\" tooltipPosition=\"bottom\" [showDelay]=\"1000\">\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(contextProperties.Id)\">{{ contextProperties.Name }}</a>\n </nav>\n </ng-container>\n\n <ng-container *ngIf=\"isQuoteMode\">\n <span class=\"dot-separator\"></span>\n\n <span>Quote #{{ details.quoteNumber }}</span>\n\n <span class=\"dot-separator\"></span>\n\n <nav class=\"nav-item\" (click)=\"quoteDetails.toggle($event)\">\n <span>{{ status$ | async }}</span>\n\n <i *ngIf=\"!quoteDetails.overlayVisible\" class=\"vl-icon vl-icon-chevron-down icon-with-margin\"></i>\n <i *ngIf=\"quoteDetails.overlayVisible\" class=\"vl-icon vl-icon-chevron-up icon-with-margin\"></i>\n </nav>\n\n <p-overlayPanel styleClass=\"navigation-settings-overlay flow-header-overlay center\" #quoteDetails>\n <ng-template pTemplate>\n <div class=\"flow-header-overlay__wrapper\">\n <h2 class=\"flow-header-overlay__title\">\n <span>Quote Information</span>\n <i class=\"vl-icon vl-icon-close close-icon\" (click)=\"quoteDetails.hide()\"></i>\n </h2>\n\n <ul class=\"info-list\">\n <li class=\"info-list__row\">\n <span>Account Name:</span>\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(details.accountId)\">{{ details.accountName }}</a>\n </li>\n <li class=\"info-list__row\">\n <span>Opportunity Name:</span>\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(details.opportunityId)\">{{\n details.opportunityName\n }}</a>\n </li>\n <li class=\"info-list__row\">\n <span>Quote Name:</span>\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(details.quoteId)\">{{ details.quoteName }}</a>\n </li>\n </ul>\n </div>\n </ng-template>\n </p-overlayPanel>\n </ng-container>\n</div>\n\n<div class=\"flow-navigation\">\n <nav class=\"nav-item\" [ngClass]=\"{ active: isCatalogRoute$ | async }\" (click)=\"navigateToCatalog()\">Catalog</nav>\n <nav class=\"nav-item disabled\" [ngClass]=\"{ active: isConfigurationRoute$ | async }\">Configurator</nav>\n <ng-container *vlLet=\"products$ | async as products\">\n <nav class=\"nav-item\" [ngClass]=\"{ active: isCartRoute$ | async }\" (click)=\"navigateToShoppingCart()\">\n Shopping Cart ({{ products.length }})\n </nav>\n\n <nav class=\"nav-popover-toggle active\" (click)=\"cart?.overlayPanel?.toggle($event)\">\n <i *ngIf=\"!cart?.overlayPanel?.overlayVisible\" class=\"vl-icon vl-icon-chevron-down icon-with-margin\"></i>\n <i *ngIf=\"cart?.overlayPanel?.overlayVisible\" class=\"vl-icon vl-icon-chevron-up icon-with-margin\"></i>\n </nav>\n\n <vl-header-cart-overlay #cart [products]=\"products\"></vl-header-cart-overlay>\n </ng-container>\n</div>\n\n<div class=\"flow-controls\" *vlLet=\"objectDetails$ | async as details\">\n <ng-container *ngIf=\"isQuoteMode\">\n <span *ngIf=\"details.priceListName\">{{ details.priceListName }}</span>\n <span *ngIf=\"contextProperties.StartDate\">{{ contextProperties.StartDate | date: 'MM.dd.yyyy' }}</span>\n\n <span class=\"slash-separator\"></span>\n\n <span>MRR: <span class=\"font-semibold\">$0.00</span></span>\n <span>NRR: <span class=\"font-semibold\">$0.00</span></span>\n </ng-container>\n\n <ng-container *vlLet=\"isCartRoute$ | async as isCartRoute\">\n <p-button\n styleClass=\"p-button-outlined\"\n label=\"Generate Doc\"\n [disabled]=\"!isCartRoute\"\n tooltipPosition=\"bottom\"\n [showDelay]=\"300\"\n [pTooltip]=\"isCartRoute ? '' : disabledActionButtonTooltip\"\n ></p-button>\n\n <p-button\n *vlLet=\"isSaveInProgress$ | async as isSaveInProgress\"\n class=\"save-button\"\n styleClass=\"p-button-outlined\"\n [label]=\"isSaveInProgress ? 'Saving' : 'Save to Quote'\"\n (onClick)=\"saveButtonClickHandler()\"\n [loading]=\"isSaveInProgress\"\n ></p-button>\n\n <p-button\n *vlLet=\"isSubmitInProgress$ | async as isSubmitInProgress\"\n class=\"submit-button\"\n styleClass=\"p-button\"\n [label]=\"isSubmitInProgress ? 'Submitting' : 'Submit For Approval'\"\n [disabled]=\"!isCartRoute\"\n tooltipPosition=\"bottom\"\n [showDelay]=\"300\"\n [pTooltip]=\"isCartRoute ? '' : disabledActionButtonTooltip\"\n (onClick)=\"submitButtonClickHandler()\"\n [loading]=\"isSubmitInProgress\"\n ></p-button>\n </ng-container>\n</div>\n", styles: [":host{display:flex;align-items:center;height:48px;width:100%;background-color:var(--vl-primary-color);color:#fff;padding:0 32px;flex-shrink:0}::ng-deep .p-overlaypanel.flow-header-overlay .p-overlaypanel-content{background-color:#fff;padding:16px}::ng-deep .p-overlaypanel.flow-header-overlay.left:before{left:6px!important}::ng-deep .p-overlaypanel.flow-header-overlay.right:before{right:6px!important}::ng-deep .p-overlaypanel.flow-header-overlay.left .p-overlaypanel-content{margin-left:-16px}::ng-deep .p-overlaypanel.flow-header-overlay.right .p-overlaypanel-content{margin-right:-16px}::ng-deep .p-overlaypanel.flow-header-overlay:before{background-color:#fff}:host ::ng-deep .p-button{padding:5px 15px;font-size:12px}:host ::ng-deep .p-button{color:var(--vl-primary-color);background-color:#fff;border-color:#fff}:host ::ng-deep .p-button:enabled:hover{background-color:var(--vl-primary-color);color:#fff;border-color:#fff}:host ::ng-deep .p-button.p-button-outlined{background-color:var(--vl-primary-color);color:#fff;border-color:#fff}:host ::ng-deep .p-button.p-button-outlined:enabled:hover{color:var(--vl-primary-color);background-color:#fff;border-color:#fff}:host ::ng-deep .p-button .p-button-label{white-space:nowrap}:host ::ng-deep .save-button .p-button{width:120px}:host ::ng-deep .submit-button .p-button{width:160px}.vl-icon{display:inline-block}.flow-info{flex-shrink:0;display:flex;grid-gap:8px;gap:8px;align-items:center}.flow-info .nav-popover-toggle{margin-left:-8px}.flow-info .object-name{text-transform:capitalize}.flow-info .nav-back{font-weight:bold}.flow-info .nav-item:not(.disabled):hover,.flow-info .nav-popover-toggle:not(.disabled):hover{opacity:.6}nav{display:flex;align-items:center;cursor:pointer;padding:4px 0}nav.disabled{opacity:.6;cursor:default}nav .nav-icon{margin-right:10px}nav .icon-with-margin{margin:0 4px}nav a{color:#fff}nav.account-name{margin-left:4px;display:block;max-width:200px;overflow:hidden;text-overflow:ellipsis}nav.nav-popover-toggle{width:24px;display:flex;justify-content:center}nav.nav-popover-toggle i{pointer-events:none;margin:0}nav i{pointer-events:none}.dot-separator:after{content:\"\";display:block;width:4px;height:4px;border-radius:50%;background:#fff}.slash-separator:after{content:\"\";display:block;background:#fff;width:1px;height:16px}.flow-header-overlay__wrapper{width:360px}.flow-header-overlay__wrapper .close-icon{cursor:pointer}.flow-header-overlay__wrapper .info-list{list-style:none;padding:0;font-size:12px}.flow-header-overlay__wrapper .info-list__row{padding:8px 0;display:flex;justify-content:space-between}.flow-header-overlay__title{display:flex;justify-content:space-between;align-items:center;margin:0 0 24px}.flow-navigation{flex-grow:1;display:flex;grid-gap:16px;gap:16px;justify-content:center;font-weight:600}.flow-navigation .cart-nav-container{display:flex}.flow-navigation .nav-popover-toggle{margin-left:-14px}.flow-navigation .nav-item,.flow-navigation .nav-popover-toggle{opacity:.6}.flow-navigation .nav-item.active,.flow-navigation .nav-item:not(.disabled):hover,.flow-navigation .nav-popover-toggle.active,.flow-navigation .nav-popover-toggle:not(.disabled):hover{opacity:1}.flow-controls{flex-shrink:0;display:flex;align-items:center;grid-gap:8px;gap:8px}\n"], components: [{ type: i4__namespace.OverlayPanel, selector: "p-overlayPanel", inputs: ["dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { type: HeaderCartOverlayComponent, selector: "vl-header-cart-overlay", inputs: ["products"] }, { type: i5__namespace.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass"], outputs: ["onClick", "onFocus", "onBlur"] }], directives: [{ type: i3__namespace.LetDirective, selector: "[vlLet]", inputs: ["vlLet"] }, { type: i9__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10__namespace.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i2__namespace.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { type: i9__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "async": i9__namespace.AsyncPipe, "date": i9__namespace.DatePipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
|
913
|
+
FlowHeaderComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowHeaderComponent, deps: [{ token: i2__namespace$1.ContextService }, { token: i2__namespace$1.QuoteDraftService }, { token: i1__namespace$2.QuoteApiService }, { token: i1__namespace$2.SalesforceApiService }, { token: i2__namespace$1.FlowConfigurationService }, { token: FlowRouterService }, { token: FlowDialogService }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
914
|
+
FlowHeaderComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: FlowHeaderComponent, selector: "vl-flow-header", ngImport: i0__namespace, template: "<div class=\"flow-info\" *vlLet=\"objectDetails$ | async as details\">\n <nav class=\"nav-item nav-back\" (click)=\"back()\">\n <i class=\"nav-icon vl-icon vl-icon-arrow-left\"></i>\n\n <span> Back </span>\n <span *ngIf=\"objectName\" class=\"object-name\"> To {{ objectName }}</span>\n </nav>\n\n <ng-container *ngIf=\"isAccountMode\">\n <span class=\"dot-separator\"></span>\n\n <span>Account name</span>\n\n <nav class=\"account-name\" [pTooltip]=\"contextProperties.Name ?? ''\" tooltipPosition=\"bottom\" [showDelay]=\"1000\">\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(contextProperties.Id)\">{{ contextProperties.Name }}</a>\n </nav>\n </ng-container>\n\n <ng-container *ngIf=\"isQuoteMode\">\n <span class=\"dot-separator\"></span>\n\n <span>Quote #{{ details.quoteNumber }}</span>\n\n <span class=\"dot-separator\"></span>\n\n <nav class=\"nav-item\" (click)=\"quoteDetails.toggle($event)\">\n <span>{{ status$ | async }}</span>\n\n <i *ngIf=\"!quoteDetails.overlayVisible\" class=\"vl-icon vl-icon-chevron-down icon-with-margin\"></i>\n <i *ngIf=\"quoteDetails.overlayVisible\" class=\"vl-icon vl-icon-chevron-up icon-with-margin\"></i>\n </nav>\n\n <p-overlayPanel styleClass=\"navigation-settings-overlay flow-header-overlay center\" #quoteDetails>\n <ng-template pTemplate>\n <div class=\"flow-header-overlay__wrapper\">\n <h2 class=\"flow-header-overlay__title\">\n <span>Quote Information</span>\n <i class=\"vl-icon vl-icon-close close-icon\" (click)=\"quoteDetails.hide()\"></i>\n </h2>\n\n <ul class=\"info-list\">\n <li class=\"info-list__row\">\n <span>Account Name:</span>\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(details.accountId)\">{{ details.accountName }}</a>\n </li>\n <li class=\"info-list__row\">\n <span>Opportunity Name:</span>\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(details.opportunityId)\">{{\n details.opportunityName\n }}</a>\n </li>\n <li class=\"info-list__row\">\n <span>Quote Name:</span>\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(details.quoteId)\">{{ details.quoteName }}</a>\n </li>\n </ul>\n </div>\n </ng-template>\n </p-overlayPanel>\n </ng-container>\n</div>\n\n<div class=\"flow-navigation\">\n <nav class=\"nav-item\" [ngClass]=\"{ active: isCatalogRoute$ | async }\" (click)=\"navigateToCatalog()\">Catalog</nav>\n <nav class=\"nav-item disabled\" [ngClass]=\"{ active: isConfigurationRoute$ | async }\">Configurator</nav>\n <ng-container *vlLet=\"products$ | async as products\">\n <nav class=\"nav-item\" [ngClass]=\"{ active: isCartRoute$ | async }\" (click)=\"navigateToShoppingCart()\">\n Shopping Cart ({{ products.length }})\n </nav>\n\n <nav class=\"nav-popover-toggle active\" (click)=\"cart?.overlayPanel?.toggle($event)\">\n <i *ngIf=\"!cart?.overlayPanel?.overlayVisible\" class=\"vl-icon vl-icon-chevron-down icon-with-margin\"></i>\n <i *ngIf=\"cart?.overlayPanel?.overlayVisible\" class=\"vl-icon vl-icon-chevron-up icon-with-margin\"></i>\n </nav>\n\n <vl-cart-preview #cart [products]=\"products\"></vl-cart-preview>\n </ng-container>\n</div>\n\n<div class=\"flow-controls\" *vlLet=\"objectDetails$ | async as details\">\n <ng-container *ngIf=\"isQuoteMode\">\n <span *ngIf=\"details.priceListName\">{{ details.priceListName }}</span>\n <span *ngIf=\"contextProperties.StartDate\">{{ contextProperties.StartDate | date: 'MM.dd.yyyy' }}</span>\n\n <span class=\"slash-separator\"></span>\n\n <span>MRR: <span class=\"font-semibold\">$0.00</span></span>\n <span>NRR: <span class=\"font-semibold\">$0.00</span></span>\n </ng-container>\n\n <ng-container *vlLet=\"isCartRoute$ | async as isCartRoute\">\n <p-button\n styleClass=\"p-button-outlined\"\n label=\"Generate Doc\"\n [disabled]=\"!isCartRoute\"\n tooltipPosition=\"bottom\"\n [showDelay]=\"300\"\n [pTooltip]=\"isCartRoute ? '' : disabledActionButtonTooltip\"\n ></p-button>\n\n <p-button\n *vlLet=\"isSaveInProgress$ | async as isSaveInProgress\"\n class=\"save-button\"\n styleClass=\"p-button-outlined\"\n [label]=\"isSaveInProgress ? 'Saving' : 'Save to Quote'\"\n (onClick)=\"saveButtonClickHandler()\"\n [loading]=\"isSaveInProgress\"\n ></p-button>\n\n <p-button\n *vlLet=\"isSubmitInProgress$ | async as isSubmitInProgress\"\n class=\"submit-button\"\n styleClass=\"p-button\"\n [label]=\"isSubmitInProgress ? 'Submitting' : 'Submit For Approval'\"\n [disabled]=\"!isCartRoute\"\n tooltipPosition=\"bottom\"\n [showDelay]=\"300\"\n [pTooltip]=\"isCartRoute ? '' : disabledActionButtonTooltip\"\n (onClick)=\"submitButtonClickHandler()\"\n [loading]=\"isSubmitInProgress\"\n ></p-button>\n </ng-container>\n</div>\n", styles: [":host{display:flex;align-items:center;height:48px;width:100%;background-color:var(--vl-primary-color);color:#fff;padding:0 32px;flex-shrink:0}::ng-deep .p-overlaypanel.flow-header-overlay .p-overlaypanel-content{background-color:#fff;padding:16px}::ng-deep .p-overlaypanel.flow-header-overlay.left:before{left:6px!important}::ng-deep .p-overlaypanel.flow-header-overlay.right:before{right:6px!important}::ng-deep .p-overlaypanel.flow-header-overlay.left .p-overlaypanel-content{margin-left:-16px}::ng-deep .p-overlaypanel.flow-header-overlay.right .p-overlaypanel-content{margin-right:-16px}::ng-deep .p-overlaypanel.flow-header-overlay:before{background-color:#fff}:host ::ng-deep .p-button{padding:5px 15px;font-size:12px}:host ::ng-deep .p-button{color:var(--vl-primary-color);background-color:#fff;border-color:#fff}:host ::ng-deep .p-button:enabled:hover{background-color:var(--vl-primary-color);color:#fff;border-color:#fff}:host ::ng-deep .p-button.p-button-outlined{background-color:var(--vl-primary-color);color:#fff;border-color:#fff}:host ::ng-deep .p-button.p-button-outlined:enabled:hover{color:var(--vl-primary-color);background-color:#fff;border-color:#fff}:host ::ng-deep .p-button .p-button-label{white-space:nowrap}:host ::ng-deep .save-button .p-button{width:120px}:host ::ng-deep .submit-button .p-button{width:160px}.vl-icon{display:inline-block}.flow-info{flex-shrink:0;display:flex;grid-gap:8px;gap:8px;align-items:center}.flow-info .nav-popover-toggle{margin-left:-8px}.flow-info .object-name{text-transform:capitalize}.flow-info .nav-back{font-weight:bold}.flow-info .nav-item:not(.disabled):hover,.flow-info .nav-popover-toggle:not(.disabled):hover{opacity:.6}nav{display:flex;align-items:center;cursor:pointer;padding:4px 0}nav.disabled{opacity:.6;cursor:default}nav .nav-icon{margin-right:10px}nav .icon-with-margin{margin:0 4px}nav a{color:#fff}nav.account-name{margin-left:4px;display:block;max-width:200px;overflow:hidden;text-overflow:ellipsis}nav.nav-popover-toggle{width:24px;display:flex;justify-content:center}nav.nav-popover-toggle i{pointer-events:none;margin:0}nav i{pointer-events:none}.dot-separator:after{content:\"\";display:block;width:4px;height:4px;border-radius:50%;background:#fff}.slash-separator:after{content:\"\";display:block;background:#fff;width:1px;height:16px}.flow-header-overlay__wrapper{width:360px}.flow-header-overlay__wrapper .close-icon{cursor:pointer}.flow-header-overlay__wrapper .info-list{list-style:none;padding:0;font-size:12px}.flow-header-overlay__wrapper .info-list__row{padding:8px 0;display:flex;justify-content:space-between}.flow-header-overlay__title{display:flex;justify-content:space-between;align-items:center;margin:0 0 24px}.flow-navigation{flex-grow:1;display:flex;grid-gap:16px;gap:16px;justify-content:center;font-weight:600}.flow-navigation .cart-nav-container{display:flex}.flow-navigation .nav-popover-toggle{margin-left:-14px}.flow-navigation .nav-item,.flow-navigation .nav-popover-toggle{opacity:.6}.flow-navigation .nav-item.active,.flow-navigation .nav-item:not(.disabled):hover,.flow-navigation .nav-popover-toggle.active,.flow-navigation .nav-popover-toggle:not(.disabled):hover{opacity:1}.flow-controls{flex-shrink:0;display:flex;align-items:center;grid-gap:8px;gap:8px}\n"], components: [{ type: i3__namespace.OverlayPanel, selector: "p-overlayPanel", inputs: ["dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { type: CartPreviewComponent, selector: "vl-cart-preview", inputs: ["products"] }, { type: i2__namespace.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass"], outputs: ["onClick", "onFocus", "onBlur"] }], directives: [{ type: i3__namespace$1.LetDirective, selector: "[vlLet]", inputs: ["vlLet"] }, { type: i9__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10__namespace.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i2__namespace$2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { type: i9__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "async": i9__namespace.AsyncPipe, "date": i9__namespace.DatePipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
|
937
915
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowHeaderComponent, decorators: [{
|
938
916
|
type: i0.Component,
|
939
917
|
args: [{
|
@@ -942,7 +920,7 @@
|
|
942
920
|
styleUrls: ['./header.component.scss'],
|
943
921
|
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
944
922
|
}]
|
945
|
-
}], ctorParameters: function () { return [{ type:
|
923
|
+
}], ctorParameters: function () { return [{ type: i2__namespace$1.ContextService }, { type: i2__namespace$1.QuoteDraftService }, { type: i1__namespace$2.QuoteApiService }, { type: i1__namespace$2.SalesforceApiService }, { type: i2__namespace$1.FlowConfigurationService }, { type: FlowRouterService }, { type: FlowDialogService }]; } });
|
946
924
|
|
947
925
|
var FlowHeaderModule = /** @class */ (function () {
|
948
926
|
function FlowHeaderModule() {
|
@@ -950,13 +928,13 @@
|
|
950
928
|
return FlowHeaderModule;
|
951
929
|
}());
|
952
930
|
FlowHeaderModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowHeaderModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
|
953
|
-
FlowHeaderModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowHeaderModule, declarations: [FlowHeaderComponent], imports: [i9.CommonModule,
|
954
|
-
FlowHeaderModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowHeaderModule, imports: [[i9.CommonModule,
|
931
|
+
FlowHeaderModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowHeaderModule, declarations: [FlowHeaderComponent], imports: [i9.CommonModule, i3.OverlayPanelModule, i3$1.LetDirectiveModule, i10.TooltipModule, i2.ButtonModule, CartPreviewModule], exports: [FlowHeaderComponent] });
|
932
|
+
FlowHeaderModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowHeaderModule, imports: [[i9.CommonModule, i3.OverlayPanelModule, i3$1.LetDirectiveModule, i10.TooltipModule, i2.ButtonModule, CartPreviewModule]] });
|
955
933
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowHeaderModule, decorators: [{
|
956
934
|
type: i0.NgModule,
|
957
935
|
args: [{
|
958
936
|
declarations: [FlowHeaderComponent],
|
959
|
-
imports: [i9.CommonModule,
|
937
|
+
imports: [i9.CommonModule, i3.OverlayPanelModule, i3$1.LetDirectiveModule, i10.TooltipModule, i2.ButtonModule, CartPreviewModule],
|
960
938
|
exports: [FlowHeaderComponent],
|
961
939
|
}]
|
962
940
|
}] });
|
@@ -973,7 +951,7 @@
|
|
973
951
|
FlowService.prototype.initSubscriptions = function () {
|
974
952
|
var _this = this;
|
975
953
|
this.integrationState
|
976
|
-
.listen$(i4
|
954
|
+
.listen$(i4.FlowAction.FLOW_CONFIGURE_PRODUCT)
|
977
955
|
.pipe(rxjs.takeUntil(this.cleanup$), rxjs.tap(function (payload) {
|
978
956
|
var _a, _b, _c;
|
979
957
|
var productId = (_a = payload.productId) !== null && _a !== void 0 ? _a : (_c = (_b = _this.quoteDraftService.quoteSnapshot) === null || _b === void 0 ? void 0 : _b.currentState.find(function (li) { return li.id === payload.lineItemId; })) === null || _c === void 0 ? void 0 : _c.productId;
|
@@ -986,11 +964,11 @@
|
|
986
964
|
}))
|
987
965
|
.subscribe();
|
988
966
|
this.integrationState
|
989
|
-
.listen$(i4
|
967
|
+
.listen$(i4.FlowAction.FLOW_NAVIGATE_BACK)
|
990
968
|
.pipe(rxjs.takeUntil(this.cleanup$), rxjs.tap(function () { return _this.flowRouterService.navigateBack(); }))
|
991
969
|
.subscribe();
|
992
970
|
this.integrationState
|
993
|
-
.listen$(i4
|
971
|
+
.listen$(i4.FlowAction.FLOW_APPLY_PRODUCT_CONFIGURATION)
|
994
972
|
.pipe(rxjs.takeUntil(this.cleanup$), rxjs.switchMap(function () {
|
995
973
|
var lineItem = _this.configurationService.getSnapshot();
|
996
974
|
if (!lineItem) {
|
@@ -1017,11 +995,11 @@
|
|
1017
995
|
};
|
1018
996
|
return FlowService;
|
1019
997
|
}());
|
1020
|
-
FlowService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowService, deps: [{ token: i4__namespace
|
998
|
+
FlowService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowService, deps: [{ token: i4__namespace.IntegrationState }, { token: FlowRouterService }, { token: i2__namespace$1.QuoteDraftService }, { token: i2__namespace$1.ConfigurationService }, { token: i2__namespace$1.FlowConfigurationService }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
|
1021
999
|
FlowService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowService });
|
1022
1000
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowService, decorators: [{
|
1023
1001
|
type: i0.Injectable
|
1024
|
-
}], ctorParameters: function () { return [{ type: i4__namespace
|
1002
|
+
}], ctorParameters: function () { return [{ type: i4__namespace.IntegrationState }, { type: FlowRouterService }, { type: i2__namespace$1.QuoteDraftService }, { type: i2__namespace$1.ConfigurationService }, { type: i2__namespace$1.FlowConfigurationService }]; } });
|
1025
1003
|
|
1026
1004
|
var FlowComponent = /** @class */ (function () {
|
1027
1005
|
function FlowComponent(routerService, quoteDraftService, flowService) {
|
@@ -1038,8 +1016,8 @@
|
|
1038
1016
|
};
|
1039
1017
|
return FlowComponent;
|
1040
1018
|
}());
|
1041
|
-
FlowComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowComponent, deps: [{ token: FlowRouterService }, { token:
|
1042
|
-
FlowComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: FlowComponent, selector: "vl-flow", ngImport: i0__namespace, template: "<vl-flow-header *ngIf=\"showHeader$ | async\"></vl-flow-header>\n\n<div class=\"flow-content\">\n <div class=\"loading-overlay\" *ngIf=\"isLoading$ | async\">\n <vl-loader label=\"LOADING\"></vl-loader>\n </div>\n\n <router-outlet></router-outlet>\n</div>\n", styles: [":host{display:flex;flex-direction:column;height:100%}.flow-content{flex-grow:1;position:relative;overflow:hidden}.loading-overlay{position:absolute;height:100%;width:100%;left:0;right:0;top:0;bottom:0;background-color:#ffffff80;z-index:4}\n"], components: [{ type: FlowHeaderComponent, selector: "vl-flow-header" }, { type: i3__namespace.LoaderComponent, selector: "vl-loader", inputs: ["label", "overlayVisible"] }], directives: [{ type: i9__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1__namespace$1.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate"], exportAs: ["outlet"] }], pipes: { "async": i9__namespace.AsyncPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
|
1019
|
+
FlowComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowComponent, deps: [{ token: FlowRouterService }, { token: i2__namespace$1.QuoteDraftService }, { token: FlowService }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
1020
|
+
FlowComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: FlowComponent, selector: "vl-flow", ngImport: i0__namespace, template: "<vl-flow-header *ngIf=\"showHeader$ | async\"></vl-flow-header>\n\n<div class=\"flow-content\">\n <div class=\"loading-overlay\" *ngIf=\"isLoading$ | async\">\n <vl-loader label=\"LOADING\"></vl-loader>\n </div>\n\n <router-outlet></router-outlet>\n</div>\n", styles: [":host{display:flex;flex-direction:column;height:100%}.flow-content{flex-grow:1;position:relative;overflow:hidden}.loading-overlay{position:absolute;height:100%;width:100%;left:0;right:0;top:0;bottom:0;background-color:#ffffff80;z-index:4}\n"], components: [{ type: FlowHeaderComponent, selector: "vl-flow-header" }, { type: i3__namespace$1.LoaderComponent, selector: "vl-loader", inputs: ["label", "overlayVisible"] }], directives: [{ type: i9__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1__namespace$1.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate"], exportAs: ["outlet"] }], pipes: { "async": i9__namespace.AsyncPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
|
1043
1021
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowComponent, decorators: [{
|
1044
1022
|
type: i0.Component,
|
1045
1023
|
args: [{
|
@@ -1048,45 +1026,42 @@
|
|
1048
1026
|
styleUrls: ['./flow.component.scss'],
|
1049
1027
|
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
1050
1028
|
}]
|
1051
|
-
}], ctorParameters: function () { return [{ type: FlowRouterService }, { type:
|
1029
|
+
}], ctorParameters: function () { return [{ type: FlowRouterService }, { type: i2__namespace$1.QuoteDraftService }, { type: FlowService }]; } });
|
1052
1030
|
|
1053
1031
|
var ContextGuard = /** @class */ (function () {
|
1054
|
-
function ContextGuard(router, routerService) {
|
1032
|
+
function ContextGuard(router, routerService, contextService) {
|
1055
1033
|
this.router = router;
|
1056
1034
|
this.routerService = routerService;
|
1035
|
+
this.contextService = contextService;
|
1057
1036
|
}
|
1058
|
-
ContextGuard.prototype.getConfigurationContextMode = function (accountId, quoteId, orderId, rpcMessage) {
|
1059
|
-
if (accountId) {
|
1060
|
-
return i1$3.ConfigurationContextMode.ACCOUNT;
|
1061
|
-
}
|
1062
|
-
if (quoteId) {
|
1063
|
-
return i1$3.ConfigurationContextMode.QUOTE;
|
1064
|
-
}
|
1065
|
-
if (orderId) {
|
1066
|
-
return i1$3.ConfigurationContextMode.ORDER;
|
1067
|
-
}
|
1068
|
-
if (rpcMessage) {
|
1069
|
-
return i1$3.ConfigurationContextMode.REMOTE;
|
1070
|
-
}
|
1071
|
-
return;
|
1072
|
-
};
|
1073
1037
|
ContextGuard.prototype.checkActivation = function (route) {
|
1038
|
+
var _this = this;
|
1074
1039
|
var _a, _b;
|
1075
1040
|
var queryParams = route.queryParams;
|
1076
1041
|
var accountId = queryParams.accountId, quoteId = queryParams.quoteId, orderId = queryParams.orderId;
|
1077
|
-
var rpcMessage = window
|
1042
|
+
var rpcMessage = window.RPC_MESSAGE;
|
1043
|
+
var mode = this.getConfigurationContextMode(accountId, quoteId, orderId, rpcMessage);
|
1044
|
+
// Restrict if mode is not defined
|
1045
|
+
if (mode == null) {
|
1046
|
+
return this.handleError(route, 'Mode is undefined');
|
1047
|
+
}
|
1078
1048
|
var rpcMessageId = rpcMessage && ((_b = (_a = JSON.parse(rpcMessage)) === null || _a === void 0 ? void 0 : _a.quote) === null || _b === void 0 ? void 0 : _b.Id);
|
1079
1049
|
var headerId = accountId || quoteId || orderId || rpcMessageId || 'empty-for-test-mode';
|
1080
|
-
|
1081
|
-
if (
|
1082
|
-
|
1050
|
+
// Allow if context is already initialized with the same headerId
|
1051
|
+
if (this.contextService.isInitialized) {
|
1052
|
+
var currentContext = this.contextService.resolve();
|
1053
|
+
if (headerId && currentContext.headerId === headerId) {
|
1054
|
+
return rxjs.of(true);
|
1055
|
+
}
|
1083
1056
|
}
|
1084
|
-
|
1085
|
-
|
1086
|
-
|
1087
|
-
|
1088
|
-
|
1089
|
-
|
1057
|
+
// Initialize context
|
1058
|
+
return this.contextService.create(headerId, mode).pipe(rxjs.tap(function (context) {
|
1059
|
+
// Update context with queryParams
|
1060
|
+
_this.contextService.update(Object.assign(Object.assign({}, context), { properties: Object.assign(Object.assign({}, context.properties), (queryParams !== null && queryParams !== void 0 ? queryParams : {})) }));
|
1061
|
+
}), rxjs.map(function () { return true; }), rxjs.catchError(function (e) {
|
1062
|
+
var message = e instanceof http.HttpErrorResponse ? e.error.message : e;
|
1063
|
+
return _this.handleError(route, message);
|
1064
|
+
}));
|
1090
1065
|
};
|
1091
1066
|
ContextGuard.prototype.canActivate = function (route) {
|
1092
1067
|
return this.checkActivation(route);
|
@@ -1094,48 +1069,72 @@
|
|
1094
1069
|
ContextGuard.prototype.canActivateChild = function (childRoute) {
|
1095
1070
|
return this.checkActivation(childRoute);
|
1096
1071
|
};
|
1097
|
-
ContextGuard.prototype.
|
1072
|
+
ContextGuard.prototype.getConfigurationContextMode = function (accountId, quoteId, orderId, rpcMessage) {
|
1073
|
+
if (accountId) {
|
1074
|
+
return core.ConfigurationContextMode.ACCOUNT;
|
1075
|
+
}
|
1076
|
+
if (quoteId) {
|
1077
|
+
return core.ConfigurationContextMode.QUOTE;
|
1078
|
+
}
|
1079
|
+
if (orderId) {
|
1080
|
+
return core.ConfigurationContextMode.ORDER;
|
1081
|
+
}
|
1082
|
+
if (rpcMessage) {
|
1083
|
+
return core.ConfigurationContextMode.REMOTE;
|
1084
|
+
}
|
1085
|
+
return;
|
1086
|
+
};
|
1087
|
+
ContextGuard.prototype.handleError = function (route, message) {
|
1088
|
+
this.contextService.delete();
|
1098
1089
|
var parentUrl = this.routerService.getFlowRootPath(route);
|
1099
|
-
this.router.navigate([parentUrl, '404'], {
|
1100
|
-
state: { message: message },
|
1101
|
-
});
|
1102
|
-
return false;
|
1090
|
+
return rxjs.from(this.router.navigate([parentUrl, '404'], { state: { message: message } })).pipe(rxjs.map(function () { return false; }));
|
1103
1091
|
};
|
1104
1092
|
return ContextGuard;
|
1105
1093
|
}());
|
1106
|
-
ContextGuard.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ContextGuard, deps: [{ token: i1__namespace$1.Router }, { token: FlowRouterService }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
|
1094
|
+
ContextGuard.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ContextGuard, deps: [{ token: i1__namespace$1.Router }, { token: FlowRouterService }, { token: i2__namespace$1.ContextService }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
|
1107
1095
|
ContextGuard.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ContextGuard });
|
1108
1096
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ContextGuard, decorators: [{
|
1109
1097
|
type: i0.Injectable
|
1110
|
-
}], ctorParameters: function () { return [{ type: i1__namespace$1.Router }, { type: FlowRouterService }]; } });
|
1098
|
+
}], ctorParameters: function () { return [{ type: i1__namespace$1.Router }, { type: FlowRouterService }, { type: i2__namespace$1.ContextService }]; } });
|
1111
1099
|
|
1112
1100
|
var ProductUnloadGuard = /** @class */ (function () {
|
1113
|
-
function ProductUnloadGuard(contextService, quoteDraftService, configurationService, flowDialogService) {
|
1101
|
+
function ProductUnloadGuard(router, contextService, quoteDraftService, configurationService, flowDialogService) {
|
1102
|
+
this.router = router;
|
1114
1103
|
this.contextService = contextService;
|
1115
1104
|
this.quoteDraftService = quoteDraftService;
|
1116
1105
|
this.configurationService = configurationService;
|
1117
1106
|
this.flowDialogService = flowDialogService;
|
1118
1107
|
}
|
1119
|
-
ProductUnloadGuard.prototype.canDeactivate = function () {
|
1108
|
+
ProductUnloadGuard.prototype.canDeactivate = function (_, route, currentState, nextState) {
|
1120
1109
|
var _this = this;
|
1121
1110
|
var observable = rxjs.of(true);
|
1122
1111
|
if (!this.quoteDraftService.isStandalone && this.configurationService.hasUnsavedChanges) {
|
1123
1112
|
observable = this.flowDialogService.showUnsavedChangesDialog().pipe(rxjs.map(function (confirmed) { return !confirmed; }));
|
1124
1113
|
}
|
1125
|
-
return observable.pipe(rxjs.
|
1114
|
+
return observable.pipe(rxjs.map(function (unload) {
|
1126
1115
|
if (unload) {
|
1127
|
-
_this.contextService.update({ properties: { productId: undefined, lineItemId: undefined } });
|
1128
1116
|
_this.configurationService.reset();
|
1117
|
+
_this.contextService.update({ properties: { productId: undefined, lineItemId: undefined } });
|
1118
|
+
if (!nextState || currentState.url === nextState.url) {
|
1119
|
+
return true;
|
1120
|
+
}
|
1121
|
+
// clear obsolete queryParams
|
1122
|
+
var urlTree_1 = _this.router.parseUrl(nextState.url);
|
1123
|
+
delete urlTree_1.queryParams.productId;
|
1124
|
+
// replace url after deactivation has finished
|
1125
|
+
setTimeout(function () { return _this.router.navigateByUrl(urlTree_1.toString(), { replaceUrl: true }); });
|
1126
|
+
return true;
|
1129
1127
|
}
|
1128
|
+
return false;
|
1130
1129
|
}));
|
1131
1130
|
};
|
1132
1131
|
return ProductUnloadGuard;
|
1133
1132
|
}());
|
1134
|
-
ProductUnloadGuard.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ProductUnloadGuard, deps: [{ token: i1__namespace$
|
1133
|
+
ProductUnloadGuard.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ProductUnloadGuard, deps: [{ token: i1__namespace$1.Router }, { token: i2__namespace$1.ContextService }, { token: i2__namespace$1.QuoteDraftService }, { token: i2__namespace$1.ConfigurationService }, { token: FlowDialogService }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
|
1135
1134
|
ProductUnloadGuard.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ProductUnloadGuard });
|
1136
1135
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ProductUnloadGuard, decorators: [{
|
1137
1136
|
type: i0.Injectable
|
1138
|
-
}], ctorParameters: function () { return [{ type: i1__namespace$
|
1137
|
+
}], ctorParameters: function () { return [{ type: i1__namespace$1.Router }, { type: i2__namespace$1.ContextService }, { type: i2__namespace$1.QuoteDraftService }, { type: i2__namespace$1.ConfigurationService }, { type: FlowDialogService }]; } });
|
1139
1138
|
|
1140
1139
|
var RootGuard = /** @class */ (function () {
|
1141
1140
|
function RootGuard(router, routerService) {
|
@@ -1204,7 +1203,7 @@
|
|
1204
1203
|
}), rxjs.catchError(function (err) {
|
1205
1204
|
var _a;
|
1206
1205
|
var message = 'Failed to resolve Catalog component. ' + ((_a = err.message) !== null && _a !== void 0 ? _a : '');
|
1207
|
-
_this.toastService.add({ severity: i3.ToastType.error, summary: message, sticky: true });
|
1206
|
+
_this.toastService.add({ severity: i3$1.ToastType.error, summary: message, sticky: true });
|
1208
1207
|
_this.uiDefinition = undefined;
|
1209
1208
|
_this.state$.next({ loading: false, failure: true });
|
1210
1209
|
return rxjs.of();
|
@@ -1218,7 +1217,7 @@
|
|
1218
1217
|
CatalogComponent.prototype.getTemplateRootComponent$ = function (template) {
|
1219
1218
|
return this.templatesApi
|
1220
1219
|
.fetchComponents$(template.id)
|
1221
|
-
.pipe(rxjs.map(function (components) { var _a; return (_a = components.find(function (c) { return c.type ===
|
1220
|
+
.pipe(rxjs.map(function (components) { var _a; return (_a = components.find(function (c) { return c.type === core.UITemplateComponentType.ROOT; })) !== null && _a !== void 0 ? _a : undefined; }));
|
1222
1221
|
};
|
1223
1222
|
CatalogComponent.prototype.getLocalCatalogComponentMeta$ = function () {
|
1224
1223
|
var _a, _b;
|
@@ -1239,7 +1238,7 @@
|
|
1239
1238
|
};
|
1240
1239
|
CatalogComponent.prototype.getCatalogComponentMeta$ = function () {
|
1241
1240
|
var _this = this;
|
1242
|
-
return this.templatesApi.fetchTemplates$().pipe(rxjs.map(function (templates) { return templates.find(function (template) { return template.type ===
|
1241
|
+
return this.templatesApi.fetchTemplates$().pipe(rxjs.map(function (templates) { return templates.find(function (template) { return template.type === core.UITemplateType.CATALOG && template.name === _this.templateApiName; }); }), rxjs.switchMap(function (template) { return (template ? _this.getTemplateRootComponent$(template) : rxjs.of(undefined)); }), rxjs.switchMap(function (component) { return component ? _this.templatesApi.fetchComponentAttachments$(component.uiTemplateId, component) : rxjs.of(undefined); }));
|
1243
1242
|
};
|
1244
1243
|
CatalogComponent.prototype.generateUIDefinition$ = function () {
|
1245
1244
|
var _this = this;
|
@@ -1271,8 +1270,8 @@
|
|
1271
1270
|
};
|
1272
1271
|
return CatalogComponent;
|
1273
1272
|
}());
|
1274
|
-
CatalogComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: CatalogComponent, deps: [{ token: i1__namespace$
|
1275
|
-
CatalogComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: CatalogComponent, selector: "vl-flow-catalog", ngImport: i0__namespace, template: "<ng-container *ngIf=\"state$ | async as state\">\n <vl-loader *ngIf=\"state.loading; else content\" [label]=\"'Loading UI'\"></vl-loader>\n\n <ng-template #content>\n <ng-container *ngIf=\"!state.failure\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n </ng-container>\n </ng-template>\n</ng-container>\n", styles: [""], components: [{ type: i3__namespace.LoaderComponent, selector: "vl-loader", inputs: ["label", "overlayVisible"] }, { type: i4__namespace
|
1273
|
+
CatalogComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: CatalogComponent, deps: [{ token: i1__namespace$2.UITemplatesApiService }, { token: i2__namespace$1.ContextService }, { token: i0__namespace.ChangeDetectorRef }, { token: i3__namespace$1.ToastService }, { token: FLOW_CUSTOMIZATION, optional: true }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
1274
|
+
CatalogComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: CatalogComponent, selector: "vl-flow-catalog", ngImport: i0__namespace, template: "<ng-container *ngIf=\"state$ | async as state\">\n <vl-loader *ngIf=\"state.loading; else content\" [label]=\"'Loading UI'\"></vl-loader>\n\n <ng-template #content>\n <ng-container *ngIf=\"!state.failure\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n </ng-container>\n </ng-template>\n</ng-container>\n", styles: [""], components: [{ type: i3__namespace$1.LoaderComponent, selector: "vl-loader", inputs: ["label", "overlayVisible"] }, { type: i4__namespace.PreviewComponent, selector: "vl-cms-preview", inputs: ["modelId", "uiDefinition", "clearState"] }], directives: [{ type: i9__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i9__namespace.AsyncPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
|
1276
1275
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: CatalogComponent, decorators: [{
|
1277
1276
|
type: i0.Component,
|
1278
1277
|
args: [{
|
@@ -1282,7 +1281,7 @@
|
|
1282
1281
|
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
1283
1282
|
}]
|
1284
1283
|
}], ctorParameters: function () {
|
1285
|
-
return [{ type: i1__namespace$
|
1284
|
+
return [{ type: i1__namespace$2.UITemplatesApiService }, { type: i2__namespace$1.ContextService }, { type: i0__namespace.ChangeDetectorRef }, { type: i3__namespace$1.ToastService }, { type: undefined, decorators: [{
|
1286
1285
|
type: i0.Optional
|
1287
1286
|
}, {
|
1288
1287
|
type: i0.Inject,
|
@@ -1296,13 +1295,13 @@
|
|
1296
1295
|
return CatalogModule;
|
1297
1296
|
}());
|
1298
1297
|
CatalogModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: CatalogModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
|
1299
|
-
CatalogModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: CatalogModule, declarations: [CatalogComponent], imports: [i9.CommonModule, i4
|
1300
|
-
CatalogModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: CatalogModule, imports: [[i9.CommonModule, i4
|
1298
|
+
CatalogModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: CatalogModule, declarations: [CatalogComponent], imports: [i9.CommonModule, i4.PreviewModule, i3$1.LoaderModule], exports: [CatalogComponent] });
|
1299
|
+
CatalogModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: CatalogModule, imports: [[i9.CommonModule, i4.PreviewModule, i3$1.LoaderModule]] });
|
1301
1300
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: CatalogModule, decorators: [{
|
1302
1301
|
type: i0.NgModule,
|
1303
1302
|
args: [{
|
1304
1303
|
declarations: [CatalogComponent],
|
1305
|
-
imports: [i9.CommonModule, i4
|
1304
|
+
imports: [i9.CommonModule, i4.PreviewModule, i3$1.LoaderModule],
|
1306
1305
|
exports: [CatalogComponent],
|
1307
1306
|
}]
|
1308
1307
|
}] });
|
@@ -1360,8 +1359,8 @@
|
|
1360
1359
|
};
|
1361
1360
|
return DebugComponent;
|
1362
1361
|
}());
|
1363
|
-
DebugComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: DebugComponent, deps: [{ token: i1__namespace$
|
1364
|
-
DebugComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: DebugComponent, selector: "vl-flow-debug", ngImport: i0__namespace, template: "<form [formGroup]=\"form\">\n <div class=\"fields-container\">\n <div class=\"field\">\n <label>SF Object ID</label>\n <input formControlName=\"id\" pInputText type=\"text\" />\n </div>\n\n <div class=\"field\">\n <label>SF Object Name</label>\n <p-dropdown\n appendTo=\"body\"\n formControlName=\"name\"\n [autoDisplayFirst]=\"false\"\n [options]=\"objectNames\"\n ></p-dropdown>\n </div>\n </div>\n\n <p-button\n styleClass=\"p-button-primary\"\n label=\"Run Flow\"\n [disabled]=\"!form.value.id || !selectedFlow\"\n (onClick)=\"runFlow()\"\n ></p-button>\n</form>\n\n<table>\n <thead>\n <tr>\n <th [width]=\"30\"></th>\n <th [width]=\"160\">ID</th>\n <th [width]=\"160\">Entry Path</th>\n <th>QueryParams</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let flow of flows$ | async\" (click)=\"selectedFlow = flow\">\n <td><p-radioButton [inputId]=\"flow.id\" name=\"flow\" [value]=\"flow\" [(ngModel)]=\"selectedFlow\"></p-radioButton></td>\n <td>{{ flow.id }}</td>\n <td>{{ flow.entryPath }}</td>\n <td>{{ flow.queryParamsStr }}</td>\n </tr>\n </tbody>\n</table>\n", styles: [":host{display:block;padding:24px 54px}form{display:flex;align-items:center;justify-content:space-between}.fields-container{display:flex;grid-gap:24px;gap:24px}.field{display:flex;flex-direction:column;width:200px;flex-shrink:0}:host ::ng-deep .p-dropdown{width:100%}table{width:100%;border-collapse:collapse}tr{cursor:pointer}tr:hover{background-color:#f0f5fa}th{text-align:left;font-weight:600}th,td{padding:0 10px;height:30px;border-bottom:1px solid var(--vl-border-color);margin-right:16px}\n"], components: [{ type: i4__namespace$
|
1362
|
+
DebugComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: DebugComponent, deps: [{ token: i1__namespace$2.FlowsApiService }, { token: i1__namespace$1.Router }, { token: i1__namespace$1.ActivatedRoute }, { token: i2__namespace$1.ContextService }, { token: i2__namespace$1.FlowConfigurationService }, { token: i2__namespace$1.QuoteDraftService }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
1363
|
+
DebugComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: DebugComponent, selector: "vl-flow-debug", ngImport: i0__namespace, template: "<form [formGroup]=\"form\">\n <div class=\"fields-container\">\n <div class=\"field\">\n <label>SF Object ID</label>\n <input formControlName=\"id\" pInputText type=\"text\" />\n </div>\n\n <div class=\"field\">\n <label>SF Object Name</label>\n <p-dropdown\n appendTo=\"body\"\n formControlName=\"name\"\n [autoDisplayFirst]=\"false\"\n [options]=\"objectNames\"\n ></p-dropdown>\n </div>\n </div>\n\n <p-button\n styleClass=\"p-button-primary\"\n label=\"Run Flow\"\n [disabled]=\"!form.value.id || !selectedFlow\"\n (onClick)=\"runFlow()\"\n ></p-button>\n</form>\n\n<table>\n <thead>\n <tr>\n <th [width]=\"30\"></th>\n <th [width]=\"160\">ID</th>\n <th [width]=\"160\">Entry Path</th>\n <th>QueryParams</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let flow of flows$ | async\" (click)=\"selectedFlow = flow\">\n <td><p-radioButton [inputId]=\"flow.id\" name=\"flow\" [value]=\"flow\" [(ngModel)]=\"selectedFlow\"></p-radioButton></td>\n <td>{{ flow.id }}</td>\n <td>{{ flow.entryPath }}</td>\n <td>{{ flow.queryParamsStr }}</td>\n </tr>\n </tbody>\n</table>\n", styles: [":host{display:block;padding:24px 54px}form{display:flex;align-items:center;justify-content:space-between}.fields-container{display:flex;grid-gap:24px;gap:24px}.field{display:flex;flex-direction:column;width:200px;flex-shrink:0}:host ::ng-deep .p-dropdown{width:100%}table{width:100%;border-collapse:collapse}tr{cursor:pointer}tr:hover{background-color:#f0f5fa}th{text-align:left;font-weight:600}th,td{padding:0 10px;height:30px;border-bottom:1px solid var(--vl-border-color);margin-right:16px}\n"], components: [{ type: i4__namespace$1.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "virtualScroll", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "disabled", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear"] }, { type: i2__namespace.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass"], outputs: ["onClick", "onFocus", "onBlur"] }, { type: i6__namespace.RadioButton, selector: "p-radioButton", inputs: ["value", "formControlName", "name", "disabled", "label", "tabindex", "inputId", "ariaLabelledBy", "ariaLabel", "style", "styleClass", "labelStyleClass"], outputs: ["onClick", "onFocus", "onBlur"] }], directives: [{ type: i7__namespace.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i7__namespace.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i7__namespace.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i7__namespace.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i7__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7__namespace.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i8__namespace.InputText, selector: "[pInputText]" }, { type: i9__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "async": i9__namespace.AsyncPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
|
1365
1364
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: DebugComponent, decorators: [{
|
1366
1365
|
type: i0.Component,
|
1367
1366
|
args: [{
|
@@ -1370,7 +1369,7 @@
|
|
1370
1369
|
styleUrls: ['./debug.component.scss'],
|
1371
1370
|
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
1372
1371
|
}]
|
1373
|
-
}], ctorParameters: function () { return [{ type: i1__namespace$
|
1372
|
+
}], ctorParameters: function () { return [{ type: i1__namespace$2.FlowsApiService }, { type: i1__namespace$1.Router }, { type: i1__namespace$1.ActivatedRoute }, { type: i2__namespace$1.ContextService }, { type: i2__namespace$1.FlowConfigurationService }, { type: i2__namespace$1.QuoteDraftService }]; } });
|
1374
1373
|
|
1375
1374
|
var routes$1 = [{ path: '', component: DebugComponent }];
|
1376
1375
|
var DebugModule = /** @class */ (function () {
|
@@ -1381,19 +1380,19 @@
|
|
1381
1380
|
DebugModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: DebugModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
|
1382
1381
|
DebugModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: DebugModule, declarations: [DebugComponent], imports: [i9.CommonModule,
|
1383
1382
|
i7.FormsModule,
|
1384
|
-
i7.ReactiveFormsModule, i1__namespace$1.RouterModule, i6
|
1385
|
-
|
1383
|
+
i7.ReactiveFormsModule, i1__namespace$1.RouterModule, i6.RadioButtonModule,
|
1384
|
+
i2.ButtonModule,
|
1386
1385
|
i8.InputTextModule,
|
1387
|
-
i4$
|
1386
|
+
i4$1.DropdownModule] });
|
1388
1387
|
DebugModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: DebugModule, imports: [[
|
1389
1388
|
i9.CommonModule,
|
1390
1389
|
i7.FormsModule,
|
1391
1390
|
i7.ReactiveFormsModule,
|
1392
1391
|
i1$1.RouterModule.forChild(routes$1),
|
1393
|
-
i6
|
1394
|
-
|
1392
|
+
i6.RadioButtonModule,
|
1393
|
+
i2.ButtonModule,
|
1395
1394
|
i8.InputTextModule,
|
1396
|
-
i4$
|
1395
|
+
i4$1.DropdownModule,
|
1397
1396
|
]] });
|
1398
1397
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: DebugModule, decorators: [{
|
1399
1398
|
type: i0.NgModule,
|
@@ -1404,10 +1403,10 @@
|
|
1404
1403
|
i7.FormsModule,
|
1405
1404
|
i7.ReactiveFormsModule,
|
1406
1405
|
i1$1.RouterModule.forChild(routes$1),
|
1407
|
-
i6
|
1408
|
-
|
1406
|
+
i6.RadioButtonModule,
|
1407
|
+
i2.ButtonModule,
|
1409
1408
|
i8.InputTextModule,
|
1410
|
-
i4$
|
1409
|
+
i4$1.DropdownModule,
|
1411
1410
|
],
|
1412
1411
|
}]
|
1413
1412
|
}] });
|
@@ -1473,7 +1472,7 @@
|
|
1473
1472
|
lineItemId && quote.currentState ? this.reConfigure(lineItemId, quote.currentState) : this.configure(productId);
|
1474
1473
|
};
|
1475
1474
|
LegacyProductComponent.prototype.getLineItemId = function (quote, queryParams) {
|
1476
|
-
if (
|
1475
|
+
if (core.EntityUtil.isPresent(queryParams['lineItemId'])) {
|
1477
1476
|
return queryParams['lineItemId'];
|
1478
1477
|
}
|
1479
1478
|
return quote.currentState
|
@@ -1482,12 +1481,12 @@
|
|
1482
1481
|
.find(function (id) { return id; });
|
1483
1482
|
};
|
1484
1483
|
LegacyProductComponent.prototype.configure = function (productId) {
|
1485
|
-
var runtimeContext = this.getRuntimeContext(productId, '',
|
1484
|
+
var runtimeContext = this.getRuntimeContext(productId, '', i2$1.RuntimeOperation.INIT);
|
1486
1485
|
this.startRuntime({}, runtimeContext);
|
1487
1486
|
};
|
1488
1487
|
LegacyProductComponent.prototype.reConfigure = function (lineItemId, currentState) {
|
1489
|
-
var currentStateItem =
|
1490
|
-
var runtimeContext = this.getRuntimeContext(currentStateItem.productId, currentStateItem.offeringId,
|
1488
|
+
var currentStateItem = core.EntityUtil.findById(lineItemId, currentState);
|
1489
|
+
var runtimeContext = this.getRuntimeContext(currentStateItem.productId, currentStateItem.offeringId, i2$1.RuntimeOperation.UPDATE);
|
1491
1490
|
var states = {
|
1492
1491
|
configurableRamp: currentStateItem,
|
1493
1492
|
currentState: currentState,
|
@@ -1517,14 +1516,14 @@
|
|
1517
1516
|
LegacyProductComponent.prototype.getRuntimeContext = function (productId, offeringId, runtimeOperation) {
|
1518
1517
|
var _this = this;
|
1519
1518
|
return this.runtimeContextService.getRuntimeContext(productId, offeringId).pipe(operators.map(function (runtimeContext) {
|
1520
|
-
runtimeContext.invocationContext = { runtimeOperation:
|
1519
|
+
runtimeContext.invocationContext = { runtimeOperation: i2$1.RuntimeOperation[runtimeOperation] };
|
1521
1520
|
return runtimeContext;
|
1522
1521
|
}), operators.switchMap(function (runtimeContext) { return _this.customizeContext(productId, runtimeContext); }));
|
1523
1522
|
};
|
1524
1523
|
return LegacyProductComponent;
|
1525
1524
|
}());
|
1526
|
-
LegacyProductComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: LegacyProductComponent, deps: [{ token: i1__namespace$1.ActivatedRoute }, { token:
|
1527
|
-
LegacyProductComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: LegacyProductComponent, selector: "ng-component", ngImport: i0__namespace, template: "<vl-runtime #runtimeView (solutionUpdated)=\"onSolutionUpdated($event)\"></vl-runtime>\n", styles: [":host{display:block;height:100%}\n"], components: [{ type: i4__namespace$
|
1525
|
+
LegacyProductComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: LegacyProductComponent, deps: [{ token: i1__namespace$1.ActivatedRoute }, { token: i2__namespace$1.QuoteDraftService }, { token: i1__namespace$2.QuoteApiService }, { token: i2__namespace$1.ContextService }, { token: i4__namespace$2.RuntimeContextService }, { token: i4__namespace$2.RuntimeService }, { token: i4__namespace$2.CurrentStateService }, { token: FLOW_CUSTOMIZATION, optional: true }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
1526
|
+
LegacyProductComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: LegacyProductComponent, selector: "ng-component", ngImport: i0__namespace, template: "<vl-runtime #runtimeView (solutionUpdated)=\"onSolutionUpdated($event)\"></vl-runtime>\n", styles: [":host{display:block;height:100%}\n"], components: [{ type: i4__namespace$2.RuntimeComponent, selector: "vl-runtime", outputs: ["solutionUpdated"] }] });
|
1528
1527
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: LegacyProductComponent, decorators: [{
|
1529
1528
|
type: i0.Component,
|
1530
1529
|
args: [{
|
@@ -1532,7 +1531,7 @@
|
|
1532
1531
|
styleUrls: ['./legacy-product.component.scss'],
|
1533
1532
|
}]
|
1534
1533
|
}], ctorParameters: function () {
|
1535
|
-
return [{ type: i1__namespace$1.ActivatedRoute }, { type:
|
1534
|
+
return [{ type: i1__namespace$1.ActivatedRoute }, { type: i2__namespace$1.QuoteDraftService }, { type: i1__namespace$2.QuoteApiService }, { type: i2__namespace$1.ContextService }, { type: i4__namespace$2.RuntimeContextService }, { type: i4__namespace$2.RuntimeService }, { type: i4__namespace$2.CurrentStateService }, { type: undefined, decorators: [{
|
1536
1535
|
type: i0.Optional
|
1537
1536
|
}, {
|
1538
1537
|
type: i0.Inject,
|
@@ -1546,13 +1545,13 @@
|
|
1546
1545
|
return LegacyProductModule;
|
1547
1546
|
}());
|
1548
1547
|
LegacyProductModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: LegacyProductModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
|
1549
|
-
LegacyProductModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: LegacyProductModule, declarations: [LegacyProductComponent], imports: [i9.CommonModule, i4$
|
1550
|
-
LegacyProductModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: LegacyProductModule, imports: [[i9.CommonModule, i4$
|
1548
|
+
LegacyProductModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: LegacyProductModule, declarations: [LegacyProductComponent], imports: [i9.CommonModule, i4$2.RuntimeModule, i1__namespace$3.TooltipModule], exports: [LegacyProductComponent] });
|
1549
|
+
LegacyProductModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: LegacyProductModule, imports: [[i9.CommonModule, i4$2.RuntimeModule, i1$3.TooltipModule.forRoot()]] });
|
1551
1550
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: LegacyProductModule, decorators: [{
|
1552
1551
|
type: i0.NgModule,
|
1553
1552
|
args: [{
|
1554
1553
|
declarations: [LegacyProductComponent],
|
1555
|
-
imports: [i9.CommonModule, i4$
|
1554
|
+
imports: [i9.CommonModule, i4$2.RuntimeModule, i1$3.TooltipModule.forRoot()],
|
1556
1555
|
exports: [LegacyProductComponent],
|
1557
1556
|
}]
|
1558
1557
|
}] });
|
@@ -1598,7 +1597,7 @@
|
|
1598
1597
|
return;
|
1599
1598
|
}
|
1600
1599
|
var lineItemId = this.getLineItemId(quote, productId, contextProperties.lineItemId);
|
1601
|
-
var currentStateItem =
|
1600
|
+
var currentStateItem = core.EntityUtil.findById(lineItemId, quote.currentState);
|
1602
1601
|
var offeringId = (currentStateItem !== null && currentStateItem !== void 0 ? currentStateItem : {}).offeringId;
|
1603
1602
|
if (currentStateItem) {
|
1604
1603
|
this.conigurationService.updateCurrentStates({
|
@@ -1629,8 +1628,8 @@
|
|
1629
1628
|
};
|
1630
1629
|
return ProductComponent;
|
1631
1630
|
}());
|
1632
|
-
ProductComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ProductComponent, deps: [{ token:
|
1633
|
-
ProductComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: ProductComponent, selector: "vl-flow-product", ngImport: i0__namespace, template: "<ng-container *ngIf=\"state$ | async as state\">\n <vl-loader *ngIf=\"state.loading; else content\" [label]=\"'Loading UI'\"></vl-loader>\n\n <ng-template #content>\n <ng-container *ngIf=\"!state.failure\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n </ng-container>\n </ng-template>\n</ng-container>\n", styles: [""], components: [{ type: i3__namespace.LoaderComponent, selector: "vl-loader", inputs: ["label", "overlayVisible"] }, { type: i4__namespace
|
1631
|
+
ProductComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ProductComponent, deps: [{ token: i2__namespace$1.ContextService }, { token: i2__namespace$1.ConfigurationRuntimeService }, { token: i2__namespace$1.ConfigurationService }, { token: i2__namespace$1.QuoteDraftService }, { token: i2__namespace$2.MessageService }, { token: FLOW_CUSTOMIZATION, optional: true }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
1632
|
+
ProductComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: ProductComponent, selector: "vl-flow-product", ngImport: i0__namespace, template: "<ng-container *ngIf=\"state$ | async as state\">\n <vl-loader *ngIf=\"state.loading; else content\" [label]=\"'Loading UI'\"></vl-loader>\n\n <ng-template #content>\n <ng-container *ngIf=\"!state.failure\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n </ng-container>\n </ng-template>\n</ng-container>\n", styles: [""], components: [{ type: i3__namespace$1.LoaderComponent, selector: "vl-loader", inputs: ["label", "overlayVisible"] }, { type: i4__namespace.PreviewComponent, selector: "vl-cms-preview", inputs: ["modelId", "uiDefinition", "clearState"] }], directives: [{ type: i9__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i9__namespace.AsyncPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
|
1634
1633
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ProductComponent, decorators: [{
|
1635
1634
|
type: i0.Component,
|
1636
1635
|
args: [{
|
@@ -1640,7 +1639,7 @@
|
|
1640
1639
|
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
1641
1640
|
}]
|
1642
1641
|
}], ctorParameters: function () {
|
1643
|
-
return [{ type:
|
1642
|
+
return [{ type: i2__namespace$1.ContextService }, { type: i2__namespace$1.ConfigurationRuntimeService }, { type: i2__namespace$1.ConfigurationService }, { type: i2__namespace$1.QuoteDraftService }, { type: i2__namespace$2.MessageService }, { type: undefined, decorators: [{
|
1644
1643
|
type: i0.Optional
|
1645
1644
|
}, {
|
1646
1645
|
type: i0.Inject,
|
@@ -1654,13 +1653,13 @@
|
|
1654
1653
|
return ProductModule;
|
1655
1654
|
}());
|
1656
1655
|
ProductModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ProductModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
|
1657
|
-
ProductModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ProductModule, declarations: [ProductComponent], imports: [i9.CommonModule, i4
|
1658
|
-
ProductModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ProductModule, imports: [[i9.CommonModule, i4
|
1656
|
+
ProductModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ProductModule, declarations: [ProductComponent], imports: [i9.CommonModule, i4.PreviewModule, i3$1.LoaderModule], exports: [ProductComponent] });
|
1657
|
+
ProductModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ProductModule, imports: [[i9.CommonModule, i4.PreviewModule, i3$1.LoaderModule]] });
|
1659
1658
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ProductModule, decorators: [{
|
1660
1659
|
type: i0.NgModule,
|
1661
1660
|
args: [{
|
1662
1661
|
declarations: [ProductComponent],
|
1663
|
-
imports: [i9.CommonModule, i4
|
1662
|
+
imports: [i9.CommonModule, i4.PreviewModule, i3$1.LoaderModule],
|
1664
1663
|
exports: [ProductComponent],
|
1665
1664
|
}]
|
1666
1665
|
}] });
|
@@ -1734,7 +1733,7 @@
|
|
1734
1733
|
}), rxjs.catchError(function (err) {
|
1735
1734
|
var _a;
|
1736
1735
|
var message = 'Failed to resolve Shopping cart component. ' + ((_a = err.message) !== null && _a !== void 0 ? _a : '');
|
1737
|
-
_this.toastService.add({ severity: i3.ToastType.error, summary: message, sticky: true });
|
1736
|
+
_this.toastService.add({ severity: i3$1.ToastType.error, summary: message, sticky: true });
|
1738
1737
|
_this.uiDefinition = undefined;
|
1739
1738
|
_this.state$.next({ loading: false, failure: true });
|
1740
1739
|
return rxjs.of();
|
@@ -1748,7 +1747,7 @@
|
|
1748
1747
|
ShoppingCartComponent.prototype.getTemplateRootComponent$ = function (template) {
|
1749
1748
|
return this.templatesApi
|
1750
1749
|
.fetchComponents$(template.id)
|
1751
|
-
.pipe(rxjs.map(function (components) { var _a; return (_a = components.find(function (c) { return c.type ===
|
1750
|
+
.pipe(rxjs.map(function (components) { var _a; return (_a = components.find(function (c) { return c.type === core.UITemplateComponentType.ROOT; })) !== null && _a !== void 0 ? _a : undefined; }));
|
1752
1751
|
};
|
1753
1752
|
ShoppingCartComponent.prototype.getLocalShoppingCartComponentMeta$ = function () {
|
1754
1753
|
var _a, _b;
|
@@ -1769,7 +1768,7 @@
|
|
1769
1768
|
};
|
1770
1769
|
ShoppingCartComponent.prototype.getShoppingCartComponentMeta$ = function () {
|
1771
1770
|
var _this = this;
|
1772
|
-
return this.templatesApi.fetchTemplates$().pipe(rxjs.map(function (templates) { return templates.find(function (template) { return template.type ===
|
1771
|
+
return this.templatesApi.fetchTemplates$().pipe(rxjs.map(function (templates) { return templates.find(function (template) { return template.type === core.UITemplateType.SHOPPING_CART && template.name === _this.templateApiName; }); }), rxjs.switchMap(function (template) { return (template ? _this.getTemplateRootComponent$(template) : rxjs.of(undefined)); }), rxjs.switchMap(function (component) { return component ? _this.templatesApi.fetchComponentAttachments$(component.uiTemplateId, component) : rxjs.of(undefined); }));
|
1773
1772
|
};
|
1774
1773
|
ShoppingCartComponent.prototype.generateUIDefinition$ = function () {
|
1775
1774
|
var _this = this;
|
@@ -1801,8 +1800,8 @@
|
|
1801
1800
|
};
|
1802
1801
|
return ShoppingCartComponent;
|
1803
1802
|
}());
|
1804
|
-
ShoppingCartComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ShoppingCartComponent, deps: [{ token: i1__namespace$
|
1805
|
-
ShoppingCartComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: ShoppingCartComponent, selector: "vl-flow-shopping-cart", ngImport: i0__namespace, template: "<ng-container *ngIf=\"state$ | async as state\">\n <vl-loader *ngIf=\"state.loading; else content\" [label]=\"'Loading UI'\"></vl-loader>\n\n <ng-template #content>\n <ng-container *ngIf=\"!state.failure\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n </ng-container>\n </ng-template>\n</ng-container>\n", styles: [""], components: [{ type: i3__namespace.LoaderComponent, selector: "vl-loader", inputs: ["label", "overlayVisible"] }, { type: i4__namespace
|
1803
|
+
ShoppingCartComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ShoppingCartComponent, deps: [{ token: i1__namespace$2.UITemplatesApiService }, { token: i2__namespace$1.ContextService }, { token: i0__namespace.ChangeDetectorRef }, { token: i3__namespace$1.ToastService }, { token: FLOW_CUSTOMIZATION, optional: true }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
1804
|
+
ShoppingCartComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: ShoppingCartComponent, selector: "vl-flow-shopping-cart", ngImport: i0__namespace, template: "<ng-container *ngIf=\"state$ | async as state\">\n <vl-loader *ngIf=\"state.loading; else content\" [label]=\"'Loading UI'\"></vl-loader>\n\n <ng-template #content>\n <ng-container *ngIf=\"!state.failure\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n </ng-container>\n </ng-template>\n</ng-container>\n", styles: [""], components: [{ type: i3__namespace$1.LoaderComponent, selector: "vl-loader", inputs: ["label", "overlayVisible"] }, { type: i4__namespace.PreviewComponent, selector: "vl-cms-preview", inputs: ["modelId", "uiDefinition", "clearState"] }], directives: [{ type: i9__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i9__namespace.AsyncPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
|
1806
1805
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ShoppingCartComponent, decorators: [{
|
1807
1806
|
type: i0.Component,
|
1808
1807
|
args: [{
|
@@ -1812,7 +1811,7 @@
|
|
1812
1811
|
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
1813
1812
|
}]
|
1814
1813
|
}], ctorParameters: function () {
|
1815
|
-
return [{ type: i1__namespace$
|
1814
|
+
return [{ type: i1__namespace$2.UITemplatesApiService }, { type: i2__namespace$1.ContextService }, { type: i0__namespace.ChangeDetectorRef }, { type: i3__namespace$1.ToastService }, { type: undefined, decorators: [{
|
1816
1815
|
type: i0.Optional
|
1817
1816
|
}, {
|
1818
1817
|
type: i0.Inject,
|
@@ -1826,55 +1825,17 @@
|
|
1826
1825
|
return ShoppingCartModule;
|
1827
1826
|
}());
|
1828
1827
|
ShoppingCartModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ShoppingCartModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
|
1829
|
-
ShoppingCartModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ShoppingCartModule, declarations: [ShoppingCartComponent], imports: [i9.CommonModule, i4
|
1830
|
-
ShoppingCartModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ShoppingCartModule, imports: [[i9.CommonModule, i4
|
1828
|
+
ShoppingCartModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ShoppingCartModule, declarations: [ShoppingCartComponent], imports: [i9.CommonModule, i4.PreviewModule, i3$1.LoaderModule], exports: [ShoppingCartComponent] });
|
1829
|
+
ShoppingCartModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ShoppingCartModule, imports: [[i9.CommonModule, i4.PreviewModule, i3$1.LoaderModule]] });
|
1831
1830
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ShoppingCartModule, decorators: [{
|
1832
1831
|
type: i0.NgModule,
|
1833
1832
|
args: [{
|
1834
1833
|
declarations: [ShoppingCartComponent],
|
1835
|
-
imports: [i9.CommonModule, i4
|
1834
|
+
imports: [i9.CommonModule, i4.PreviewModule, i3$1.LoaderModule],
|
1836
1835
|
exports: [ShoppingCartComponent],
|
1837
1836
|
}]
|
1838
1837
|
}] });
|
1839
1838
|
|
1840
|
-
var ContextResolver = /** @class */ (function () {
|
1841
|
-
function ContextResolver(contextService, router, routerService) {
|
1842
|
-
this.contextService = contextService;
|
1843
|
-
this.router = router;
|
1844
|
-
this.routerService = routerService;
|
1845
|
-
}
|
1846
|
-
ContextResolver.prototype.handleError = function (route, message) {
|
1847
|
-
this.contextService.delete();
|
1848
|
-
var parentUrl = this.routerService.getFlowRootPath(route);
|
1849
|
-
return rxjs.from(this.router.navigate([parentUrl, '404'], { state: { message: message } }));
|
1850
|
-
};
|
1851
|
-
ContextResolver.prototype.resolve = function (route) {
|
1852
|
-
var _this = this;
|
1853
|
-
var queryParams = route.queryParams, data = route.data;
|
1854
|
-
var uiDefinitionId = queryParams.uiDefinitionId;
|
1855
|
-
var _a = data !== null && data !== void 0 ? data : {}, headerId = _a.headerId, mode = _a.mode;
|
1856
|
-
if (this.contextService.isInitialized) {
|
1857
|
-
var currentContext = this.contextService.resolve();
|
1858
|
-
if (headerId && currentContext.headerId === headerId) {
|
1859
|
-
return rxjs.of(currentContext);
|
1860
|
-
}
|
1861
|
-
}
|
1862
|
-
return this.contextService.create(headerId, mode).pipe(operators.tap(function (context) {
|
1863
|
-
_this.contextService.update(Object.assign(Object.assign({}, context), { uiDefinitionId: uiDefinitionId, properties: Object.assign(Object.assign({}, context.properties), (queryParams !== null && queryParams !== void 0 ? queryParams : {})) }));
|
1864
|
-
}), operators.catchError(function (e) {
|
1865
|
-
var message = e instanceof http.HttpErrorResponse ? e.error.message : e;
|
1866
|
-
_this.handleError(route, message);
|
1867
|
-
return rxjs.of(null);
|
1868
|
-
}));
|
1869
|
-
};
|
1870
|
-
return ContextResolver;
|
1871
|
-
}());
|
1872
|
-
ContextResolver.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ContextResolver, deps: [{ token: i1__namespace$2.ContextService }, { token: i1__namespace$1.Router }, { token: FlowRouterService }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
|
1873
|
-
ContextResolver.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ContextResolver });
|
1874
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: ContextResolver, decorators: [{
|
1875
|
-
type: i0.Injectable
|
1876
|
-
}], ctorParameters: function () { return [{ type: i1__namespace$2.ContextService }, { type: i1__namespace$1.Router }, { type: FlowRouterService }]; } });
|
1877
|
-
|
1878
1839
|
var FlowResolver = /** @class */ (function () {
|
1879
1840
|
function FlowResolver(router, flowsApiService, routerService) {
|
1880
1841
|
this.router = router;
|
@@ -1922,11 +1883,11 @@
|
|
1922
1883
|
};
|
1923
1884
|
return FlowResolver;
|
1924
1885
|
}());
|
1925
|
-
FlowResolver.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowResolver, deps: [{ token: i1__namespace$1.Router }, { token: i1__namespace$
|
1886
|
+
FlowResolver.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowResolver, deps: [{ token: i1__namespace$1.Router }, { token: i1__namespace$2.FlowsApiService }, { token: FlowRouterService }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
|
1926
1887
|
FlowResolver.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowResolver });
|
1927
1888
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowResolver, decorators: [{
|
1928
1889
|
type: i0.Injectable
|
1929
|
-
}], ctorParameters: function () { return [{ type: i1__namespace$1.Router }, { type: i1__namespace$
|
1890
|
+
}], ctorParameters: function () { return [{ type: i1__namespace$1.Router }, { type: i1__namespace$2.FlowsApiService }, { type: FlowRouterService }]; } });
|
1930
1891
|
|
1931
1892
|
var QuoteResolver = /** @class */ (function () {
|
1932
1893
|
function QuoteResolver(router, quoteDraftService, routerService, contextService, flowConfiguration) {
|
@@ -1948,12 +1909,13 @@
|
|
1948
1909
|
};
|
1949
1910
|
QuoteResolver.prototype.resolve = function (route) {
|
1950
1911
|
var _this = this;
|
1951
|
-
var headerId =
|
1912
|
+
var headerId = this.contextService.resolve().headerId;
|
1952
1913
|
var quote = this.quoteDraftService.quoteSnapshot;
|
1953
1914
|
if (quote && quote.quoteId === headerId) {
|
1954
1915
|
return rxjs.of(true);
|
1955
1916
|
}
|
1956
1917
|
var queryParams = route.queryParams;
|
1918
|
+
this.contextService.update({ properties: queryParams });
|
1957
1919
|
return this.quoteDraftService.init(headerId, queryParams).pipe(rxjs.switchMap(function () { return _this.initFlow$(); }), rxjs.catchError(function (e) {
|
1958
1920
|
var message = e instanceof http.HttpErrorResponse ? e.error.message : e;
|
1959
1921
|
return _this.handleError(route, message);
|
@@ -1961,11 +1923,11 @@
|
|
1961
1923
|
};
|
1962
1924
|
return QuoteResolver;
|
1963
1925
|
}());
|
1964
|
-
QuoteResolver.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: QuoteResolver, deps: [{ token: i1__namespace$1.Router }, { token:
|
1926
|
+
QuoteResolver.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: QuoteResolver, deps: [{ token: i1__namespace$1.Router }, { token: i2__namespace$1.QuoteDraftService }, { token: FlowRouterService }, { token: i2__namespace$1.ContextService }, { token: i2__namespace$1.FlowConfigurationService }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
|
1965
1927
|
QuoteResolver.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: QuoteResolver });
|
1966
1928
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: QuoteResolver, decorators: [{
|
1967
1929
|
type: i0.Injectable
|
1968
|
-
}], ctorParameters: function () { return [{ type: i1__namespace$1.Router }, { type:
|
1930
|
+
}], ctorParameters: function () { return [{ type: i1__namespace$1.Router }, { type: i2__namespace$1.QuoteDraftService }, { type: FlowRouterService }, { type: i2__namespace$1.ContextService }, { type: i2__namespace$1.FlowConfigurationService }]; } });
|
1969
1931
|
|
1970
1932
|
var rootRoute = {
|
1971
1933
|
id: VELOCE_FLOW_ROOT_ROUTE,
|
@@ -1988,7 +1950,7 @@
|
|
1988
1950
|
path: 'product',
|
1989
1951
|
component: LegacyProductComponent,
|
1990
1952
|
runGuardsAndResolvers: 'paramsOrQueryParamsChange',
|
1991
|
-
resolve: {
|
1953
|
+
resolve: { quote: QuoteResolver },
|
1992
1954
|
canActivate: [ContextGuard],
|
1993
1955
|
},
|
1994
1956
|
],
|
@@ -1997,7 +1959,7 @@
|
|
1997
1959
|
path: 'product',
|
1998
1960
|
component: ProductComponent,
|
1999
1961
|
runGuardsAndResolvers: 'paramsOrQueryParamsChange',
|
2000
|
-
resolve: {
|
1962
|
+
resolve: { quote: QuoteResolver },
|
2001
1963
|
canActivate: [ContextGuard],
|
2002
1964
|
canDeactivate: [ProductUnloadGuard],
|
2003
1965
|
data: { showHeader: true },
|
@@ -2006,7 +1968,7 @@
|
|
2006
1968
|
path: 'cart',
|
2007
1969
|
component: ShoppingCartComponent,
|
2008
1970
|
runGuardsAndResolvers: 'paramsOrQueryParamsChange',
|
2009
|
-
resolve: {
|
1971
|
+
resolve: { quote: QuoteResolver },
|
2010
1972
|
canActivate: [ContextGuard],
|
2011
1973
|
data: { showHeader: true },
|
2012
1974
|
},
|
@@ -2014,7 +1976,7 @@
|
|
2014
1976
|
path: 'catalog',
|
2015
1977
|
component: CatalogComponent,
|
2016
1978
|
runGuardsAndResolvers: 'paramsOrQueryParamsChange',
|
2017
|
-
resolve: {
|
1979
|
+
resolve: { quote: QuoteResolver },
|
2018
1980
|
canActivate: [ContextGuard],
|
2019
1981
|
data: { showHeader: true },
|
2020
1982
|
},
|
@@ -2035,29 +1997,13 @@
|
|
2035
1997
|
}());
|
2036
1998
|
FlowRoutingModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowRoutingModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
|
2037
1999
|
FlowRoutingModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowRoutingModule, imports: [i1__namespace$1.RouterModule, ProductModule, LegacyProductModule, ShoppingCartModule, CatalogModule], exports: [i1$1.RouterModule] });
|
2038
|
-
FlowRoutingModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowRoutingModule, providers: [
|
2039
|
-
FlowRouterService,
|
2040
|
-
RootGuard,
|
2041
|
-
ContextGuard,
|
2042
|
-
ProductUnloadGuard,
|
2043
|
-
ContextResolver,
|
2044
|
-
FlowResolver,
|
2045
|
-
QuoteResolver,
|
2046
|
-
], imports: [[i1$1.RouterModule.forChild([rootRoute]), ProductModule, LegacyProductModule, ShoppingCartModule, CatalogModule], i1$1.RouterModule] });
|
2000
|
+
FlowRoutingModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowRoutingModule, providers: [FlowRouterService, RootGuard, ContextGuard, ProductUnloadGuard, FlowResolver, QuoteResolver], imports: [[i1$1.RouterModule.forChild([rootRoute]), ProductModule, LegacyProductModule, ShoppingCartModule, CatalogModule], i1$1.RouterModule] });
|
2047
2001
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowRoutingModule, decorators: [{
|
2048
2002
|
type: i0.NgModule,
|
2049
2003
|
args: [{
|
2050
2004
|
imports: [i1$1.RouterModule.forChild([rootRoute]), ProductModule, LegacyProductModule, ShoppingCartModule, CatalogModule],
|
2051
2005
|
exports: [i1$1.RouterModule],
|
2052
|
-
providers: [
|
2053
|
-
FlowRouterService,
|
2054
|
-
RootGuard,
|
2055
|
-
ContextGuard,
|
2056
|
-
ProductUnloadGuard,
|
2057
|
-
ContextResolver,
|
2058
|
-
FlowResolver,
|
2059
|
-
QuoteResolver,
|
2060
|
-
],
|
2006
|
+
providers: [FlowRouterService, RootGuard, ContextGuard, ProductUnloadGuard, FlowResolver, QuoteResolver],
|
2061
2007
|
}]
|
2062
2008
|
}] });
|
2063
2009
|
|
@@ -2069,21 +2015,21 @@
|
|
2069
2015
|
FlowModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
|
2070
2016
|
FlowModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowModule, declarations: [FlowComponent], imports: [i9.CommonModule,
|
2071
2017
|
FlowRoutingModule,
|
2072
|
-
i1$
|
2073
|
-
i4
|
2074
|
-
i3.LoaderModule,
|
2018
|
+
i1$2.ApiModule,
|
2019
|
+
i4.LauncherModule,
|
2020
|
+
i3$1.LoaderModule,
|
2075
2021
|
FlowHeaderModule,
|
2076
2022
|
FlowDialogModule,
|
2077
|
-
|
2023
|
+
i2$1.SdkCoreModule] });
|
2078
2024
|
FlowModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowModule, providers: [FlowService, FlowDialogService], imports: [[
|
2079
2025
|
i9.CommonModule,
|
2080
2026
|
FlowRoutingModule,
|
2081
|
-
i1$
|
2082
|
-
i4
|
2083
|
-
i3.LoaderModule,
|
2027
|
+
i1$2.ApiModule,
|
2028
|
+
i4.LauncherModule,
|
2029
|
+
i3$1.LoaderModule,
|
2084
2030
|
FlowHeaderModule,
|
2085
2031
|
FlowDialogModule,
|
2086
|
-
|
2032
|
+
i2$1.SdkCoreModule,
|
2087
2033
|
]] });
|
2088
2034
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0__namespace, type: FlowModule, decorators: [{
|
2089
2035
|
type: i0.NgModule,
|
@@ -2092,12 +2038,12 @@
|
|
2092
2038
|
imports: [
|
2093
2039
|
i9.CommonModule,
|
2094
2040
|
FlowRoutingModule,
|
2095
|
-
i1$
|
2096
|
-
i4
|
2097
|
-
i3.LoaderModule,
|
2041
|
+
i1$2.ApiModule,
|
2042
|
+
i4.LauncherModule,
|
2043
|
+
i3$1.LoaderModule,
|
2098
2044
|
FlowHeaderModule,
|
2099
2045
|
FlowDialogModule,
|
2100
|
-
|
2046
|
+
i2$1.SdkCoreModule,
|
2101
2047
|
],
|
2102
2048
|
providers: [FlowService, FlowDialogService],
|
2103
2049
|
}]
|