@pega/angular-sdk-components 0.23.14 → 0.23.16

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.
@@ -1215,6 +1215,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1215
1215
  }]
1216
1216
  }], ctorParameters: function () { return [{ type: ProgressSpinnerService }, { type: ErrorMessagesService }, { type: Utils }]; } });
1217
1217
 
1218
+ class BannerService {
1219
+ constructor() {
1220
+ this.banners = [];
1221
+ }
1222
+ clearBanners() {
1223
+ this.banners = [];
1224
+ }
1225
+ updateBanners(itemKey) {
1226
+ const localizedVal = PCore.getLocaleUtils().getLocaleValue;
1227
+ let validationErrors = PCore.getMessageManager().getValidationErrorMessages(itemKey) || [];
1228
+ // const completeProps = this.angularPConnect.getCurrentCompleteProps(this) as FlowContainerProps;
1229
+ validationErrors = validationErrors.map(item => ({ message: typeof item === 'string' ? item : `${item.label}: ${item.description}` }));
1230
+ // this.showPageMessages(completeProps);
1231
+ if (validationErrors.length) {
1232
+ this.banners = [{ messages: validationErrors?.map(msg => localizedVal(msg.message, 'Messages')), variant: 'urgent' }];
1233
+ }
1234
+ else {
1235
+ this.banners = [];
1236
+ }
1237
+ }
1238
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BannerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1239
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BannerService, providedIn: 'root' }); }
1240
+ }
1241
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BannerService, decorators: [{
1242
+ type: Injectable,
1243
+ args: [{
1244
+ providedIn: 'root'
1245
+ }]
1246
+ }] });
1247
+
1218
1248
  /* eslint-disable no-case-declarations */
1219
1249
  function getRefreshProps(refreshConditions) {
1220
1250
  // refreshConditions cuurently supports only "Changes" event
@@ -1224,12 +1254,13 @@ function getRefreshProps(refreshConditions) {
1224
1254
  return refreshConditions.filter(item => item.event && item.event === 'Changes').map(item => [item.field, item.field?.substring(1)]) || [];
1225
1255
  }
1226
1256
  class AssignmentComponent {
1227
- constructor(angularPConnect, psService, erService, ngZone, snackBar) {
1257
+ constructor(angularPConnect, psService, erService, ngZone, snackBar, bannerService) {
1228
1258
  this.angularPConnect = angularPConnect;
1229
1259
  this.psService = psService;
1230
1260
  this.erService = erService;
1231
1261
  this.ngZone = ngZone;
1232
1262
  this.snackBar = snackBar;
1263
+ this.bannerService = bannerService;
1233
1264
  this.isInModal$ = false;
1234
1265
  // For interaction with AngularPConnect
1235
1266
  this.angularPConnectData = {};
@@ -1263,6 +1294,7 @@ class AssignmentComponent {
1263
1294
  checkAndUpdate() {
1264
1295
  // Should always check the bridge to see if the component should update itself (re-render)
1265
1296
  const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this);
1297
+ this.bannerService.updateBanners(this.itemKey$);
1266
1298
  // ONLY call updateSelf when the component should update
1267
1299
  // AND removing the "gate" that was put there since shouldComponentUpdate
1268
1300
  // should be the real "gate"
@@ -1421,6 +1453,10 @@ class AssignmentComponent {
1421
1453
  this.buttonClick(oData.action, oData.buttonType);
1422
1454
  }
1423
1455
  buttonClick(sAction, sButtonType) {
1456
+ this.snackBarRef?.dismiss();
1457
+ this.bannerService.clearBanners();
1458
+ // @ts-ignore
1459
+ PCore.getPubSubUtils().publish('clearBannerMessages');
1424
1460
  // right now, done on an individual basis, setting bReInit to true
1425
1461
  // upon the next flow container state change, will cause the flow container
1426
1462
  // to re-initialize
@@ -1451,7 +1487,7 @@ class AssignmentComponent {
1451
1487
  })
1452
1488
  .catch(() => {
1453
1489
  this.psService.sendMessage(false);
1454
- this.snackBar.open(`${this.localizedVal('Navigation failed!', this.localeCategory)}`, 'Ok');
1490
+ this.snackBarRef = this.snackBar.open(`${this.localizedVal('Navigation failed!', this.localeCategory)}`, 'Ok');
1455
1491
  });
1456
1492
  }
1457
1493
  break;
@@ -1468,7 +1504,7 @@ class AssignmentComponent {
1468
1504
  })
1469
1505
  .catch(() => {
1470
1506
  this.psService.sendMessage(false);
1471
- this.snackBar.open(`${this.localizedVal('Save failed', this.localeCategory)}`, 'Ok');
1507
+ this.snackBarRef = this.snackBar.open(`${this.localizedVal('Save failed', this.localeCategory)}`, 'Ok');
1472
1508
  });
1473
1509
  break;
1474
1510
  }
@@ -1493,7 +1529,7 @@ class AssignmentComponent {
1493
1529
  })
1494
1530
  .catch(() => {
1495
1531
  this.psService.sendMessage(false);
1496
- this.snackBar.open(`${this.localizedVal('Cancel failed!', this.localeCategory)}`, 'Ok');
1532
+ this.snackBarRef = this.snackBar.open(`${this.localizedVal('Cancel failed!', this.localeCategory)}`, 'Ok');
1497
1533
  });
1498
1534
  }
1499
1535
  else {
@@ -1511,7 +1547,7 @@ class AssignmentComponent {
1511
1547
  })
1512
1548
  .catch(() => {
1513
1549
  this.psService.sendMessage(false);
1514
- this.snackBar.open(`${this.localizedVal('Cancel failed!', this.localeCategory)}`, 'Ok');
1550
+ this.snackBarRef = this.snackBar.open(`${this.localizedVal('Cancel failed!', this.localeCategory)}`, 'Ok');
1515
1551
  });
1516
1552
  }
1517
1553
  break;
@@ -1524,24 +1560,18 @@ class AssignmentComponent {
1524
1560
  switch (sAction) {
1525
1561
  case 'finishAssignment':
1526
1562
  this.erService.sendMessage('publish', '');
1527
- if (this.formValid()) {
1528
- this.bReInit = true;
1529
- this.psService.sendMessage(true);
1530
- const finishPromise = this.finishAssignment(this.itemKey$); // JA - was itemID but Nebula/Constellation uses itemKey
1531
- finishPromise
1532
- .then(() => {
1533
- this.psService.sendMessage(false);
1534
- this.updateChanges();
1535
- })
1536
- .catch(() => {
1537
- this.psService.sendMessage(false);
1538
- this.snackBar.open(`${this.localizedVal('Submit failed!', this.localeCategory)}`, 'Ok');
1539
- });
1540
- }
1541
- else {
1542
- // let snackBarRef = this.snackBar.open("Please fix errors on form.", "Ok");
1543
- this.erService.sendMessage('show', this.localizedVal('Please fix errors on form.', this.localeCategory));
1544
- }
1563
+ this.bReInit = true;
1564
+ this.psService.sendMessage(true);
1565
+ const finishPromise = this.finishAssignment(this.itemKey$); // JA - was itemID but Nebula/Constellation uses itemKey
1566
+ finishPromise
1567
+ .then(() => {
1568
+ this.psService.sendMessage(false);
1569
+ this.updateChanges();
1570
+ })
1571
+ .catch(() => {
1572
+ this.psService.sendMessage(false);
1573
+ this.snackBarRef = this.snackBar.open(`${this.localizedVal('Submit failed!', this.localeCategory)}`, 'Ok');
1574
+ });
1545
1575
  break;
1546
1576
  default:
1547
1577
  break;
@@ -1586,13 +1616,13 @@ class AssignmentComponent {
1586
1616
  });
1587
1617
  }
1588
1618
  }
1589
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AssignmentComponent, deps: [{ token: AngularPConnectService }, { token: ProgressSpinnerService }, { token: ErrorMessagesService }, { token: i0.NgZone }, { token: i4$1.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component }); }
1590
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AssignmentComponent, isStandalone: true, selector: "app-assignment", inputs: { pConn$: "pConn$", formGroup$: "formGroup$", arChildren$: "arChildren$", itemKey$: "itemKey$", isCreateStage$: "isCreateStage$", updateToken$: "updateToken$", isInModal$: "isInModal$", banners: "banners" }, usesOnChanges: true, ngImport: i0, template: "<div>\n <div><component-mapper name=\"AlertBanner\" [props]=\"{ banners }\" [parent]=\"this\"></component-mapper></div>\n <div *ngIf=\"bHasNavigation$\" class=\"psdk-stepper\">\n <component-mapper\n name=\"MultiStep\"\n [props]=\"{\n pConn$: newPConn$,\n formGroup$,\n arChildren$,\n arMainButtons$,\n arSecondaryButtons$,\n bIsVertical$,\n arCurrentStepIndicies$,\n arNavigationSteps$\n }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onActionButtonClick }\"\n ></component-mapper>\n </div>\n <div *ngIf=\"!bHasNavigation$\">\n <component-mapper\n name=\"AssignmentCard\"\n [props]=\"{ pConn$: newPConn$, formGroup$, arChildren$, arMainButtons$, arSecondaryButtons$, updateToken$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onActionButtonClick }\"\n ></component-mapper>\n </div>\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: "ngmodule", type: i0.forwardRef(function () { return MatSnackBarModule; }) }, { kind: "component", type: i0.forwardRef(function () { return ComponentMapperComponent; }), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
1619
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AssignmentComponent, deps: [{ token: AngularPConnectService }, { token: ProgressSpinnerService }, { token: ErrorMessagesService }, { token: i0.NgZone }, { token: i4$1.MatSnackBar }, { token: BannerService }], target: i0.ɵɵFactoryTarget.Component }); }
1620
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AssignmentComponent, isStandalone: true, selector: "app-assignment", inputs: { pConn$: "pConn$", formGroup$: "formGroup$", arChildren$: "arChildren$", itemKey$: "itemKey$", isCreateStage$: "isCreateStage$", updateToken$: "updateToken$", isInModal$: "isInModal$" }, usesOnChanges: true, ngImport: i0, template: "<div>\n <div><component-mapper name=\"AlertBanner\" [props]=\"{ banners: bannerService.banners }\" [parent]=\"this\"></component-mapper></div>\n <div *ngIf=\"bHasNavigation$\" class=\"psdk-stepper\">\n <component-mapper\n name=\"MultiStep\"\n [props]=\"{\n pConn$: newPConn$,\n formGroup$,\n arChildren$,\n arMainButtons$,\n arSecondaryButtons$,\n bIsVertical$,\n arCurrentStepIndicies$,\n arNavigationSteps$\n }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onActionButtonClick }\"\n ></component-mapper>\n </div>\n <div *ngIf=\"!bHasNavigation$\">\n <component-mapper\n name=\"AssignmentCard\"\n [props]=\"{ pConn$: newPConn$, formGroup$, arChildren$, arMainButtons$, arSecondaryButtons$, updateToken$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onActionButtonClick }\"\n ></component-mapper>\n </div>\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: "ngmodule", type: i0.forwardRef(function () { return MatSnackBarModule; }) }, { kind: "component", type: i0.forwardRef(function () { return ComponentMapperComponent; }), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
1591
1621
  }
1592
1622
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AssignmentComponent, decorators: [{
1593
1623
  type: Component,
1594
- args: [{ selector: 'app-assignment', standalone: true, imports: [CommonModule, MatSnackBarModule, forwardRef(() => ComponentMapperComponent)], template: "<div>\n <div><component-mapper name=\"AlertBanner\" [props]=\"{ banners }\" [parent]=\"this\"></component-mapper></div>\n <div *ngIf=\"bHasNavigation$\" class=\"psdk-stepper\">\n <component-mapper\n name=\"MultiStep\"\n [props]=\"{\n pConn$: newPConn$,\n formGroup$,\n arChildren$,\n arMainButtons$,\n arSecondaryButtons$,\n bIsVertical$,\n arCurrentStepIndicies$,\n arNavigationSteps$\n }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onActionButtonClick }\"\n ></component-mapper>\n </div>\n <div *ngIf=\"!bHasNavigation$\">\n <component-mapper\n name=\"AssignmentCard\"\n [props]=\"{ pConn$: newPConn$, formGroup$, arChildren$, arMainButtons$, arSecondaryButtons$, updateToken$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onActionButtonClick }\"\n ></component-mapper>\n </div>\n</div>\n" }]
1595
- }], ctorParameters: function () { return [{ type: AngularPConnectService }, { type: ProgressSpinnerService }, { type: ErrorMessagesService }, { type: i0.NgZone }, { type: i4$1.MatSnackBar }]; }, propDecorators: { pConn$: [{
1624
+ args: [{ selector: 'app-assignment', standalone: true, imports: [CommonModule, MatSnackBarModule, forwardRef(() => ComponentMapperComponent)], template: "<div>\n <div><component-mapper name=\"AlertBanner\" [props]=\"{ banners: bannerService.banners }\" [parent]=\"this\"></component-mapper></div>\n <div *ngIf=\"bHasNavigation$\" class=\"psdk-stepper\">\n <component-mapper\n name=\"MultiStep\"\n [props]=\"{\n pConn$: newPConn$,\n formGroup$,\n arChildren$,\n arMainButtons$,\n arSecondaryButtons$,\n bIsVertical$,\n arCurrentStepIndicies$,\n arNavigationSteps$\n }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onActionButtonClick }\"\n ></component-mapper>\n </div>\n <div *ngIf=\"!bHasNavigation$\">\n <component-mapper\n name=\"AssignmentCard\"\n [props]=\"{ pConn$: newPConn$, formGroup$, arChildren$, arMainButtons$, arSecondaryButtons$, updateToken$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ actionButtonClick: onActionButtonClick }\"\n ></component-mapper>\n </div>\n</div>\n" }]
1625
+ }], ctorParameters: function () { return [{ type: AngularPConnectService }, { type: ProgressSpinnerService }, { type: ErrorMessagesService }, { type: i0.NgZone }, { type: i4$1.MatSnackBar }, { type: BannerService }]; }, propDecorators: { pConn$: [{
1596
1626
  type: Input
1597
1627
  }], formGroup$: [{
1598
1628
  type: Input
@@ -1606,8 +1636,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1606
1636
  type: Input
1607
1637
  }], isInModal$: [{
1608
1638
  type: Input
1609
- }], banners: [{
1610
- type: Input
1611
1639
  }] } });
1612
1640
 
1613
1641
  /** This file contains various utility methods to generate filter components, regionLayout data, filter expressions, etc. */
@@ -2133,6 +2161,9 @@ class FlowContainerComponent extends FlowContainerBaseComponent {
2133
2161
  PCore.getPubSubUtils().subscribe('cancelPressed', () => {
2134
2162
  this.handleCancelPressed();
2135
2163
  }, 'cancelPressed');
2164
+ PCore.getPubSubUtils().subscribe('clearBannerMessages', () => {
2165
+ this.banners = [];
2166
+ }, 'CLEAR_BANNER_MESSAGES');
2136
2167
  }
2137
2168
  ngOnDestroy() {
2138
2169
  if (this.angularPConnectData.unsubscribeFn) {
@@ -2140,6 +2171,7 @@ class FlowContainerComponent extends FlowContainerBaseComponent {
2140
2171
  }
2141
2172
  PCore.getPubSubUtils().unsubscribe(PCore.getConstants().PUB_SUB_EVENTS.EVENT_CANCEL, 'cancelAssignment');
2142
2173
  PCore.getPubSubUtils().unsubscribe('cancelPressed', 'cancelPressed');
2174
+ PCore.getPubSubUtils().unsubscribe('clearBannerMessages', 'CLEAR_BANNER_MESSAGES');
2143
2175
  }
2144
2176
  handleCancel() {
2145
2177
  // cancel happened, so ok to initialize the flow container
@@ -2158,13 +2190,14 @@ class FlowContainerComponent extends FlowContainerBaseComponent {
2158
2190
  const pConn = this.pConnectOfActiveContainerItem || this.pConn$;
2159
2191
  const caseViewModeFromProps = this.angularPConnect.getComponentProp(this, 'caseViewMode');
2160
2192
  const caseViewModeFromRedux = pConn.getValue('context_data.caseViewMode', '');
2193
+ const completeProps = this.angularPConnect.getCurrentCompleteProps(this);
2161
2194
  // ONLY call updateSelf when the component should update
2162
2195
  // AND removing the "gate" that was put there since shouldComponentUpdate
2163
2196
  // should be the real "gate"
2197
+ // eslint-disable-next-line sonarjs/no-collapsible-if
2164
2198
  if (bUpdateSelf || caseViewModeFromProps !== caseViewModeFromRedux) {
2165
2199
  // don't want to redraw the flow container when there are page messages, because
2166
2200
  // the redraw causes us to loose the errors on the elements
2167
- const completeProps = this.angularPConnect.getCurrentCompleteProps(this);
2168
2201
  if (!completeProps.pageMessages || completeProps.pageMessages.length == 0) {
2169
2202
  // with a cancel, need to timeout so todo will update correctly
2170
2203
  if (this.bHasCancel) {
@@ -2177,10 +2210,8 @@ class FlowContainerComponent extends FlowContainerBaseComponent {
2177
2210
  this.updateSelf();
2178
2211
  }
2179
2212
  }
2180
- else {
2181
- this.showPageMessages(completeProps);
2182
- }
2183
2213
  }
2214
+ this.showPageMessages(completeProps);
2184
2215
  }
2185
2216
  showPageMessages(completeProps) {
2186
2217
  this.ngZone.run(() => {
@@ -5854,13 +5885,21 @@ class CurrencyComponent {
5854
5885
  }
5855
5886
  }
5856
5887
  fieldOnChange(event) {
5857
- this.angularPConnectData.actions?.onChange(this, event);
5888
+ const oldVal = this.value$ ?? '';
5889
+ const isValueChanged = Number(event.target.value).toString() !== oldVal.toString();
5890
+ if (isValueChanged) {
5891
+ this.angularPConnectData.actions?.onChange(this, event);
5892
+ }
5858
5893
  }
5859
5894
  fieldOnBlur(event) {
5860
5895
  // PConnect wants to use eventHandler for onBlur
5861
- const actionsApi = this.pConn$?.getActionsApi();
5862
- const propName = (this.pConn$?.getStateProps()).value;
5863
- handleEvent(actionsApi, 'changeNblur', propName, event?.target?.value);
5896
+ const oldVal = this.value$ ?? '';
5897
+ const isValueChanged = Number(event.target.value).toString() !== oldVal.toString();
5898
+ if (isValueChanged) {
5899
+ const actionsApi = this.pConn$?.getActionsApi();
5900
+ const propName = (this.pConn$?.getStateProps()).value;
5901
+ handleEvent(actionsApi, 'changeNblur', propName, event?.target?.value);
5902
+ }
5864
5903
  }
5865
5904
  getErrorMessage() {
5866
5905
  let errMessage = '';
@@ -6739,12 +6778,16 @@ class DecimalComponent {
6739
6778
  this.componentReference = this.pConn$.getStateProps().value;
6740
6779
  }
6741
6780
  fieldOnBlur(event) {
6742
- const actionsApi = this.pConn$?.getActionsApi();
6743
- const propName = (this.pConn$?.getStateProps()).value;
6744
6781
  let value = event?.target?.value;
6745
6782
  value = value.replace(/,/g, '');
6746
6783
  value = value !== '' ? Number(value) : value;
6747
- handleEvent(actionsApi, 'changeNblur', propName, value);
6784
+ const oldVal = this.value$ ?? '';
6785
+ const isValueChanged = value.toString() !== oldVal.toString();
6786
+ if (isValueChanged) {
6787
+ const actionsApi = this.pConn$?.getActionsApi();
6788
+ const propName = (this.pConn$?.getStateProps()).value;
6789
+ handleEvent(actionsApi, 'changeNblur', propName, value);
6790
+ }
6748
6791
  }
6749
6792
  getErrorMessage() {
6750
6793
  let errMessage = '';
@@ -7159,12 +7202,20 @@ class EmailComponent {
7159
7202
  }
7160
7203
  }
7161
7204
  fieldOnChange(event) {
7162
- this.angularPConnectData.actions?.onChange(this, event);
7205
+ const oldVal = this.value$ ?? '';
7206
+ const isValueChanged = event.target.value.toString() !== oldVal.toString();
7207
+ if (isValueChanged) {
7208
+ this.angularPConnectData.actions?.onChange(this, event);
7209
+ }
7163
7210
  }
7164
7211
  fieldOnBlur(event) {
7165
- const actionsApi = this.pConn$?.getActionsApi();
7166
- const propName = (this.pConn$?.getStateProps()).value;
7167
- handleEvent(actionsApi, 'changeNblur', propName, event?.target?.value);
7212
+ const oldVal = this.value$ ?? '';
7213
+ const isValueChanged = event.target.value.toString() !== oldVal.toString();
7214
+ if (isValueChanged) {
7215
+ const actionsApi = this.pConn$?.getActionsApi();
7216
+ const propName = (this.pConn$?.getStateProps()).value;
7217
+ handleEvent(actionsApi, 'changeNblur', propName, event?.target?.value);
7218
+ }
7168
7219
  }
7169
7220
  getErrorMessage() {
7170
7221
  let errMessage = '';
@@ -7357,12 +7408,20 @@ class IntegerComponent {
7357
7408
  }
7358
7409
  }
7359
7410
  fieldOnChange(event) {
7360
- this.angularPConnectData.actions?.onChange(this, event);
7411
+ const oldVal = this.value$ ?? '';
7412
+ const isValueChanged = event.target.value.toString() !== oldVal.toString();
7413
+ if (isValueChanged) {
7414
+ this.angularPConnectData.actions?.onChange(this, event);
7415
+ }
7361
7416
  }
7362
7417
  fieldOnBlur(event) {
7363
- const actionsApi = this.pConn$?.getActionsApi();
7364
- const propName = (this.pConn$?.getStateProps()).value;
7365
- handleEvent(actionsApi, 'changeNblur', propName, event?.target?.value);
7418
+ const oldVal = this.value$ ?? '';
7419
+ const isValueChanged = event.target.value.toString() !== oldVal.toString();
7420
+ if (isValueChanged) {
7421
+ const actionsApi = this.pConn$?.getActionsApi();
7422
+ const propName = (this.pConn$?.getStateProps()).value;
7423
+ handleEvent(actionsApi, 'changeNblur', propName, event?.target?.value);
7424
+ }
7366
7425
  }
7367
7426
  getErrorMessage() {
7368
7427
  // field control gets error message from here
@@ -7536,12 +7595,20 @@ class PercentageComponent {
7536
7595
  }
7537
7596
  }
7538
7597
  fieldOnChange(event) {
7539
- this.angularPConnectData.actions?.onChange(this, event);
7598
+ const oldVal = this.value$ ?? '';
7599
+ const isValueChanged = event.target.value.toString() !== oldVal.toString();
7600
+ if (isValueChanged) {
7601
+ this.angularPConnectData.actions?.onChange(this, event);
7602
+ }
7540
7603
  }
7541
7604
  fieldOnBlur(event) {
7542
- const actionsApi = this.pConn$?.getActionsApi();
7543
- const propName = (this.pConn$?.getStateProps()).value;
7544
- handleEvent(actionsApi, 'changeNblur', propName, event?.target?.value);
7605
+ const oldVal = this.value$ ?? '';
7606
+ const isValueChanged = event.target.value.toString() !== oldVal.toString();
7607
+ if (isValueChanged) {
7608
+ const actionsApi = this.pConn$?.getActionsApi();
7609
+ const propName = (this.pConn$?.getStateProps()).value;
7610
+ handleEvent(actionsApi, 'changeNblur', propName, event?.target?.value);
7611
+ }
7545
7612
  }
7546
7613
  getErrorMessage() {
7547
7614
  // field control gets error message from here
@@ -7678,26 +7745,17 @@ class PhoneComponent {
7678
7745
  });
7679
7746
  }
7680
7747
  }
7748
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
7749
+ fieldOnBlur(event) { }
7681
7750
  fieldOnChange() {
7682
7751
  if (this.formGroup$.controls[this.controlName$].value) {
7683
- const actionsApi = this.pConn$?.getActionsApi();
7684
- const propName = (this.pConn$?.getStateProps()).value;
7685
7752
  const value = this.formGroup$.controls[this.controlName$].value;
7686
- const eventObj = {
7687
- target: {
7688
- value
7689
- }
7690
- };
7691
7753
  this.afterBlur = true;
7692
- this.angularPConnectData.actions?.onChange(this, eventObj);
7693
- handleEvent(actionsApi, 'blur', propName, value);
7754
+ const actionsApi = this.pConn$.getActionsApi();
7755
+ const propName = this.pConn$.getStateProps().value;
7756
+ handleEvent(actionsApi, 'changeNblur', propName, value);
7694
7757
  }
7695
7758
  }
7696
- fieldOnBlur(event) {
7697
- const actionsApi = this.pConn$?.getActionsApi();
7698
- const propName = (this.pConn$?.getStateProps()).value;
7699
- handleEvent(actionsApi, 'changeNblur', propName, event?.target?.value);
7700
- }
7701
7759
  getErrorMessage() {
7702
7760
  let errMessage = '';
7703
7761
  // look for validation messages for json, pre-defined or just an error pushed from workitem (400)
@@ -8051,9 +8109,13 @@ class TextAreaComponent {
8051
8109
  }
8052
8110
  }
8053
8111
  fieldOnChange(event) {
8054
- const actionsApi = this.pConn$?.getActionsApi();
8055
- const propName = (this.pConn$?.getStateProps()).value;
8056
- handleEvent(actionsApi, 'changeNblur', propName, event?.target?.value);
8112
+ const oldVal = this.value$ ?? '';
8113
+ const isValueChanged = event.target.value.toString() !== oldVal.toString();
8114
+ if (isValueChanged) {
8115
+ const actionsApi = this.pConn$?.getActionsApi();
8116
+ const propName = (this.pConn$?.getStateProps()).value;
8117
+ handleEvent(actionsApi, 'changeNblur', propName, event?.target?.value);
8118
+ }
8057
8119
  }
8058
8120
  getErrorMessage() {
8059
8121
  // field control gets error message from here
@@ -8382,12 +8444,20 @@ class TextInputComponent {
8382
8444
  }
8383
8445
  }
8384
8446
  fieldOnChange(event) {
8385
- this.angularPConnectData.actions?.onChange(this, event);
8447
+ const oldVal = this.value$ ?? '';
8448
+ const isValueChanged = event.target.value.toString() !== oldVal.toString();
8449
+ if (isValueChanged) {
8450
+ this.angularPConnectData.actions?.onChange(this, event);
8451
+ }
8386
8452
  }
8387
8453
  fieldOnBlur(event) {
8388
- const actionsApi = this.pConn$?.getActionsApi();
8389
- const propName = (this.pConn$?.getStateProps()).value;
8390
- handleEvent(actionsApi, 'changeNblur', propName, event?.target?.value);
8454
+ const oldVal = this.value$ ?? '';
8455
+ const isValueChanged = event.target.value.toString() !== oldVal.toString();
8456
+ if (isValueChanged) {
8457
+ const actionsApi = this.pConn$?.getActionsApi();
8458
+ const propName = (this.pConn$?.getStateProps()).value;
8459
+ handleEvent(actionsApi, 'changeNblur', propName, event?.target?.value);
8460
+ }
8391
8461
  }
8392
8462
  getErrorMessage() {
8393
8463
  let errMessage = '';
@@ -8660,12 +8730,20 @@ class UrlComponent {
8660
8730
  }
8661
8731
  }
8662
8732
  fieldOnChange(event) {
8663
- this.angularPConnectData.actions?.onChange(this, event);
8733
+ const oldVal = this.value$ ?? '';
8734
+ const isValueChanged = event.target.value.toString() !== oldVal.toString();
8735
+ if (isValueChanged) {
8736
+ this.angularPConnectData.actions?.onChange(this, event);
8737
+ }
8664
8738
  }
8665
8739
  fieldOnBlur(event) {
8666
- const actionsApi = this.pConn$?.getActionsApi();
8667
- const propName = (this.pConn$?.getStateProps()).value;
8668
- handleEvent(actionsApi, 'changeNblur', propName, event?.target?.value);
8740
+ const oldVal = this.value$ ?? '';
8741
+ const isValueChanged = event.target.value.toString() !== oldVal.toString();
8742
+ if (isValueChanged) {
8743
+ const actionsApi = this.pConn$?.getActionsApi();
8744
+ const propName = (this.pConn$?.getStateProps()).value;
8745
+ handleEvent(actionsApi, 'changeNblur', propName, event?.target?.value);
8746
+ }
8669
8747
  }
8670
8748
  getErrorMessage() {
8671
8749
  let errMessage = '';
@@ -18636,5 +18714,5 @@ const localSdkComponentMap = {
18636
18714
  * Generated bundle index. Do not edit.
18637
18715
  */
18638
18716
 
18639
- export { ActionButtonsComponent, AlertBannerComponent, AlertComponent, AngularPConnectService, AppAnnouncementComponent, AppShellComponent, AssignmentCardComponent, AssignmentComponent, AttachmentComponent, AutoCompleteComponent, CancelAlertComponent, CaseCreateStageComponent, CaseHistoryComponent, CaseService, CaseSummaryComponent, CaseViewComponent, CheckBoxComponent, ComponentMapperComponent, ConfirmationComponent, CurrencyComponent, DELETE_ICON, DashboardFilterComponent, DataReferenceComponent, DatapageService, DateComponent, DateTimeComponent, DecimalComponent, DefaultFormComponent, DeferLoadComponent, DetailsComponent, DetailsNarrowWideComponent, DetailsOneColumnComponent, DetailsSubTabsComponent, DetailsThreeColumnComponent, DetailsTwoColumnComponent, DetailsWideNarrowComponent, DropdownComponent, EmailComponent, ErrorBoundaryComponent, ErrorMessagesService, FeedContainerComponent, FieldGroupListComponent, FieldGroupTemplateComponent, FieldValueListComponent, FileUtilityComponent, FlowContainerBaseComponent, FlowContainerComponent, GetLoginStatusService, Group$1 as Group, HybridViewContainerComponent, IdleDetectionService, InlineDashboardComponent, InlineDashboardPageComponent, IntegerComponent, ListPageComponent, ListUtilityComponent, ListViewComponent, MaterialCaseSummaryComponent, MaterialDetailsComponent, MaterialDetailsFieldsComponent, MaterialSummaryItemComponent, MaterialSummaryListComponent, MaterialUtilityComponent, MaterialVerticalTabsComponent, ModalViewContainerComponent, MultiReferenceReadonlyComponent, MultiStepComponent, NarrowWideFormComponent, NavbarComponent, OAuthResponseService, OneColumnComponent, OneColumnPageComponent, OneColumnTabComponent, OperatorComponent, PageComponent, PercentageComponent, PhoneComponent, PreviewViewContainerComponent, ProgressSpinnerService, PromotedFiltersComponent, PulseComponent, RadioButtonsComponent, ReferenceComponent, RegionComponent, RepeatingStructuresComponent, ResetPConnectService, RichTextComponent, RichTextEditorComponent, RootContainerComponent, SdkComponentMap, SemanticLinkComponent, ServerConfigService, SimpleTableComponent, SimpleTableManualComponent, SimpleTableSelectComponent, SingleReferenceReadonlyComponent, StagesComponent, SubTabsComponent, TABLE_CELL, TemplateUtils, TextAreaComponent, TextComponent, TextContentComponent, TextInputComponent, ThousandSeparatorDirective, ThreeColumnComponent, ThreeColumnPageComponent, TimeComponent, TodoComponent, TwoColumnComponent, TwoColumnPageComponent, TwoColumnTabComponent, UpdateWorklistService, UrlComponent, UserReferenceComponent, UtilityComponent, Utils, ViewComponent, ViewContainerComponent, WideNarrowFormComponent, WideNarrowPageComponent, buildFieldsForTable, buildFilterComponents, buildMetaForListView, buildView, combineFilters, compareSdkPCoreVersions, createFilter, createFilterComponent, createMetaForTable, createPConnect, currencyMap, dateFormatInfoDefault, deleteInstruction, endpoints, filterDataByCommonFields, filterDataByDate, filterForFieldValueList, format, formatters, getAddRowCallback, getAllFields, getApiContext, getBanners, getComponentFromMap, getContext, getCurrencyCharacters, getCurrencyOptions, getCurrentTimezone$1 as getCurrentTimezone, getDateFormatInfo, getDeferFriendlyTabs, getFilterExpression, getFormattedDate, getLocale$1 as getLocale, getMessagesGrouped, getReferenceList, getSdkComponentMap, getSeconds, getToDoAssignments, getTransientTabs, getVisibleTabs, handleEvent, hasAssignments, insertInstruction, loginBoxType, populateRowKey, sdkVersion, showBanner, tabClick, updateNewInstructions };
18717
+ export { ActionButtonsComponent, AlertBannerComponent, AlertComponent, AngularPConnectService, AppAnnouncementComponent, AppShellComponent, AssignmentCardComponent, AssignmentComponent, AttachmentComponent, AutoCompleteComponent, BannerService, CancelAlertComponent, CaseCreateStageComponent, CaseHistoryComponent, CaseService, CaseSummaryComponent, CaseViewComponent, CheckBoxComponent, ComponentMapperComponent, ConfirmationComponent, CurrencyComponent, DELETE_ICON, DashboardFilterComponent, DataReferenceComponent, DatapageService, DateComponent, DateTimeComponent, DecimalComponent, DefaultFormComponent, DeferLoadComponent, DetailsComponent, DetailsNarrowWideComponent, DetailsOneColumnComponent, DetailsSubTabsComponent, DetailsThreeColumnComponent, DetailsTwoColumnComponent, DetailsWideNarrowComponent, DropdownComponent, EmailComponent, ErrorBoundaryComponent, ErrorMessagesService, FeedContainerComponent, FieldGroupListComponent, FieldGroupTemplateComponent, FieldValueListComponent, FileUtilityComponent, FlowContainerBaseComponent, FlowContainerComponent, GetLoginStatusService, Group$1 as Group, HybridViewContainerComponent, IdleDetectionService, InlineDashboardComponent, InlineDashboardPageComponent, IntegerComponent, ListPageComponent, ListUtilityComponent, ListViewComponent, MaterialCaseSummaryComponent, MaterialDetailsComponent, MaterialDetailsFieldsComponent, MaterialSummaryItemComponent, MaterialSummaryListComponent, MaterialUtilityComponent, MaterialVerticalTabsComponent, ModalViewContainerComponent, MultiReferenceReadonlyComponent, MultiStepComponent, NarrowWideFormComponent, NavbarComponent, OAuthResponseService, OneColumnComponent, OneColumnPageComponent, OneColumnTabComponent, OperatorComponent, PageComponent, PercentageComponent, PhoneComponent, PreviewViewContainerComponent, ProgressSpinnerService, PromotedFiltersComponent, PulseComponent, RadioButtonsComponent, ReferenceComponent, RegionComponent, RepeatingStructuresComponent, ResetPConnectService, RichTextComponent, RichTextEditorComponent, RootContainerComponent, SdkComponentMap, SemanticLinkComponent, ServerConfigService, SimpleTableComponent, SimpleTableManualComponent, SimpleTableSelectComponent, SingleReferenceReadonlyComponent, StagesComponent, SubTabsComponent, TABLE_CELL, TemplateUtils, TextAreaComponent, TextComponent, TextContentComponent, TextInputComponent, ThousandSeparatorDirective, ThreeColumnComponent, ThreeColumnPageComponent, TimeComponent, TodoComponent, TwoColumnComponent, TwoColumnPageComponent, TwoColumnTabComponent, UpdateWorklistService, UrlComponent, UserReferenceComponent, UtilityComponent, Utils, ViewComponent, ViewContainerComponent, WideNarrowFormComponent, WideNarrowPageComponent, buildFieldsForTable, buildFilterComponents, buildMetaForListView, buildView, combineFilters, compareSdkPCoreVersions, createFilter, createFilterComponent, createMetaForTable, createPConnect, currencyMap, dateFormatInfoDefault, deleteInstruction, endpoints, filterDataByCommonFields, filterDataByDate, filterForFieldValueList, format, formatters, getAddRowCallback, getAllFields, getApiContext, getBanners, getComponentFromMap, getContext, getCurrencyCharacters, getCurrencyOptions, getCurrentTimezone$1 as getCurrentTimezone, getDateFormatInfo, getDeferFriendlyTabs, getFilterExpression, getFormattedDate, getLocale$1 as getLocale, getMessagesGrouped, getReferenceList, getSdkComponentMap, getSeconds, getToDoAssignments, getTransientTabs, getVisibleTabs, handleEvent, hasAssignments, insertInstruction, loginBoxType, populateRowKey, sdkVersion, showBanner, tabClick, updateNewInstructions };
18640
18718
  //# sourceMappingURL=pega-angular-sdk-components.mjs.map