@veloceapps/sdk 11.0.0-12 → 11.0.0-14

Sign up to get free protection for your applications and to get access to all the features.
@@ -13,8 +13,9 @@ import { FLOW_CUSTOMIZATION, RuntimeSettingsService, FlowStateService, FlowInfoS
13
13
  import * as i3 from 'primeng/button';
14
14
  import { ButtonModule } from 'primeng/button';
15
15
  import * as i1 from 'primeng/dynamicdialog';
16
- import { BehaviorSubject, Subject, filter, first, tap, takeUntil, catchError, of, map, switchMap, shareReplay, startWith, distinctUntilChanged, from, take, combineLatest, timer, noop } from 'rxjs';
16
+ import { BehaviorSubject, Subject, filter, first, tap, takeUntil, catchError, of, map, switchMap, shareReplay, startWith, distinctUntilChanged, from, take, combineLatest } from 'rxjs';
17
17
  import * as i1$1 from '@veloceapps/api/v2';
18
+ import { UIDefinitionsApiService } from '@veloceapps/api/v2';
18
19
  import { DomHandler } from 'primeng/dom';
19
20
  import * as i1$2 from '@angular/router';
20
21
  import { NavigationEnd, NavigationStart, NavigationCancel, NavigationError, RouterModule } from '@angular/router';
@@ -1167,83 +1168,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
1167
1168
  }] });
1168
1169
 
1169
1170
  class ProductComponent {
1170
- constructor(
1171
- // private configurationRuntimeService: ConfigurationRuntimeService,
1172
- configurationService, configurationStateService, salesTransactionService, flowInfoService, integrationState, uiDefinitionsApiService, customizationService) {
1173
- this.configurationService = configurationService;
1171
+ constructor(route, configurationStateService) {
1172
+ this.route = route;
1174
1173
  this.configurationStateService = configurationStateService;
1175
- this.salesTransactionService = salesTransactionService;
1176
- this.flowInfoService = flowInfoService;
1177
- this.integrationState = integrationState;
1178
- this.uiDefinitionsApiService = uiDefinitionsApiService;
1179
- this.customizationService = customizationService;
1180
1174
  this.uiDefinitionContainer$ = new BehaviorSubject(null);
1175
+ const uiDefContainer = this.route.snapshot.data['uiDef'];
1176
+ this.uiDefinitionContainer$.next(uiDefContainer);
1181
1177
  this.config = {
1182
1178
  init$: () => this.init$(),
1183
1179
  };
1184
1180
  }
1185
- customizeUI$() {
1186
- var _a;
1187
- const { productId } = this.flowInfoService.context;
1188
- if (!productId || !((_a = this.customizationService) === null || _a === void 0 ? void 0 : _a.getUiDefinition)) {
1189
- return of(undefined);
1190
- }
1191
- return this.customizationService.getUiDefinition(productId).pipe(map(uiDefinitionContainer => {
1192
- this.uiDefinitionContainer$.next(uiDefinitionContainer);
1193
- }));
1194
- }
1195
- fetchUIDefinition$() {
1196
- const flowContext = this.flowInfoService.context;
1197
- if (flowContext.requiredUIDefinitionId) {
1198
- return this.uiDefinitionsApiService
1199
- .fetchUIDefinition$(flowContext.requiredUIDefinitionId)
1200
- .pipe(map((uiDefContainer) => this.uiDefinitionContainer$.next(uiDefContainer)));
1201
- }
1202
- return this.uiDefinitionsApiService
1203
- .fetchUIDefinitions$({
1204
- productId: flowContext.productId,
1205
- defaultUIDefinitionId: flowContext.defaultUIDefinitionId,
1206
- })
1207
- .pipe(map((uiDefinitionContainers) => {
1208
- const uiDefContainer = uiDefinitionContainers[0];
1209
- if (uiDefContainer) {
1210
- this.uiDefinitionContainer$.next(uiDefContainer);
1211
- }
1212
- }));
1213
- }
1214
1181
  init$() {
1215
- let state$;
1216
- if (!this.flowInfoService.isStateful) {
1217
- state$ = this.salesTransactionService.state$;
1218
- }
1219
- else {
1220
- state$ = of(undefined);
1221
- }
1222
- return state$.pipe(first(), tap(() => {
1223
- if (!this.flowInfoService.context.productId) {
1224
- throw new Error(`Unable to start configuration for 'productId == null'`);
1225
- }
1226
- }), switchMap(() => this.customizeUI$()), switchMap(() => (this.uiDefinitionContainer$.value ? of(undefined) : this.fetchUIDefinition$())), tap(() => {
1227
- if (!this.uiDefinitionContainer$.value) {
1228
- throw new Error('Product does not have Configuration UI');
1229
- }
1230
- }), switchMap(() => this.configurationStateService.init$()), switchMap(() => timer(1)), // wait until updates inputs on child components
1231
- map(noop));
1182
+ return this.configurationStateService.init$();
1232
1183
  }
1233
1184
  }
1234
- ProductComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ProductComponent, deps: [{ token: i2.ConfigurationService }, { token: i2.ConfigurationStateService }, { token: i2.SalesTransactionService }, { token: i2.FlowInfoService }, { token: i2.IntegrationState }, { token: i1$1.UIDefinitionsApiService }, { token: FLOW_CUSTOMIZATION, optional: true }], target: i0.ɵɵFactoryTarget.Component });
1185
+ ProductComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ProductComponent, deps: [{ token: i1$2.ActivatedRoute }, { token: i2.ConfigurationStateService }], target: i0.ɵɵFactoryTarget.Component });
1235
1186
  ProductComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ProductComponent, selector: "vl-flow-product", ngImport: i0, template: "<vl-cms-preview [uiDefinition]=\"(uiDefinitionContainer$ | async)?.source\" [config]=\"config\"></vl-cms-preview>\n", styles: [""], dependencies: [{ kind: "component", type: i5.PreviewComponent, selector: "vl-cms-preview", inputs: ["uiDefinition", "config"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1236
1187
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ProductComponent, decorators: [{
1237
1188
  type: Component,
1238
1189
  args: [{ selector: 'vl-flow-product', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vl-cms-preview [uiDefinition]=\"(uiDefinitionContainer$ | async)?.source\" [config]=\"config\"></vl-cms-preview>\n" }]
1239
- }], ctorParameters: function () {
1240
- return [{ type: i2.ConfigurationService }, { type: i2.ConfigurationStateService }, { type: i2.SalesTransactionService }, { type: i2.FlowInfoService }, { type: i2.IntegrationState }, { type: i1$1.UIDefinitionsApiService }, { type: undefined, decorators: [{
1241
- type: Optional
1242
- }, {
1243
- type: Inject,
1244
- args: [FLOW_CUSTOMIZATION]
1245
- }] }];
1246
- } });
1190
+ }], ctorParameters: function () { return [{ type: i1$2.ActivatedRoute }, { type: i2.ConfigurationStateService }]; } });
1247
1191
 
1248
1192
  class ProductModule {
1249
1193
  }
@@ -1516,6 +1460,43 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
1516
1460
  type: Injectable
1517
1461
  }], ctorParameters: function () { return [{ type: i1$2.Router }, { type: i2.QuoteDraftService }, { type: FlowRouterService }, { type: i2.FlowInfoService }, { type: i2.FlowStateService }]; } });
1518
1462
 
1463
+ const resolveUIDefinition = () => {
1464
+ const customizationService = inject(FLOW_CUSTOMIZATION, { optional: true });
1465
+ const flowInfoService = inject(FlowInfoService);
1466
+ const uiDefinitionsApiService = inject(UIDefinitionsApiService);
1467
+ const { productId } = flowInfoService.context;
1468
+ if (!productId) {
1469
+ throw new Error(`Unable to start configuration for 'productId == null'`);
1470
+ }
1471
+ return of(undefined).pipe(switchMap(() => {
1472
+ // Try resolving via customization service
1473
+ if (!productId || !(customizationService === null || customizationService === void 0 ? void 0 : customizationService.getUiDefinition)) {
1474
+ return of(undefined);
1475
+ }
1476
+ return customizationService.getUiDefinition(productId);
1477
+ }), switchMap(uiDefContainer => {
1478
+ // Resolve UIDefinition from the org
1479
+ if (uiDefContainer) {
1480
+ return of(uiDefContainer);
1481
+ }
1482
+ if (flowInfoService.context.requiredUIDefinitionId) {
1483
+ return uiDefinitionsApiService.fetchUIDefinition$(flowInfoService.context.requiredUIDefinitionId);
1484
+ }
1485
+ return uiDefinitionsApiService
1486
+ .fetchUIDefinitions$({
1487
+ productId,
1488
+ defaultUIDefinitionId: flowInfoService.context.defaultUIDefinitionId,
1489
+ })
1490
+ .pipe(map((uiDefinitionContainers) => {
1491
+ const uiDefContainer = uiDefinitionContainers[0];
1492
+ if (!uiDefContainer) {
1493
+ throw new Error(`UI Definition for productId=${productId} is not resolved`);
1494
+ }
1495
+ return uiDefContainer;
1496
+ }));
1497
+ }));
1498
+ };
1499
+
1519
1500
  const rootRoute = {
1520
1501
  id: VELOCE_FLOW_ROOT_ROUTE,
1521
1502
  path: '',
@@ -1538,7 +1519,7 @@ const rootRoute = {
1538
1519
  path: 'product',
1539
1520
  component: ProductComponent,
1540
1521
  runGuardsAndResolvers: 'paramsOrQueryParamsChange',
1541
- resolve: { quote: QuoteResolver },
1522
+ resolve: { quote: QuoteResolver, uiDef: resolveUIDefinition },
1542
1523
  canDeactivate: [ProductUnloadGuard],
1543
1524
  data: { showHeader: true },
1544
1525
  },