@pega/dx-component-builder-sdk 0.242.18 → 0.242.20

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 (165) hide show
  1. package/package.json +1 -1
  2. package/src/tasks/create/templates/SDK-Angular/field/Boolean/boolean.component.ts.mustache +0 -1
  3. package/src/tasks/create/templates/SDK-Angular/field/DateTime/date-time.component.html.mustache +0 -1
  4. package/src/tasks/create/templates/SDK-Angular/field/DateTime/date-time.component.ts.mustache +17 -3
  5. package/src/tasks/create/templates/SDK-Angular/field/Decimal/decimal.component.html.mustache +1 -0
  6. package/src/tasks/create/templates/SDK-Angular/field/Decimal/decimal.component.ts.mustache +38 -15
  7. package/src/tasks/create/templates/SDK-Angular/field/Decimal-Currency/decimal-currency.component.ts.mustache +19 -13
  8. package/src/tasks/create/templates/SDK-Angular/field/Decimal-Percentage/decimal-percentage.component.html.mustache +1 -1
  9. package/src/tasks/create/templates/SDK-Angular/field/Decimal-Percentage/decimal-percentage.component.ts.mustache +27 -17
  10. package/src/tasks/create/templates/SDK-Angular/field/Integer/integer.component.html.mustache +1 -1
  11. package/src/tasks/create/templates/SDK-Angular/field/Integer/integer.component.ts.mustache +16 -6
  12. package/src/tasks/create/templates/SDK-Angular/field/Picklist/picklist.component.ts.mustache +18 -4
  13. package/src/tasks/create/templates/SDK-Angular/field/Picklist-Autocomplete/picklist-autocomplete.component.html.mustache +0 -1
  14. package/src/tasks/create/templates/SDK-Angular/field/Picklist-Autocomplete/picklist-autocomplete.component.ts.mustache +15 -2
  15. package/src/tasks/create/templates/SDK-Angular/field/Text-Email/text-email.component.ts.mustache +17 -7
  16. package/src/tasks/create/templates/SDK-Angular/field/Text-Input/text.component.html.mustache +1 -1
  17. package/src/tasks/create/templates/SDK-Angular/field/Text-Input/text.component.ts.mustache +16 -6
  18. package/src/tasks/create/templates/SDK-Angular/field/Text-Paragraph/text-paragraph.component.html.mustache +1 -1
  19. package/src/tasks/create/templates/SDK-Angular/field/Text-Paragraph/text-paragraph.component.ts.mustache +16 -6
  20. package/src/tasks/create/templates/SDK-Angular/field/Text-Phone/text-phone.component.ts.mustache +6 -13
  21. package/src/tasks/create/templates/SDK-Angular/field/Text-URL/text-url.component.html.mustache +1 -1
  22. package/src/tasks/create/templates/SDK-Angular/field/Text-URL/text-url.component.ts.mustache +16 -6
  23. package/src/tasks/create/templates/SDK-Angular/field/TimeOfDay/time-of-day.component.html.mustache +1 -1
  24. package/src/tasks/create/templates/SDK-Angular/field/TimeOfDay/time-of-day.component.ts.mustache +21 -6
  25. package/src/tasks/create/templates/SDK-Angular/template/FORM/form.component.ts.mustache +35 -2
  26. package/src/tasks/create/templates/SDK-Angular/template/FORM-region/form.component.scss.mustache +1 -1
  27. package/tests/assets/sdk-a/components/create/override-sdk/designSystemExtension/material-case-summary/material-case-summary.component.ts +0 -1
  28. package/tests/assets/sdk-a/components/create/override-sdk/designSystemExtension/material-details-fields/material-details-fields.component.html +1 -1
  29. package/tests/assets/sdk-a/components/create/override-sdk/designSystemExtension/material-details-fields/material-details-fields.component.ts +6 -0
  30. package/tests/assets/sdk-a/components/create/override-sdk/designSystemExtension/operator/operator.component.html +1 -1
  31. package/tests/assets/sdk-a/components/create/override-sdk/designSystemExtension/operator/operator.component.scss +10 -2
  32. package/tests/assets/sdk-a/components/create/override-sdk/designSystemExtension/operator/operator.component.ts +4 -3
  33. package/tests/assets/sdk-a/components/create/override-sdk/field/currency/currency.component.ts +19 -13
  34. package/tests/assets/sdk-a/components/create/override-sdk/field/date-time/date-time.component.html +0 -1
  35. package/tests/assets/sdk-a/components/create/override-sdk/field/date-time/date-time.component.ts +17 -3
  36. package/tests/assets/sdk-a/components/create/override-sdk/field/decimal/decimal.component.html +1 -0
  37. package/tests/assets/sdk-a/components/create/override-sdk/field/decimal/decimal.component.ts +38 -15
  38. package/tests/assets/sdk-a/components/create/override-sdk/field/dropdown/dropdown.component.ts +18 -3
  39. package/tests/assets/sdk-a/components/create/override-sdk/field/email/email.component.ts +17 -7
  40. package/tests/assets/sdk-a/components/create/override-sdk/field/integer/integer.component.html +1 -1
  41. package/tests/assets/sdk-a/components/create/override-sdk/field/integer/integer.component.ts +16 -6
  42. package/tests/assets/sdk-a/components/create/override-sdk/field/percentage/percentage.component.html +1 -1
  43. package/tests/assets/sdk-a/components/create/override-sdk/field/percentage/percentage.component.ts +27 -17
  44. package/tests/assets/sdk-a/components/create/override-sdk/field/phone/phone.component.ts +6 -13
  45. package/tests/assets/sdk-a/components/create/override-sdk/field/rich-text/rich-text.component.ts +12 -3
  46. package/tests/assets/sdk-a/components/create/override-sdk/field/text/text.component.ts +2 -2
  47. package/tests/assets/sdk-a/components/create/override-sdk/field/text-area/text-area.component.html +1 -1
  48. package/tests/assets/sdk-a/components/create/override-sdk/field/text-area/text-area.component.ts +16 -6
  49. package/tests/assets/sdk-a/components/create/override-sdk/field/text-input/text-input.component.html +1 -1
  50. package/tests/assets/sdk-a/components/create/override-sdk/field/text-input/text-input.component.ts +16 -6
  51. package/tests/assets/sdk-a/components/create/override-sdk/field/time/time.component.html +1 -1
  52. package/tests/assets/sdk-a/components/create/override-sdk/field/time/time.component.ts +21 -6
  53. package/tests/assets/sdk-a/components/create/override-sdk/field/url/url.component.html +1 -1
  54. package/tests/assets/sdk-a/components/create/override-sdk/field/url/url.component.ts +16 -6
  55. package/tests/assets/sdk-a/components/create/override-sdk/field/user-reference/user-reference.component.html +40 -38
  56. package/tests/assets/sdk-a/components/create/override-sdk/field/user-reference/user-reference.component.ts +66 -7
  57. package/tests/assets/sdk-a/components/create/override-sdk/infra/action-buttons/action-buttons.component.html +1 -1
  58. package/tests/assets/sdk-a/components/create/override-sdk/infra/assignment/assignment.component.html +1 -1
  59. package/tests/assets/sdk-a/components/create/override-sdk/infra/assignment/assignment.component.ts +82 -39
  60. package/tests/assets/sdk-a/components/create/override-sdk/infra/assignment-card/assignment-card.component.html +1 -0
  61. package/tests/assets/sdk-a/components/create/override-sdk/infra/defer-load/defer-load.component.ts +4 -1
  62. package/tests/assets/sdk-a/components/create/override-sdk/infra/flow-container/flow-container.component.ts +17 -43
  63. package/tests/assets/sdk-a/components/create/override-sdk/infra/flow-container/helpers.ts +2 -2
  64. package/tests/assets/sdk-a/components/create/override-sdk/infra/modal-view-container/modal-view-container.component.html +1 -11
  65. package/tests/assets/sdk-a/components/create/override-sdk/infra/modal-view-container/modal-view-container.component.ts +0 -7
  66. package/tests/assets/sdk-a/components/create/override-sdk/infra/root-container/root-container.component.html +2 -15
  67. package/tests/assets/sdk-a/components/create/override-sdk/infra/root-container/root-container.component.ts +24 -27
  68. package/tests/assets/sdk-a/components/create/override-sdk/template/default-form/default-form.component.ts +35 -2
  69. package/tests/assets/sdk-a/components/create/override-sdk/template/field-group-template/field-group-template.component.html +7 -7
  70. package/tests/assets/sdk-a/components/create/override-sdk/template/field-group-template/field-group-template.component.scss +8 -0
  71. package/tests/assets/sdk-a/components/create/override-sdk/template/field-group-template/field-group-template.component.ts +64 -41
  72. package/tests/assets/sdk-a/components/create/override-sdk/template/field-group-template/utils.ts +9 -0
  73. package/tests/assets/sdk-a/components/create/override-sdk/template/field-value-list/field-value-list.component.html +2 -2
  74. package/tests/assets/sdk-a/components/create/override-sdk/template/field-value-list/field-value-list.component.scss +4 -0
  75. package/tests/assets/sdk-a/components/create/override-sdk/template/list-view/list-view.component.html +3 -1
  76. package/tests/assets/sdk-a/components/create/override-sdk/template/list-view/list-view.component.ts +1 -1
  77. package/tests/assets/sdk-a/components/create/override-sdk/template/simple-table-manual/helpers.ts +25 -7
  78. package/tests/assets/sdk-a/components/create/override-sdk/template/simple-table-manual/simple-table-manual.component.html +25 -6
  79. package/tests/assets/sdk-a/components/create/override-sdk/template/simple-table-manual/simple-table-manual.component.scss +7 -3
  80. package/tests/assets/sdk-a/components/create/override-sdk/template/simple-table-manual/simple-table-manual.component.ts +62 -23
  81. package/tests/assets/sdk-a/components/create/override-sdk/widget/todo/todo.component.html +4 -5
  82. package/tests/assets/sdk-a/components/create/override-sdk/widget/todo/todo.component.scss +9 -0
  83. package/tests/assets/sdk-a/components/create/override-sdk/widget/todo/todo.component.ts +4 -3
  84. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-boolean/pega-dxil-my-boolean.component.ts +0 -1
  85. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-currency/pega-dxil-my-currency.component.ts +19 -13
  86. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-date-time/pega-dxil-my-date-time.component.html +0 -1
  87. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-date-time/pega-dxil-my-date-time.component.ts +17 -3
  88. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-decimal/pega-dxil-my-decimal.component.html +1 -0
  89. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-decimal/pega-dxil-my-decimal.component.ts +38 -15
  90. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-email/pega-dxil-my-email.component.ts +17 -7
  91. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-integer/pega-dxil-my-integer.component.html +1 -1
  92. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-integer/pega-dxil-my-integer.component.ts +16 -6
  93. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-paragraph/pega-dxil-my-paragraph.component.html +1 -1
  94. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-paragraph/pega-dxil-my-paragraph.component.ts +16 -6
  95. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-percentage/pega-dxil-my-percentage.component.html +1 -1
  96. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-percentage/pega-dxil-my-percentage.component.ts +27 -17
  97. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-phone/pega-dxil-my-phone.component.ts +6 -13
  98. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-picklist/pega-dxil-my-picklist.component.ts +18 -4
  99. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-searchbox/pega-dxil-my-searchbox.component.html +0 -1
  100. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-searchbox/pega-dxil-my-searchbox.component.ts +15 -2
  101. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-text-input/pega-dxil-my-text-input.component.html +1 -1
  102. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-text-input/pega-dxil-my-text-input.component.ts +16 -6
  103. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-time-of-day/pega-dxil-my-time-of-day.component.html +1 -1
  104. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-time-of-day/pega-dxil-my-time-of-day.component.ts +21 -6
  105. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-url/pega-dxil-my-url.component.html +1 -1
  106. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-url/pega-dxil-my-url.component.ts +16 -6
  107. package/tests/assets/sdk-a/components/createAll/custom-sdk/template/pega-dxil-my-form/pega-dxil-my-form.component.ts +35 -2
  108. package/tests/assets/sdk-a/components/createAll/custom-sdk/template/pega-dxil-my-two-column-form/pega-dxil-my-two-column-form.component.scss +1 -1
  109. package/tests/assets/sdk-a/components/createAll/override-sdk/designSystemExtension/material-case-summary/material-case-summary.component.ts +0 -1
  110. package/tests/assets/sdk-a/components/createAll/override-sdk/designSystemExtension/material-details-fields/material-details-fields.component.html +1 -1
  111. package/tests/assets/sdk-a/components/createAll/override-sdk/designSystemExtension/material-details-fields/material-details-fields.component.ts +6 -0
  112. package/tests/assets/sdk-a/components/createAll/override-sdk/designSystemExtension/operator/operator.component.html +1 -1
  113. package/tests/assets/sdk-a/components/createAll/override-sdk/designSystemExtension/operator/operator.component.scss +10 -2
  114. package/tests/assets/sdk-a/components/createAll/override-sdk/designSystemExtension/operator/operator.component.ts +4 -3
  115. package/tests/assets/sdk-a/components/createAll/override-sdk/field/currency/currency.component.ts +19 -13
  116. package/tests/assets/sdk-a/components/createAll/override-sdk/field/date-time/date-time.component.html +0 -1
  117. package/tests/assets/sdk-a/components/createAll/override-sdk/field/date-time/date-time.component.ts +17 -3
  118. package/tests/assets/sdk-a/components/createAll/override-sdk/field/decimal/decimal.component.html +1 -0
  119. package/tests/assets/sdk-a/components/createAll/override-sdk/field/decimal/decimal.component.ts +38 -15
  120. package/tests/assets/sdk-a/components/createAll/override-sdk/field/dropdown/dropdown.component.ts +18 -3
  121. package/tests/assets/sdk-a/components/createAll/override-sdk/field/email/email.component.ts +17 -7
  122. package/tests/assets/sdk-a/components/createAll/override-sdk/field/integer/integer.component.html +1 -1
  123. package/tests/assets/sdk-a/components/createAll/override-sdk/field/integer/integer.component.ts +16 -6
  124. package/tests/assets/sdk-a/components/createAll/override-sdk/field/percentage/percentage.component.html +1 -1
  125. package/tests/assets/sdk-a/components/createAll/override-sdk/field/percentage/percentage.component.ts +27 -17
  126. package/tests/assets/sdk-a/components/createAll/override-sdk/field/phone/phone.component.ts +6 -13
  127. package/tests/assets/sdk-a/components/createAll/override-sdk/field/rich-text/rich-text.component.ts +12 -3
  128. package/tests/assets/sdk-a/components/createAll/override-sdk/field/text/text.component.ts +2 -2
  129. package/tests/assets/sdk-a/components/createAll/override-sdk/field/text-area/text-area.component.html +1 -1
  130. package/tests/assets/sdk-a/components/createAll/override-sdk/field/text-area/text-area.component.ts +16 -6
  131. package/tests/assets/sdk-a/components/createAll/override-sdk/field/text-input/text-input.component.html +1 -1
  132. package/tests/assets/sdk-a/components/createAll/override-sdk/field/text-input/text-input.component.ts +16 -6
  133. package/tests/assets/sdk-a/components/createAll/override-sdk/field/time/time.component.html +1 -1
  134. package/tests/assets/sdk-a/components/createAll/override-sdk/field/time/time.component.ts +21 -6
  135. package/tests/assets/sdk-a/components/createAll/override-sdk/field/url/url.component.html +1 -1
  136. package/tests/assets/sdk-a/components/createAll/override-sdk/field/url/url.component.ts +16 -6
  137. package/tests/assets/sdk-a/components/createAll/override-sdk/field/user-reference/user-reference.component.html +40 -38
  138. package/tests/assets/sdk-a/components/createAll/override-sdk/field/user-reference/user-reference.component.ts +66 -7
  139. package/tests/assets/sdk-a/components/createAll/override-sdk/infra/action-buttons/action-buttons.component.html +1 -1
  140. package/tests/assets/sdk-a/components/createAll/override-sdk/infra/assignment/assignment.component.html +1 -1
  141. package/tests/assets/sdk-a/components/createAll/override-sdk/infra/assignment/assignment.component.ts +82 -39
  142. package/tests/assets/sdk-a/components/createAll/override-sdk/infra/assignment-card/assignment-card.component.html +1 -0
  143. package/tests/assets/sdk-a/components/createAll/override-sdk/infra/defer-load/defer-load.component.ts +4 -1
  144. package/tests/assets/sdk-a/components/createAll/override-sdk/infra/flow-container/flow-container.component.ts +17 -43
  145. package/tests/assets/sdk-a/components/createAll/override-sdk/infra/flow-container/helpers.ts +2 -2
  146. package/tests/assets/sdk-a/components/createAll/override-sdk/infra/modal-view-container/modal-view-container.component.html +1 -11
  147. package/tests/assets/sdk-a/components/createAll/override-sdk/infra/modal-view-container/modal-view-container.component.ts +0 -7
  148. package/tests/assets/sdk-a/components/createAll/override-sdk/infra/root-container/root-container.component.html +2 -15
  149. package/tests/assets/sdk-a/components/createAll/override-sdk/infra/root-container/root-container.component.ts +24 -27
  150. package/tests/assets/sdk-a/components/createAll/override-sdk/template/default-form/default-form.component.ts +35 -2
  151. package/tests/assets/sdk-a/components/createAll/override-sdk/template/field-group-template/field-group-template.component.html +7 -7
  152. package/tests/assets/sdk-a/components/createAll/override-sdk/template/field-group-template/field-group-template.component.scss +8 -0
  153. package/tests/assets/sdk-a/components/createAll/override-sdk/template/field-group-template/field-group-template.component.ts +64 -41
  154. package/tests/assets/sdk-a/components/createAll/override-sdk/template/field-group-template/utils.ts +9 -0
  155. package/tests/assets/sdk-a/components/createAll/override-sdk/template/field-value-list/field-value-list.component.html +2 -2
  156. package/tests/assets/sdk-a/components/createAll/override-sdk/template/field-value-list/field-value-list.component.scss +4 -0
  157. package/tests/assets/sdk-a/components/createAll/override-sdk/template/list-view/list-view.component.html +3 -1
  158. package/tests/assets/sdk-a/components/createAll/override-sdk/template/list-view/list-view.component.ts +1 -1
  159. package/tests/assets/sdk-a/components/createAll/override-sdk/template/simple-table-manual/helpers.ts +25 -7
  160. package/tests/assets/sdk-a/components/createAll/override-sdk/template/simple-table-manual/simple-table-manual.component.html +25 -6
  161. package/tests/assets/sdk-a/components/createAll/override-sdk/template/simple-table-manual/simple-table-manual.component.scss +7 -3
  162. package/tests/assets/sdk-a/components/createAll/override-sdk/template/simple-table-manual/simple-table-manual.component.ts +62 -23
  163. package/tests/assets/sdk-a/components/createAll/override-sdk/widget/todo/todo.component.html +4 -5
  164. package/tests/assets/sdk-a/components/createAll/override-sdk/widget/todo/todo.component.scss +9 -0
  165. package/tests/assets/sdk-a/components/createAll/override-sdk/widget/todo/todo.component.ts +4 -3
@@ -159,16 +159,26 @@ export class EmailComponent implements OnInit, OnDestroy {
159
159
  }
160
160
 
161
161
  fieldOnChange(event: any) {
162
- const value = event?.target?.value;
163
- handleEvent(this.actionsApi, 'changeNblur', this.propName, value);
164
- this.pConn$.clearErrorMessages({
165
- property: this.propName
166
- });
162
+ const oldVal = this.value$ ?? '';
163
+ const isValueChanged = event.target.value.toString() !== oldVal.toString();
164
+
165
+ if (isValueChanged) {
166
+ const value = event?.target?.value;
167
+ handleEvent(this.actionsApi, 'changeNblur', this.propName, value);
168
+ this.pConn$.clearErrorMessages({
169
+ property: this.propName
170
+ });
171
+ }
167
172
  }
168
173
 
169
174
  fieldOnBlur(event: any) {
170
- const value = event?.target?.value;
171
- handleEvent(this.actionsApi, 'changeNblur', this.propName, value);
175
+ const oldVal = this.value$ ?? '';
176
+ const isValueChanged = event.target.value.toString() !== oldVal.toString();
177
+
178
+ if (isValueChanged) {
179
+ const value = event?.target?.value;
180
+ handleEvent(this.actionsApi, 'changeNblur', this.propName, value);
181
+ }
172
182
  }
173
183
 
174
184
  getErrorMessage() {
@@ -15,7 +15,7 @@
15
15
  [required]="bRequired$"
16
16
  [formControl]="fieldControl"
17
17
  [attr.data-test-id]="testId"
18
- (change)="fieldOnChange()"
18
+ (change)="fieldOnChange($event)"
19
19
  (blur)="fieldOnBlur($event)"
20
20
  />
21
21
  <mat-error *ngIf="fieldControl.invalid">{{ getErrorMessage() }}</mat-error>
@@ -161,15 +161,25 @@ export class IntegerComponent implements OnInit, OnDestroy {
161
161
  }
162
162
  }
163
163
 
164
- fieldOnChange() {
165
- this.pConn$.clearErrorMessages({
166
- property: this.propName
167
- });
164
+ fieldOnChange(event: any) {
165
+ const oldVal = this.value$ ?? '';
166
+ const isValueChanged = event.target.value.toString() !== oldVal.toString();
167
+
168
+ if (isValueChanged) {
169
+ this.pConn$.clearErrorMessages({
170
+ property: this.propName
171
+ });
172
+ }
168
173
  }
169
174
 
170
175
  fieldOnBlur(event: any) {
171
- const value = event?.target?.value;
172
- handleEvent(this.actionsApi, 'changeNblur', this.propName, value);
176
+ const oldVal = this.value$ ?? '';
177
+ const isValueChanged = event.target.value.toString() !== oldVal.toString();
178
+
179
+ if (isValueChanged) {
180
+ const value = event?.target?.value;
181
+ handleEvent(this.actionsApi, 'changeNblur', this.propName, value);
182
+ }
173
183
  }
174
184
 
175
185
  getErrorMessage() {
@@ -26,7 +26,7 @@
26
26
  [required]="bRequired$"
27
27
  [formControl]="fieldControl"
28
28
  [attr.data-test-id]="testId"
29
- (change)="fieldOnChange()"
29
+ (change)="fieldOnChange($event)"
30
30
  (blur)="fieldOnBlur($event)"
31
31
  [readonly]="bReadonly$"
32
32
  />
@@ -179,27 +179,37 @@ export class PercentageComponent implements OnInit, OnDestroy {
179
179
  }
180
180
  }
181
181
 
182
- fieldOnChange() {
183
- this.pConn$.clearErrorMessages({
184
- property: this.propName
185
- });
182
+ fieldOnChange(event: any) {
183
+ const oldVal = this.value$ ?? '';
184
+ const isValueChanged = event.target.value.toString() !== oldVal.toString();
185
+
186
+ if (isValueChanged) {
187
+ this.pConn$.clearErrorMessages({
188
+ property: this.propName
189
+ });
190
+ }
186
191
  }
187
192
 
188
193
  fieldOnBlur(event: any) {
189
- let value = event?.target?.value;
190
- value = value ? value.replace(/%/g, '') : '';
191
- // replacing thousand separator with empty string as not required in api call
192
- if (this.configProps$.showGroupSeparators) {
193
- const thousandSep = this.thousandSeparator === '.' ? '\\.' : this.thousandSeparator;
194
- const regExp = new RegExp(String.raw`${thousandSep}`, 'g');
195
- value = value?.replace(regExp, '');
196
- }
197
- // replacing decimal separator with '.'
198
- if (this.decimalSeparator !== '.') {
199
- const regExp = new RegExp(String.raw`${this.decimalSeparator}`, 'g');
200
- value = value.replace(regExp, '.');
194
+ const oldVal = this.value$ ?? '';
195
+ const isValueChanged = event.target.value.toString() !== oldVal.toString();
196
+
197
+ if (isValueChanged) {
198
+ let value = event?.target?.value;
199
+ value = value ? value.replace(/%/g, '') : '';
200
+ // replacing thousand separator with empty string as not required in api call
201
+ if (this.configProps$.showGroupSeparators) {
202
+ const thousandSep = this.thousandSeparator === '.' ? '\\.' : this.thousandSeparator;
203
+ const regExp = new RegExp(String.raw`${thousandSep}`, 'g');
204
+ value = value?.replace(regExp, '');
205
+ }
206
+ // replacing decimal separator with '.'
207
+ if (this.decimalSeparator !== '.') {
208
+ const regExp = new RegExp(String.raw`${this.decimalSeparator}`, 'g');
209
+ value = value.replace(regExp, '.');
210
+ }
211
+ handleEvent(this.actionsApi, 'changeNblur', this.propName, value);
201
212
  }
202
- handleEvent(this.actionsApi, 'changeNblur', this.propName, value);
203
213
  }
204
214
 
205
215
  getErrorMessage() {
@@ -38,18 +38,11 @@ export class PhoneComponent implements OnInit, OnDestroy {
38
38
  displayMode$?: string = '';
39
39
  controlName$: string;
40
40
  bHasForm$ = true;
41
- componentReference = '';
42
41
  testId: string;
43
- separateDialCode = false;
44
- afterBlur: boolean;
45
42
  helperText: string;
46
43
 
47
44
  fieldControl = new FormControl('', null);
48
45
 
49
- phoneForm = new FormGroup({
50
- phone: new FormControl<string | null>(null)
51
- });
52
-
53
46
  actionsApi: Object;
54
47
  propName: string;
55
48
 
@@ -117,6 +110,7 @@ export class PhoneComponent implements OnInit, OnDestroy {
117
110
  this.testId = this.configProps$.testId;
118
111
  if (this.configProps$.value != undefined) {
119
112
  this.value$ = this.configProps$.value;
113
+ this.fieldControl.setValue(this.value$);
120
114
  }
121
115
  this.helperText = this.configProps$.helperText;
122
116
 
@@ -150,10 +144,6 @@ export class PhoneComponent implements OnInit, OnDestroy {
150
144
  this.bReadonly$ = this.utils.getBooleanValue(this.configProps$.readOnly);
151
145
  }
152
146
 
153
- if (this.bReadonly$) {
154
- this.phoneForm.setValue({ phone: this.value$ });
155
- }
156
-
157
147
  // trigger display of error message with field control
158
148
  if (this.angularPConnectData.validateMessage != null && this.angularPConnectData.validateMessage != '') {
159
149
  const timer = interval(100).subscribe(() => {
@@ -170,9 +160,12 @@ export class PhoneComponent implements OnInit, OnDestroy {
170
160
  }
171
161
 
172
162
  fieldOnChange() {
173
- if (this.formGroup$.controls[this.controlName$].value) {
163
+ const oldVal = this.value$ ?? '';
164
+ const newVal = this.formGroup$.controls[this.controlName$].value;
165
+ const isValueChanged = newVal?.toString() !== oldVal.toString();
166
+
167
+ if (isValueChanged && newVal) {
174
168
  const value = this.formGroup$.controls[this.controlName$].value;
175
- this.afterBlur = true;
176
169
  handleEvent(this.actionsApi, 'changeNblur', this.propName, value);
177
170
  }
178
171
  }
@@ -116,8 +116,12 @@ export class RichTextComponent implements OnInit, OnDestroy {
116
116
  }
117
117
  }
118
118
 
119
- fieldOnChange() {
120
- if (this.status === 'error') {
119
+ fieldOnChange(editorValue: any) {
120
+ const oldVal = this.value$ ?? '';
121
+ const newVal = editorValue?.editor?.getBody()?.innerHTML ?? '';
122
+ const isValueChanged = newVal.toString() !== oldVal.toString();
123
+
124
+ if (isValueChanged || this.status === 'error') {
121
125
  const property = this.propName;
122
126
  this.pConn$.clearErrorMessages({
123
127
  property,
@@ -128,6 +132,11 @@ export class RichTextComponent implements OnInit, OnDestroy {
128
132
  }
129
133
 
130
134
  fieldOnBlur(editorValue: any) {
131
- handleEvent(this.actionsApi, 'changeNblur', this.propName, editorValue);
135
+ const oldVal = this.value$ ?? '';
136
+ const isValueChanged = editorValue.toString() !== oldVal.toString();
137
+
138
+ if (isValueChanged) {
139
+ handleEvent(this.actionsApi, 'changeNblur', this.propName, editorValue);
140
+ }
132
141
  }
133
142
  }
@@ -144,7 +144,7 @@ export class TextComponent implements OnInit, OnDestroy {
144
144
  generateDateTime(sVal): string {
145
145
  if (!sVal) return '';
146
146
  if (sVal.length === 10) return this.generateDate(sVal);
147
- const value = sVal.substring(0, sVal.length - 1);
147
+ // const value = sVal.substring(0, sVal.length - 1);
148
148
  // value = new Intl.DateTimeFormat('default', {
149
149
  // year: 'numeric',
150
150
  // month: 'numeric',
@@ -155,6 +155,6 @@ export class TextComponent implements OnInit, OnDestroy {
155
155
  // hour12: true,
156
156
  // }).format(new Date(value))
157
157
 
158
- return this.utils.generateDateTime(value, 'DateTime-Long-YYYY-Custom');
158
+ return this.utils.generateDateTime(sVal, 'DateTime-Long-YYYY-Custom');
159
159
  }
160
160
  }
@@ -16,7 +16,7 @@
16
16
  [required]="bRequired$"
17
17
  [disabled]="bDisabled$"
18
18
  [formControl]="fieldControl"
19
- (change)="fieldOnChange()"
19
+ (change)="fieldOnChange($event)"
20
20
  (blur)="fieldOnBlur($event)"
21
21
  ></textarea>
22
22
  <mat-error *ngIf="fieldControl.invalid">{{ getErrorMessage() }}</mat-error>
@@ -159,15 +159,25 @@ export class TextAreaComponent implements OnInit, OnDestroy {
159
159
  }
160
160
  }
161
161
 
162
- fieldOnChange() {
163
- this.pConn$.clearErrorMessages({
164
- property: this.propName
165
- });
162
+ fieldOnChange(event: any) {
163
+ const oldVal = this.value$ ?? '';
164
+ const isValueChanged = event.target.value.toString() !== oldVal.toString();
165
+
166
+ if (isValueChanged) {
167
+ this.pConn$.clearErrorMessages({
168
+ property: this.propName
169
+ });
170
+ }
166
171
  }
167
172
 
168
173
  fieldOnBlur(event: any) {
169
- const value = event?.target?.value;
170
- handleEvent(this.actionsApi, 'changeNblur', this.propName, value);
174
+ const oldVal = this.value$ ?? '';
175
+ const isValueChanged = event.target.value.toString() !== oldVal.toString();
176
+
177
+ if (isValueChanged) {
178
+ const value = event?.target?.value;
179
+ handleEvent(this.actionsApi, 'changeNblur', this.propName, value);
180
+ }
171
181
  }
172
182
 
173
183
  getErrorMessage() {
@@ -14,7 +14,7 @@
14
14
  [required]="bRequired$"
15
15
  [attr.data-test-id]="testId"
16
16
  [formControl]="fieldControl"
17
- (change)="fieldOnChange()"
17
+ (change)="fieldOnChange($event)"
18
18
  (blur)="fieldOnBlur($event)"
19
19
  />
20
20
  <mat-error *ngIf="fieldControl.invalid">{{ getErrorMessage() }}</mat-error>
@@ -161,15 +161,25 @@ export class TextInputComponent implements OnInit, OnDestroy {
161
161
  }
162
162
  }
163
163
 
164
- fieldOnChange() {
165
- this.pConn$.clearErrorMessages({
166
- property: this.propName
167
- });
164
+ fieldOnChange(event: any) {
165
+ const oldVal = this.value$ ?? '';
166
+ const isValueChanged = event.target.value.toString() !== oldVal.toString();
167
+
168
+ if (isValueChanged) {
169
+ this.pConn$.clearErrorMessages({
170
+ property: this.propName
171
+ });
172
+ }
168
173
  }
169
174
 
170
175
  fieldOnBlur(event: any) {
171
- const value = event?.target?.value;
172
- handleEvent(this.actionsApi, 'changeNblur', this.propName, value);
176
+ const oldVal = this.value$ ?? '';
177
+ const isValueChanged = event.target.value.toString() !== oldVal.toString();
178
+
179
+ if (isValueChanged) {
180
+ const value = event?.target?.value;
181
+ handleEvent(this.actionsApi, 'changeNblur', this.propName, value);
182
+ }
173
183
  }
174
184
 
175
185
  getErrorMessage() {
@@ -14,7 +14,7 @@
14
14
  [required]="bRequired$"
15
15
  [attr.data-test-id]="testId"
16
16
  [formControl]="fieldControl"
17
- (change)="fieldOnChange()"
17
+ (change)="fieldOnChange($event)"
18
18
  (blur)="fieldOnBlur($event)"
19
19
  />
20
20
  <mat-error *ngIf="fieldControl.invalid">{{ getErrorMessage() }}</mat-error>
@@ -165,15 +165,30 @@ export class TimeComponent implements OnInit, OnDestroy {
165
165
  }
166
166
  }
167
167
 
168
- fieldOnChange() {
169
- this.pConn$.clearErrorMessages({
170
- property: this.propName
171
- });
168
+ fieldOnChange(event: any) {
169
+ const oldVal = this.value$ ?? '';
170
+ const isValueChanged = event.target.value.toString() !== oldVal.toString();
171
+
172
+ if (isValueChanged) {
173
+ this.pConn$.clearErrorMessages({
174
+ property: this.propName
175
+ });
176
+ }
172
177
  }
173
178
 
174
179
  fieldOnBlur(event: any) {
175
- const value = event?.target?.value;
176
- handleEvent(this.actionsApi, 'changeNblur', this.propName, value);
180
+ const oldVal = this.value$ ?? '';
181
+ const isValueChanged = event?.target?.value.toString() !== oldVal.toString();
182
+
183
+ if (isValueChanged) {
184
+ let value = event?.target?.value;
185
+ const hhmmPattern = /^\d{2}:\d{2}$/;
186
+ if (hhmmPattern.test(value)) {
187
+ value = `${value}:00`; // append ":00"
188
+ }
189
+
190
+ handleEvent(this.actionsApi, 'changeNblur', this.propName, value);
191
+ }
177
192
  }
178
193
 
179
194
  getErrorMessage() {
@@ -14,7 +14,7 @@
14
14
  [required]="bRequired$"
15
15
  [attr.data-test-id]="testId"
16
16
  [formControl]="fieldControl"
17
- (change)="fieldOnChange()"
17
+ (change)="fieldOnChange($event)"
18
18
  (blur)="fieldOnBlur($event)"
19
19
  />
20
20
  <mat-error *ngIf="fieldControl.invalid">{{ getErrorMessage() }}</mat-error>
@@ -159,15 +159,25 @@ export class UrlComponent implements OnInit, OnDestroy {
159
159
  }
160
160
  }
161
161
 
162
- fieldOnChange() {
163
- this.pConn$.clearErrorMessages({
164
- property: this.propName
165
- });
162
+ fieldOnChange(event: any) {
163
+ const oldVal = this.value$ ?? '';
164
+ const isValueChanged = event.target.value.toString() !== oldVal.toString();
165
+
166
+ if (isValueChanged) {
167
+ this.pConn$.clearErrorMessages({
168
+ property: this.propName
169
+ });
170
+ }
166
171
  }
167
172
 
168
173
  fieldOnBlur(event: any) {
169
- const value = event?.target?.value;
170
- handleEvent(this.actionsApi, 'changeNblur', this.propName, value);
174
+ const oldVal = this.value$ ?? '';
175
+ const isValueChanged = event.target.value.toString() !== oldVal.toString();
176
+
177
+ if (isValueChanged) {
178
+ const value = event?.target?.value;
179
+ handleEvent(this.actionsApi, 'changeNblur', this.propName, value);
180
+ }
171
181
  }
172
182
 
173
183
  getErrorMessage() {
@@ -1,45 +1,47 @@
1
- <div class="psdk-user-reference">
1
+ <div>
2
2
  <div *ngIf="displayMode$; else noDisplayMode">
3
3
  <component-mapper name="FieldValueList" [props]="{ label$, value$, displayMode$ }"></component-mapper>
4
4
  </div>
5
5
  <ng-template #noDisplayMode>
6
- <div *ngIf="type === 'operator'">
7
- <component-mapper name="Operator" [props]="{ pConn$ }"></component-mapper>
8
- </div>
9
- <div [formGroup]="formGroup$" *ngIf="type === 'dropdown'">
10
- <mat-form-field class="psdk-full-width" subscriptSizing="dynamic" [hintLabel]="helperText">
11
- <mat-select [required]="bRequired$" [formControl]="fieldControl" [attr.data-test-id]="testId" (selectionChange)="fieldOnChange($event)">
12
- <mat-option *ngFor="let opt of options$" [value]="opt.key">
13
- {{ opt.value }}
14
- </mat-option>
15
- </mat-select>
16
- <mat-label>{{ label$ }}</mat-label>
17
- <mat-error *ngIf="fieldControl.invalid">
18
- {{ getErrorMessage() }}
19
- </mat-error>
20
- </mat-form-field>
21
- </div>
22
- <div [formGroup]="formGroup$" *ngIf="type === 'searchbox'">
23
- <mat-form-field class="psdk-full-width" subscriptSizing="dynamic" [hintLabel]="helperText">
24
- <mat-label>{{ label$ }}</mat-label>
25
- <input
26
- matInput
27
- [placeholder]="placeholder"
28
- [formControl]="fieldControl"
29
- [required]="bRequired$"
30
- [matAutocomplete]="auto"
31
- [attr.data-test-id]="testId"
32
- (blur)="fieldOnBlur($event)"
33
- />
34
- <mat-autocomplete #auto="matAutocomplete" autoActiveFirstOption (optionSelected)="optionChanged($event)">
35
- <mat-option *ngFor="let opt of filteredOptions | async" [value]="opt.value">
36
- <span>{{ opt.value }}</span>
37
- </mat-option>
38
- </mat-autocomplete>
39
- <mat-error *ngIf="fieldControl.invalid">
40
- {{ getErrorMessage() }}
41
- </mat-error>
42
- </mat-form-field>
6
+ <div class="psdk-user-reference">
7
+ <div *ngIf="this.userID$ && type === 'operator'">
8
+ <component-mapper name="Operator" [props]="{ pConn$, name$: userName$ }"></component-mapper>
9
+ </div>
10
+ <div [formGroup]="formGroup$" *ngIf="type === 'dropdown'">
11
+ <mat-form-field class="psdk-full-width" subscriptSizing="dynamic" [hintLabel]="helperText">
12
+ <mat-select [required]="bRequired$" [formControl]="fieldControl" [attr.data-test-id]="testId" (selectionChange)="fieldOnChange($event)">
13
+ <mat-option *ngFor="let opt of options$" [value]="opt.key">
14
+ {{ opt.value }}
15
+ </mat-option>
16
+ </mat-select>
17
+ <mat-label>{{ label$ }}</mat-label>
18
+ <mat-error *ngIf="fieldControl.invalid">
19
+ {{ getErrorMessage() }}
20
+ </mat-error>
21
+ </mat-form-field>
22
+ </div>
23
+ <div [formGroup]="formGroup$" *ngIf="type === 'searchbox'">
24
+ <mat-form-field class="psdk-full-width" subscriptSizing="dynamic" [hintLabel]="helperText">
25
+ <mat-label>{{ label$ }}</mat-label>
26
+ <input
27
+ matInput
28
+ [placeholder]="placeholder"
29
+ [formControl]="fieldControl"
30
+ [required]="bRequired$"
31
+ [matAutocomplete]="auto"
32
+ [attr.data-test-id]="testId"
33
+ (blur)="fieldOnBlur($event)"
34
+ />
35
+ <mat-autocomplete #auto="matAutocomplete" autoActiveFirstOption (optionSelected)="optionChanged($event)">
36
+ <mat-option *ngFor="let opt of filteredOptions | async" [value]="opt.value">
37
+ <span>{{ opt.value }}</span>
38
+ </mat-option>
39
+ </mat-autocomplete>
40
+ <mat-error *ngIf="fieldControl.invalid">
41
+ {{ getErrorMessage() }}
42
+ </mat-error>
43
+ </mat-form-field>
44
+ </div>
43
45
  </div>
44
46
  </ng-template>
45
47
  </div>
@@ -168,7 +168,7 @@ export class UserReferenceComponent implements OnInit, OnDestroy {
168
168
  this.placeholder = placeholder || '';
169
169
  this.displayMode$ = displayMode;
170
170
 
171
- this.value$ = this.pConn$.getConfigProps()?.value;
171
+ this.value$ = value && typeof value === 'object' && value.userName ? value.userName : (value ?? '');
172
172
 
173
173
  const { readOnly, required } = props;
174
174
  [this.bReadonly$, this.bRequired$] = [readOnly, required].map(prop => prop === true || (typeof prop === 'string' && prop === 'true'));
@@ -184,12 +184,8 @@ export class UserReferenceComponent implements OnInit, OnDestroy {
184
184
  } else {
185
185
  // if same user ref field is referred in view as editable & readonly formatted text
186
186
  // referenced users won't be available, so get user details from dx api
187
- const { getOperatorDetails } = PCore.getUserApi();
188
- getOperatorDetails(this.userID$).then((resp: any) => {
189
- if (resp.data && resp.data.pyOperatorInfo && resp.data.pyOperatorInfo.pyUserName) {
190
- this.userName$ = resp.data.pyOperatorInfo.pyUserName;
191
- }
192
- });
187
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
188
+ this.userName$ = await getUserName(this.pConn$, this.userID$);
193
189
  }
194
190
  } else if (displayAs === DROPDOWN_LIST || displayAs === SEARCH_BOX) {
195
191
  const queryPayload = {
@@ -257,3 +253,66 @@ export class UserReferenceComponent implements OnInit, OnDestroy {
257
253
  return errMessage;
258
254
  }
259
255
  }
256
+
257
+ const buildColumnForDisplayValue = dataObj => {
258
+ if (dataObj.columns) {
259
+ dataObj.columns = dataObj.columns.map(column => {
260
+ const tempColObj = { ...column };
261
+ if (tempColObj.key === 'true') {
262
+ tempColObj.useForSearch = true;
263
+ } else {
264
+ tempColObj.useForSearch = false;
265
+ }
266
+ return tempColObj;
267
+ });
268
+ }
269
+ };
270
+
271
+ function getUserName(pConn, userId = ''): Promise<string> {
272
+ return new Promise(resolve => {
273
+ const { parameters = {}, referenceList } = pConn.getConfigProps();
274
+ const contextName = pConn.getContextName();
275
+
276
+ // eslint-disable-next-line @typescript-eslint/no-shadow
277
+ const OPERATORS_DP = referenceList || PCore.getEnvironmentInfo().getDefaultOperatorDP() || '';
278
+
279
+ const columns = [
280
+ {
281
+ value: 'pyUserName',
282
+ display: 'true',
283
+ useForSearch: true,
284
+ primary: 'true'
285
+ },
286
+ {
287
+ value: 'pyUserIdentifier',
288
+ setProperty: 'Associated property',
289
+ key: 'true',
290
+ display: 'true',
291
+ secondary: 'true',
292
+ useForSearch: true
293
+ }
294
+ ];
295
+
296
+ const dataConfig: any = {
297
+ dataSource: OPERATORS_DP,
298
+ parameters,
299
+ matchPosition: 'equals',
300
+ listType: 'datapage',
301
+ columns,
302
+ cacheLifeSpan: 'form',
303
+ deferDatasource: false,
304
+ maxResultsDisplay: '1',
305
+ ignoreCase: true
306
+ };
307
+
308
+ PCore.getDataApi()
309
+ .init(dataConfig, contextName)
310
+ .then(dataApiObj => {
311
+ buildColumnForDisplayValue(dataApiObj);
312
+ dataApiObj.registerForBufferedCall({ waitTime: 50 });
313
+ dataApiObj.fetchData(userId).then((response: any) => {
314
+ resolve(response.data?.[0]?.pyUserName || userId);
315
+ });
316
+ });
317
+ });
318
+ }
@@ -1,4 +1,4 @@
1
- <mat-grid-list cols="2" rowHeight="6.25rem">
1
+ <mat-grid-list *ngIf="arMainButtons$ && arSecondaryButtons$" cols="2" rowHeight="6.25rem">
2
2
  <mat-grid-tile>
3
3
  <button *ngFor="let aButton of arSecondaryButtons$" mat-raised-button color="secondary" (click)="buttonClick(aButton.jsAction, 'secondary')">
4
4
  {{ localizedVal(aButton.name, localeCategory) }}
@@ -1,5 +1,5 @@
1
1
  <div>
2
- <div><component-mapper name="AlertBanner" [props]="{ banners }" [parent]="this"></component-mapper></div>
2
+ <div><component-mapper name="AlertBanner" [props]="{ banners: bannerService.banners }" [parent]="this"></component-mapper></div>
3
3
  <div *ngIf="bHasNavigation$" class="psdk-stepper">
4
4
  <component-mapper
5
5
  name="MultiStep"