@pega/angular-sdk-overrides 24.2.10 → 25.1.10

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 (257) 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 -2
  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 +3 -3
  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 +6 -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 +2 -2
  24. package/lib/designSystemExtension/operator/operator.component.scss +13 -12
  25. package/lib/designSystemExtension/operator/operator.component.ts +4 -5
  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 -2
  34. package/lib/field/auto-complete/auto-complete.component.ts +48 -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 +17 -6
  39. package/lib/field/check-box/check-box.component.scss +0 -1
  40. package/lib/field/check-box/check-box.component.ts +25 -151
  41. package/lib/field/currency/currency.component.ts +54 -181
  42. package/lib/field/date/date.component.html +4 -3
  43. package/lib/field/date/date.component.ts +30 -151
  44. package/lib/field/date-time/date-time.component.html +2 -2
  45. package/lib/field/date-time/date-time.component.ts +47 -148
  46. package/lib/field/decimal/decimal.component.html +1 -0
  47. package/lib/field/decimal/decimal.component.ts +61 -164
  48. package/lib/field/dropdown/dropdown.component.html +1 -0
  49. package/lib/field/dropdown/dropdown.component.ts +43 -152
  50. package/lib/field/email/email.component.ts +28 -158
  51. package/lib/field/field.base.ts +149 -0
  52. package/lib/field/group/group.component.ts +7 -5
  53. package/lib/field/integer/integer.component.html +1 -1
  54. package/lib/field/integer/integer.component.ts +30 -160
  55. package/lib/field/list-view-action-buttons/list-view-action-buttons.component.html +1 -1
  56. package/lib/field/list-view-action-buttons/list-view-action-buttons.component.ts +3 -3
  57. package/lib/field/location/config-ext.json +8 -0
  58. package/lib/field/location/location.component.html +45 -0
  59. package/lib/field/location/location.component.scss +18 -0
  60. package/lib/field/location/location.component.spec.ts +22 -0
  61. package/lib/field/location/location.component.ts +280 -0
  62. package/lib/field/multiselect/multiselect.component.ts +47 -152
  63. package/lib/field/multiselect/utils.ts +55 -47
  64. package/lib/field/object-reference/object-reference.component.html +17 -0
  65. package/lib/field/object-reference/object-reference.component.scss +0 -0
  66. package/lib/field/object-reference/object-reference.component.spec.ts +22 -0
  67. package/lib/field/object-reference/object-reference.component.ts +237 -0
  68. package/lib/field/percentage/percentage.component.html +1 -1
  69. package/lib/field/percentage/percentage.component.ts +62 -170
  70. package/lib/field/phone/config-ext.json +1 -1
  71. package/lib/field/phone/phone.component.html +18 -17
  72. package/lib/field/phone/phone.component.scss +4 -0
  73. package/lib/field/phone/phone.component.ts +47 -156
  74. package/lib/field/radio-buttons/radio-buttons.component.html +17 -12
  75. package/lib/field/radio-buttons/radio-buttons.component.scss +4 -2
  76. package/lib/field/radio-buttons/radio-buttons.component.ts +37 -160
  77. package/lib/field/rich-text/rich-text.component.html +2 -0
  78. package/lib/field/rich-text/rich-text.component.scss +172 -0
  79. package/lib/field/rich-text/rich-text.component.ts +32 -93
  80. package/lib/field/scalar-list/scalar-list.component.ts +17 -73
  81. package/lib/field/selectable-card/selectable-card.component.html +70 -0
  82. package/lib/field/selectable-card/selectable-card.component.scss +11 -0
  83. package/lib/field/selectable-card/selectable-card.component.spec.ts +22 -0
  84. package/lib/field/selectable-card/selectable-card.component.ts +219 -0
  85. package/lib/field/semantic-link/semantic-link.component.html +4 -8
  86. package/lib/field/semantic-link/semantic-link.component.scss +0 -13
  87. package/lib/field/semantic-link/semantic-link.component.ts +165 -6
  88. package/lib/field/text/text.component.scss +0 -1
  89. package/lib/field/text/text.component.ts +6 -5
  90. package/lib/field/text-area/text-area.component.html +4 -2
  91. package/lib/field/text-area/text-area.component.ts +30 -155
  92. package/lib/field/text-content/text-content.component.ts +0 -1
  93. package/lib/field/text-input/text-input.component.html +1 -1
  94. package/lib/field/text-input/text-input.component.ts +28 -158
  95. package/lib/field/time/time.component.html +2 -2
  96. package/lib/field/time/time.component.ts +34 -154
  97. package/lib/field/url/url.component.html +1 -1
  98. package/lib/field/url/url.component.ts +28 -157
  99. package/lib/field/user-reference/user-reference.component.html +40 -38
  100. package/lib/field/user-reference/user-reference.component.scss +0 -1
  101. package/lib/field/user-reference/user-reference.component.ts +70 -9
  102. package/lib/infra/Containers/flow-container/flow-container.component.html +2 -2
  103. package/lib/infra/Containers/flow-container/flow-container.component.ts +24 -51
  104. package/lib/infra/Containers/flow-container/helpers.ts +2 -2
  105. package/lib/infra/Containers/hybrid-view-container/hybrid-view-container.component.ts +0 -1
  106. package/lib/infra/Containers/modal-view-container/modal-view-container.component.html +1 -11
  107. package/lib/infra/Containers/modal-view-container/modal-view-container.component.ts +5 -18
  108. package/lib/infra/Containers/view-container/helper.ts +35 -2
  109. package/lib/infra/Containers/view-container/view-container.component.ts +1 -2
  110. package/lib/infra/action-buttons/action-buttons.component.html +13 -8
  111. package/lib/infra/action-buttons/action-buttons.component.scss +23 -0
  112. package/lib/infra/action-buttons/action-buttons.component.ts +1 -3
  113. package/lib/infra/assignment/assignment.component.html +1 -1
  114. package/lib/infra/assignment/assignment.component.ts +100 -46
  115. package/lib/infra/assignment-card/assignment-card.component.html +2 -2
  116. package/lib/infra/assignment-card/assignment-card.component.scss +0 -4
  117. package/lib/infra/assignment-card/assignment-card.component.ts +21 -5
  118. package/lib/infra/dashboard-filter/dashboard-filter.component.ts +0 -1
  119. package/lib/infra/defer-load/defer-load.component.html +6 -2
  120. package/lib/infra/defer-load/defer-load.component.ts +25 -12
  121. package/lib/infra/error-boundary/error-boundary.component.ts +0 -1
  122. package/lib/infra/multi-step/multi-step.component.html +22 -38
  123. package/lib/infra/multi-step/multi-step.component.scss +14 -27
  124. package/lib/infra/multi-step/multi-step.component.ts +0 -1
  125. package/lib/infra/navbar/navbar.component.html +36 -41
  126. package/lib/infra/navbar/navbar.component.scss +22 -4
  127. package/lib/infra/navbar/navbar.component.ts +8 -6
  128. package/lib/infra/reference/reference.component.ts +82 -90
  129. package/lib/infra/region/region.component.ts +0 -1
  130. package/lib/infra/root-container/root-container.component.html +2 -15
  131. package/lib/infra/root-container/root-container.component.scss +0 -1
  132. package/lib/infra/root-container/root-container.component.ts +25 -32
  133. package/lib/infra/stages/stages.component.html +4 -3
  134. package/lib/infra/stages/stages.component.scss +12 -36
  135. package/lib/infra/stages/stages.component.ts +4 -3
  136. package/lib/infra/view/view.component.html +1 -1
  137. package/lib/infra/view/view.component.ts +3 -7
  138. package/lib/template/advanced-search/advanced-search.component.html +12 -0
  139. package/lib/template/advanced-search/advanced-search.component.scss +0 -0
  140. package/lib/template/advanced-search/advanced-search.component.spec.ts +0 -0
  141. package/lib/template/advanced-search/advanced-search.component.ts +112 -0
  142. package/lib/template/advanced-search/advanced-search.service.ts +27 -0
  143. package/lib/template/advanced-search/search-group/persist-utils.ts +56 -0
  144. package/lib/template/advanced-search/search-groups/search-groups.component.html +32 -0
  145. package/lib/template/advanced-search/search-groups/search-groups.component.scss +0 -0
  146. package/lib/template/advanced-search/search-groups/search-groups.component.spec.ts +0 -0
  147. package/lib/template/advanced-search/search-groups/search-groups.component.ts +294 -0
  148. package/lib/template/advanced-search/search-groups/utils.ts +29 -0
  149. package/lib/template/app-shell/app-shell.component.html +4 -1
  150. package/lib/template/app-shell/app-shell.component.scss +0 -3
  151. package/lib/template/app-shell/app-shell.component.ts +46 -8
  152. package/lib/template/banner-page/banner-page.component.ts +0 -1
  153. package/lib/template/base/form-template-base.ts +6 -0
  154. package/lib/template/case-summary/case-summary.component.scss +0 -2
  155. package/lib/template/case-summary/case-summary.component.ts +6 -22
  156. package/lib/template/case-view/case-view.component.html +4 -4
  157. package/lib/template/case-view/case-view.component.scss +18 -10
  158. package/lib/template/case-view/case-view.component.ts +1 -11
  159. package/lib/template/confirmation/confirmation.component.html +2 -2
  160. package/lib/template/confirmation/confirmation.component.ts +0 -1
  161. package/lib/template/data-reference/data-reference.component.html +11 -8
  162. package/lib/template/data-reference/data-reference.component.ts +346 -113
  163. package/lib/template/data-reference/search-form/search-form.component.html +39 -0
  164. package/lib/template/data-reference/search-form/search-form.component.scss +11 -0
  165. package/lib/template/data-reference/search-form/search-form.component.spec.ts +0 -0
  166. package/lib/template/data-reference/search-form/search-form.component.ts +167 -0
  167. package/lib/template/data-reference/search-form/tabsData.ts +160 -0
  168. package/lib/template/data-reference/utils.ts +92 -0
  169. package/lib/template/default-form/default-form.component.ts +45 -5
  170. package/lib/template/default-page/default-page.component.html +34 -0
  171. package/lib/template/default-page/default-page.component.scss +31 -0
  172. package/lib/template/default-page/default-page.component.spec.ts +24 -0
  173. package/lib/template/default-page/default-page.component.ts +64 -0
  174. package/lib/template/details/details.component.ts +0 -1
  175. package/lib/template/details-narrow-wide/details-narrow-wide.component.ts +0 -1
  176. package/lib/template/details-one-column/details-one-column.component.ts +0 -1
  177. package/lib/template/details-sub-tabs/details-sub-tabs.component.ts +0 -1
  178. package/lib/template/details-three-column/details-three-column.component.ts +0 -1
  179. package/lib/template/details-two-column/details-two-column.component.ts +0 -1
  180. package/lib/template/details-wide-narrow/details-wide-narrow.component.ts +0 -1
  181. package/lib/template/dynamic-tabs/dynamic-tabs.component.ts +0 -1
  182. package/lib/template/field-group-list/field-group-list.component.scss +0 -1
  183. package/lib/template/field-group-list/field-group-list.component.ts +0 -1
  184. package/lib/template/field-group-template/field-group-template.component.html +7 -7
  185. package/lib/template/field-group-template/field-group-template.component.scss +8 -0
  186. package/lib/template/field-group-template/field-group-template.component.ts +64 -55
  187. package/lib/template/field-value-list/field-value-list.component.html +2 -2
  188. package/lib/template/field-value-list/field-value-list.component.scss +4 -0
  189. package/lib/template/field-value-list/field-value-list.component.ts +0 -1
  190. package/lib/template/inline-dashboard/inline-dashboard.component.ts +0 -1
  191. package/lib/template/inline-dashboard-page/inline-dashboard-page.component.ts +1 -2
  192. package/lib/template/list-page/list-page.component.ts +0 -1
  193. package/lib/template/list-view/list-view.component.html +170 -160
  194. package/lib/template/list-view/list-view.component.scss +25 -21
  195. package/lib/template/list-view/list-view.component.ts +208 -122
  196. package/lib/template/list-view/listViewHelpers.ts +3 -9
  197. package/lib/template/list-view/utils.ts +27 -7
  198. package/lib/template/multi-reference-readonly/multi-reference-readonly.component.ts +0 -1
  199. package/lib/template/narrow-wide-form/narrow-wide-form.component.ts +0 -1
  200. package/lib/template/object-page/object-page.component.html +1 -0
  201. package/lib/template/object-page/object-page.component.scss +0 -0
  202. package/lib/template/object-page/object-page.component.spec.ts +22 -0
  203. package/lib/template/object-page/object-page.component.ts +14 -0
  204. package/lib/template/one-column/one-column.component.ts +0 -1
  205. package/lib/template/one-column-page/one-column-page.component.ts +0 -1
  206. package/lib/template/one-column-tab/one-column-tab.component.scss +1 -1
  207. package/lib/template/one-column-tab/one-column-tab.component.ts +0 -1
  208. package/lib/template/page/page.component.ts +0 -1
  209. package/lib/template/promoted-filters/promoted-filters.component.ts +0 -1
  210. package/lib/template/repeating-structures/repeating-structures.component.ts +0 -2
  211. package/lib/template/self-service-case-view/self-service-case-view.component.html +78 -0
  212. package/lib/template/self-service-case-view/self-service-case-view.component.scss +132 -0
  213. package/lib/template/self-service-case-view/self-service-case-view.component.spec.ts +24 -0
  214. package/lib/template/self-service-case-view/self-service-case-view.component.ts +207 -0
  215. package/lib/template/simple-table/simple-table.component.ts +0 -2
  216. package/lib/template/simple-table-manual/helpers.ts +126 -10
  217. package/lib/template/simple-table-manual/simple-table-manual.component.html +27 -8
  218. package/lib/template/simple-table-manual/simple-table-manual.component.scss +15 -17
  219. package/lib/template/simple-table-manual/simple-table-manual.component.ts +103 -45
  220. package/lib/template/simple-table-select/simple-table-select.component.ts +0 -1
  221. package/lib/template/single-reference-readonly/single-reference-readonly.component.html +4 -1
  222. package/lib/template/single-reference-readonly/single-reference-readonly.component.scss +21 -0
  223. package/lib/template/single-reference-readonly/single-reference-readonly.component.ts +104 -4
  224. package/lib/template/sub-tabs/sub-tabs.component.ts +0 -1
  225. package/lib/template/three-column/three-column.component.ts +0 -1
  226. package/lib/template/three-column-page/three-column-page.component.ts +0 -1
  227. package/lib/template/two-column/two-column.component.ts +0 -1
  228. package/lib/template/two-column-page/two-column-page.component.ts +0 -1
  229. package/lib/template/two-column-tab/two-column-tab.component.ts +0 -1
  230. package/lib/template/utils.ts +58 -0
  231. package/lib/template/wide-narrow-form/wide-narrow-form.component.ts +0 -1
  232. package/lib/template/wide-narrow-page/wide-narrow-page.component.ts +0 -1
  233. package/lib/template/wss-nav-bar/wss-nav-bar.component.html +6 -5
  234. package/lib/template/wss-nav-bar/wss-nav-bar.component.scss +8 -17
  235. package/lib/template/wss-nav-bar/wss-nav-bar.component.ts +1 -9
  236. package/lib/widget/app-announcement/app-announcement.component.html +1 -2
  237. package/lib/widget/app-announcement/app-announcement.component.scss +2 -2
  238. package/lib/widget/app-announcement/app-announcement.component.ts +0 -1
  239. package/lib/widget/attachment/Attachment.types.ts +92 -0
  240. package/lib/widget/attachment/AttachmentUtils.ts +287 -0
  241. package/lib/widget/attachment/attachment.component.html +3 -3
  242. package/lib/widget/attachment/attachment.component.scss +9 -12
  243. package/lib/widget/attachment/attachment.component.ts +267 -254
  244. package/lib/widget/case-history/case-history.component.ts +0 -1
  245. package/lib/widget/feed-container/feed-container.component.scss +3 -9
  246. package/lib/widget/feed-container/feed-container.component.ts +2 -5
  247. package/lib/widget/file-utility/file-utility.component.html +3 -3
  248. package/lib/widget/file-utility/file-utility.component.scss +6 -17
  249. package/lib/widget/file-utility/file-utility.component.ts +24 -9
  250. package/lib/widget/list-utility/list-utility.component.scss +4 -5
  251. package/lib/widget/list-utility/list-utility.component.ts +0 -1
  252. package/lib/widget/quick-create/quick-create.component.ts +41 -23
  253. package/lib/widget/todo/todo.component.html +12 -10
  254. package/lib/widget/todo/todo.component.scss +20 -10
  255. package/lib/widget/todo/todo.component.ts +11 -7
  256. package/lib/widget/utility/utility.component.ts +0 -1
  257. package/package.json +1 -1
@@ -1,20 +1,19 @@
1
- import { Component, OnInit, Input, ChangeDetectorRef, forwardRef, Inject, OnDestroy } from '@angular/core';
1
+ import { Component, OnInit, forwardRef, OnDestroy } 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 { MatDatepickerModule } from '@angular/material/datepicker';
5
5
  import { MatNativeDateModule } from '@angular/material/core';
6
6
  import { MatInputModule } from '@angular/material/input';
7
7
  import { MatFormFieldModule } from '@angular/material/form-field';
8
8
  import { MAT_DATE_FORMATS } from '@angular/material/core';
9
9
  import { MomentDateModule } from '@angular/material-moment-adapter';
10
- import { interval } from 'rxjs';
11
- import { AngularPConnectData, AngularPConnectService } from '@pega/angular-sdk-components';
12
- import { Utils } from '@pega/angular-sdk-components';
10
+
11
+ import { FieldBase } from '@pega/angular-sdk-components';
13
12
  import { ComponentMapperComponent } from '@pega/angular-sdk-components';
14
- import { dateFormatInfoDefault, getDateFormatInfo } from '@pega/angular-sdk-components';
15
- import { PConnFieldProps } from '@pega/angular-sdk-components';
13
+ import { getDateFormatInfo } from '@pega/angular-sdk-components';
16
14
  import { format } from '@pega/angular-sdk-components';
17
15
  import { handleEvent } from '@pega/angular-sdk-components';
16
+ import { PConnFieldProps } from '@pega/angular-sdk-components';
18
17
 
19
18
  interface DateProps extends PConnFieldProps {
20
19
  // If any, enter additional props that only exist on Date here
@@ -43,7 +42,6 @@ class MyFormat {
43
42
  selector: 'app-date',
44
43
  templateUrl: './date.component.html',
45
44
  styleUrls: ['./date.component.scss'],
46
- standalone: true,
47
45
  imports: [
48
46
  CommonModule,
49
47
  ReactiveFormsModule,
@@ -56,153 +54,32 @@ class MyFormat {
56
54
  ],
57
55
  providers: [{ provide: MAT_DATE_FORMATS, useClass: MyFormat }]
58
56
  })
59
- export class DateComponent implements OnInit, OnDestroy {
60
- @Input() pConn$: typeof PConnect;
61
- @Input() formGroup$: FormGroup;
62
-
63
- // Used with AngularPConnect
64
- angularPConnectData: AngularPConnectData = {};
57
+ export class DateComponent extends FieldBase implements OnInit, OnDestroy {
65
58
  configProps$: DateProps;
66
59
 
67
- label$ = '';
68
- value$: any;
69
- bRequired$ = false;
70
- bReadonly$ = false;
71
- bDisabled$ = false;
72
- bVisible$ = true;
73
- displayMode$?: string = '';
74
- controlName$: string;
75
- bHasForm$ = true;
76
- componentReference = '';
77
- testId = '';
78
- helperText: string;
79
- placeholder: string;
80
-
81
- fieldControl = new FormControl('', null);
82
-
83
- // Start with default dateFormatInfo
84
- dateFormatInfo = dateFormatInfoDefault;
85
- // and then update, as needed, based on locale, etc.
86
60
  theDateFormat = getDateFormatInfo();
87
- actionsApi: Object;
88
- propName: string;
89
61
  formattedValue$: any;
90
62
 
91
- constructor(
92
- private angularPConnect: AngularPConnectService,
93
- private cdRef: ChangeDetectorRef,
94
- private utils: Utils,
95
- @Inject(MAT_DATE_FORMATS) private config: MyFormat
96
- ) {}
97
-
98
- ngOnInit(): void {
99
- this.dateFormatInfo = this.theDateFormat;
100
- // First thing in initialization is registering and subscribing to the AngularPConnect service
101
- this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
102
- this.controlName$ = this.angularPConnect.getComponentID(this);
103
-
104
- // Then, continue on with other initialization
105
- // call updateSelf when initializing
106
- // this.updateSelf();
107
- this.checkAndUpdate();
108
-
109
- if (this.formGroup$) {
110
- // add control to formGroup
111
- this.formGroup$.addControl(this.controlName$, this.fieldControl);
112
- this.fieldControl.setValue(this.value$);
113
- this.bHasForm$ = true;
114
- } else {
115
- this.bReadonly$ = true;
116
- this.bHasForm$ = false;
117
- }
118
- }
119
-
120
- ngOnDestroy(): void {
121
- if (this.formGroup$) {
122
- this.formGroup$.removeControl(this.controlName$);
123
- }
124
-
125
- if (this.angularPConnectData.unsubscribeFn) {
126
- this.angularPConnectData.unsubscribeFn();
127
- }
128
- }
129
-
130
- // Callback passed when subscribing to store change
131
- onStateChange() {
132
- this.checkAndUpdate();
133
- }
134
-
135
- checkAndUpdate() {
136
- // Should always check the bridge to see if the component should
137
- // update itself (re-render)
138
- const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this);
139
-
140
- // ONLY call updateSelf when the component should update
141
- if (bUpdateSelf) {
142
- this.updateSelf();
143
- }
144
- }
145
-
146
- // updateSelf
147
- updateSelf(): void {
148
- // starting very simple...
149
- // moved this from ngOnInit() and call this from there instead...
63
+ /**
64
+ * Updates the component when there are changes in the state.
65
+ */
66
+ override updateSelf(): void {
67
+ // Resolve config properties
150
68
  this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps()) as DateProps;
151
69
 
152
- this.value$ = this.configProps$.value;
153
- this.testId = this.configProps$.testId;
154
- this.label$ = this.configProps$.label;
155
- this.displayMode$ = this.configProps$.displayMode;
156
- this.helperText = this.configProps$.helperText;
157
- this.placeholder = this.configProps$.placeholder || '';
158
-
159
- this.actionsApi = this.pConn$.getActionsApi();
160
- this.propName = this.pConn$.getStateProps().value;
161
-
162
- // timeout and detectChanges to avoid ExpressionChangedAfterItHasBeenCheckedError
163
- setTimeout(() => {
164
- if (this.configProps$.required != null) {
165
- this.bRequired$ = this.utils.getBooleanValue(this.configProps$.required);
166
- }
167
- this.cdRef.detectChanges();
168
- });
70
+ // Update component common properties
71
+ this.updateComponentCommonProperties(this.configProps$);
169
72
 
170
- if (this.displayMode$ === 'DISPLAY_ONLY' || this.displayMode$ === 'STACKED_LARGE_VAL') {
73
+ // Extract and normalize the value property
74
+ const { value } = this.configProps$;
75
+ this.value$ = value;
76
+
77
+ // Format value for display modes
78
+ if (['DISPLAY_ONLY', 'STACKED_LARGE_VAL'].includes(this.displayMode$)) {
171
79
  this.formattedValue$ = format(this.value$, 'date', {
172
80
  format: this.theDateFormat.dateFormatString
173
81
  });
174
82
  }
175
-
176
- if (this.configProps$.visibility != null) {
177
- this.bVisible$ = this.utils.getBooleanValue(this.configProps$.visibility);
178
- }
179
-
180
- // disabled
181
- if (this.configProps$.disabled != undefined) {
182
- this.bDisabled$ = this.utils.getBooleanValue(this.configProps$.disabled);
183
- }
184
-
185
- if (this.bDisabled$) {
186
- this.fieldControl.disable();
187
- } else {
188
- this.fieldControl.enable();
189
- }
190
-
191
- if (this.configProps$.readOnly != null) {
192
- this.bReadonly$ = this.utils.getBooleanValue(this.configProps$.readOnly);
193
- }
194
-
195
- this.componentReference = this.pConn$.getStateProps().value;
196
-
197
- // trigger display of error message with field control
198
- if (this.angularPConnectData.validateMessage != null && this.angularPConnectData.validateMessage != '') {
199
- const timer = interval(100).subscribe(() => {
200
- this.fieldControl.setErrors({ message: true });
201
- this.fieldControl.markAsTouched();
202
-
203
- timer.unsubscribe();
204
- });
205
- }
206
83
  }
207
84
 
208
85
  fieldOnDateChange(event: any) {
@@ -218,18 +95,20 @@ export class DateComponent implements OnInit, OnDestroy {
218
95
  return this.fieldControl.status === 'INVALID';
219
96
  }
220
97
 
221
- getErrorMessage() {
222
- let errMessage = '';
98
+ override getErrorMessage() {
223
99
  // look for validation messages for json, pre-defined or just an error pushed from workitem (400)
224
100
  if (this.fieldControl.hasError('message')) {
225
- errMessage = this.angularPConnectData.validateMessage ?? '';
226
- return errMessage;
101
+ return this.angularPConnectData.validateMessage ?? '';
227
102
  }
103
+
228
104
  if (this.fieldControl.hasError('required')) {
229
- errMessage = 'You must enter a value';
230
- } else if (this.fieldControl.errors) {
231
- errMessage = `${this.fieldControl.errors['matDatepickerParse'].text} is not a valid date value`;
105
+ return 'You must enter a value';
106
+ }
107
+
108
+ if (this.fieldControl.errors) {
109
+ return `${this.fieldControl.errors['matDatepickerParse'].text} is not a valid date value`;
232
110
  }
233
- return errMessage;
111
+
112
+ return '';
234
113
  }
235
114
  }
@@ -13,11 +13,11 @@
13
13
  [placeholder]="placeholder"
14
14
  [formControl]="fieldControl"
15
15
  (dateTimeChange)="fieldOnDateChange($event)"
16
- [value]="value$"
17
16
  [required]="bRequired$"
17
+ [readonly]="bDisabled$"
18
18
  />
19
19
  <mat-datepicker-toggle matSuffix [owlDateTimeTrigger]="dtPicker"></mat-datepicker-toggle>
20
- <owl-date-time #dtPicker></owl-date-time>
20
+ <owl-date-time #dtPicker [disabled]="bDisabled$" [scrollStrategy]="scrollStrategy"></owl-date-time>
21
21
  <mat-error *ngIf="fieldControl?.invalid">{{ getErrorMessage() }}</mat-error>
22
22
  </mat-form-field>
23
23
  </div>
@@ -1,18 +1,19 @@
1
- import { Component, OnInit, Input, ChangeDetectorRef, forwardRef, OnDestroy } from '@angular/core';
1
+ import { Component, OnInit, forwardRef, OnDestroy, 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 { MatDatepickerModule } from '@angular/material/datepicker';
5
5
  import { MatInputModule } from '@angular/material/input';
6
6
  import { MatFormFieldModule } from '@angular/material/form-field';
7
+ import { ScrollStrategyOptions } from '@angular/cdk/overlay';
7
8
  import { OwlDateTimeModule, OwlNativeDateTimeModule } from '@danielmoncada/angular-datetime-picker';
8
- import { interval } from 'rxjs';
9
- import { AngularPConnectData, AngularPConnectService } from '@pega/angular-sdk-components';
10
- import { Utils } from '@pega/angular-sdk-components';
9
+ import dayjs from 'dayjs';
10
+
11
+ import { FieldBase } from '@pega/angular-sdk-components';
11
12
  import { ComponentMapperComponent } from '@pega/angular-sdk-components';
12
- import { dateFormatInfoDefault, getDateFormatInfo } from '@pega/angular-sdk-components';
13
- import { PConnFieldProps } from '@pega/angular-sdk-components';
13
+ import { getDateFormatInfo } from '@pega/angular-sdk-components';
14
14
  import { handleEvent } from '@pega/angular-sdk-components';
15
- import { format } from '@pega/angular-sdk-components';
15
+ import { DateFormatters } from '@pega/angular-sdk-components';
16
+ import { PConnFieldProps } from '@pega/angular-sdk-components';
16
17
 
17
18
  interface DateTimeProps extends PConnFieldProps {
18
19
  // If any, enter additional props that only exist on DateTime here
@@ -22,7 +23,6 @@ interface DateTimeProps extends PConnFieldProps {
22
23
  selector: 'app-date-time',
23
24
  templateUrl: './date-time.component.html',
24
25
  styleUrls: ['./date-time.component.scss'],
25
- standalone: true,
26
26
  imports: [
27
27
  CommonModule,
28
28
  ReactiveFormsModule,
@@ -34,175 +34,74 @@ interface DateTimeProps extends PConnFieldProps {
34
34
  forwardRef(() => ComponentMapperComponent)
35
35
  ]
36
36
  })
37
- export class DateTimeComponent implements OnInit, OnDestroy {
38
- @Input() pConn$: typeof PConnect;
39
- @Input() formGroup$: FormGroup;
40
-
41
- // Used with AngularPConnect
42
- angularPConnectData: AngularPConnectData = {};
37
+ export class DateTimeComponent extends FieldBase implements OnInit, OnDestroy {
43
38
  configProps$: DateTimeProps;
44
39
 
45
- label$ = '';
46
- value$: any;
47
- bRequired$ = false;
48
- bReadonly$ = false;
49
- bDisabled$ = false;
50
- bVisible$ = true;
51
- displayMode$?: string = '';
52
- controlName$: string;
53
- bHasForm$ = true;
54
- componentReference = '';
55
- testId = '';
56
- helperText: string;
57
-
58
- fieldControl = new FormControl('', null);
59
40
  stepHour = 1;
60
41
  stepMinute = 1;
61
42
  stepSecond = 1;
62
43
  public color = 'primary';
63
- // Start with default dateFormatInfo
64
- dateFormatInfo = dateFormatInfoDefault;
65
- // and then update, as needed, based on locale, etc.
66
- theDateFormat = getDateFormatInfo();
67
- placeholder: string;
68
- actionsApi: Object;
69
- propName: string;
70
44
  formattedValue$: any;
45
+ theDateFormat = getDateFormatInfo();
46
+ timezone = PCore.getEnvironmentInfo()?.getTimeZone();
47
+ override placeholder = `${this.theDateFormat.dateFormatStringLC}, hh:mm A`;
71
48
 
72
- constructor(
73
- private angularPConnect: AngularPConnectService,
74
- private cdRef: ChangeDetectorRef,
75
- private utils: Utils
76
- ) {}
49
+ private sso = inject(ScrollStrategyOptions);
50
+ scrollStrategy = this.sso.reposition();
77
51
 
78
- ngOnInit(): void {
79
- this.placeholder = `${this.theDateFormat.dateFormatStringLC}, hh:mm A`;
80
- // First thing in initialization is registering and subscribing to the AngularPConnect service
81
- this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
82
- this.controlName$ = this.angularPConnect.getComponentID(this);
83
- // Then, continue on with other initialization
84
- // call updateSelf when initializing
85
- // this.updateSelf();
86
- this.checkAndUpdate();
52
+ override ngOnInit(): void {
53
+ super.ngOnInit();
87
54
 
88
55
  if (this.formGroup$) {
89
- // add control to formGroup
90
- this.formGroup$.addControl(this.controlName$, this.fieldControl);
91
- this.fieldControl.setValue(this.value$);
92
- this.bHasForm$ = true;
93
- } else {
94
- this.bReadonly$ = true;
95
- this.bHasForm$ = false;
96
- }
97
- }
98
-
99
- ngOnDestroy(): void {
100
- if (this.formGroup$) {
101
- this.formGroup$.removeControl(this.controlName$);
102
- }
103
- if (this.angularPConnectData.unsubscribeFn) {
104
- this.angularPConnectData.unsubscribeFn();
105
- }
106
- }
107
-
108
- // Callback passed when subscribing to store change
109
- onStateChange() {
110
- this.checkAndUpdate();
111
- }
112
-
113
- checkAndUpdate() {
114
- // Should always check the bridge to see if the component should
115
- // update itself (re-render)
116
- const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this);
56
+ let dateTimeValue = this.value$ ?? '';
117
57
 
118
- // ONLY call updateSelf when the component should update
119
- if (bUpdateSelf) {
120
- this.updateSelf();
58
+ if (this.value$) {
59
+ dateTimeValue = dayjs(DateFormatters?.convertToTimezone(this.value$, { timezone: this.timezone }))?.toISOString();
60
+ }
61
+ this.fieldControl.setValue(dateTimeValue);
121
62
  }
122
63
  }
123
64
 
124
- // updateSelf
125
- updateSelf(): void {
126
- // starting very simple...
127
- // moved this from ngOnInit() and call this from there instead...
65
+ /**
66
+ * Updates the component when there are changes in the state.
67
+ */
68
+ override updateSelf(): void {
69
+ // Resolve config properties
128
70
  this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps()) as DateTimeProps;
129
71
 
130
- this.label$ = this.configProps$.label;
131
- this.displayMode$ = this.configProps$.displayMode;
132
- this.testId = this.configProps$.testId;
133
- this.helperText = this.configProps$.helperText;
134
- this.value$ = this.configProps$?.value;
135
- this.fieldControl.setValue(this.value$);
136
- // timeout and detectChanges to avoid ExpressionChangedAfterItHasBeenCheckedError
137
- setTimeout(() => {
138
- if (this.configProps$.required != null) {
139
- this.bRequired$ = this.utils.getBooleanValue(this.configProps$.required);
140
- }
141
- this.cdRef.detectChanges();
142
- });
143
-
144
- if (this.displayMode$ === 'DISPLAY_ONLY' || this.displayMode$ === 'STACKED_LARGE_VAL') {
145
- this.formattedValue$ = format(this.value$, 'datetime', {
146
- format: `${this.theDateFormat.dateFormatString} hh:mm A`
147
- });
148
- }
149
-
150
- if (this.configProps$.visibility != null) {
151
- this.bVisible$ = this.utils.getBooleanValue(this.configProps$.visibility);
152
- }
72
+ // Update component common properties
73
+ this.updateComponentCommonProperties(this.configProps$);
153
74
 
154
- // disabled
155
- if (this.configProps$.disabled != undefined) {
156
- this.bDisabled$ = this.utils.getBooleanValue(this.configProps$.disabled);
157
- }
75
+ // Extract the value property
76
+ const { value } = this.configProps$;
158
77
 
159
- if (this.bDisabled$) {
160
- this.fieldControl.disable();
161
- } else {
162
- this.fieldControl.enable();
78
+ // Update component properties
79
+ this.value$ = value;
80
+ let dateTimeValue = value ?? '';
81
+ if (this.value$) {
82
+ dateTimeValue = dayjs(DateFormatters?.convertToTimezone(this.value$, { timezone: this.timezone }))?.toISOString();
163
83
  }
84
+ this.fieldControl.setValue(dateTimeValue);
164
85
 
165
- if (this.configProps$.readOnly != null) {
166
- this.bReadonly$ = this.utils.getBooleanValue(this.configProps$.readOnly);
86
+ if (['DISPLAY_ONLY', 'STACKED_LARGE_VAL'].includes(this.displayMode$)) {
87
+ this.formattedValue$ = this.generateDateTime(this.value$);
167
88
  }
89
+ }
168
90
 
169
- this.componentReference = this.pConn$.getStateProps().value;
170
-
171
- this.actionsApi = this.pConn$.getActionsApi();
172
- this.propName = this.pConn$.getStateProps().value;
173
-
174
- // trigger display of error message with field control
175
- if (this.angularPConnectData.validateMessage != null && this.angularPConnectData.validateMessage != '') {
176
- const timer = interval(100).subscribe(() => {
177
- this.fieldControl.setErrors({ message: true });
178
- this.fieldControl.markAsTouched();
179
-
180
- timer.unsubscribe();
181
- });
182
- }
91
+ generateDateTime(sVal): string {
92
+ if (!sVal) return '';
93
+ if (sVal.length === 10) return this.utils.generateDate(sVal, 'Date-Long-Custom-YYYY');
94
+ return this.utils.generateDateTime(sVal, 'DateTime-Long-YYYY-Custom');
183
95
  }
184
96
 
185
97
  fieldOnDateChange(event: any) {
186
98
  // this comes from the date pop up
187
99
  if (typeof event.value === 'object') {
188
100
  // convert date to pega "date" format
189
- event.value = event.value?.toISOString();
101
+ const dateTime = dayjs(event.value?.toISOString());
102
+ const timeZoneDateTime = (dayjs as any).tz(dateTime.format('YYYY-MM-DDTHH:mm:ss'), this.timezone);
103
+ event.value = timeZoneDateTime && timeZoneDateTime.isValid() ? timeZoneDateTime.toISOString() : '';
190
104
  }
191
105
  handleEvent(this.actionsApi, 'changeNblur', this.propName, event.value);
192
106
  }
193
-
194
- getErrorMessage() {
195
- let errMessage = '';
196
- // look for validation messages for json, pre-defined or just an error pushed from workitem (400)
197
- if (this.fieldControl.hasError('message')) {
198
- errMessage = this.angularPConnectData.validateMessage ?? '';
199
- return errMessage;
200
- }
201
- if (this.fieldControl.hasError('required')) {
202
- errMessage = 'You must enter a value';
203
- } else if (this.fieldControl.errors) {
204
- errMessage = this.fieldControl.errors.toString();
205
- }
206
- return errMessage;
207
- }
208
107
  }
@@ -12,6 +12,7 @@
12
12
  currencyMask
13
13
  [options]="{
14
14
  prefix: currencySymbol,
15
+ suffix: suffix,
15
16
  thousands: thousandSeparator,
16
17
  decimal: decimalSeparator,
17
18
  align: 'left',