@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,21 +1,23 @@
1
- <mat-toolbar style="margin-bottom: 5px; background-color: #262626">
1
+ <mat-toolbar>
2
2
  <mat-toolbar-row mat-icon-button>
3
3
  <div class="psdk-nav-header" (click)="navPanelButtonClick(homePage)">
4
4
  <div>
5
5
  <img src="{{ portalLogoImage$ }}" class="psdk-nav-logo" />
6
6
  </div>
7
7
  <div class="psdk-nav-portal-info">
8
- <div class="psdk-nav-portal-app">{{ portalApp$ }}</div>
8
+ <div class="psdk-nav-portal-app">{{ appName$ }}</div>
9
9
  </div>
10
10
  </div>
11
11
 
12
+ <span class="spacer"></span>
13
+
12
14
  <div *ngFor="let page of navPages$">
13
- <div class="flex-box mat-list-item" style="cursor: pointer" (click)="navPanelButtonClick(page)">
15
+ <div class="flex-box mat-list-item" style="cursor: pointer; font-size: 1rem; text-transform: capitalize" (click)="navPanelButtonClick(page)">
14
16
  <div mat-button class="psdk-nav-button-span">{{ page.pyLabel }}</div>
15
17
  </div>
16
18
  </div>
17
19
 
18
- <span class="spacer"></span>
20
+ <!-- <span class="spacer"></span> -->
19
21
 
20
22
  <mat-list>
21
23
  <mat-list-item [matMenuTriggerFor]="menu" class="psdk-profile-list-item">
@@ -24,7 +26,6 @@
24
26
  </div>
25
27
  </mat-list-item>
26
28
  <mat-menu #menu="matMenu">
27
- <button mat-menu-item>Profile</button>
28
29
  <button mat-menu-item (click)="navPanelLogoutClick()">{{ localizedVal('Log off', localeCategory) }}</button>
29
30
  </mat-menu>
30
31
  </mat-list>
@@ -15,16 +15,12 @@
15
15
  padding-top: 0.625rem;
16
16
  cursor: pointer;
17
17
  padding-right: 1rem;
18
- &:hover {
19
- background-color: var(--app-neutral-color);
20
- }
21
18
  align-items: center;
22
19
  }
23
20
 
24
21
  .psdk-nav-logo {
25
- width: 3.75rem;
26
- padding: 0.625rem;
27
- margin-right: 1.25rem;
22
+ max-width: 100%;
23
+ height: 3rem;
28
24
  }
29
25
 
30
26
  .psdk-nav-svg-icon {
@@ -108,14 +104,11 @@
108
104
 
109
105
  .psdk-nav-button-span {
110
106
  padding: 0 1rem;
111
- color: var(--app-nav-color);
112
-
113
- &:hover {
114
- background-color: var(--app-neutral-color);
115
- }
116
107
  }
117
108
 
118
109
  .psdk-nav-oper-avatar {
110
+ border-radius: 100%;
111
+ background-color: var(--mat-sys-primary);
119
112
  margin: 0rem;
120
113
  padding: 0rem;
121
114
  min-width: 2.5rem;
@@ -127,12 +120,14 @@
127
120
  align-items: center;
128
121
  text-align: center;
129
122
  display: inline-flex;
130
- background: var(--app-neutral-color);
131
- color: var(--app-form-color);
132
123
  font-weight: normal;
133
124
  font-size: 1rem;
134
125
  }
135
126
 
127
+ mat-toolbar {
128
+ background-color: var(--mat-sys-surface-variant);
129
+ }
130
+
136
131
  mat-list {
137
132
  padding: 0;
138
133
  }
@@ -147,10 +142,6 @@ mat-list-item {
147
142
  cursor: pointer !important;
148
143
  height: auto !important;
149
144
 
150
- &:hover {
151
- // background-color: rgba(0, 0, 0, 0.5);
152
- }
153
-
154
145
  .flex-box {
155
146
  display: flex;
156
147
  align-items: center;
@@ -19,7 +19,6 @@ interface WssNavBarProps {
19
19
  templateUrl: './wss-nav-bar.component.html',
20
20
  styleUrls: ['./wss-nav-bar.component.scss'],
21
21
  providers: [Utils],
22
- standalone: true,
23
22
  imports: [CommonModule, MatListModule, MatMenuModule, MatIconModule, MatToolbarModule]
24
23
  })
25
24
  export class WssNavBarComponent implements OnInit, OnDestroy {
@@ -28,6 +27,7 @@ export class WssNavBarComponent implements OnInit, OnDestroy {
28
27
  @Input() pages$: any[];
29
28
  @Input() caseTypes$: any[];
30
29
  @Input() homePage: any;
30
+ @Input() portalLogoImage$: string;
31
31
 
32
32
  // For interaction with AngularPConnect
33
33
  angularPConnectData: AngularPConnectData = {};
@@ -37,10 +37,6 @@ export class WssNavBarComponent implements OnInit, OnDestroy {
37
37
  navExpandCollapse$: string;
38
38
  bShowCaseTypes$ = false;
39
39
 
40
- portalApp$: string | undefined = '';
41
- portalLogoImage$: string;
42
- showAppName$ = false;
43
-
44
40
  portalOperator$: string | undefined;
45
41
  portalOperatorInitials$: string;
46
42
 
@@ -127,12 +123,8 @@ export class WssNavBarComponent implements OnInit, OnDestroy {
127
123
 
128
124
  // const oData = this.pConn$.getDataObject();
129
125
 
130
- this.portalLogoImage$ = this.utils.getSDKStaticContentUrl().concat('assets/pzpega-logo-mark.svg');
131
126
  this.portalOperator$ = PCore.getEnvironmentInfo().getOperatorName();
132
127
  this.portalOperatorInitials$ = this.utils.getInitials(this.portalOperator$ ?? '');
133
- this.showAppName$ = this.configProps$.showAppName;
134
-
135
- this.portalApp$ = PCore.getEnvironmentInfo().getApplicationLabel();
136
128
  });
137
129
  }
138
130
 
@@ -3,11 +3,10 @@
3
3
  <div>
4
4
  <p>{{ configProps$.description }}</p>
5
5
  <div>
6
- <h3>{{ configProps$.label }}</h3>
7
6
  <ul>
8
7
  <li *ngFor="let detail of details$">{{ detail }}</li>
9
8
  </ul>
10
9
  </div>
11
10
  </div>
12
- <a *ngIf="configProps$.whatsnewlink != ''" mat-raised-button color="primary" [href]="configProps$.whatsnewlink">See what's new</a>
11
+ <a *ngIf="configProps$.whatsnewlink != ''" mat-raised-button [href]="configProps$.whatsnewlink">See what's new</a>
13
12
  </article>
@@ -10,10 +10,10 @@ ul {
10
10
  padding-inline-start: 20px;
11
11
  }
12
12
  .psdk-announcement {
13
- background-color: var(--app-form-color);
13
+ background-color: var(--mat-sys-surface-container);
14
14
  padding: 1rem;
15
15
  margin: 1rem 0;
16
16
  border-radius: 0.6125rem;
17
17
  border-left: 6px solid;
18
- border-left-color: var(--app-primary-color);
18
+ border-left-color: var(--mat-sys-primary);
19
19
  }
@@ -15,7 +15,6 @@ interface AppAnnouncementProps {
15
15
  selector: 'app-app-announcement',
16
16
  templateUrl: './app-announcement.component.html',
17
17
  styleUrls: ['./app-announcement.component.scss'],
18
- standalone: true,
19
18
  imports: [CommonModule, MatButtonModule]
20
19
  })
21
20
  export class AppAnnouncementComponent implements OnInit {
@@ -0,0 +1,92 @@
1
+ export interface ResponseProps {
2
+ ID: string;
3
+ extension: string;
4
+ createDateTime?: Date | string | number;
5
+ createUser?: string;
6
+ name: string;
7
+ }
8
+
9
+ export interface AttachmentActions {
10
+ rel: string;
11
+ href: string;
12
+ title: string;
13
+ type: string;
14
+ }
15
+
16
+ export interface AttachmentLinks {
17
+ delete: AttachmentActions;
18
+ download: AttachmentActions;
19
+ edit: AttachmentActions;
20
+ }
21
+ export interface FileObject extends File {
22
+ icon?: string;
23
+ ID: string;
24
+ fileName: string;
25
+ category: string;
26
+ responseType: string;
27
+ fileType: string;
28
+ mimeType: string;
29
+ extension: string;
30
+ thumbnail?: string;
31
+ nameWithExt: string;
32
+ inProgress?: boolean;
33
+ progress?: number;
34
+ handle: string;
35
+ label: string;
36
+ delete?: boolean;
37
+ error?: boolean;
38
+ description: string;
39
+
40
+ props: {
41
+ icon?: string;
42
+ id: string;
43
+ error?: string;
44
+ format?: string;
45
+ name: string;
46
+ thumbnail?: string;
47
+ onPreview?: () => void;
48
+ onDelete?: () => void;
49
+ onOpen?: () => void;
50
+ onEdit?: () => void;
51
+ onCancel?: () => void;
52
+ };
53
+ responseProps: ResponseProps;
54
+ value?: {
55
+ filename: string;
56
+ ID: string;
57
+ thumbnail: string;
58
+ };
59
+ categoryName: string;
60
+ createTime: string;
61
+ createdBy: string;
62
+ createdByName: string;
63
+ links: AttachmentLinks;
64
+ name: string;
65
+ meta?: any;
66
+ }
67
+
68
+ export interface ReduxAttachments {
69
+ ID?: string;
70
+ pzInsKey?: string;
71
+ FileName: string;
72
+ Category: string;
73
+ MimeType?: string;
74
+ FileExtension: string;
75
+ error: string | null;
76
+ localAttachment: boolean;
77
+ thumbnail?: string;
78
+ fileIndex?: number;
79
+ instruction?: string;
80
+ }
81
+
82
+ export interface PageInstructionOptions {
83
+ allowMultiple: boolean;
84
+ isMultiAttachmentInInlineEditTable: boolean;
85
+ attachmentCount: number;
86
+ insertPageInstruction: boolean;
87
+ deletePageInstruction: boolean;
88
+ deleteIndex: number;
89
+ insertRedux: boolean;
90
+ isOldAttachment: boolean;
91
+ deleteRedux: boolean;
92
+ }
@@ -0,0 +1,287 @@
1
+ import download from 'downloadjs';
2
+
3
+ import type { FileObject, PageInstructionOptions, ReduxAttachments } from './Attachment.types';
4
+
5
+ const megabyteSize = 1048576;
6
+
7
+ export const isContentBinary = (headers: Record<string, string>) => {
8
+ return headers && headers['content-transfer-encoding'] === 'binary';
9
+ };
10
+
11
+ export const isContentBase64 = (headers: Record<string, string>) => {
12
+ return headers && headers['content-transfer-encoding'] === 'base64';
13
+ };
14
+
15
+ export const validateMaxSize = (fileObj: Record<string, number>, maxSizeInMB: string) => {
16
+ const fileSize = (fileObj['size'] / megabyteSize).toFixed(2);
17
+ return parseFloat(fileSize) < parseFloat(maxSizeInMB);
18
+ };
19
+
20
+ export const validateFileExtension = (fileObj: Record<string, string>, allowedExtensions: string) => {
21
+ if (!allowedExtensions) {
22
+ return true;
23
+ }
24
+ const allowedExtensionList = allowedExtensions
25
+ .toLowerCase()
26
+ .split(',')
27
+ .map(item => item.replaceAll('.', '').trim());
28
+ const extension = fileObj['name'].split('.').pop()?.toLowerCase() || '';
29
+ return allowedExtensionList.includes(extension);
30
+ };
31
+
32
+ export const fileDownload = (data: string | Blob, fileName: string, ext: string | null, headers: Record<string, string>) => {
33
+ const name = ext ? `${fileName}.${ext}` : fileName;
34
+ // Temp fix: downloading EMAIl type attachment as html file
35
+ if (ext === 'html') {
36
+ download(isContentBase64(headers) ? atob(data as string) : data, name, 'text/html');
37
+ } else if (isContentBinary(headers)) {
38
+ download(data, name);
39
+ } else {
40
+ download(atob(data as string), name);
41
+ }
42
+ };
43
+
44
+ export const fileDownloadVar = (content: { data: string; headers: Record<string, string> }, type: string, name: string, extension: string) => {
45
+ if (type === 'FILE' || type === undefined) {
46
+ fileDownload(content.data, name, extension, content.headers);
47
+ } else if (type === 'URL') {
48
+ let { data } = content;
49
+ if (!/^(http|https):\/\//.test(data)) {
50
+ data = `//${data}`;
51
+ }
52
+ window.open(content.data, '_blank');
53
+ } else if (type === 'EMAIL') {
54
+ // Temp Fix: for EMAIL type attachment
55
+ fileDownload(content.data, name, 'html', content.headers);
56
+ }
57
+ };
58
+
59
+ export const getMappedValue = (value: string): string => {
60
+ return PCore.getEnvironmentInfo().getKeyMapping(value) ?? value;
61
+ };
62
+
63
+ const generateInstructions = (
64
+ files: FileObject[],
65
+ pConn: typeof PConnect,
66
+ attachmentsInModal: ReduxAttachments[] | Pick<ReduxAttachments, 'instruction' | 'fileIndex'>[],
67
+ options: {
68
+ allowMultiple: boolean;
69
+ isMultiAttachmentInInlineEditTable: boolean;
70
+ attachmentCount: number;
71
+ insertPageInstruction: boolean;
72
+ deletePageInstruction: boolean;
73
+ deleteIndex: number;
74
+ }
75
+ ) => {
76
+ const { allowMultiple, isMultiAttachmentInInlineEditTable, attachmentCount, insertPageInstruction, deletePageInstruction, deleteIndex } = options;
77
+ const transformedAttachments: ReduxAttachments[] = [];
78
+ let valueRef = pConn.getStateProps().value;
79
+ valueRef = valueRef?.indexOf('.') === 0 ? valueRef.substring(1) : valueRef;
80
+ const uniqueKey = getMappedValue('pzInsKey');
81
+ files.forEach((file, index) => {
82
+ const filename = file.value?.filename || file.props?.name || '';
83
+ const payload = {
84
+ [uniqueKey]: file.value?.ID || file.props?.id,
85
+ FileName: filename,
86
+ Category: '',
87
+ // MimeType: getMimeTypeFromFile(filename),
88
+ FileExtension: filename.split('.').pop() ?? filename,
89
+ error: file.props?.error || null,
90
+ localAttachment: true,
91
+ thumbnail: file.value?.thumbnail
92
+ };
93
+ transformedAttachments.push(payload);
94
+ if (payload.error) {
95
+ return; // Don't process page instructions for error files, skip current iteration
96
+ }
97
+ if (allowMultiple) {
98
+ if (isMultiAttachmentInInlineEditTable) {
99
+ if (insertPageInstruction) {
100
+ attachmentsInModal.push({ ...payload, instruction: 'insert' } as any);
101
+ } else if (deletePageInstruction) {
102
+ (attachmentsInModal as Pick<ReduxAttachments, 'instruction' | 'fileIndex'>[]).push({
103
+ instruction: 'delete',
104
+ fileIndex: deleteIndex
105
+ });
106
+ }
107
+ } else if (insertPageInstruction) {
108
+ pConn.getListActions().insert({ ID: payload[uniqueKey] }, attachmentCount + index, undefined, {
109
+ skipStateUpdate: true
110
+ });
111
+ } else if (deletePageInstruction) {
112
+ pConn.getListActions().deleteEntry(deleteIndex, undefined, { skipStateUpdate: true });
113
+ }
114
+ } else if (insertPageInstruction) {
115
+ pConn.getListActions().replacePage(`.${valueRef}`, { ID: payload[uniqueKey] }, { skipStateUpdate: true });
116
+ } else if (deletePageInstruction) {
117
+ pConn.getListActions().deletePage(`.${valueRef}`, { skipStateUpdate: true });
118
+ }
119
+ });
120
+ return transformedAttachments;
121
+ };
122
+
123
+ export const updateReduxState = (
124
+ transformedAttachments: ReduxAttachments[],
125
+ pConn: typeof PConnect,
126
+ valueRef: string,
127
+ options: PageInstructionOptions
128
+ ) => {
129
+ const { allowMultiple, isOldAttachment, insertRedux, deleteRedux } = options;
130
+ let deleteIndex = -1;
131
+
132
+ if (allowMultiple || isOldAttachment) {
133
+ transformedAttachments.forEach(attachment => {
134
+ const key = isOldAttachment ? `${valueRef}.pxResults` : valueRef;
135
+ const existingAttachments: ReduxAttachments[] = PCore.getStoreValue(`.${key}`, pConn.getPageReference(), pConn.getContextName()) || [];
136
+
137
+ if (insertRedux) {
138
+ const actionPayLoad = {
139
+ type: 'LIST_ACTION',
140
+ payload: {
141
+ instruction: 'INSERT',
142
+ context: pConn.getContextName(),
143
+ referenceList: `${pConn.getPageReference()}.${key}`,
144
+ listIndex: existingAttachments.length,
145
+ content: attachment
146
+ }
147
+ };
148
+ PCore.getStore()?.dispatch(actionPayLoad);
149
+ } else if (deleteRedux) {
150
+ const uniqueKey = getMappedValue('pzInsKey');
151
+ deleteIndex = existingAttachments.findIndex(
152
+ existingAttachment =>
153
+ existingAttachment[uniqueKey as keyof ReduxAttachments] === transformedAttachments[0][uniqueKey as keyof ReduxAttachments]
154
+ );
155
+ const actionPayLoad = {
156
+ type: 'LIST_ACTION',
157
+ payload: {
158
+ instruction: 'DELETE',
159
+ context: pConn.getContextName(),
160
+ referenceList: `${pConn.getPageReference()}.${key}`,
161
+ listIndex: deleteIndex
162
+ }
163
+ };
164
+ PCore.getStore()?.dispatch(actionPayLoad);
165
+ }
166
+ });
167
+ } else if (insertRedux) {
168
+ const actionPayLoad = {
169
+ type: 'LIST_ACTION',
170
+ payload: {
171
+ instruction: 'REPLACE',
172
+ context: pConn.getContextName(),
173
+ referenceList: `${pConn.getPageReference()}.${valueRef}`,
174
+ content: transformedAttachments[0]
175
+ }
176
+ };
177
+ PCore.getStore()?.dispatch(actionPayLoad);
178
+ } else if (deleteRedux) {
179
+ const actionPayLoad = {
180
+ type: 'LIST_ACTION',
181
+ payload: {
182
+ instruction: 'DELETEPAGE',
183
+ context: pConn.getContextName(),
184
+ referenceList: `${pConn.getPageReference()}.${valueRef}`
185
+ }
186
+ };
187
+ PCore.getStore()?.dispatch(actionPayLoad);
188
+ }
189
+ };
190
+
191
+ export const insertAttachments = (
192
+ files: FileObject[],
193
+ pConn: typeof PConnect,
194
+ attachmentsInModal: ReduxAttachments[],
195
+ options: PageInstructionOptions
196
+ ) => {
197
+ const { isMultiAttachmentInInlineEditTable } = options;
198
+ let valueRef = pConn.getStateProps().value;
199
+ valueRef = valueRef?.indexOf('.') === 0 ? valueRef.substring(1) : valueRef;
200
+ const transformedAttachments = generateInstructions(files, pConn, attachmentsInModal, {
201
+ ...options,
202
+ insertPageInstruction: true
203
+ });
204
+
205
+ if (isMultiAttachmentInInlineEditTable) {
206
+ return; // For attachments within modal, redux update is not necessary yet, as modal isn't submitted at this stage
207
+ }
208
+ updateReduxState(transformedAttachments, pConn, valueRef, { ...options, insertRedux: true });
209
+ };
210
+
211
+ export const deleteAttachments = (
212
+ files: FileObject[],
213
+ pConn: typeof PConnect,
214
+ attachmentsInModal: Pick<ReduxAttachments, 'instruction' | 'fileIndex'>[],
215
+ options: PageInstructionOptions
216
+ ) => {
217
+ const { isMultiAttachmentInInlineEditTable } = options;
218
+ let valueRef = pConn.getStateProps().value;
219
+ valueRef = valueRef?.indexOf('.') === 0 ? valueRef.substring(1) : valueRef;
220
+ const transformedAttachments = generateInstructions(files, pConn, attachmentsInModal, {
221
+ ...options,
222
+ deletePageInstruction: true
223
+ });
224
+
225
+ if (isMultiAttachmentInInlineEditTable) {
226
+ return; // For attachments within modal, redux update is not necessary yet, as modal isn't submitted at this stage
227
+ }
228
+ updateReduxState(transformedAttachments, pConn, valueRef, { ...options, deleteRedux: true });
229
+ };
230
+
231
+ export const clearFieldErrorMessages = (pConn: typeof PConnect) => {
232
+ const fieldName = pConn.getStateProps().value;
233
+ PCore.getMessageManager().clearMessages({
234
+ type: PCore.getConstants().MESSAGES.MESSAGES_TYPE_ERROR,
235
+ property: fieldName,
236
+ pageReference: pConn.getPageReference(),
237
+ context: pConn.getContextName()
238
+ });
239
+ };
240
+
241
+ export const onFileDownload = (responseProps, context) => {
242
+ const { ID, name, extension, type, category, responseType } = responseProps;
243
+
244
+ if (category !== 'pxDocument') {
245
+ (
246
+ PCore.getAttachmentUtils().downloadAttachment(ID, context, responseType) as Promise<{
247
+ data: string;
248
+ headers: Record<string, string>;
249
+ }>
250
+ )
251
+ .then(content => {
252
+ fileDownloadVar(content, type, name, extension);
253
+ })
254
+
255
+ .catch(console.error);
256
+ } else {
257
+ (
258
+ PCore.getAttachmentUtils().downloadDocument(ID, context) as Promise<{
259
+ data: string;
260
+ headers: Record<string, string>;
261
+ }>
262
+ )
263
+ .then(content => {
264
+ fileDownloadVar(content, type, name, extension);
265
+ })
266
+
267
+ .catch(console.error);
268
+ }
269
+ };
270
+
271
+ // Prepares new structure as per Cosmos component
272
+ export const transformAttachments = attachments => {
273
+ const transformedFiles = [...attachments];
274
+ let deleteIndex = -1;
275
+ transformedFiles.forEach(attachment => {
276
+ attachment.props.id = attachment.responseProps.ID;
277
+ attachment.props.format = attachment.props.name.split('.').pop();
278
+ if (attachment.props.error) {
279
+ attachment.responseProps.deleteIndex = deleteIndex;
280
+ } else {
281
+ deleteIndex += 1;
282
+ attachment.responseProps.deleteIndex = deleteIndex;
283
+ }
284
+ });
285
+
286
+ return transformedFiles;
287
+ };
@@ -25,7 +25,7 @@
25
25
  </div>
26
26
  <span *ngIf="validateMessage" class="file-error">{{ validateMessage }}</span>
27
27
  <div *ngIf="files && files.length > 0">
28
- <div *ngFor="let file of files">
28
+ <div *ngFor="let file of files; let i = index">
29
29
  <div class="psdk-attachment-card">
30
30
  <div className="psdk-utility-card-icon">
31
31
  <img *ngIf="!file.inProgress" class="psdk-attachment-card-svg-icon" src="{{ srcImg }}" />
@@ -36,7 +36,7 @@
36
36
  <div *ngIf="file.props.meta" [ngStyle]="{ color: file.props.error ? 'red' : null }">{{ file.props.meta }}</div>
37
37
  </div>
38
38
  <div class="psdk-attachment-action">
39
- <button id="delete-attachment" *ngIf="file.ID" class="psdk-utility-button" (click)="deleteFile(file)">
39
+ <button id="delete-attachment" *ngIf="file.ID" class="psdk-utility-button" (click)="deleteFile(file, i)">
40
40
  <img class="psdk-utility-card-action-svg-icon" src="{{ deleteIcon }}" />
41
41
  </button>
42
42
  <div *ngIf="!file.ID">
@@ -45,7 +45,7 @@
45
45
  </button>
46
46
  <mat-menu #actionMenu="matMenu">
47
47
  <button mat-menu-item (click)="downloadFile(file.responseProps ? file.responseProps : {})">Download</button>
48
- <button mat-menu-item (click)="deleteFile(file)">Delete</button>
48
+ <button mat-menu-item (click)="deleteFile(file, i)">Delete</button>
49
49
  </mat-menu>
50
50
  </div>
51
51
  </div>
@@ -5,7 +5,7 @@
5
5
  }
6
6
 
7
7
  .psdk-modal-file-selector {
8
- border: 1px dashed var(--app-neutral-dark-color);
8
+ border: 1px dashed var(--mat-sys-neutral-variant20);
9
9
  width: 100%;
10
10
  padding: 0.3rem;
11
11
  text-align: center;
@@ -16,15 +16,13 @@
16
16
  display: inline;
17
17
  content: ' *';
18
18
  vertical-align: top;
19
- color: var(--app-neutral-dark-color);
20
19
  }
21
20
 
22
21
  .file-error {
23
- color: var(--app-error-light-color);
24
22
  }
25
23
 
26
24
  .psdk-modal-file-selector-error {
27
- border: 1px dashed var(--app-error-light-color);
25
+ border: 1px dashed var(--mat-sys-error);
28
26
  width: 100%;
29
27
  padding: 0.3rem;
30
28
  text-align: center;
@@ -47,14 +45,14 @@
47
45
  }
48
46
 
49
47
  .psdk-attachment-list {
50
- border: 1px solid var(--app-neutral-color);
48
+ border: 1px solid var(--mat-sys-secondary);
51
49
  }
52
50
 
53
51
  ::ng-deep .mat-mdc-form-field-infix {
54
52
  width: auto;
55
53
  }
56
54
  .psdk-modal-file-selector {
57
- border: 1px dashed var(--app-neutral-dark-color);
55
+ border: 1px dashed var(--mat-sys-neutral-variant20);
58
56
  padding: 0.5rem;
59
57
  text-align: center;
60
58
  position: relative;
@@ -64,15 +62,13 @@
64
62
  display: inline;
65
63
  content: ' *';
66
64
  vertical-align: top;
67
- color: var(--app-neutral-dark-color);
68
65
  }
69
66
 
70
67
  .file-error {
71
- color: var(--app-error-light-color);
72
68
  }
73
69
 
74
70
  .psdk-modal-file-selector-error {
75
- border: 1px dashed var(--app-error-light-color);
71
+ border: 1px dashed var(--mat-sys-error);
76
72
  padding: 0.5rem;
77
73
  text-align: center;
78
74
  position: relative;
@@ -94,7 +90,7 @@
94
90
  }
95
91
 
96
92
  .psdk-attachment-list {
97
- border: 1px solid var(--app-neutral-color);
93
+ border: 1px solid var(--mat-sys-secondary);
98
94
  }
99
95
 
100
96
  ::ng-deep .mat-mdc-form-field-infix {
@@ -130,6 +126,7 @@
130
126
 
131
127
  .psdk-attachment-card-svg-icon {
132
128
  width: 2.5rem;
129
+ filter: var(--app-primary-color-filter);
133
130
  }
134
131
 
135
132
  .psdk-utility-button {
@@ -142,6 +139,7 @@
142
139
  .psdk-utility-card-action-svg-icon {
143
140
  width: 1.4rem;
144
141
  display: inline-block;
142
+ filter: var(--app-primary-color-filter);
145
143
  }
146
144
 
147
145
  .file-div {
@@ -153,7 +151,7 @@
153
151
  }
154
152
 
155
153
  .file-div-error {
156
- border: 1px dashed var(--app-error-light-color);
154
+ border: 1px dashed var(--mat-sys-error);
157
155
  width: 100%;
158
156
  padding: 0.5rem;
159
157
  text-align: center;
@@ -169,5 +167,4 @@
169
167
  display: inline;
170
168
  content: ' *';
171
169
  vertical-align: top;
172
- color: var(--app-neutral-dark-color);
173
170
  }