@pega/angular-sdk-overrides 24.2.12 → 25.1.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 (237) hide show
  1. package/lib/designSystemExtension/alert/alert.component.scss +3 -3
  2. package/lib/designSystemExtension/alert/alert.component.ts +0 -1
  3. package/lib/designSystemExtension/alert-banner/alert-banner.component.ts +0 -1
  4. package/lib/designSystemExtension/banner/banner.component.html +1 -1
  5. package/lib/designSystemExtension/banner/banner.component.scss +17 -3
  6. package/lib/designSystemExtension/banner/banner.component.ts +0 -1
  7. package/lib/designSystemExtension/case-create-stage/case-create-stage.component.ts +0 -1
  8. package/lib/designSystemExtension/field-group/field-group.component.ts +0 -1
  9. package/lib/designSystemExtension/material-case-summary/material-case-summary.component.html +6 -3
  10. package/lib/designSystemExtension/material-case-summary/material-case-summary.component.scss +5 -34
  11. package/lib/designSystemExtension/material-case-summary/material-case-summary.component.ts +0 -1
  12. package/lib/designSystemExtension/material-details/material-details.component.scss +0 -5
  13. package/lib/designSystemExtension/material-details/material-details.component.ts +0 -1
  14. package/lib/designSystemExtension/material-details-fields/material-details-fields.component.html +2 -2
  15. package/lib/designSystemExtension/material-details-fields/material-details-fields.component.scss +4 -3
  16. package/lib/designSystemExtension/material-details-fields/material-details-fields.component.ts +0 -1
  17. package/lib/designSystemExtension/material-summary-item/material-summary-item.component.scss +4 -17
  18. package/lib/designSystemExtension/material-summary-item/material-summary-item.component.ts +0 -1
  19. package/lib/designSystemExtension/material-summary-list/material-summary-list.component.ts +0 -1
  20. package/lib/designSystemExtension/material-utility/material-utility.component.scss +1 -2
  21. package/lib/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.scss +1 -1
  22. package/lib/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.ts +0 -1
  23. package/lib/designSystemExtension/operator/operator.component.html +1 -1
  24. package/lib/designSystemExtension/operator/operator.component.scss +3 -10
  25. package/lib/designSystemExtension/operator/operator.component.ts +0 -2
  26. package/lib/designSystemExtension/pulse/pulse.component.scss +2 -2
  27. package/lib/designSystemExtension/pulse/pulse.component.ts +0 -1
  28. package/lib/designSystemExtension/rich-text-editor/rich-text-editor.component.html +4 -17
  29. package/lib/designSystemExtension/rich-text-editor/rich-text-editor.component.scss +0 -1
  30. package/lib/designSystemExtension/rich-text-editor/rich-text-editor.component.ts +30 -1
  31. package/lib/designSystemExtension/wss-quick-create/wss-quick-create.component.scss +16 -9
  32. package/lib/designSystemExtension/wss-quick-create/wss-quick-create.component.ts +0 -1
  33. package/lib/field/auto-complete/auto-complete.component.html +0 -1
  34. package/lib/field/auto-complete/auto-complete.component.ts +35 -173
  35. package/lib/field/cancel-alert/cancel-alert.component.html +8 -12
  36. package/lib/field/cancel-alert/cancel-alert.component.scss +2 -3
  37. package/lib/field/cancel-alert/cancel-alert.component.ts +24 -37
  38. package/lib/field/check-box/check-box.component.html +19 -10
  39. package/lib/field/check-box/check-box.component.scss +6 -1
  40. package/lib/field/check-box/check-box.component.ts +25 -151
  41. package/lib/field/currency/currency.component.ts +36 -169
  42. package/lib/field/date/date.component.html +2 -2
  43. package/lib/field/date/date.component.ts +30 -151
  44. package/lib/field/date-time/date-time.component.html +1 -1
  45. package/lib/field/date-time/date-time.component.ts +34 -149
  46. package/lib/field/decimal/decimal.component.ts +38 -164
  47. package/lib/field/dropdown/dropdown.component.ts +29 -152
  48. package/lib/field/email/email.component.ts +16 -156
  49. package/lib/field/field.base.ts +149 -0
  50. package/lib/field/group/group.component.ts +7 -5
  51. package/lib/field/integer/integer.component.ts +18 -158
  52. package/lib/field/list-view-action-buttons/list-view-action-buttons.component.ts +0 -1
  53. package/lib/field/location/config-ext.json +8 -0
  54. package/lib/field/location/location.component.html +46 -0
  55. package/lib/field/location/location.component.scss +18 -0
  56. package/lib/field/location/location.component.spec.ts +22 -0
  57. package/lib/field/location/location.component.ts +280 -0
  58. package/lib/field/multiselect/multiselect.component.ts +47 -152
  59. package/lib/field/multiselect/utils.ts +55 -47
  60. package/lib/field/object-reference/object-reference.component.html +17 -0
  61. package/lib/field/object-reference/object-reference.component.scss +0 -0
  62. package/lib/field/object-reference/object-reference.component.spec.ts +22 -0
  63. package/lib/field/object-reference/object-reference.component.ts +237 -0
  64. package/lib/field/percentage/percentage.component.ts +37 -155
  65. package/lib/field/phone/phone.component.html +18 -19
  66. package/lib/field/phone/phone.component.scss +4 -0
  67. package/lib/field/phone/phone.component.ts +43 -145
  68. package/lib/field/radio-buttons/radio-buttons.component.html +14 -6
  69. package/lib/field/radio-buttons/radio-buttons.component.scss +4 -2
  70. package/lib/field/radio-buttons/radio-buttons.component.ts +37 -160
  71. package/lib/field/rich-text/rich-text.component.html +2 -0
  72. package/lib/field/rich-text/rich-text.component.scss +172 -0
  73. package/lib/field/rich-text/rich-text.component.ts +21 -91
  74. package/lib/field/scalar-list/scalar-list.component.ts +17 -73
  75. package/lib/field/selectable-card/selectable-card.component.html +70 -0
  76. package/lib/field/selectable-card/selectable-card.component.scss +11 -0
  77. package/lib/field/selectable-card/selectable-card.component.spec.ts +22 -0
  78. package/lib/field/selectable-card/selectable-card.component.ts +219 -0
  79. package/lib/field/semantic-link/semantic-link.component.html +4 -8
  80. package/lib/field/semantic-link/semantic-link.component.scss +0 -13
  81. package/lib/field/semantic-link/semantic-link.component.ts +165 -6
  82. package/lib/field/text/text.component.scss +0 -1
  83. package/lib/field/text/text.component.ts +0 -1
  84. package/lib/field/text-area/text-area.component.ts +18 -153
  85. package/lib/field/text-content/text-content.component.ts +0 -1
  86. package/lib/field/text-input/text-input.component.ts +16 -156
  87. package/lib/field/time/time.component.ts +17 -152
  88. package/lib/field/url/url.component.ts +16 -155
  89. package/lib/field/user-reference/user-reference.component.scss +0 -1
  90. package/lib/field/user-reference/user-reference.component.ts +2 -4
  91. package/lib/infra/Containers/flow-container/flow-container.component.html +2 -2
  92. package/lib/infra/Containers/flow-container/flow-container.component.ts +8 -9
  93. package/lib/infra/Containers/hybrid-view-container/hybrid-view-container.component.ts +0 -1
  94. package/lib/infra/Containers/modal-view-container/modal-view-container.component.ts +5 -11
  95. package/lib/infra/Containers/view-container/helper.ts +35 -2
  96. package/lib/infra/Containers/view-container/view-container.component.ts +1 -2
  97. package/lib/infra/action-buttons/action-buttons.component.html +13 -8
  98. package/lib/infra/action-buttons/action-buttons.component.scss +23 -0
  99. package/lib/infra/action-buttons/action-buttons.component.ts +1 -3
  100. package/lib/infra/assignment/assignment.component.ts +21 -10
  101. package/lib/infra/assignment-card/assignment-card.component.html +1 -2
  102. package/lib/infra/assignment-card/assignment-card.component.scss +0 -4
  103. package/lib/infra/assignment-card/assignment-card.component.ts +21 -5
  104. package/lib/infra/dashboard-filter/dashboard-filter.component.ts +0 -1
  105. package/lib/infra/defer-load/defer-load.component.html +6 -2
  106. package/lib/infra/defer-load/defer-load.component.ts +22 -12
  107. package/lib/infra/error-boundary/error-boundary.component.ts +0 -1
  108. package/lib/infra/multi-step/multi-step.component.html +22 -38
  109. package/lib/infra/multi-step/multi-step.component.scss +14 -27
  110. package/lib/infra/multi-step/multi-step.component.ts +0 -1
  111. package/lib/infra/navbar/navbar.component.html +36 -41
  112. package/lib/infra/navbar/navbar.component.scss +22 -4
  113. package/lib/infra/navbar/navbar.component.ts +8 -4
  114. package/lib/infra/reference/reference.component.ts +5 -0
  115. package/lib/infra/region/region.component.ts +0 -1
  116. package/lib/infra/root-container/root-container.component.scss +0 -1
  117. package/lib/infra/root-container/root-container.component.ts +1 -5
  118. package/lib/infra/stages/stages.component.html +4 -3
  119. package/lib/infra/stages/stages.component.scss +12 -36
  120. package/lib/infra/stages/stages.component.ts +4 -3
  121. package/lib/infra/view/view.component.html +1 -1
  122. package/lib/infra/view/view.component.ts +3 -7
  123. package/lib/template/advanced-search/advanced-search.component.html +12 -0
  124. package/lib/template/advanced-search/advanced-search.component.scss +0 -0
  125. package/lib/template/advanced-search/advanced-search.component.spec.ts +0 -0
  126. package/lib/template/advanced-search/advanced-search.component.ts +112 -0
  127. package/lib/template/advanced-search/advanced-search.service.ts +27 -0
  128. package/lib/template/advanced-search/search-group/persist-utils.ts +56 -0
  129. package/lib/template/advanced-search/search-groups/search-groups.component.html +32 -0
  130. package/lib/template/advanced-search/search-groups/search-groups.component.scss +0 -0
  131. package/lib/template/advanced-search/search-groups/search-groups.component.spec.ts +0 -0
  132. package/lib/template/advanced-search/search-groups/search-groups.component.ts +294 -0
  133. package/lib/template/advanced-search/search-groups/utils.ts +29 -0
  134. package/lib/template/app-shell/app-shell.component.html +4 -1
  135. package/lib/template/app-shell/app-shell.component.scss +0 -3
  136. package/lib/template/app-shell/app-shell.component.ts +46 -8
  137. package/lib/template/banner-page/banner-page.component.ts +0 -1
  138. package/lib/template/case-summary/case-summary.component.scss +0 -2
  139. package/lib/template/case-summary/case-summary.component.ts +6 -22
  140. package/lib/template/case-view/case-view.component.html +4 -4
  141. package/lib/template/case-view/case-view.component.scss +18 -10
  142. package/lib/template/case-view/case-view.component.ts +1 -11
  143. package/lib/template/confirmation/confirmation.component.html +1 -1
  144. package/lib/template/confirmation/confirmation.component.ts +0 -1
  145. package/lib/template/data-reference/data-reference.component.html +11 -8
  146. package/lib/template/data-reference/data-reference.component.ts +346 -113
  147. package/lib/template/data-reference/search-form/search-form.component.html +39 -0
  148. package/lib/template/data-reference/search-form/search-form.component.scss +11 -0
  149. package/lib/template/data-reference/search-form/search-form.component.spec.ts +0 -0
  150. package/lib/template/data-reference/search-form/search-form.component.ts +167 -0
  151. package/lib/template/data-reference/search-form/tabsData.ts +160 -0
  152. package/lib/template/data-reference/utils.ts +92 -0
  153. package/lib/template/default-form/default-form.component.ts +10 -3
  154. package/lib/template/default-page/default-page.component.html +34 -0
  155. package/lib/template/default-page/default-page.component.scss +31 -0
  156. package/lib/template/default-page/default-page.component.spec.ts +24 -0
  157. package/lib/template/default-page/default-page.component.ts +64 -0
  158. package/lib/template/details/details.component.ts +0 -1
  159. package/lib/template/details-narrow-wide/details-narrow-wide.component.ts +0 -1
  160. package/lib/template/details-one-column/details-one-column.component.ts +0 -1
  161. package/lib/template/details-sub-tabs/details-sub-tabs.component.ts +0 -1
  162. package/lib/template/details-three-column/details-three-column.component.ts +0 -1
  163. package/lib/template/details-two-column/details-two-column.component.ts +0 -1
  164. package/lib/template/details-wide-narrow/details-wide-narrow.component.ts +0 -1
  165. package/lib/template/dynamic-tabs/dynamic-tabs.component.ts +0 -1
  166. package/lib/template/field-group-list/field-group-list.component.scss +0 -1
  167. package/lib/template/field-group-list/field-group-list.component.ts +0 -1
  168. package/lib/template/field-group-template/field-group-template.component.ts +14 -28
  169. package/lib/template/field-value-list/field-value-list.component.ts +0 -1
  170. package/lib/template/inline-dashboard/inline-dashboard.component.ts +0 -1
  171. package/lib/template/inline-dashboard-page/inline-dashboard-page.component.ts +1 -2
  172. package/lib/template/list-page/list-page.component.ts +0 -1
  173. package/lib/template/list-view/list-view.component.html +170 -162
  174. package/lib/template/list-view/list-view.component.scss +25 -21
  175. package/lib/template/list-view/list-view.component.ts +207 -119
  176. package/lib/template/list-view/listViewHelpers.ts +1 -4
  177. package/lib/template/list-view/utils.ts +25 -2
  178. package/lib/template/multi-reference-readonly/multi-reference-readonly.component.ts +0 -1
  179. package/lib/template/narrow-wide-form/narrow-wide-form.component.ts +0 -1
  180. package/lib/template/object-page/object-page.component.html +1 -0
  181. package/lib/template/object-page/object-page.component.scss +0 -0
  182. package/lib/template/object-page/object-page.component.spec.ts +22 -0
  183. package/lib/template/object-page/object-page.component.ts +14 -0
  184. package/lib/template/one-column/one-column.component.ts +0 -1
  185. package/lib/template/one-column-page/one-column-page.component.ts +0 -1
  186. package/lib/template/one-column-tab/one-column-tab.component.scss +1 -1
  187. package/lib/template/one-column-tab/one-column-tab.component.ts +0 -1
  188. package/lib/template/page/page.component.ts +0 -1
  189. package/lib/template/promoted-filters/promoted-filters.component.ts +0 -1
  190. package/lib/template/repeating-structures/repeating-structures.component.ts +0 -2
  191. package/lib/template/self-service-case-view/self-service-case-view.component.html +78 -0
  192. package/lib/template/self-service-case-view/self-service-case-view.component.scss +132 -0
  193. package/lib/template/self-service-case-view/self-service-case-view.component.spec.ts +24 -0
  194. package/lib/template/self-service-case-view/self-service-case-view.component.ts +207 -0
  195. package/lib/template/simple-table/simple-table.component.ts +0 -2
  196. package/lib/template/simple-table-manual/helpers.ts +117 -3
  197. package/lib/template/simple-table-manual/simple-table-manual.component.html +4 -4
  198. package/lib/template/simple-table-manual/simple-table-manual.component.scss +4 -14
  199. package/lib/template/simple-table-manual/simple-table-manual.component.ts +45 -25
  200. package/lib/template/simple-table-select/simple-table-select.component.ts +0 -1
  201. package/lib/template/single-reference-readonly/single-reference-readonly.component.html +4 -1
  202. package/lib/template/single-reference-readonly/single-reference-readonly.component.scss +21 -0
  203. package/lib/template/single-reference-readonly/single-reference-readonly.component.ts +104 -4
  204. package/lib/template/sub-tabs/sub-tabs.component.ts +0 -1
  205. package/lib/template/three-column/three-column.component.ts +0 -1
  206. package/lib/template/three-column-page/three-column-page.component.ts +0 -1
  207. package/lib/template/two-column/two-column.component.ts +0 -1
  208. package/lib/template/two-column-page/two-column-page.component.ts +0 -1
  209. package/lib/template/two-column-tab/two-column-tab.component.ts +0 -1
  210. package/lib/template/utils.ts +42 -0
  211. package/lib/template/wide-narrow-form/wide-narrow-form.component.ts +0 -1
  212. package/lib/template/wide-narrow-page/wide-narrow-page.component.ts +0 -1
  213. package/lib/template/wss-nav-bar/wss-nav-bar.component.html +6 -5
  214. package/lib/template/wss-nav-bar/wss-nav-bar.component.scss +8 -17
  215. package/lib/template/wss-nav-bar/wss-nav-bar.component.ts +1 -9
  216. package/lib/widget/app-announcement/app-announcement.component.html +1 -2
  217. package/lib/widget/app-announcement/app-announcement.component.scss +2 -2
  218. package/lib/widget/app-announcement/app-announcement.component.ts +0 -1
  219. package/lib/widget/attachment/Attachment.types.ts +92 -0
  220. package/lib/widget/attachment/AttachmentUtils.ts +287 -0
  221. package/lib/widget/attachment/attachment.component.html +3 -3
  222. package/lib/widget/attachment/attachment.component.scss +9 -12
  223. package/lib/widget/attachment/attachment.component.ts +267 -254
  224. package/lib/widget/case-history/case-history.component.ts +0 -1
  225. package/lib/widget/feed-container/feed-container.component.scss +3 -9
  226. package/lib/widget/feed-container/feed-container.component.ts +2 -3
  227. package/lib/widget/file-utility/file-utility.component.html +3 -3
  228. package/lib/widget/file-utility/file-utility.component.scss +6 -17
  229. package/lib/widget/file-utility/file-utility.component.ts +24 -9
  230. package/lib/widget/list-utility/list-utility.component.scss +4 -5
  231. package/lib/widget/list-utility/list-utility.component.ts +0 -1
  232. package/lib/widget/quick-create/quick-create.component.ts +41 -23
  233. package/lib/widget/todo/todo.component.html +8 -5
  234. package/lib/widget/todo/todo.component.scss +11 -10
  235. package/lib/widget/todo/todo.component.ts +7 -4
  236. package/lib/widget/utility/utility.component.ts +0 -1
  237. package/package.json +1 -1
@@ -6,7 +6,6 @@ import { Component, Input } from '@angular/core';
6
6
  selector: 'wss-quick-create',
7
7
  templateUrl: './wss-quick-create.component.html',
8
8
  styleUrls: ['./wss-quick-create.component.scss'],
9
- standalone: true,
10
9
  imports: [CommonModule]
11
10
  })
12
11
  export class WssQuickCreateComponent {
@@ -14,7 +14,6 @@
14
14
  [required]="bRequired$"
15
15
  [matAutocomplete]="auto"
16
16
  (input)="fieldOnChange($event)"
17
- (blur)="fieldOnBlur($event)"
18
17
  />
19
18
  <mat-autocomplete #auto="matAutocomplete" autoActiveFirstOption (optionSelected)="optionChanged($event)">
20
19
  <mat-option *ngFor="let opt of filteredOptions | async" [value]="opt.value">
@@ -1,14 +1,14 @@
1
- import { Component, OnInit, Input, ChangeDetectorRef, forwardRef, OnDestroy } from '@angular/core';
1
+ import { Component, EventEmitter, OnInit, Output, forwardRef, inject } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
- import { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';
3
+ import { ReactiveFormsModule } from '@angular/forms';
4
4
  import { MatOptionModule } from '@angular/material/core';
5
5
  import { MatAutocompleteModule } from '@angular/material/autocomplete';
6
6
  import { MatInputModule } from '@angular/material/input';
7
7
  import { MatFormFieldModule } from '@angular/material/form-field';
8
- import { interval, Observable } from 'rxjs';
8
+ import { Observable } from 'rxjs';
9
9
  import { map, startWith } from 'rxjs/operators';
10
- import { AngularPConnectData, AngularPConnectService } from '@pega/angular-sdk-components';
11
- import { Utils } from '@pega/angular-sdk-components';
10
+
11
+ import { FieldBase } from '@pega/angular-sdk-components';
12
12
  import { ComponentMapperComponent } from '@pega/angular-sdk-components';
13
13
  import { DatapageService } from '@pega/angular-sdk-components';
14
14
  import { handleEvent } from '@pega/angular-sdk-components';
@@ -34,7 +34,6 @@ interface AutoCompleteProps extends PConnFieldProps {
34
34
  selector: 'app-auto-complete',
35
35
  templateUrl: './auto-complete.component.html',
36
36
  styleUrls: ['./auto-complete.component.scss'],
37
- standalone: true,
38
37
  imports: [
39
38
  CommonModule,
40
39
  ReactiveFormsModule,
@@ -43,68 +42,26 @@ interface AutoCompleteProps extends PConnFieldProps {
43
42
  MatAutocompleteModule,
44
43
  MatOptionModule,
45
44
  forwardRef(() => ComponentMapperComponent)
46
- ]
45
+ ],
46
+ providers: [DatapageService]
47
47
  })
48
- export class AutoCompleteComponent implements OnInit, OnDestroy {
49
- @Input() pConn$: typeof PConnect;
50
- @Input() formGroup$: FormGroup;
48
+ export class AutoCompleteComponent extends FieldBase implements OnInit {
49
+ protected dataPageService = inject(DatapageService);
50
+
51
+ @Output() onRecordChange: EventEmitter<any> = new EventEmitter();
51
52
 
52
- // Used with AngularPConnect
53
- angularPConnectData: AngularPConnectData = {};
54
53
  configProps$: AutoCompleteProps;
55
54
 
56
- label$ = '';
57
- value$ = '';
58
- bRequired$ = false;
59
- bReadonly$ = false;
60
- bDisabled$ = false;
61
- bVisible$ = true;
62
- displayMode$?: string = '';
63
- controlName$: string;
64
- bHasForm$ = true;
65
55
  options$: any[];
66
- componentReference = '';
67
- testId: string;
68
56
  listType: string;
69
57
  columns = [];
70
- helperText: string;
71
- placeholder: string;
72
-
73
- fieldControl = new FormControl('', null);
74
58
  parameters: {};
75
- hideLabel: boolean;
76
59
  filteredOptions: Observable<any[]>;
77
60
  filterValue = '';
78
- actionsApi: Object;
79
- propName: string;
80
-
81
- constructor(
82
- private angularPConnect: AngularPConnectService,
83
- private cdRef: ChangeDetectorRef,
84
- private utils: Utils,
85
- private dataPageService: DatapageService
86
- ) {}
87
-
88
- async ngOnInit(): Promise<void> {
89
- // First thing in initialization is registering and subscribing to the AngularPConnect service
90
- this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
91
- this.controlName$ = this.angularPConnect.getComponentID(this);
92
-
93
- // Then, continue on with other initialization
94
61
 
95
- // call updateSelf when initializing
96
- // this.updateSelf();
97
- await this.checkAndUpdate();
98
-
99
- if (this.formGroup$) {
100
- // add control to formGroup
101
- this.formGroup$.addControl(this.controlName$, this.fieldControl);
102
- this.fieldControl.setValue(this.value$);
103
- this.bHasForm$ = true;
104
- } else {
105
- this.bReadonly$ = true;
106
- this.bHasForm$ = false;
107
- }
62
+ // Override ngOnInit method
63
+ override async ngOnInit(): Promise<void> {
64
+ super.ngOnInit();
108
65
 
109
66
  this.filteredOptions = this.fieldControl.valueChanges.pipe(
110
67
  startWith(''),
@@ -119,54 +76,32 @@ export class AutoCompleteComponent implements OnInit, OnDestroy {
119
76
  this.fieldControl.setValue(this.value$);
120
77
  }
121
78
 
122
- ngOnDestroy(): void {
123
- if (this.formGroup$) {
124
- this.formGroup$.removeControl(this.controlName$);
125
- }
126
-
127
- if (this.angularPConnectData.unsubscribeFn) {
128
- this.angularPConnectData.unsubscribeFn();
129
- }
130
- }
131
-
132
79
  private _filter(value: string): string[] {
133
80
  const filterVal = (value || this.filterValue).toLowerCase();
134
81
  return this.options$?.filter(option => option.value?.toLowerCase().includes(filterVal));
135
82
  }
136
83
 
137
- // Callback passed when subscribing to store change
138
- async onStateChange() {
139
- await this.checkAndUpdate();
140
- }
141
-
142
- async checkAndUpdate() {
143
- // Should always check the bridge to see if the component should
144
- // update itself (re-render)
145
- const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this);
146
-
147
- // ONLY call updateSelf when the component should update
148
- if (bUpdateSelf) {
149
- await this.updateSelf();
150
- }
151
- }
84
+ /**
85
+ * Updates the component when there are changes in the state.
86
+ */
87
+ override async updateSelf(): Promise<void> {
88
+ // Resolve configuration properties
89
+ this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps()) as AutoCompleteProps;
152
90
 
153
- // updateSelf
154
- async updateSelf(): Promise<void> {
155
- // starting very simple...
91
+ // Update component common properties
92
+ this.updateComponentCommonProperties(this.configProps$);
156
93
 
157
- // moved this from ngOnInit() and call this from there instead...
158
- this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps()) as AutoCompleteProps;
94
+ // Set component specific properties
95
+ const { value, listType, parameters } = this.configProps$;
159
96
 
160
- if (this.configProps$.value != undefined) {
161
- const index = this.options$?.findIndex(element => element.key === this.configProps$.value);
162
- this.value$ = index > -1 ? this.options$[index].value : this.configProps$.value;
97
+ if (value != undefined) {
98
+ const index = this.options$?.findIndex(element => element.key === value);
99
+ this.value$ = index > -1 ? this.options$[index].value : value;
163
100
  this.fieldControl.setValue(this.value$);
164
101
  }
165
102
 
166
- this.setPropertyValuesFromProps();
167
-
168
- this.actionsApi = this.pConn$.getActionsApi();
169
- this.propName = this.pConn$.getStateProps().value;
103
+ this.listType = listType;
104
+ this.parameters = parameters;
170
105
 
171
106
  const context = this.pConn$.getContextName();
172
107
  const { columns, datasource } = this.generateColumnsAndDataSource();
@@ -174,34 +109,7 @@ export class AutoCompleteComponent implements OnInit, OnDestroy {
174
109
  if (columns) {
175
110
  this.columns = this.preProcessColumns(columns);
176
111
  }
177
- // timeout and detectChanges to avoid ExpressionChangedAfterItHasBeenCheckedError
178
- setTimeout(() => {
179
- if (this.configProps$.required != null) {
180
- this.bRequired$ = this.utils.getBooleanValue(this.configProps$.required);
181
- }
182
- this.cdRef.detectChanges();
183
- });
184
-
185
- if (this.configProps$.visibility != null) {
186
- this.bVisible$ = this.utils.getBooleanValue(this.configProps$.visibility);
187
- }
188
-
189
- // disabled
190
- if (this.configProps$.disabled != undefined) {
191
- this.bDisabled$ = this.utils.getBooleanValue(this.configProps$.disabled);
192
- }
193
112
 
194
- if (this.bDisabled$) {
195
- this.fieldControl.disable();
196
- } else {
197
- this.fieldControl.enable();
198
- }
199
-
200
- if (this.configProps$.readOnly != null) {
201
- this.bReadonly$ = this.utils.getBooleanValue(this.configProps$.readOnly);
202
- }
203
-
204
- this.componentReference = this.pConn$.getStateProps().value;
205
113
  if (this.listType === 'associated') {
206
114
  const optionsList = this.utils.getOptionList(this.configProps$, this.pConn$.getDataObject('')); // 1st arg empty string until typedef marked correctly
207
115
  this.setOptions(optionsList);
@@ -211,27 +119,6 @@ export class AutoCompleteComponent implements OnInit, OnDestroy {
211
119
  const results = await this.dataPageService.getDataPageData(datasource, this.parameters, context);
212
120
  this.fillOptions(results);
213
121
  }
214
-
215
- // trigger display of error message with field control
216
- if (this.angularPConnectData.validateMessage != null && this.angularPConnectData.validateMessage != '') {
217
- const timer = interval(100).subscribe(() => {
218
- this.fieldControl.setErrors({ message: true });
219
- this.fieldControl.markAsTouched();
220
-
221
- timer.unsubscribe();
222
- });
223
- }
224
- }
225
-
226
- setPropertyValuesFromProps() {
227
- this.testId = this.configProps$.testId;
228
- this.label$ = this.configProps$.label;
229
- this.placeholder = this.configProps$.placeholder || '';
230
- this.displayMode$ = this.configProps$.displayMode;
231
- this.listType = this.configProps$.listType;
232
- this.hideLabel = this.configProps$.hideLabel;
233
- this.helperText = this.configProps$.helperText;
234
- this.parameters = this.configProps$?.parameters;
235
122
  }
236
123
 
237
124
  generateColumnsAndDataSource() {
@@ -313,49 +200,24 @@ export class AutoCompleteComponent implements OnInit, OnDestroy {
313
200
  }
314
201
 
315
202
  fieldOnChange(event: Event) {
316
- // this works - this.pConn$.setValue( this.componentReference, `property: ${this.componentReference}`);
317
- // this works - this.pConn$.setValue( this.componentReference, this.fieldControl.value);
318
- // PConnect wants to use changeHandler for onChange
319
- // this.angularPConnect.changeHandler( this, event);
320
203
  const value = (event.target as HTMLInputElement).value;
321
204
  this.filterValue = value;
322
205
  handleEvent(this.actionsApi, 'change', this.propName, value);
323
206
  }
324
207
 
325
208
  optionChanged(event: any) {
326
- const value = event?.option?.value;
327
- handleEvent(this.actionsApi, 'change', this.propName, value);
328
- }
209
+ const val = event?.option?.value;
329
210
 
330
- fieldOnBlur(event: Event) {
331
211
  let key = '';
332
- const el = event?.target as HTMLInputElement;
333
- if (el?.value) {
334
- const index = this.options$?.findIndex(element => element.value === el.value);
335
- key = index > -1 ? (key = this.options$[index].key) : el.value;
212
+ if (val) {
213
+ const index = this.options$?.findIndex(element => element.value === val);
214
+ key = index > -1 ? (key = this.options$[index].key) : val;
336
215
  }
337
216
  const value = key;
338
217
  handleEvent(this.actionsApi, 'changeNblur', this.propName, value);
339
- if (this.configProps$?.onRecordChange) {
340
- el.value = value;
341
- this.configProps$.onRecordChange(event);
342
- }
343
- }
344
-
345
- getErrorMessage() {
346
- let errMessage = '';
347
218
 
348
- // look for validation messages for json, pre-defined or just an error pushed from workitem (400)
349
- if (this.fieldControl.hasError('message')) {
350
- errMessage = this.angularPConnectData.validateMessage ?? '';
351
- return errMessage;
219
+ if (this.onRecordChange) {
220
+ this.onRecordChange.emit(value);
352
221
  }
353
- if (this.fieldControl.hasError('required')) {
354
- errMessage = 'You must enter a value';
355
- } else if (this.fieldControl.errors) {
356
- errMessage = this.fieldControl.errors.toString();
357
- }
358
-
359
- return errMessage;
360
222
  }
361
223
  }
@@ -1,18 +1,14 @@
1
1
  <div *ngIf="bShowAlert$" class="psdk-cancel-alert-background">
2
2
  <div class="psdk-cancel-alert-top">
3
- <h3 *ngIf="heading$ != ''">{{ heading$ }}</h3>
3
+ <h3>{{ localizedVal('Discard unsaved changes?', localeCategory) }}</h3>
4
4
  <div>
5
- <p>{{ body1$ }}</p>
6
- <p>{{ body2$ }}</p>
5
+ <p>{{ localizedVal('You have unsaved changes. You can discard them or go back to keep working.', localeCategory) }}</p>
7
6
  </div>
8
- <mat-grid-list cols="2" rowHeight="6.25rem">
9
- <mat-grid-tile>
10
- <button mat-raised-button color="secondary" (click)="buttonClick('save')">{{ localizedVal('Save for later', localeCategory) }}</button>
11
- </mat-grid-tile>
12
- <mat-grid-tile>
13
- <button mat-raised-button color="secondary" (click)="buttonClick('continue')">{{ localizedVal('Continue Working', localeCategory) }}</button>
14
- <button mat-raised-button color="primary" (click)="buttonClick('delete')">{{ localizedVal('Delete', localeCategory) }}</button>
15
- </mat-grid-tile>
16
- </mat-grid-list>
7
+ <component-mapper
8
+ name="ActionButtons"
9
+ [props]="{ arMainButtons$: [discardButton], arSecondaryButtons$: [goBackButton] }"
10
+ [parent]="this"
11
+ [outputEvents]="{ actionButtonClick: buttonClick }"
12
+ ></component-mapper>
17
13
  </div>
18
14
  </div>
@@ -5,20 +5,19 @@
5
5
  align-items: center;
6
6
  height: 100%;
7
7
  width: 100%;
8
- background-color: var(--app-dialog-background-color);
9
8
  position: fixed;
10
9
  z-index: 9999;
11
10
  top: 0px;
12
11
  left: 0px;
12
+ background: rgba(0, 0, 0, 0.5);
13
13
  }
14
14
 
15
15
  .psdk-cancel-alert-top {
16
- display: table;
17
16
  margin: auto;
18
17
  min-width: 550px;
19
- background-color: var(--app-form-color);
20
18
  border: 1px solid var(--app-inverse-form-color);
21
19
  border-radius: 10px;
22
20
  padding: 20px;
23
21
  box-shadow: 0 0 10px 3px var(--app-box-shadow-color);
22
+ background-color: var(--mat-sys-surface-container);
24
23
  }
@@ -1,54 +1,44 @@
1
- import { Component, Input, Output, EventEmitter, OnChanges } from '@angular/core';
1
+ import { Component, Input, Output, EventEmitter, OnChanges, forwardRef } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { MatButtonModule } from '@angular/material/button';
4
4
  import { MatGridListModule } from '@angular/material/grid-list';
5
5
  import { ProgressSpinnerService } from '@pega/angular-sdk-components';
6
+ import { ComponentMapperComponent } from '@pega/angular-sdk-components';
6
7
 
7
8
  @Component({
8
9
  selector: 'app-cancel-alert',
9
10
  templateUrl: './cancel-alert.component.html',
10
11
  styleUrls: ['./cancel-alert.component.scss'],
11
- standalone: true,
12
- imports: [CommonModule, MatGridListModule, MatButtonModule]
12
+ imports: [CommonModule, MatGridListModule, MatButtonModule, forwardRef(() => ComponentMapperComponent)]
13
13
  })
14
14
  export class CancelAlertComponent implements OnChanges {
15
15
  @Input() pConn$: typeof PConnect;
16
16
  @Input() bShowAlert$: boolean;
17
17
  @Output() onAlertState$: EventEmitter<boolean> = new EventEmitter<boolean>();
18
18
 
19
- heading$: string;
20
- body1$: string;
21
- body2$: string;
22
19
  itemKey: string;
23
20
  localizedVal: Function;
24
21
  localeCategory = 'ModalContainer';
22
+ discardButton: any;
23
+ goBackButton: any;
25
24
 
26
25
  constructor(private psService: ProgressSpinnerService) {}
27
26
  ngOnChanges() {
28
27
  if (this.bShowAlert$) {
29
28
  this.psService.sendMessage(false);
30
-
31
29
  const contextName = this.pConn$.getContextName();
32
- const caseInfo = this.pConn$.getCaseInfo();
33
- const caseName = caseInfo.getName();
34
- const ID = caseInfo.getID();
35
30
  this.localizedVal = PCore.getLocaleUtils().getLocaleValue;
36
-
37
31
  this.itemKey = contextName;
38
- this.heading$ = `Delete ${caseName} (${ID})`;
39
- this.body1$ = `${this.localizedVal('Are you sure you want to delete ', this.localeCategory) + caseName} (${ID})?`;
40
- this.body2$ = this.localizedVal('Alternatively, you can continue working or save your work for later.', this.localeCategory);
41
-
42
- // this.onAlertState$.emit(true);
32
+ this.createCancelAlertButtons();
43
33
  }
44
34
  }
45
35
 
46
- dismissAlert() {
36
+ dismissAlertOnly() {
47
37
  this.bShowAlert$ = false;
48
38
  this.onAlertState$.emit(false);
49
39
  }
50
40
 
51
- dismissAlertOnly() {
41
+ dismissAlert() {
52
42
  this.bShowAlert$ = false;
53
43
  this.onAlertState$.emit(true);
54
44
  }
@@ -57,31 +47,28 @@ export class CancelAlertComponent implements OnChanges {
57
47
  alert(sMessage);
58
48
  }
59
49
 
60
- buttonClick(sAction) {
50
+ createCancelAlertButtons() {
51
+ this.discardButton = {
52
+ actionID: 'discard',
53
+ jsAction: 'discard',
54
+ name: this.pConn$.getLocalizedValue('Discard', '', '')
55
+ };
56
+ this.goBackButton = {
57
+ actionID: 'continue',
58
+ jsAction: 'continue',
59
+ name: this.pConn$.getLocalizedValue('Go back', '', '')
60
+ };
61
+ }
62
+
63
+ buttonClick({ action }) {
61
64
  const actionsAPI = this.pConn$.getActionsApi();
62
65
  this.localizedVal = PCore.getLocaleUtils().getLocaleValue;
63
66
 
64
- switch (sAction) {
65
- case 'save':
66
- this.psService.sendMessage(true);
67
- // eslint-disable-next-line no-case-declarations
68
- const savePromise = actionsAPI.saveAndClose(this.itemKey);
69
- savePromise
70
- .then(() => {
71
- this.psService.sendMessage(false);
72
- this.dismissAlert();
73
-
74
- PCore.getPubSubUtils().publish(PCore.getConstants().PUB_SUB_EVENTS.CASE_EVENTS.CASE_CREATED);
75
- })
76
- .catch(() => {
77
- this.psService.sendMessage(false);
78
- this.sendMessage(this.localizedVal('Save failed', this.localeCategory));
79
- });
80
- break;
67
+ switch (action) {
81
68
  case 'continue':
82
69
  this.dismissAlertOnly();
83
70
  break;
84
- case 'delete':
71
+ case 'discard':
85
72
  this.psService.sendMessage(true);
86
73
 
87
74
  // eslint-disable-next-line no-case-declarations
@@ -1,16 +1,20 @@
1
- <div *ngIf="displayMode$; else noDisplayMode">
2
- <component-mapper
3
- *ngIf="bVisible$ !== false"
4
- name="FieldValueList"
5
- [props]="{ label$: caption$, value$: value$ ? trueLabel$ : falseLabel$, displayMode$ }"
6
- ></component-mapper>
1
+ <div *ngIf="variant !== 'card'; else cardMode">
2
+ <div *ngIf="displayMode$; else noDisplayMode">
3
+ <component-mapper
4
+ *ngIf="bVisible$ !== false"
5
+ name="FieldValueList"
6
+ [props]="{ label$: caption$, value$: value$ ? trueLabel$ : falseLabel$, displayMode$ }"
7
+ ></component-mapper>
8
+ </div>
7
9
  </div>
8
10
  <ng-template #noDisplayMode>
9
11
  <div *ngIf="bHasForm$; else noEdit">
10
12
  <div [formGroup]="formGroup$" *ngIf="bVisible$">
11
13
  <div class="mat-form-field-infix" *ngIf="showLabel$">
12
14
  <span>
13
- <label class="mat-form-field-label psdk-label-readonly">{{ label$ }}</label>
15
+ <label class="mat-form-field-label psdk-label-readonly" [ngClass]="{ 'label-required': bRequired$ && selectionMode === 'multi' }">{{
16
+ label$
17
+ }}</label>
14
18
  </span>
15
19
  </div>
16
20
  <div *ngIf="selectionMode === 'multi'; else single">
@@ -18,7 +22,6 @@
18
22
  <mat-checkbox
19
23
  [labelPosition]="'after'"
20
24
  [checked]="item.selected"
21
- [disabled]="bDisabled$ || bReadonly$"
22
25
  [required]="bRequired$"
23
26
  [attr.data-test-id]="testId + ':' + item.value"
24
27
  (change)="handleChangeMultiMode($event, item)"
@@ -37,14 +40,20 @@
37
40
  [formControl]="fieldControl"
38
41
  (change)="fieldOnChange($event)"
39
42
  (blur)="fieldOnBlur($event)"
40
- >{{ caption$ }}</mat-checkbox
43
+ ><span [ngClass]="{ 'label-required': bRequired$ }">{{ caption$ }}</span></mat-checkbox
41
44
  >
42
45
  <p *ngIf="helperText">{{ helperText }}</p>
43
46
  </ng-template>
44
- <mat-error *ngIf="fieldControl.invalid">{{ getErrorMessage() }}</mat-error>
47
+ <mat-error *ngIf="fieldControl.invalid && (fieldControl.touched || fieldControl.dirty)">{{ getErrorMessage() }}</mat-error>
45
48
  </div>
46
49
  </div>
47
50
  </ng-template>
48
51
  <ng-template #noEdit>
49
52
  <component-mapper *ngIf="bVisible$ !== false" name="Text" [props]="{ pConn$, formatAs$: 'text' }"></component-mapper>
50
53
  </ng-template>
54
+ <ng-template #cardMode>
55
+ <h4>{{ label$ }}</h4>
56
+ <div>
57
+ <component-mapper name="SelectableCard" [props]="{ pConn$: pConn$, type: 'checkbox' }" [parent]="this"></component-mapper>
58
+ </div>
59
+ </ng-template>
@@ -11,7 +11,6 @@
11
11
  transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.001px);
12
12
  -ms-transform: translateY(-1.28125em) scale(0.75);
13
13
  width: 133.33333%;
14
- color: rgba(0, 0, 0, 0.6);
15
14
  }
16
15
 
17
16
  .psdk-data-readonly {
@@ -35,3 +34,9 @@ mat-checkbox {
35
34
  .mat-mdc-option {
36
35
  margin-left: -16px;
37
36
  }
37
+
38
+ .label-required::after {
39
+ display: inline;
40
+ content: ' *';
41
+ vertical-align: top;
42
+ }