@pega/angular-sdk-components 0.23.9 → 0.23.11

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.
Files changed (35) hide show
  1. package/esm2022/lib/_bridge/angular-pconnect.mjs +14 -2
  2. package/esm2022/lib/_components/field/auto-complete/auto-complete.component.mjs +4 -2
  3. package/esm2022/lib/_components/field/check-box/check-box.component.mjs +5 -4
  4. package/esm2022/lib/_components/field/currency/currency.component.mjs +5 -2
  5. package/esm2022/lib/_components/field/date/date.component.mjs +5 -2
  6. package/esm2022/lib/_components/field/date-time/date-time.component.mjs +4 -5
  7. package/esm2022/lib/_components/field/dropdown/dropdown.component.mjs +1 -5
  8. package/esm2022/lib/_components/field/email/email.component.mjs +5 -3
  9. package/esm2022/lib/_components/field/integer/integer.component.mjs +5 -3
  10. package/esm2022/lib/_components/field/percentage/percentage.component.mjs +5 -3
  11. package/esm2022/lib/_components/field/phone/phone.component.mjs +4 -3
  12. package/esm2022/lib/_components/field/radio-buttons/radio-buttons.component.mjs +5 -6
  13. package/esm2022/lib/_components/field/text-area/text-area.component.mjs +5 -7
  14. package/esm2022/lib/_components/field/text-input/text-input.component.mjs +5 -3
  15. package/esm2022/lib/_components/field/time/time.component.mjs +5 -4
  16. package/esm2022/lib/_components/field/url/url.component.mjs +5 -3
  17. package/esm2022/lib/_components/field/user-reference/user-reference.component.mjs +5 -6
  18. package/esm2022/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.mjs +2 -8
  19. package/esm2022/lib/_components/infra/assignment-card/assignment-card.component.mjs +3 -3
  20. package/esm2022/lib/_components/infra/reference/reference.component.mjs +14 -11
  21. package/esm2022/lib/_components/infra/root-container/root-container.component.mjs +3 -13
  22. package/esm2022/lib/_components/template/default-form/default-form.component.mjs +39 -8
  23. package/esm2022/lib/_components/template/field-group-template/field-group-template.component.mjs +2 -2
  24. package/esm2022/lib/_components/template/simple-table-manual/helpers.mjs +7 -6
  25. package/fesm2022/pega-angular-sdk-components.mjs +117 -86
  26. package/fesm2022/pega-angular-sdk-components.mjs.map +1 -1
  27. package/lib/_bridge/angular-pconnect.d.ts +2 -0
  28. package/lib/_components/field/dropdown/dropdown.component.d.ts +0 -1
  29. package/lib/_components/field/radio-buttons/radio-buttons.component.d.ts +0 -1
  30. package/lib/_components/field/text-area/text-area.component.d.ts +0 -1
  31. package/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.d.ts +1 -2
  32. package/lib/_components/infra/root-container/root-container.component.d.ts +0 -1
  33. package/lib/_components/template/default-form/default-form.component.d.ts +9 -3
  34. package/lib/_components/template/simple-table-manual/helpers.d.ts +1 -0
  35. package/package.json +1 -1
@@ -121,18 +121,16 @@ class ReferenceComponent {
121
121
  static createFullReferencedViewFromRef(inPConn) {
122
122
  // BAIL and ERROR if inPConn is NOT a reference!
123
123
  if (inPConn.getComponentName() !== 'reference') {
124
- // debugger;
125
124
  console.error(`Reference component: createFullReferencedViewFromRef inPConn is NOT a reference! ${inPConn.getComponentName()}`);
126
125
  }
127
- const theResolvedConfigProps = inPConn.resolveConfigProps(inPConn.getConfigProps());
128
126
  const referenceConfig = { ...inPConn.getComponentConfig() } || {};
129
127
  // Since SDK-A implements Reference as static methods and we don't rely on
130
128
  // the Reference component's handling of the visibility prop, we leave it in
131
129
  // (and also leaving the others in for now) so the referenced View can act on
132
130
  // the visibility prop. (The following 3 lines were carried over from React SDK)
133
131
  delete referenceConfig?.name;
134
- // delete referenceConfig?.type;
135
- // delete referenceConfig?.visibility;
132
+ delete referenceConfig?.type;
133
+ delete referenceConfig?.visibility;
136
134
  const viewMetadata = inPConn.getReferencedView();
137
135
  if (!viewMetadata) {
138
136
  console.log('View not found ', inPConn.getComponentConfig());
@@ -147,23 +145,28 @@ class ReferenceComponent {
147
145
  ...referenceConfig
148
146
  }
149
147
  };
148
+ const theResolvedConfigProps = inPConn.resolveConfigProps(inPConn.getConfigProps());
149
+ const { visibility = true, context, readOnly = false, displayMode = '' } = theResolvedConfigProps;
150
150
  if (ReferenceComponent.bLogging) {
151
- console.log(`Reference: about to call createComponent with pageReference: context: ${theResolvedConfigProps.context}`);
151
+ console.log(`Reference: about to call createComponent with pageReference: context: ${inPConn.getContextName()}`);
152
152
  }
153
153
  const viewComponent = inPConn.createComponent(viewObject, null, null, {
154
- pageReference: theResolvedConfigProps.context
154
+ pageReference: context && context.startsWith('@CLASS') ? '' : context
155
155
  });
156
156
  // updating the referencedComponent should trigger a render
157
157
  const newCompPConnect = viewComponent.getPConnect();
158
158
  newCompPConnect.setInheritedConfig({
159
159
  ...referenceConfig,
160
- readOnly: theResolvedConfigProps.readOnly ? theResolvedConfigProps.readOnly : false,
161
- displayMode: theResolvedConfigProps.displayMode ? theResolvedConfigProps.displayMode : null
160
+ readOnly,
161
+ displayMode
162
162
  });
163
163
  if (ReferenceComponent.bLogging) {
164
164
  console.log(`Angular Reference component: createFullReferencedViewFromRef -> newCompPConnect configProps: ${JSON.stringify(newCompPConnect.getConfigProps())}`);
165
165
  }
166
- return newCompPConnect;
166
+ if (visibility !== false) {
167
+ return newCompPConnect;
168
+ }
169
+ return null;
167
170
  }
168
171
  // STATIC method that other components can call to normalize
169
172
  // a pConn object that might be a 'reference'. If the incoming
@@ -197,7 +200,7 @@ class ReferenceComponent {
197
200
  // debugger;
198
201
  let theRefViewPConn = this.createFullReferencedViewFromRef(inPConn.getPConnect());
199
202
  // now return its PConnect
200
- theRefViewPConn = theRefViewPConn.getComponent();
203
+ theRefViewPConn = theRefViewPConn?.getComponent();
201
204
  // const theFullReference = theRefViewPConn.getPConnect().getFullReference();
202
205
  // console.log(`theFullReference: ${theFullReference}`);
203
206
  return theRefViewPConn;
@@ -249,11 +252,11 @@ class AssignmentCardComponent {
249
252
  this.actionButtonClick.emit(oData);
250
253
  }
251
254
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AssignmentCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
252
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AssignmentCardComponent, isStandalone: true, selector: "app-assignment-card", inputs: { pConn$: "pConn$", formGroup$: "formGroup$", arMainButtons$: "arMainButtons$", arSecondaryButtons$: "arSecondaryButtons$", arChildren$: "arChildren$", updateToken$: "updateToken$" }, outputs: { actionButtonClick: "actionButtonClick" }, usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"formGroup$\" name=\"flowContainer\" class=\"psdk-flow-container\">\n <div *ngFor=\"let kid of arChildren$\">\n <div [ngSwitch]=\"kid.getPConnect().getComponentName()\">\n <component-mapper *ngSwitchCase=\"'View'\" name=\"View\" [props]=\"{ formGroup$, pConn$: kid.getPConnect() }\"></component-mapper>\n <component-mapper\n *ngSwitchCase=\"'CaseCreateStage'\"\n name=\"CaseCreateStage\"\n [props]=\"{ formGroup$, pConn$: kid.getPConnect() }\"\n ></component-mapper>\n <component-mapper *ngSwitchCase=\"'Region'\" name=\"Region\" [props]=\"{ formGroup$, pConn$: kid.getPConnect() }\"></component-mapper>\n <div *ngSwitchDefault>Assignment Card wants component not yet available: {{ kid.getPConnect().getComponentName() }}</div>\n </div>\n </div>\n</form>\n\n<div>\n <br />\n <div class=\"psdk-case-view-divider\"></div>\n\n <component-mapper\n name=\"ActionButtons\"\n [props]=\"{ arMainButtons$, arSecondaryButtons$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onActionButtonClick }\"\n ></component-mapper>\n</div>\n", styles: [".psdk-case-view-divider{border-bottom:.0625rem solid var(--app-neutral-light-color)}.psdk-flow-container{padding:0rem 1rem}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(function () { return CommonModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgSwitch; }), selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgSwitchCase; }), selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgSwitchDefault; }), selector: "[ngSwitchDefault]" }, { kind: "ngmodule", type: i0.forwardRef(function () { return ReactiveFormsModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i4.ɵNgNoValidate; }), selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i0.forwardRef(function () { return i4.NgControlStatusGroup; }), selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i0.forwardRef(function () { return i4.FormGroupDirective; }), selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i0.forwardRef(function () { return ComponentMapperComponent; }), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
255
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AssignmentCardComponent, isStandalone: true, selector: "app-assignment-card", inputs: { pConn$: "pConn$", formGroup$: "formGroup$", arMainButtons$: "arMainButtons$", arSecondaryButtons$: "arSecondaryButtons$", arChildren$: "arChildren$", updateToken$: "updateToken$" }, outputs: { actionButtonClick: "actionButtonClick" }, usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"formGroup$\" name=\"flowContainer\" class=\"psdk-flow-container\">\n <div *ngFor=\"let kid of arChildren$\">\n <div [ngSwitch]=\"kid.getPConnect().getComponentName()\">\n <component-mapper *ngSwitchCase=\"'View'\" name=\"View\" [props]=\"{ formGroup$, pConn$: kid.getPConnect() }\"></component-mapper>\n <component-mapper\n *ngSwitchCase=\"'CaseCreateStage'\"\n name=\"CaseCreateStage\"\n [props]=\"{ formGroup$, pConn$: kid.getPConnect() }\"\n ></component-mapper>\n <component-mapper *ngSwitchCase=\"'Region'\" name=\"Region\" [props]=\"{ formGroup$, pConn$: kid.getPConnect() }\"></component-mapper>\n <div *ngSwitchDefault>Assignment Card wants component not yet available: {{ kid.getPConnect().getComponentName() }}</div>\n </div>\n </div>\n</form>\n\n<div>\n <br />\n <div class=\"psdk-case-view-divider\"></div>\n\n <component-mapper\n *ngIf=\"arMainButtons$ && arSecondaryButtons$\"\n name=\"ActionButtons\"\n [props]=\"{ arMainButtons$, arSecondaryButtons$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onActionButtonClick }\"\n ></component-mapper>\n</div>\n", styles: [".psdk-case-view-divider{border-bottom:.0625rem solid var(--app-neutral-light-color)}.psdk-flow-container{padding:0rem 1rem}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(function () { return CommonModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgSwitch; }), selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgSwitchCase; }), selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgSwitchDefault; }), selector: "[ngSwitchDefault]" }, { kind: "ngmodule", type: i0.forwardRef(function () { return ReactiveFormsModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i4.ɵNgNoValidate; }), selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i0.forwardRef(function () { return i4.NgControlStatusGroup; }), selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i0.forwardRef(function () { return i4.FormGroupDirective; }), selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i0.forwardRef(function () { return ComponentMapperComponent; }), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
253
256
  }
254
257
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AssignmentCardComponent, decorators: [{
255
258
  type: Component,
256
- args: [{ selector: 'app-assignment-card', standalone: true, imports: [CommonModule, ReactiveFormsModule, forwardRef(() => ComponentMapperComponent)], template: "<form [formGroup]=\"formGroup$\" name=\"flowContainer\" class=\"psdk-flow-container\">\n <div *ngFor=\"let kid of arChildren$\">\n <div [ngSwitch]=\"kid.getPConnect().getComponentName()\">\n <component-mapper *ngSwitchCase=\"'View'\" name=\"View\" [props]=\"{ formGroup$, pConn$: kid.getPConnect() }\"></component-mapper>\n <component-mapper\n *ngSwitchCase=\"'CaseCreateStage'\"\n name=\"CaseCreateStage\"\n [props]=\"{ formGroup$, pConn$: kid.getPConnect() }\"\n ></component-mapper>\n <component-mapper *ngSwitchCase=\"'Region'\" name=\"Region\" [props]=\"{ formGroup$, pConn$: kid.getPConnect() }\"></component-mapper>\n <div *ngSwitchDefault>Assignment Card wants component not yet available: {{ kid.getPConnect().getComponentName() }}</div>\n </div>\n </div>\n</form>\n\n<div>\n <br />\n <div class=\"psdk-case-view-divider\"></div>\n\n <component-mapper\n name=\"ActionButtons\"\n [props]=\"{ arMainButtons$, arSecondaryButtons$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onActionButtonClick }\"\n ></component-mapper>\n</div>\n", styles: [".psdk-case-view-divider{border-bottom:.0625rem solid var(--app-neutral-light-color)}.psdk-flow-container{padding:0rem 1rem}\n"] }]
259
+ args: [{ selector: 'app-assignment-card', standalone: true, imports: [CommonModule, ReactiveFormsModule, forwardRef(() => ComponentMapperComponent)], template: "<form [formGroup]=\"formGroup$\" name=\"flowContainer\" class=\"psdk-flow-container\">\n <div *ngFor=\"let kid of arChildren$\">\n <div [ngSwitch]=\"kid.getPConnect().getComponentName()\">\n <component-mapper *ngSwitchCase=\"'View'\" name=\"View\" [props]=\"{ formGroup$, pConn$: kid.getPConnect() }\"></component-mapper>\n <component-mapper\n *ngSwitchCase=\"'CaseCreateStage'\"\n name=\"CaseCreateStage\"\n [props]=\"{ formGroup$, pConn$: kid.getPConnect() }\"\n ></component-mapper>\n <component-mapper *ngSwitchCase=\"'Region'\" name=\"Region\" [props]=\"{ formGroup$, pConn$: kid.getPConnect() }\"></component-mapper>\n <div *ngSwitchDefault>Assignment Card wants component not yet available: {{ kid.getPConnect().getComponentName() }}</div>\n </div>\n </div>\n</form>\n\n<div>\n <br />\n <div class=\"psdk-case-view-divider\"></div>\n\n <component-mapper\n *ngIf=\"arMainButtons$ && arSecondaryButtons$\"\n name=\"ActionButtons\"\n [props]=\"{ arMainButtons$, arSecondaryButtons$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onActionButtonClick }\"\n ></component-mapper>\n</div>\n", styles: [".psdk-case-view-divider{border-bottom:.0625rem solid var(--app-neutral-light-color)}.psdk-flow-container{padding:0rem 1rem}\n"] }]
257
260
  }], propDecorators: { pConn$: [{
258
261
  type: Input
259
262
  }], formGroup$: [{
@@ -961,13 +964,25 @@ class AngularPConnectService {
961
964
  }
962
965
  else {
963
966
  returnObject.compID = theCompID;
964
- returnObject.unsubscribeFn = theUnsub;
967
+ returnObject.unsubscribeFn = () => {
968
+ this.removeFormField(inComp);
969
+ theUnsub();
970
+ };
965
971
  }
966
972
  // initialize this components entry in the componentPropsArr
967
973
  this.componentPropsArr[theCompID] = {};
974
+ this.addFormField(inComp);
968
975
  // return object with compID and unsubscribe...
969
976
  return returnObject;
970
977
  }
978
+ addFormField(inComp) {
979
+ inComp.pConn$?.addFormField();
980
+ }
981
+ removeFormField(inComp) {
982
+ if (inComp.pConn$?.removeFormField) {
983
+ inComp.pConn$?.removeFormField();
984
+ }
985
+ }
971
986
  // Returns true if the component's entry in ___componentPropsArr___ is
972
987
  // the same as the inCompProps passed in.
973
988
  // As a side effect, update the component's entry in componentPropsArr
@@ -2594,10 +2609,6 @@ class ModalViewContainerComponent {
2594
2609
  this.formGroup$ = fb.group({ hideRequired: false });
2595
2610
  }
2596
2611
  ngOnInit() {
2597
- if (this.displayOnlyFA$) {
2598
- // for when non modal
2599
- this.bShowAsModal$ = false;
2600
- }
2601
2612
  // First thing in initialization is registering and subscribing to the AngularPConnect service
2602
2613
  this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
2603
2614
  const baseContext = this.pConn$.getContextName();
@@ -2873,15 +2884,13 @@ class ModalViewContainerComponent {
2873
2884
  return `${this.localizedVal('Create', this.localeCategory)} ${this.localizedVal(caseTypeName, undefined, caseLocaleRef)} (${ID})`;
2874
2885
  }
2875
2886
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ModalViewContainerComponent, deps: [{ token: AngularPConnectService }, { token: i0.NgZone }, { token: ProgressSpinnerService }, { token: i4.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
2876
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ModalViewContainerComponent, isStandalone: true, selector: "app-modal-view-container", inputs: { pConn$: "pConn$", displayOnlyFA$: "displayOnlyFA$" }, outputs: { modalVisibleChange: "modalVisibleChange" }, ngImport: i0, template: "<div id=\"dialog\" *ngIf=\"bShowModal$ && bShowAsModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-view-container-top\" id=\"{{ buildName$ }}\">\n <h3 *ngIf=\"title$ != ''\">{{ title$ }}</h3>\n <component-mapper\n name=\"Assignment\"\n [props]=\"{ pConn$: createdViewPConn$, formGroup$, arChildren$, itemKey$, isCreateStage$: true, updateToken$, isInModal$: true, banners }\"\n ></component-mapper>\n <div *ngIf=\"isMultiRecord\">\n <component-mapper\n name=\"ListViewActionButtons\"\n [props]=\"{ pConn$: createdViewPConn$, context$ }\"\n [outputEvents]=\"{ closeActionsDialog: closeActionsDialog }\"\n ></component-mapper>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"bShowModal$ && !bShowAsModal$\">\n <div id=\"{{ buildName$ }}\">\n <h3 *ngIf=\"title$ != ''\">{{ title$ }}</h3>\n <component-mapper\n name=\"Assignment\"\n [props]=\"{ pConn$: createdViewPConn$, formGroup$, arChildren$, itemKey$, isCreateStage$: true, updateToken$ }\"\n ></component-mapper>\n </div>\n</div>\n\n<div *ngIf=\"bShowCancelAlert$\">\n <component-mapper\n name=\"CancelAlert\"\n [props]=\"{ bShowAlert$: bShowCancelAlert$, pConn$: cancelPConn$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ onAlertState$: onAlertState }\"\n ></component-mapper>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(function () { return CommonModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i0.forwardRef(function () { return ComponentMapperComponent; }), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
2887
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ModalViewContainerComponent, isStandalone: true, selector: "app-modal-view-container", inputs: { pConn$: "pConn$" }, outputs: { modalVisibleChange: "modalVisibleChange" }, ngImport: i0, template: "<div id=\"dialog\" *ngIf=\"bShowModal$ && bShowAsModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-view-container-top\" id=\"{{ buildName$ }}\">\n <h3 *ngIf=\"title$ != ''\">{{ title$ }}</h3>\n <component-mapper\n name=\"Assignment\"\n [props]=\"{ pConn$: createdViewPConn$, formGroup$, arChildren$, itemKey$, isCreateStage$: true, updateToken$, isInModal$: true, banners }\"\n ></component-mapper>\n <div *ngIf=\"isMultiRecord\">\n <component-mapper\n name=\"ListViewActionButtons\"\n [props]=\"{ pConn$: createdViewPConn$, context$ }\"\n [outputEvents]=\"{ closeActionsDialog: closeActionsDialog }\"\n ></component-mapper>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"bShowModal$ && !bShowAsModal$\">\n <div id=\"{{ buildName$ }}\">\n <h3 *ngIf=\"title$ != ''\">{{ title$ }}</h3>\n <component-mapper\n name=\"Assignment\"\n [props]=\"{ pConn$: createdViewPConn$, formGroup$, arChildren$, itemKey$, isCreateStage$: true, updateToken$ }\"\n ></component-mapper>\n </div>\n</div>\n\n<div *ngIf=\"bShowCancelAlert$\">\n <component-mapper\n name=\"CancelAlert\"\n [props]=\"{ bShowAlert$: bShowCancelAlert$, pConn$: cancelPConn$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ onAlertState$: onAlertState }\"\n ></component-mapper>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(function () { return CommonModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i0.forwardRef(function () { return ComponentMapperComponent; }), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
2877
2888
  }
2878
2889
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ModalViewContainerComponent, decorators: [{
2879
2890
  type: Component,
2880
2891
  args: [{ selector: 'app-modal-view-container', standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)], template: "<div id=\"dialog\" *ngIf=\"bShowModal$ && bShowAsModal$\" class=\"psdk-dialog-background\">\n <div class=\"psdk-modal-view-container-top\" id=\"{{ buildName$ }}\">\n <h3 *ngIf=\"title$ != ''\">{{ title$ }}</h3>\n <component-mapper\n name=\"Assignment\"\n [props]=\"{ pConn$: createdViewPConn$, formGroup$, arChildren$, itemKey$, isCreateStage$: true, updateToken$, isInModal$: true, banners }\"\n ></component-mapper>\n <div *ngIf=\"isMultiRecord\">\n <component-mapper\n name=\"ListViewActionButtons\"\n [props]=\"{ pConn$: createdViewPConn$, context$ }\"\n [outputEvents]=\"{ closeActionsDialog: closeActionsDialog }\"\n ></component-mapper>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"bShowModal$ && !bShowAsModal$\">\n <div id=\"{{ buildName$ }}\">\n <h3 *ngIf=\"title$ != ''\">{{ title$ }}</h3>\n <component-mapper\n name=\"Assignment\"\n [props]=\"{ pConn$: createdViewPConn$, formGroup$, arChildren$, itemKey$, isCreateStage$: true, updateToken$ }\"\n ></component-mapper>\n </div>\n</div>\n\n<div *ngIf=\"bShowCancelAlert$\">\n <component-mapper\n name=\"CancelAlert\"\n [props]=\"{ bShowAlert$: bShowCancelAlert$, pConn$: cancelPConn$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ onAlertState$: onAlertState }\"\n ></component-mapper>\n</div>\n" }]
2881
2892
  }], ctorParameters: function () { return [{ type: AngularPConnectService }, { type: i0.NgZone }, { type: ProgressSpinnerService }, { type: i4.FormBuilder }]; }, propDecorators: { pConn$: [{
2882
2893
  type: Input
2883
- }], displayOnlyFA$: [{
2884
- type: Input
2885
2894
  }], modalVisibleChange: [{
2886
2895
  type: Output
2887
2896
  }] } });
@@ -3232,16 +3241,6 @@ class RootContainerComponent {
3232
3241
  this.updateSelf();
3233
3242
  }
3234
3243
  }
3235
- modalVisibleChanged(isVisible) {
3236
- if (this.displayOnlyFA$) {
3237
- if (isVisible) {
3238
- this.bShowRoot$ = false;
3239
- }
3240
- else {
3241
- this.bShowRoot$ = true;
3242
- }
3243
- }
3244
- }
3245
3244
  updateSelf() {
3246
3245
  // need to call this.getCurrentCompleteProps (not this.thePConn.getConfigProps)
3247
3246
  // to get full set of props that affect this component in Redux
@@ -3350,7 +3349,7 @@ class RootContainerComponent {
3350
3349
  }
3351
3350
  }
3352
3351
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RootContainerComponent, deps: [{ token: AngularPConnectService }, { token: ProgressSpinnerService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
3353
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RootContainerComponent, isStandalone: true, selector: "app-root-container", inputs: { pConn$: "pConn$", displayOnlyFA$: "displayOnlyFA$", isMashup$: "isMashup$" }, ngImport: i0, template: "<div class=\"progress-box\" *ngIf=\"bIsProgress$\">\n <mat-spinner class=\"progress-spinner\"></mat-spinner>\n</div>\n\n<div *ngIf=\"bShowRoot$\">\n <div [ngSwitch]=\"componentName$\">\n <component-mapper *ngSwitchCase=\"'View'\" name=\"View\" [props]=\"{ pConn$, displayOnlyFA$ }\"></component-mapper>\n <!-- <app-reference *ngSwitchCase=\"'reference'\" [pConn$]=\"pConn$\" [displayOnlyFA$]=\"displayOnlyFA$\"></app-reference> -->\n <component-mapper\n *ngSwitchCase=\"'ViewContainer'\"\n name=\"ViewContainer\"\n [props]=\"{ pConn$: displayOnlyFA$ ? viewContainerPConn$ : pConn$, displayOnlyFA$ }\"\n ></component-mapper>\n <app-hybrid-view-container *ngSwitchCase=\"'HybridViewContainer'\" [pConn$]=\"pConn$\" [displayOnlyFA$]=\"displayOnlyFA$\"></app-hybrid-view-container>\n <app-modal-view-container\n *ngSwitchCase=\"'ModalViewContainer'\"\n [pConn$]=\"pConn$\"\n [displayOnlyFA$]=\"displayOnlyFA$\"\n (modalVisibleChange)=\"modalVisibleChanged($event)\"\n ></app-modal-view-container>\n <div *ngSwitchCase=\"''\"></div>\n <div *ngSwitchDefault>{{ localizedVal('RootContainer Missing: ' + componentName$, localeCategory) }}.</div>\n </div>\n</div>\n\n<div *ngIf=\"pvConn$ != null\">\n <app-preview-view-container [pConn$]=\"pvConn$\"></app-preview-view-container>\n</div>\n\n<div *ngIf=\"mConn$ != null\">\n <app-modal-view-container\n [pConn$]=\"mConn$\"\n [displayOnlyFA$]=\"displayOnlyFA$\"\n (modalVisibleChange)=\"modalVisibleChanged($event)\"\n ></app-modal-view-container>\n</div>\n", styles: [".progress-box{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;width:100%;background-color:var(--app-background-color);position:fixed;z-index:99999;top:0rem;left:0rem;opacity:.5}.progress-spinner{text-align:center}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(function () { return CommonModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgSwitch; }), selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgSwitchCase; }), selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgSwitchDefault; }), selector: "[ngSwitchDefault]" }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatProgressSpinnerModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i4$3.MatProgressSpinner; }), selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i0.forwardRef(function () { return HybridViewContainerComponent; }), selector: "app-hybrid-view-container", inputs: ["pConn$", "formGroup$", "displayOnlyFA$"] }, { kind: "component", type: i0.forwardRef(function () { return ModalViewContainerComponent; }), selector: "app-modal-view-container", inputs: ["pConn$", "displayOnlyFA$"], outputs: ["modalVisibleChange"] }, { kind: "component", type: i0.forwardRef(function () { return PreviewViewContainerComponent; }), selector: "app-preview-view-container", inputs: ["pConn$"] }, { kind: "component", type: i0.forwardRef(function () { return ComponentMapperComponent; }), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
3352
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RootContainerComponent, isStandalone: true, selector: "app-root-container", inputs: { pConn$: "pConn$", displayOnlyFA$: "displayOnlyFA$", isMashup$: "isMashup$" }, ngImport: i0, template: "<div class=\"progress-box\" *ngIf=\"bIsProgress$\">\n <mat-spinner class=\"progress-spinner\"></mat-spinner>\n</div>\n\n<div *ngIf=\"bShowRoot$\">\n <div [ngSwitch]=\"componentName$\">\n <component-mapper *ngSwitchCase=\"'View'\" name=\"View\" [props]=\"{ pConn$, displayOnlyFA$ }\"></component-mapper>\n <component-mapper\n *ngSwitchCase=\"'ViewContainer'\"\n name=\"ViewContainer\"\n [props]=\"{ pConn$: viewContainerPConn$, displayOnlyFA$ }\"\n ></component-mapper>\n <div *ngSwitchDefault>{{ localizedVal('RootContainer Missing: ' + componentName$, localeCategory) }}.</div>\n </div>\n</div>\n\n<div *ngIf=\"pvConn$ != null\">\n <app-preview-view-container [pConn$]=\"pvConn$\"></app-preview-view-container>\n</div>\n\n<div *ngIf=\"mConn$ != null\">\n <app-modal-view-container [pConn$]=\"mConn$\"></app-modal-view-container>\n</div>\n", styles: [".progress-box{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;width:100%;background-color:var(--app-background-color);position:fixed;z-index:99999;top:0rem;left:0rem;opacity:.5}.progress-spinner{text-align:center}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(function () { return CommonModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgSwitch; }), selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgSwitchCase; }), selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgSwitchDefault; }), selector: "[ngSwitchDefault]" }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatProgressSpinnerModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i4$3.MatProgressSpinner; }), selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i0.forwardRef(function () { return ModalViewContainerComponent; }), selector: "app-modal-view-container", inputs: ["pConn$"], outputs: ["modalVisibleChange"] }, { kind: "component", type: i0.forwardRef(function () { return PreviewViewContainerComponent; }), selector: "app-preview-view-container", inputs: ["pConn$"] }, { kind: "component", type: i0.forwardRef(function () { return ComponentMapperComponent; }), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
3354
3353
  }
3355
3354
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RootContainerComponent, decorators: [{
3356
3355
  type: Component,
@@ -3361,7 +3360,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3361
3360
  ModalViewContainerComponent,
3362
3361
  PreviewViewContainerComponent,
3363
3362
  forwardRef(() => ComponentMapperComponent)
3364
- ], template: "<div class=\"progress-box\" *ngIf=\"bIsProgress$\">\n <mat-spinner class=\"progress-spinner\"></mat-spinner>\n</div>\n\n<div *ngIf=\"bShowRoot$\">\n <div [ngSwitch]=\"componentName$\">\n <component-mapper *ngSwitchCase=\"'View'\" name=\"View\" [props]=\"{ pConn$, displayOnlyFA$ }\"></component-mapper>\n <!-- <app-reference *ngSwitchCase=\"'reference'\" [pConn$]=\"pConn$\" [displayOnlyFA$]=\"displayOnlyFA$\"></app-reference> -->\n <component-mapper\n *ngSwitchCase=\"'ViewContainer'\"\n name=\"ViewContainer\"\n [props]=\"{ pConn$: displayOnlyFA$ ? viewContainerPConn$ : pConn$, displayOnlyFA$ }\"\n ></component-mapper>\n <app-hybrid-view-container *ngSwitchCase=\"'HybridViewContainer'\" [pConn$]=\"pConn$\" [displayOnlyFA$]=\"displayOnlyFA$\"></app-hybrid-view-container>\n <app-modal-view-container\n *ngSwitchCase=\"'ModalViewContainer'\"\n [pConn$]=\"pConn$\"\n [displayOnlyFA$]=\"displayOnlyFA$\"\n (modalVisibleChange)=\"modalVisibleChanged($event)\"\n ></app-modal-view-container>\n <div *ngSwitchCase=\"''\"></div>\n <div *ngSwitchDefault>{{ localizedVal('RootContainer Missing: ' + componentName$, localeCategory) }}.</div>\n </div>\n</div>\n\n<div *ngIf=\"pvConn$ != null\">\n <app-preview-view-container [pConn$]=\"pvConn$\"></app-preview-view-container>\n</div>\n\n<div *ngIf=\"mConn$ != null\">\n <app-modal-view-container\n [pConn$]=\"mConn$\"\n [displayOnlyFA$]=\"displayOnlyFA$\"\n (modalVisibleChange)=\"modalVisibleChanged($event)\"\n ></app-modal-view-container>\n</div>\n", styles: [".progress-box{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;width:100%;background-color:var(--app-background-color);position:fixed;z-index:99999;top:0rem;left:0rem;opacity:.5}.progress-spinner{text-align:center}\n"] }]
3363
+ ], template: "<div class=\"progress-box\" *ngIf=\"bIsProgress$\">\n <mat-spinner class=\"progress-spinner\"></mat-spinner>\n</div>\n\n<div *ngIf=\"bShowRoot$\">\n <div [ngSwitch]=\"componentName$\">\n <component-mapper *ngSwitchCase=\"'View'\" name=\"View\" [props]=\"{ pConn$, displayOnlyFA$ }\"></component-mapper>\n <component-mapper\n *ngSwitchCase=\"'ViewContainer'\"\n name=\"ViewContainer\"\n [props]=\"{ pConn$: viewContainerPConn$, displayOnlyFA$ }\"\n ></component-mapper>\n <div *ngSwitchDefault>{{ localizedVal('RootContainer Missing: ' + componentName$, localeCategory) }}.</div>\n </div>\n</div>\n\n<div *ngIf=\"pvConn$ != null\">\n <app-preview-view-container [pConn$]=\"pvConn$\"></app-preview-view-container>\n</div>\n\n<div *ngIf=\"mConn$ != null\">\n <app-modal-view-container [pConn$]=\"mConn$\"></app-modal-view-container>\n</div>\n", styles: [".progress-box{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;width:100%;background-color:var(--app-background-color);position:fixed;z-index:99999;top:0rem;left:0rem;opacity:.5}.progress-spinner{text-align:center}\n"] }]
3365
3364
  }], ctorParameters: function () { return [{ type: AngularPConnectService }, { type: ProgressSpinnerService }, { type: i0.NgZone }]; }, propDecorators: { pConn$: [{
3366
3365
  type: Input
3367
3366
  }], displayOnlyFA$: [{
@@ -4272,7 +4271,9 @@ class AutoCompleteComponent {
4272
4271
  // PConnect wants to use changeHandler for onChange
4273
4272
  // this.angularPConnect.changeHandler( this, event);
4274
4273
  this.filterValue = event.target.value;
4275
- this.angularPConnectData.actions?.onChange(this, event);
4274
+ const actionsApi = this.pConn$?.getActionsApi();
4275
+ const propName = (this.pConn$?.getStateProps()).value;
4276
+ handleEvent(actionsApi, 'change', propName, this.filterValue);
4276
4277
  }
4277
4278
  optionChanged(event) {
4278
4279
  this.angularPConnectData.actions?.onChange(this, event);
@@ -4608,8 +4609,9 @@ class CheckBoxComponent {
4608
4609
  this.pConn$.getValidationApi().validate(this.selectedvalues, this.selectionList);
4609
4610
  }
4610
4611
  else {
4611
- event.value = event.checked;
4612
- this.angularPConnectData.actions?.onBlur(this, event);
4612
+ const actionsApi = this.pConn$?.getActionsApi();
4613
+ const propName = (this.pConn$?.getStateProps()).value;
4614
+ handleEvent(actionsApi, 'changeNblur', propName, event.checked);
4613
4615
  }
4614
4616
  }
4615
4617
  handleChangeMultiMode(event, element) {
@@ -5817,7 +5819,9 @@ class CurrencyComponent {
5817
5819
  }
5818
5820
  fieldOnBlur(event) {
5819
5821
  // PConnect wants to use eventHandler for onBlur
5820
- this.angularPConnectData.actions?.onBlur(this, event);
5822
+ const actionsApi = this.pConn$?.getActionsApi();
5823
+ const propName = (this.pConn$?.getStateProps()).value;
5824
+ handleEvent(actionsApi, 'changeNblur', propName, event?.target?.value);
5821
5825
  }
5822
5826
  getErrorMessage() {
5823
5827
  let errMessage = '';
@@ -6340,7 +6344,9 @@ class DateComponent {
6340
6344
  // convert date to pega "date" format
6341
6345
  event.value = event.value?.toISOString();
6342
6346
  }
6343
- this.angularPConnectData.actions?.onBlur(this, { value: event.value });
6347
+ const actionsApi = this.pConn$?.getActionsApi();
6348
+ const propName = (this.pConn$?.getStateProps()).value;
6349
+ handleEvent(actionsApi, 'changeNblur', propName, event?.value);
6344
6350
  }
6345
6351
  hasErrors() {
6346
6352
  return this.fieldControl.status === 'INVALID';
@@ -6526,10 +6532,9 @@ class DateTimeComponent {
6526
6532
  handleEvent(actionsApi, 'changeNblur', propName, value?.toISOString());
6527
6533
  }
6528
6534
  fieldOnBlur(event) {
6529
- // PConnect wants to use eventHandler for onBlur
6530
- if (event.target.value)
6531
- event.value = event.target.value;
6532
- this.angularPConnectData.actions?.onBlur(this, event);
6535
+ const actionsApi = this.pConn$?.getActionsApi();
6536
+ const propName = (this.pConn$?.getStateProps()).value;
6537
+ handleEvent(actionsApi, 'changeNblur', propName, event?.target?.value);
6533
6538
  }
6534
6539
  getErrorMessage() {
6535
6540
  let errMessage = '';
@@ -6881,10 +6886,6 @@ class DropdownComponent {
6881
6886
  this.configProps$.onRecordChange(event);
6882
6887
  }
6883
6888
  }
6884
- fieldOnBlur(event) {
6885
- // PConnect wants to use eventHandler for onBlur
6886
- this.angularPConnectData.actions?.onBlur(this, event);
6887
- }
6888
6889
  getLocalizedOptionValue(opt) {
6889
6890
  return this.pConn$.getLocalizedValue(opt.value, this.localePath,
6890
6891
  // @ts-ignore - Property 'getLocaleRuleNameFromKeys' is private and only accessible within class 'C11nEnv'.
@@ -7023,8 +7024,9 @@ class EmailComponent {
7023
7024
  this.angularPConnectData.actions?.onChange(this, event);
7024
7025
  }
7025
7026
  fieldOnBlur(event) {
7026
- // PConnect wants to use eventHandler for onBlur
7027
- this.angularPConnectData.actions?.onBlur(this, event);
7027
+ const actionsApi = this.pConn$?.getActionsApi();
7028
+ const propName = (this.pConn$?.getStateProps()).value;
7029
+ handleEvent(actionsApi, 'changeNblur', propName, event?.target?.value);
7028
7030
  }
7029
7031
  getErrorMessage() {
7030
7032
  let errMessage = '';
@@ -7220,8 +7222,9 @@ class IntegerComponent {
7220
7222
  this.angularPConnectData.actions?.onChange(this, event);
7221
7223
  }
7222
7224
  fieldOnBlur(event) {
7223
- // PConnect wants to use eventHandler for onBlur
7224
- this.angularPConnectData.actions?.onBlur(this, event);
7225
+ const actionsApi = this.pConn$?.getActionsApi();
7226
+ const propName = (this.pConn$?.getStateProps()).value;
7227
+ handleEvent(actionsApi, 'changeNblur', propName, event?.target?.value);
7225
7228
  }
7226
7229
  getErrorMessage() {
7227
7230
  // field control gets error message from here
@@ -7398,8 +7401,9 @@ class PercentageComponent {
7398
7401
  this.angularPConnectData.actions?.onChange(this, event);
7399
7402
  }
7400
7403
  fieldOnBlur(event) {
7401
- // PConnect wants to use eventHandler for onBlur
7402
- this.angularPConnectData.actions?.onBlur(this, event);
7404
+ const actionsApi = this.pConn$?.getActionsApi();
7405
+ const propName = (this.pConn$?.getStateProps()).value;
7406
+ handleEvent(actionsApi, 'changeNblur', propName, event?.target?.value);
7403
7407
  }
7404
7408
  getErrorMessage() {
7405
7409
  // field control gets error message from here
@@ -7552,8 +7556,9 @@ class PhoneComponent {
7552
7556
  }
7553
7557
  }
7554
7558
  fieldOnBlur(event) {
7555
- // PConnect wants to use eventHandler for onBlur
7556
- this.angularPConnectData.actions?.onBlur(this, event);
7559
+ const actionsApi = this.pConn$?.getActionsApi();
7560
+ const propName = (this.pConn$?.getStateProps()).value;
7561
+ handleEvent(actionsApi, 'changeNblur', propName, event?.target?.value);
7557
7562
  }
7558
7563
  getErrorMessage() {
7559
7564
  let errMessage = '';
@@ -7716,11 +7721,9 @@ class RadioButtonsComponent {
7716
7721
  return this.value$ === buttonValue;
7717
7722
  }
7718
7723
  fieldOnChange(event) {
7719
- this.angularPConnectData.actions?.onChange(this, event);
7720
- }
7721
- fieldOnBlur(event) {
7722
- // PConnect wants to use eventHandler for onBlur
7723
- this.angularPConnectData.actions?.onBlur(this, event);
7724
+ const actionsApi = this.pConn$?.getActionsApi();
7725
+ const propName = (this.pConn$?.getStateProps()).value;
7726
+ handleEvent(actionsApi, 'changeNblur', propName, event?.value);
7724
7727
  }
7725
7728
  getLocalizedOptionValue(opt) {
7726
7729
  return this.pConn$.getLocalizedValue(opt.value, this.localePath,
@@ -7910,12 +7913,9 @@ class TextAreaComponent {
7910
7913
  }
7911
7914
  }
7912
7915
  fieldOnChange(event) {
7913
- // PConnect wants to use changeHandler for onChange
7914
- this.angularPConnectData.actions?.onChange(this, event);
7915
- }
7916
- fieldOnBlur(event) {
7917
- // PConnect wants to use eventHandler for onBlur
7918
- this.angularPConnectData.actions?.onBlur(this, event);
7916
+ const actionsApi = this.pConn$?.getActionsApi();
7917
+ const propName = (this.pConn$?.getStateProps()).value;
7918
+ handleEvent(actionsApi, 'changeNblur', propName, event?.target?.value);
7919
7919
  }
7920
7920
  getErrorMessage() {
7921
7921
  // field control gets error message from here
@@ -8247,8 +8247,9 @@ class TextInputComponent {
8247
8247
  this.angularPConnectData.actions?.onChange(this, event);
8248
8248
  }
8249
8249
  fieldOnBlur(event) {
8250
- // PConnect wants to use eventHandler for onBlur
8251
- this.angularPConnectData.actions?.onBlur(this, event);
8250
+ const actionsApi = this.pConn$?.getActionsApi();
8251
+ const propName = (this.pConn$?.getStateProps()).value;
8252
+ handleEvent(actionsApi, 'changeNblur', propName, event?.target?.value);
8252
8253
  }
8253
8254
  getErrorMessage() {
8254
8255
  let errMessage = '';
@@ -8385,9 +8386,9 @@ class TimeComponent {
8385
8386
  this.angularPConnectData.actions?.onChange(this, event);
8386
8387
  }
8387
8388
  fieldOnBlur(event) {
8388
- // PConnect wants to use eventHandler for onBlur
8389
- event.value = event.target.value;
8390
- this.angularPConnectData.actions?.onBlur(this, event);
8389
+ const actionsApi = this.pConn$?.getActionsApi();
8390
+ const propName = (this.pConn$?.getStateProps()).value;
8391
+ handleEvent(actionsApi, 'changeNblur', propName, event?.target?.value);
8391
8392
  }
8392
8393
  getErrorMessage() {
8393
8394
  let errMessage = '';
@@ -8524,8 +8525,9 @@ class UrlComponent {
8524
8525
  this.angularPConnectData.actions?.onChange(this, event);
8525
8526
  }
8526
8527
  fieldOnBlur(event) {
8527
- // PConnect wants to use eventHandler for onBlur
8528
- this.angularPConnectData.actions?.onBlur(this, event);
8528
+ const actionsApi = this.pConn$?.getActionsApi();
8529
+ const propName = (this.pConn$?.getStateProps()).value;
8530
+ handleEvent(actionsApi, 'changeNblur', propName, event?.target?.value);
8529
8531
  }
8530
8532
  getErrorMessage() {
8531
8533
  let errMessage = '';
@@ -8669,11 +8671,9 @@ class UserReferenceComponent {
8669
8671
  const index = this.options$?.findIndex(element => element.value === event.target.value);
8670
8672
  key = index > -1 ? (key = this.options$[index].key) : event.target.value;
8671
8673
  }
8672
- const eve = {
8673
- value: key
8674
- };
8675
- // PConnect wants to use eventHandler for onBlur
8676
- this.angularPConnectData.actions?.onChange(this, eve);
8674
+ const actionsApi = this.pConn$?.getActionsApi();
8675
+ const propName = (this.pConn$?.getStateProps()).value;
8676
+ handleEvent(actionsApi, 'changeNblur', propName, key);
8677
8677
  }
8678
8678
  getErrorMessage() {
8679
8679
  let errMessage = '';
@@ -9656,9 +9656,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
9656
9656
  }]
9657
9657
  }] });
9658
9658
 
9659
+ function areViewsChanged(oldViews, newViews) {
9660
+ if (oldViews.length !== newViews.length) {
9661
+ return true;
9662
+ }
9663
+ return !oldViews.every((oldView, index) => {
9664
+ const newView = newViews[index];
9665
+ return oldView.getPConnect().viewName === newView.getPConnect().viewName;
9666
+ });
9667
+ }
9659
9668
  class DefaultFormComponent {
9660
- constructor(templateUtils) {
9669
+ constructor(angularPConnect, templateUtils) {
9670
+ this.angularPConnect = angularPConnect;
9661
9671
  this.templateUtils = templateUtils;
9672
+ // Used with AngularPConnect
9673
+ this.angularPConnectData = {};
9674
+ this.arChildren$ = [];
9662
9675
  this.NO_HEADER_TEMPLATES = [
9663
9676
  'SubTabs',
9664
9677
  'SimpleTable',
@@ -9671,6 +9684,19 @@ class DefaultFormComponent {
9671
9684
  ];
9672
9685
  }
9673
9686
  ngOnInit() {
9687
+ // First thing in initialization is registering and subscribing to the AngularPConnect service
9688
+ this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
9689
+ this.updateSelf();
9690
+ }
9691
+ ngOnDestroy() {
9692
+ if (this.angularPConnectData.unsubscribeFn) {
9693
+ this.angularPConnectData.unsubscribeFn();
9694
+ }
9695
+ }
9696
+ onStateChange() {
9697
+ this.updateSelf();
9698
+ }
9699
+ updateSelf() {
9674
9700
  const configProps = this.pConn$.getConfigProps();
9675
9701
  this.template = configProps?.template;
9676
9702
  const propToUse = { ...this.pConn$.getInheritedProps() };
@@ -9696,15 +9722,19 @@ class DefaultFormComponent {
9696
9722
  // repoint children before getting templateArray
9697
9723
  // Children may contain 'reference' component, so we need to
9698
9724
  // normalize them
9699
- this.arChildren$ = ReferenceComponent.normalizePConnArray(kids[0].getPConnect().getChildren());
9725
+ const children = ReferenceComponent.normalizePConnArray(kids[0].getPConnect().getChildren());
9726
+ const visibleChildren = children?.filter(child => child !== undefined) || [];
9727
+ if (areViewsChanged(this.arChildren$, visibleChildren)) {
9728
+ this.arChildren$ = visibleChildren;
9729
+ }
9700
9730
  }
9701
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DefaultFormComponent, deps: [{ token: TemplateUtils }], target: i0.ɵɵFactoryTarget.Component }); }
9731
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DefaultFormComponent, deps: [{ token: AngularPConnectService }, { token: TemplateUtils }], target: i0.ɵɵFactoryTarget.Component }); }
9702
9732
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DefaultFormComponent, isStandalone: true, selector: "app-default-form", inputs: { pConn$: "pConn$", formGroup$: "formGroup$" }, ngImport: i0, template: "<!-- When adding a component here, add the same component in 'region' template as well -->\n<div *ngIf=\"!NO_HEADER_TEMPLATES.includes(template) && showLabel\">\n <div class=\"template-title-container\">{{ label }}</div>\n</div>\n<div *ngIf=\"instructions\" class=\"psdk-default-form-instruction-text\">\n <div key=\"instructions\" id=\"instruction-text\" [innerHTML]=\"instructions\"></div>\n</div>\n<div [className]=\"divClass$\">\n <div *ngFor=\"let kid of arChildren$\" [ngClass]=\"{ 'grid-column': kid.getPConnect().getComponentName() === 'View' }\">\n <component-mapper\n [name]=\"kid.getPConnect().getComponentName()\"\n [props]=\"{\n pConn$: kid.getPConnect(),\n formGroup$: formGroup$\n }\"\n errorMsg=\"DefaultForm wants component not yet available: {{ kid.getPConnect().getComponentName() }}\"\n ></component-mapper>\n </div>\n</div>\n", styles: [".psdk-default-form-one-column{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));column-gap:1rem}.psdk-default-form-two-column{display:grid;grid-template-columns:repeat(2,1fr);column-gap:1rem}.psdk-default-form-three-column{display:grid;grid-template-columns:repeat(3,1fr);column-gap:1rem}.psdk-default-form-three-column .grid-column{grid-column:1/span 3}.psdk-default-form-two-column .grid-column{grid-column:1/span 2}.psdk-default-form-one-column .grid-column{grid-column:1}.template-title-container{font-size:.9375rem;font-weight:600;margin:10px 0}.psdk-default-form-instruction-text{padding-top:.625rem;padding-bottom:.625rem}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(function () { return CommonModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i0.forwardRef(function () { return ComponentMapperComponent; }), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
9703
9733
  }
9704
9734
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DefaultFormComponent, decorators: [{
9705
9735
  type: Component,
9706
9736
  args: [{ selector: 'app-default-form', standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)], template: "<!-- When adding a component here, add the same component in 'region' template as well -->\n<div *ngIf=\"!NO_HEADER_TEMPLATES.includes(template) && showLabel\">\n <div class=\"template-title-container\">{{ label }}</div>\n</div>\n<div *ngIf=\"instructions\" class=\"psdk-default-form-instruction-text\">\n <div key=\"instructions\" id=\"instruction-text\" [innerHTML]=\"instructions\"></div>\n</div>\n<div [className]=\"divClass$\">\n <div *ngFor=\"let kid of arChildren$\" [ngClass]=\"{ 'grid-column': kid.getPConnect().getComponentName() === 'View' }\">\n <component-mapper\n [name]=\"kid.getPConnect().getComponentName()\"\n [props]=\"{\n pConn$: kid.getPConnect(),\n formGroup$: formGroup$\n }\"\n errorMsg=\"DefaultForm wants component not yet available: {{ kid.getPConnect().getComponentName() }}\"\n ></component-mapper>\n </div>\n</div>\n", styles: [".psdk-default-form-one-column{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));column-gap:1rem}.psdk-default-form-two-column{display:grid;grid-template-columns:repeat(2,1fr);column-gap:1rem}.psdk-default-form-three-column{display:grid;grid-template-columns:repeat(3,1fr);column-gap:1rem}.psdk-default-form-three-column .grid-column{grid-column:1/span 3}.psdk-default-form-two-column .grid-column{grid-column:1/span 2}.psdk-default-form-one-column .grid-column{grid-column:1}.template-title-container{font-size:.9375rem;font-weight:600;margin:10px 0}.psdk-default-form-instruction-text{padding-top:.625rem;padding-bottom:.625rem}\n"] }]
9707
- }], ctorParameters: function () { return [{ type: TemplateUtils }]; }, propDecorators: { pConn$: [{
9737
+ }], ctorParameters: function () { return [{ type: AngularPConnectService }, { type: TemplateUtils }]; }, propDecorators: { pConn$: [{
9708
9738
  type: Input
9709
9739
  }], formGroup$: [{
9710
9740
  type: Input
@@ -10417,7 +10447,7 @@ class FieldGroupTemplateComponent {
10417
10447
  this.pConn$.setInheritedProp('displayMode', 'LABELS_LEFT');
10418
10448
  }
10419
10449
  this.referenceList = this.configProps$.referenceList;
10420
- if (this.prevRefLength != this.referenceList.length) {
10450
+ if (this.prevRefLength != this.referenceList?.length) {
10421
10451
  // eslint-disable-next-line sonarjs/no-collapsible-if
10422
10452
  if (!this.readonlyMode) {
10423
10453
  if (this.referenceList?.length === 0 && this.allowAddEdit !== false) {
@@ -13464,16 +13494,17 @@ function getFieldWidth(field, label) {
13464
13494
  const getContext = thePConn => {
13465
13495
  const contextName = thePConn.getContextName();
13466
13496
  const pageReference = thePConn.getPageReference();
13467
- // 8.7 change = referenceList may now be in top-level of state props,
13468
- // not always in config of state props
13469
- let { referenceList } = thePConn.getStateProps()?.config || thePConn.getStateProps();
13497
+ const { readonlyContextList, referenceList = readonlyContextList } = thePConn.getStateProps()?.config || thePConn.getStateProps();
13470
13498
  const pageReferenceForRows = referenceList.startsWith('.') ? `${pageReference}.${referenceList.substring(1)}` : referenceList;
13499
+ const viewName = thePConn.viewName;
13471
13500
  // removing "caseInfo.content" prefix to avoid setting it as a target while preparing pageInstructions
13472
- referenceList = pageReferenceForRows.replace(PCore.getConstants().CASE_INFO.CASE_INFO_CONTENT, '');
13501
+ // skipping the removal as StateMachine itself is removing this case info prefix while preparing pageInstructions
13502
+ // referenceList = pageReferenceForRows.replace(PCore.getConstants().CASE_INFO.CASE_INFO_CONTENT, '');
13473
13503
  return {
13474
13504
  contextName,
13475
13505
  referenceListStr: referenceList,
13476
- pageReferenceForRows
13506
+ pageReferenceForRows,
13507
+ viewName
13477
13508
  };
13478
13509
  };
13479
13510
  const populateRowKey = rawData => {