@pega/react-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 (169) hide show
  1. package/lib/designSystemExtension/Banner/Banner.css +1 -1
  2. package/lib/designSystemExtension/Banner/Banner.tsx +10 -7
  3. package/lib/designSystemExtension/CaseSummaryFields/CaseSummaryFields.css +0 -1
  4. package/lib/designSystemExtension/CaseSummaryFields/CaseSummaryFields.tsx +53 -37
  5. package/lib/designSystemExtension/DetailsFields/DetailsFields.tsx +11 -13
  6. package/lib/designSystemExtension/FieldGroup/FieldGroup.tsx +8 -9
  7. package/lib/designSystemExtension/FieldGroupList/FieldGroupList.tsx +9 -9
  8. package/lib/designSystemExtension/FieldValueList/FieldValueList.tsx +8 -9
  9. package/lib/designSystemExtension/Operator/Operator.tsx +21 -19
  10. package/lib/designSystemExtension/Pulse/Pulse.tsx +1 -1
  11. package/lib/designSystemExtension/RichTextEditor/RichTextEditor.tsx +32 -4
  12. package/lib/designSystemExtension/WssQuickCreate/WssQuickCreate.css +7 -14
  13. package/lib/designSystemExtension/WssQuickCreate/WssQuickCreate.tsx +13 -2
  14. package/lib/field/AutoComplete/AutoComplete.tsx +1 -1
  15. package/lib/field/CancelAlert/CancelAlert.css +4 -4
  16. package/lib/field/CancelAlert/CancelAlert.tsx +7 -10
  17. package/lib/field/Checkbox/Checkbox.tsx +97 -4
  18. package/lib/field/Currency/Currency.tsx +10 -7
  19. package/lib/field/Currency/currency-utils.ts +1 -2
  20. package/lib/field/Date/Date.tsx +8 -8
  21. package/lib/field/DateTime/DateTime.tsx +16 -13
  22. package/lib/field/Decimal/Decimal.tsx +10 -7
  23. package/lib/field/Dropdown/Dropdown.tsx +30 -25
  24. package/lib/field/Email/Email.tsx +11 -13
  25. package/lib/field/Group/Group.tsx +10 -8
  26. package/lib/field/Integer/Integer.tsx +5 -7
  27. package/lib/field/Location/Location.css +4 -0
  28. package/lib/field/Location/Location.tsx +258 -0
  29. package/lib/field/Location/config-ext.json +8 -0
  30. package/lib/field/Location/index.tsx +1 -0
  31. package/lib/field/Multiselect/utils.ts +1 -1
  32. package/lib/field/ObjectReference/ObjectReference.tsx +235 -0
  33. package/lib/field/ObjectReference/index.tsx +1 -0
  34. package/lib/field/ObjectReference/utils.ts +111 -0
  35. package/lib/field/Percentage/Percentage.tsx +9 -9
  36. package/lib/field/Phone/Phone.tsx +7 -5
  37. package/lib/field/RadioButtons/RadioButtons.tsx +47 -5
  38. package/lib/field/RichText/RichText.css +79 -0
  39. package/lib/field/RichText/RichText.tsx +3 -1
  40. package/lib/field/ScalarList/ScalarList.tsx +2 -4
  41. package/lib/field/SelectableCard/SelectableCard.tsx +175 -0
  42. package/lib/field/SelectableCard/index.tsx +1 -0
  43. package/lib/field/SelectableCard/utils.tsx +223 -0
  44. package/lib/field/SemanticLink/SemanticLink.tsx +160 -28
  45. package/lib/field/SemanticLink/utils.ts +1 -1
  46. package/lib/field/TextArea/TextArea.tsx +5 -7
  47. package/lib/field/TextContent/TextContent.tsx +1 -2
  48. package/lib/field/TextInput/TextInput.tsx +5 -7
  49. package/lib/field/Time/Time.tsx +4 -8
  50. package/lib/field/URL/URL.tsx +5 -7
  51. package/lib/field/UserReference/UserReference.tsx +3 -6
  52. package/lib/helpers/attachmentShared.ts +6 -0
  53. package/lib/helpers/common-utils.ts +24 -2
  54. package/lib/helpers/data_page.ts +0 -1
  55. package/lib/helpers/field-group-utils.ts +1 -1
  56. package/lib/helpers/formatters/Currency.ts +20 -20
  57. package/lib/helpers/formatters/CurrencyMap.ts +0 -2
  58. package/lib/helpers/formatters/common.ts +2 -1
  59. package/lib/helpers/formatters/index.ts +2 -4
  60. package/lib/helpers/object-utils.ts +10 -0
  61. package/lib/helpers/simpleTableHelpers.ts +118 -6
  62. package/lib/helpers/utils.ts +8 -1
  63. package/lib/helpers/versionHelpers.ts +0 -1
  64. package/lib/infra/ActionButtons/ActionButtons.tsx +28 -21
  65. package/lib/infra/Assignment/Assignment.tsx +39 -36
  66. package/lib/infra/AssignmentCard/AssignmentCard.tsx +2 -2
  67. package/lib/infra/Containers/FlowContainer/FlowContainer.tsx +21 -113
  68. package/lib/infra/Containers/FlowContainer/helpers.ts +1 -5
  69. package/lib/infra/Containers/ModalViewContainer/ListViewActionButtons/ListViewActionButtons.tsx +4 -3
  70. package/lib/infra/Containers/ModalViewContainer/ModalViewContainer.tsx +7 -6
  71. package/lib/infra/Containers/SimpleView/helper.ts +1 -1
  72. package/lib/infra/Containers/ViewContainer/ViewContainer.tsx +4 -5
  73. package/lib/infra/Containers/container-helpers.ts +52 -0
  74. package/lib/infra/DashboardFilter/DashboardFilter.tsx +5 -9
  75. package/lib/infra/DashboardFilter/filterUtils.tsx +3 -6
  76. package/lib/infra/DeferLoad/DeferLoad.tsx +7 -9
  77. package/lib/infra/ErrorBoundary/ErrorBoundary.tsx +1 -3
  78. package/lib/infra/MultiStep/MultiStep.css +48 -70
  79. package/lib/infra/MultiStep/MultiStep.tsx +27 -58
  80. package/lib/infra/NavBar/NavBar.css +1 -1
  81. package/lib/infra/NavBar/NavBar.tsx +43 -32
  82. package/lib/infra/Reference/Reference.tsx +3 -4
  83. package/lib/infra/Region/Region.tsx +1 -1
  84. package/lib/infra/RootContainer/RootContainer.tsx +3 -4
  85. package/lib/infra/Stages/Stages.tsx +3 -4
  86. package/lib/infra/View/View.tsx +4 -3
  87. package/lib/template/AdvancedSearch/AdvancedSearch.tsx +86 -0
  88. package/lib/template/AdvancedSearch/SearchGroup/persistUtils.ts +52 -0
  89. package/lib/template/AdvancedSearch/SearchGroups/SearchGroups.tsx +244 -0
  90. package/lib/template/AdvancedSearch/SearchGroups/hooks.ts +37 -0
  91. package/lib/template/AdvancedSearch/SearchGroups/index.tsx +1 -0
  92. package/lib/template/AdvancedSearch/SearchGroups/utils.ts +29 -0
  93. package/lib/template/AdvancedSearch/TemplateContext.ts +11 -0
  94. package/lib/template/AdvancedSearch/config-ext.json +9 -0
  95. package/lib/template/AdvancedSearch/index.tsx +1 -0
  96. package/lib/template/AppShell/AppShell.css +1 -1
  97. package/lib/template/AppShell/AppShell.tsx +22 -23
  98. package/lib/template/BannerPage/BannerPage.tsx +2 -2
  99. package/lib/template/CaseSummary/CaseSummary.tsx +28 -41
  100. package/lib/template/CaseView/CaseView.tsx +32 -38
  101. package/lib/template/CaseViewActionsMenu/CaseViewActionsMenu.tsx +1 -1
  102. package/lib/template/Confirmation/Confirmation.tsx +3 -4
  103. package/lib/template/DataReference/DataReference.tsx +312 -106
  104. package/lib/template/DataReference/DataReferenceAdvancedSearchContext.ts +10 -0
  105. package/lib/template/DataReference/SearchForm.tsx +149 -0
  106. package/lib/template/DataReference/utils.ts +90 -0
  107. package/lib/template/DefaultForm/DefaultForm.tsx +3 -3
  108. package/lib/template/DefaultForm/utils/index.ts +1 -3
  109. package/lib/template/DefaultPage/DefaultPage.tsx +108 -0
  110. package/lib/template/DefaultPage/index.tsx +1 -0
  111. package/lib/template/Details/Details/Details.tsx +11 -11
  112. package/lib/template/Details/DetailsSubTabs/DetailsSubTabs.tsx +2 -2
  113. package/lib/template/Details/DetailsThreeColumn/DetailsThreeColumn.tsx +11 -11
  114. package/lib/template/Details/DetailsTwoColumn/DetailsTwoColumn.tsx +11 -11
  115. package/lib/template/Details/DynamicTabs/DynamicTabs.tsx +1 -2
  116. package/lib/template/FieldGroupTemplate/FieldGroupTemplate.tsx +2 -5
  117. package/lib/template/InlineDashboard/InlineDashboard.tsx +14 -16
  118. package/lib/template/InlineDashboardPage/InlineDashboardPage.tsx +2 -2
  119. package/lib/template/ListPage/ListPage.tsx +1 -1
  120. package/lib/template/ListView/ListView.tsx +285 -204
  121. package/lib/template/ListView/hooks.ts +1 -5
  122. package/lib/template/ListView/utils.ts +38 -6
  123. package/lib/template/MultiReferenceReadOnly/MultiReferenceReadOnly.tsx +1 -1
  124. package/lib/template/NarrowWide/NarrowWide/NarrowWide.tsx +5 -5
  125. package/lib/template/NarrowWide/NarrowWideDetails/NarrowWideDetails.tsx +11 -11
  126. package/lib/template/NarrowWide/NarrowWideForm/NarrowWideForm.tsx +2 -2
  127. package/lib/template/NarrowWide/NarrowWidePage/NarrowWidePage.tsx +2 -2
  128. package/lib/template/OneColumn/OneColumn/OneColumn.tsx +7 -7
  129. package/lib/template/OneColumn/OneColumnPage/OneColumnPage.tsx +1 -1
  130. package/lib/template/OneColumn/OneColumnTab/OneColumnTab.tsx +2 -2
  131. package/lib/template/PromotedFilters/PromotedFilters.tsx +1 -3
  132. package/lib/template/SelfServiceCaseView/SelfServiceCaseView.tsx +145 -0
  133. package/lib/template/SelfServiceCaseView/index.tsx +1 -0
  134. package/lib/template/SimpleTable/SimpleTable/SimpleTable.tsx +2 -5
  135. package/lib/template/SimpleTable/SimpleTableManual/SimpleTableManual.tsx +99 -84
  136. package/lib/template/SimpleTable/SimpleTableSelect/SimpleTableSelect.tsx +3 -5
  137. package/lib/template/SingleReferenceReadOnly/SingleReferenceReadOnly.tsx +10 -2
  138. package/lib/template/SubTabs/SubTabs.tsx +2 -2
  139. package/lib/template/SubTabs/tabUtils.ts +118 -1
  140. package/lib/template/TwoColumn/TwoColumn/TwoColumn.tsx +9 -10
  141. package/lib/template/TwoColumn/TwoColumnPage/TwoColumnPage.tsx +1 -1
  142. package/lib/template/TwoColumn/TwoColumnTab/TwoColumnTab.tsx +9 -10
  143. package/lib/template/WideNarrow/WideNarrow/WideNarrow.tsx +5 -5
  144. package/lib/template/WideNarrow/WideNarrowDetails/WideNarrowDetails.tsx +11 -11
  145. package/lib/template/WideNarrow/WideNarrowForm/WideNarrowForm.tsx +2 -2
  146. package/lib/template/WideNarrow/WideNarrowPage/WideNarrowPage.tsx +2 -2
  147. package/lib/template/WssNavBar/WssNavBar.css +1 -1
  148. package/lib/template/WssNavBar/WssNavBar.tsx +6 -6
  149. package/lib/template/utils.tsx +58 -0
  150. package/lib/widget/AppAnnouncement/AppAnnouncement.tsx +1 -1
  151. package/lib/widget/Attachment/Attachment.css +7 -8
  152. package/lib/widget/Attachment/Attachment.tsx +304 -231
  153. package/lib/widget/Attachment/Attachment.types.ts +96 -0
  154. package/lib/widget/Attachment/AttachmentUtils.ts +316 -0
  155. package/lib/widget/CaseHistory/CaseHistory.tsx +5 -5
  156. package/lib/widget/FileUtility/ActionButtonsForFileUtil/ActionButtonsForFileUtil.css +0 -14
  157. package/lib/widget/FileUtility/ActionButtonsForFileUtil/ActionButtonsForFileUtil.tsx +3 -3
  158. package/lib/widget/FileUtility/FileUtility/FileUtility.css +7 -6
  159. package/lib/widget/FileUtility/FileUtility/FileUtility.tsx +30 -23
  160. package/lib/widget/Followers/Followers.tsx +2 -4
  161. package/lib/widget/QuickCreate/QuickCreate.tsx +1 -3
  162. package/lib/widget/SummaryItem/SummaryItem.css +9 -11
  163. package/lib/widget/SummaryItem/SummaryItem.tsx +3 -3
  164. package/lib/widget/SummaryList/SummaryList.tsx +1 -1
  165. package/lib/widget/ToDo/ToDo.css +1 -13
  166. package/lib/widget/ToDo/ToDo.tsx +38 -37
  167. package/package.json +1 -1
  168. package/lib/helpers/attachmentHelpers.ts +0 -76
  169. package/lib/infra/Containers/helpers.ts +0 -6
@@ -17,7 +17,7 @@
17
17
 
18
18
  .psdk-current-svg-icon {
19
19
  width: 1rem;
20
- filter: var(--app-primary-color-filter);
20
+ filter: var(--svg-color);
21
21
  }
22
22
 
23
23
  .psdk-not-current-svg-icon {
@@ -40,7 +40,7 @@ mat-horizontal-stepper {
40
40
 
41
41
  .psdk-sub-step-not-current {
42
42
  padding-left: 0.625rem;
43
- color: rgba(0, 0, 0, 0.54);
43
+ color: var(--step-label-color);
44
44
  }
45
45
 
46
46
  .psdk-flow-container-top {
@@ -79,36 +79,37 @@ mat-horizontal-stepper {
79
79
 
80
80
  .psdk-vertical-step-icon {
81
81
  margin-right: 12px;
82
- background-color: var(--app-neutral-color);
83
- color: #fff;
84
82
  border-radius: 50%;
85
83
  height: 24px;
86
84
  width: 24px;
87
- flex-shrink: 0;
88
85
  position: relative;
89
86
  }
90
87
 
88
+ .success .psdk-vertical-step-icon {
89
+ background-color: var(--stepper-completed-bg-color);
90
+ color: var(--app-text-color);
91
+ }
92
+
93
+ .future .psdk-vertical-step-icon {
94
+ color: var(--app-neutral-color);
95
+ border: 1px solid var(--app-neutral-color);
96
+ }
97
+
98
+ .current .psdk-vertical-step-icon {
99
+ background-color: var(--app-primary-color);
100
+ color: var(--app-text-color);
101
+ flex-shrink: 0;
102
+ }
103
+
91
104
  .psdk-vertical-step-icon-content {
92
105
  position: absolute;
93
106
  top: 50%;
94
107
  left: 50%;
95
108
  transform: translate(-50%, -50%);
96
- color: #fff;
97
- }
98
-
99
- .psdk-vertical-step-icon-selected {
100
- margin-right: 12px;
101
- background-color: var(--app-primary-color);
102
- color: #fff;
103
- border-radius: 50%;
104
- height: 24px;
105
- width: 24px;
106
- flex-shrink: 0;
107
- position: relative;
108
109
  }
109
110
 
110
111
  .psdk-vertical-step-label {
111
- color: rgba(0, 0, 0, 0.54);
112
+ color: var(--step-label-color);
112
113
  display: inline-block;
113
114
  white-space: nowrap;
114
115
  overflow: hidden;
@@ -119,16 +120,8 @@ mat-horizontal-stepper {
119
120
  font-weight: 500;
120
121
  }
121
122
 
122
- .psdk-vertical-step-label-selected {
123
- color: rgba(0, 0, 0, 0.87);
124
- display: inline-block;
125
- white-space: nowrap;
126
- overflow: hidden;
127
- text-overflow: ellipsis;
128
- min-width: 50px;
129
- vertical-align: middle;
130
- font-size: 14px;
131
- font-weight: 500;
123
+ .current .psdk-vertical-step-label {
124
+ color: var(--text-primary-color);
132
125
  }
133
126
 
134
127
  .psdk-vertical-step-body {
@@ -150,7 +143,7 @@ mat-horizontal-stepper {
150
143
  border-left-style: solid;
151
144
  top: -16px;
152
145
  bottom: -16px;
153
- border-left-color: rgba(0, 0, 0, 0.12);
146
+ border-left-color: var(--app-neutral-color);
154
147
  }
155
148
 
156
149
  .psdk-horizontal-stepper {
@@ -162,33 +155,39 @@ mat-horizontal-stepper {
162
155
  white-space: nowrap;
163
156
  display: flex;
164
157
  align-items: center;
165
- text-align: left;
166
158
  }
167
159
 
168
160
  .psdk-horizontal-step-header {
169
- overflow: hidden;
170
161
  outline: none;
171
162
  cursor: pointer;
172
163
  position: relative;
173
164
  box-sizing: content-box;
174
165
  display: flex;
175
166
  height: 72px;
176
- overflow: hidden;
177
167
  align-items: center;
178
- padding: 0 24px;
179
168
  }
180
169
 
181
170
  .psdk-horizontal-step-icon {
182
- background-color: var(--app-neutral-color);
183
- color: #fff;
171
+ color: white;
184
172
  border-radius: 50%;
185
173
  height: 24px;
186
174
  width: 24px;
187
- flex-shrink: 0;
188
175
  position: relative;
189
- display: block;
190
- margin-right: 8px;
191
- flex: none;
176
+ }
177
+
178
+ .future .psdk-horizontal-step-icon {
179
+ color: var(--app-neutral-color);
180
+ border: 1px solid var(--app-neutral-color);
181
+ }
182
+
183
+ .current .psdk-horizontal-step-icon {
184
+ color: var(--app-text-color);
185
+ background-color: var(--app-primary-color);
186
+ }
187
+
188
+ .success .psdk-horizontal-step-icon {
189
+ color: var(--app-text-color);
190
+ background-color: var(--stepper-completed-bg-color);
192
191
  }
193
192
 
194
193
  .psdk-horizontal-step-icon-content {
@@ -199,45 +198,24 @@ mat-horizontal-stepper {
199
198
  transform: translate(-50%, -50%);
200
199
  }
201
200
 
202
- .psdk-horizontal-step-icon-selected {
203
- background-color: var(--app-primary-color);
204
- color: #fff;
205
- border-radius: 50%;
206
- height: 24px;
207
- width: 24px;
208
- flex-shrink: 0;
209
- position: relative;
210
- display: block;
211
- margin-right: 8px;
212
- flex: none;
213
- }
214
-
215
201
  .psdk-horizontal-step-label {
216
- color: rgba(0, 0, 0, 0.54);
217
- display: inline-block;
218
- min-width: 50px;
219
- vertical-align: middle;
202
+ color: var(--text-secondary-color);
220
203
  font-size: 14px;
221
204
  font-weight: 500;
222
205
  white-space: initial;
223
206
  }
224
207
 
225
- .psdk-horizontal-step-label-selected {
226
- color: rgba(0, 0, 0, 0.87);
227
- display: inline-block;
228
- min-width: 50px;
229
- vertical-align: middle;
230
- font-size: 14px;
231
- font-weight: 500;
232
- white-space: initial;
208
+ .current .psdk-horizontal-step-label {
209
+ color: var(--text-primary-color);
210
+ margin-left: 8px;
233
211
  }
234
212
 
235
- .psdk-horizontal-step-line {
236
- border-top-color: rgba(0, 0, 0, 0.12);
237
- border-top-width: 1px;
238
- border-top-style: solid;
213
+ .flex-auto {
239
214
  flex: auto;
240
- height: 0;
241
- margin: 0 -16px;
215
+ }
216
+
217
+ .psdk-horizontal-step-line {
218
+ border-top: 1px solid var(--app-neutral-color);
242
219
  min-width: 32px;
220
+ margin: 0px 8px;
243
221
  }
@@ -1,7 +1,7 @@
1
- import React, { PropsWithChildren } from 'react';
1
+ import React, { type PropsWithChildren } from 'react';
2
2
 
3
3
  import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
4
- import { PConnProps } from '@pega/react-sdk-components/lib/types/PConnProps';
4
+ import type { PConnProps } from '@pega/react-sdk-components/lib/types/PConnProps';
5
5
 
6
6
  import './MultiStep.css';
7
7
 
@@ -27,56 +27,27 @@ export default function MultiStep(props: PropsWithChildren<MultiStepProps>) {
27
27
  currentStep = arNavigationSteps[lastActiveStepIndex >= 0 ? lastActiveStepIndex : 0];
28
28
  }
29
29
 
30
- // const svgCurrent = Utils.getImageSrc("circle-solid", Utils.getSDKStaticConentUrl());
31
- // const svgNotCurrent = Utils.getImageSrc("circle-solid", Utils.getSDKStaticConentUrl());
32
-
33
- function _getVIconClass(status): string {
34
- if (status === 'current') {
35
- return 'psdk-vertical-step-icon-selected';
36
- }
37
-
38
- return 'psdk-vertical-step-icon';
39
- }
40
-
41
- function _getVLabelClass(status): string {
42
- if (status === 'current') {
43
- return 'psdk-vertical-step-label-selected';
44
- }
45
-
46
- return 'psdk-vertical-step-label';
47
- }
48
-
49
30
  function _getVBodyClass(index: number): string {
50
- if (index < arNavigationSteps.length - 1) {
51
- return 'psdk-vertical-step-body psdk-vertical-step-line';
52
- }
31
+ const baseClass = 'psdk-vertical-step-body';
32
+ const isNotLastStep = index < arNavigationSteps.length - 1;
53
33
 
54
- return 'psdk-vertical-step-body';
34
+ return isNotLastStep ? `${baseClass} psdk-vertical-step-line` : baseClass;
55
35
  }
56
36
 
57
- function _getHIconClass(step): string {
58
- if (step.ID === currentStep?.ID) {
59
- return 'psdk-horizontal-step-icon-selected';
60
- }
37
+ function _getAutoFlexClass(currentStep): string {
38
+ const currentStepIndex = arNavigationSteps.findIndex(step => step.ID === currentStep?.ID);
39
+ const totalSteps = arNavigationSteps.length;
40
+ const lastStep = arNavigationSteps[totalSteps - 1];
61
41
 
62
- return 'psdk-horizontal-step-icon';
63
- }
64
-
65
- function _getHLabelClass(step): string {
66
- if (step.ID === currentStep?.ID) {
67
- return 'psdk-horizontal-step-label-selected';
68
- }
42
+ // Apply flex-auto class if current step is active OR if current step is second-to-last and the last step is active
43
+ const isCurrentStepActive = currentStep.visited_status === 'current';
44
+ const isSecondToLastWithActiveLastStep = currentStepIndex === totalSteps - 2 && lastStep?.visited_status === 'current';
69
45
 
70
- return 'psdk-horizontal-step-label';
46
+ return isCurrentStepActive || isSecondToLastWithActiveLastStep ? 'flex-auto' : '';
71
47
  }
72
48
 
73
- function _showHLine(index: number): boolean {
74
- // eslint-disable-next-line sonarjs/prefer-single-boolean-return
75
- if (index < arNavigationSteps.length - 1) {
76
- return true;
77
- }
78
-
79
- return false;
49
+ function isLastStep(index: number): boolean {
50
+ return index === arNavigationSteps.length - 1;
80
51
  }
81
52
 
82
53
  function buttonPress(sAction: string, sButtonType: string) {
@@ -91,13 +62,13 @@ export default function MultiStep(props: PropsWithChildren<MultiStepProps>) {
91
62
  return (
92
63
  <React.Fragment key={mainStep.actionID}>
93
64
  <div className='psdk-vertical-step'>
94
- <div className='psdk-vertical-step-header'>
95
- <div className={_getVIconClass(mainStep.visited_status)}>
65
+ <div className={`psdk-vertical-step-header ${mainStep.visited_status}`}>
66
+ <div className={`psdk-vertical-step-icon`}>
96
67
  <div className='psdk-vertical-step-icon-content'>
97
68
  <span>{index + 1}</span>
98
69
  </div>
99
70
  </div>
100
- <div className={_getVLabelClass(mainStep.visited_status)}>{mainStep.name}</div>
71
+ <div className='psdk-vertical-step-label'>{mainStep.visited_status === 'current' && mainStep.name}</div>
101
72
  </div>
102
73
  <div className={_getVBodyClass(index)}>
103
74
  {mainStep?.steps && (
@@ -127,9 +98,11 @@ export default function MultiStep(props: PropsWithChildren<MultiStepProps>) {
127
98
  </ul>
128
99
  )}
129
100
  {!mainStep?.steps && mainStep.visited_status === 'current' && (
130
- <AssignmentCard getPConnect={getPConnect} itemKey={itemKey} actionButtons={actionButtons} onButtonPress={buttonPress}>
131
- {children}
132
- </AssignmentCard>
101
+ <div style={{ paddingLeft: 20 }}>
102
+ <AssignmentCard getPConnect={getPConnect} itemKey={itemKey} actionButtons={actionButtons} onButtonPress={buttonPress}>
103
+ {children}
104
+ </AssignmentCard>
105
+ </div>
133
106
  )}
134
107
  </div>
135
108
  </div>
@@ -143,19 +116,15 @@ export default function MultiStep(props: PropsWithChildren<MultiStepProps>) {
143
116
  {arNavigationSteps.map((mainStep, index) => {
144
117
  return (
145
118
  <React.Fragment key={mainStep.actionID}>
146
- <div className='psdk-horizontal-step-header'>
147
- <div className={_getHIconClass(mainStep)}>
119
+ <div className={`psdk-horizontal-step-header ${mainStep.visited_status}`}>
120
+ <div className='psdk-horizontal-step-icon'>
148
121
  <div className='psdk-horizontal-step-icon-content'>
149
122
  <span>{index + 1}</span>
150
123
  </div>
151
124
  </div>
152
- <div className={_getHLabelClass(mainStep)}>
153
- <div className='psdk-horizontal-step-text-label' id='selected-label'>
154
- {mainStep.name}
155
- </div>
156
- </div>
125
+ <div className='psdk-horizontal-step-label'>{mainStep.visited_status === 'current' && mainStep.name}</div>
157
126
  </div>
158
- {_showHLine(index) && <div className='psdk-horizontal-step-line' />}
127
+ {!isLastStep(index) && <div className={`psdk-horizontal-step-line ${_getAutoFlexClass(mainStep)}`} />}
159
128
  </React.Fragment>
160
129
  );
161
130
  })}
@@ -154,7 +154,7 @@
154
154
  text-align: center;
155
155
  display: inline-flex;
156
156
  background: var(--app-neutral-color);
157
- color: white;
157
+ color: var(--app-text-color);
158
158
  font-weight: normal;
159
159
  font-size: 1rem;
160
160
  }
@@ -7,9 +7,9 @@ import {
7
7
  Drawer,
8
8
  List,
9
9
  ListItem,
10
+ ListItemButton,
10
11
  ListItemIcon,
11
12
  ListItemText,
12
- ListItemSecondaryAction,
13
13
  Collapse,
14
14
  Divider,
15
15
  IconButton,
@@ -36,13 +36,13 @@ import { logout } from '@pega/auth/lib/sdk-auth-manager';
36
36
 
37
37
  import { useNavBar } from '@pega/react-sdk-components/lib/components/helpers/reactContextHelpers';
38
38
  import { Utils } from '@pega/react-sdk-components/lib/components/helpers/utils';
39
- import { PConnProps } from '@pega/react-sdk-components/lib/types/PConnProps';
39
+ import type { PConnProps } from '@pega/react-sdk-components/lib/types/PConnProps';
40
40
 
41
41
  import './NavBar.css';
42
42
 
43
43
  interface NavBarProps extends PConnProps {
44
44
  // If any, enter additional props that only exist on this component
45
- // eslint-disable-next-line react/no-unused-prop-types
45
+
46
46
  appName?: string;
47
47
  pages?: any[];
48
48
  caseTypes: any[];
@@ -93,7 +93,8 @@ const useStyles = makeStyles(theme => ({
93
93
  },
94
94
  appListLogo: {
95
95
  marginRight: theme.spacing(2),
96
- width: '3.6rem'
96
+ width: '3.6rem',
97
+ filter: 'var(--svg-color)'
97
98
  },
98
99
  appListIcon: {
99
100
  color: theme.palette.getContrastText(theme.palette.primary.light)
@@ -125,7 +126,6 @@ export default function NavBar(props: NavBarProps) {
125
126
  const [bShowOperatorButtons, setBShowOperatorButtons] = useState(false);
126
127
  const [anchorEl, setAnchorEl] = useState(null);
127
128
  const localeUtils = PCore.getLocaleUtils();
128
- const localeReference = pConn.getValue('.pyLocaleReference');
129
129
 
130
130
  const localizedVal = PCore.getLocaleUtils().getLocaleValue;
131
131
  const localeCategory = 'AppShell';
@@ -133,9 +133,19 @@ export default function NavBar(props: NavBarProps) {
133
133
  const portalLogoImage = Utils.getIconPath(Utils.getSDKStaticConentUrl()).concat('pzpega-logo-mark.svg');
134
134
  const portalOperator = PCore.getEnvironmentInfo().getOperatorName();
135
135
  const portalApp = PCore.getEnvironmentInfo().getApplicationLabel();
136
-
136
+ // @ts-ignore
137
+ const localeReference = PCore.getLocaleUtils().getPortalLocaleReference() || pConn.getValue('.pyLocaleReference');
137
138
  useEffect(() => {
138
- setNavPages(JSON.parse(JSON.stringify(pages)));
139
+ const updatedPages = pages.map((page: any) => {
140
+ const destinationObject: any = {};
141
+ pConn.resolveConfigProps(
142
+ { defaultHeading: page.pyDefaultHeading || page.pyLabel, localeReference: page.pyLocalizationReference },
143
+ destinationObject
144
+ );
145
+ const name = localeUtils.getLocaleValue(destinationObject.defaultHeading, '', destinationObject.localeReference || localeReference);
146
+ return { ...page, name };
147
+ });
148
+ setNavPages(updatedPages);
139
149
  }, [pages]);
140
150
 
141
151
  function navPanelButtonClick(oPageData: any) {
@@ -145,7 +155,6 @@ export default function NavBar(props: NavBarProps) {
145
155
  .getActionsApi()
146
156
  .showPage(pyRuleName, pyClassName)
147
157
  .then(() => {
148
- // eslint-disable-next-line no-console
149
158
  console.log(`${localizedVal('showPage completed', localeCategory)}`);
150
159
  });
151
160
  }
@@ -161,7 +170,6 @@ export default function NavBar(props: NavBarProps) {
161
170
  .getActionsApi()
162
171
  .createWork(sCaseType, actionInfo)
163
172
  .then(() => {
164
- // eslint-disable-next-line no-console
165
173
  console.log(`${localizedVal('createWork completed', localeCategory)}`);
166
174
  });
167
175
  }
@@ -199,7 +207,14 @@ export default function NavBar(props: NavBarProps) {
199
207
  >
200
208
  {open ? (
201
209
  <List className={classes.appListItem}>
202
- <ListItem onClick={handleDrawerOpen}>
210
+ <ListItem
211
+ onClick={handleDrawerOpen}
212
+ secondaryAction={
213
+ <IconButton edge='end' onClick={handleDrawerOpen} size='large'>
214
+ <ChevronLeftIcon className={classes.appListIcon} />
215
+ </IconButton>
216
+ }
217
+ >
203
218
  <ListItemIcon>
204
219
  <img src={portalLogoImage} className={classes.appListLogo} />
205
220
  </ListItemIcon>
@@ -210,11 +225,6 @@ export default function NavBar(props: NavBarProps) {
210
225
  </Typography>
211
226
  }
212
227
  />
213
- <ListItemSecondaryAction>
214
- <IconButton edge='end' onClick={handleDrawerOpen} size='large'>
215
- <ChevronLeftIcon className={classes.appListIcon} />
216
- </IconButton>
217
- </ListItemSecondaryAction>
218
228
  </ListItem>
219
229
  </List>
220
230
  ) : (
@@ -223,17 +233,16 @@ export default function NavBar(props: NavBarProps) {
223
233
  </div>
224
234
  )}
225
235
  <List>
226
- <ListItem button onClick={handleCaseItemClick}>
236
+ <ListItemButton onClick={handleCaseItemClick}>
227
237
  <ListItemIcon>{bShowCaseTypes && open ? <ClearOutlinedIcon fontSize='large' /> : <AddIcon fontSize='large' />}</ListItemIcon>
228
238
  <ListItemText primary='Create' />
229
239
  {bShowCaseTypes ? <ExpandLess /> : <ExpandMore />}
230
- </ListItem>
240
+ </ListItemButton>
231
241
  </List>
232
242
  <Collapse in={bShowCaseTypes && open} timeout='auto' unmountOnExit className='scrollable'>
233
243
  <List component='div' disablePadding>
234
244
  {caseTypes.map(caseType => (
235
- <ListItem
236
- button
245
+ <ListItemButton
237
246
  className={classes.nested}
238
247
  onClick={() => navPanelCreateCaseType(caseType.pyClassName, caseType.pyFlowType)}
239
248
  key={caseType.pyLabel}
@@ -241,34 +250,36 @@ export default function NavBar(props: NavBarProps) {
241
250
  <ListItemIcon>
242
251
  <WorkOutlineIcon fontSize='large' />
243
252
  </ListItemIcon>
244
- <ListItemText primary={localeUtils.getLocaleValue(caseType.pyLabel, '', localeReference)} />
245
- </ListItem>
253
+ <ListItemText primary={localeUtils.getLocaleValue(caseType.pyLabel, '', localeUtils.getCaseLocaleReference(caseType.pyClassName))} />
254
+ </ListItemButton>
246
255
  ))}
247
256
  </List>
248
257
  </Collapse>
249
258
  <List>
250
259
  {navPages.map(page => (
251
- <ListItem button onClick={() => navPanelButtonClick(page)} key={page.pyLabel}>
260
+ <ListItemButton onClick={() => navPanelButtonClick(page)} key={page.pyLabel}>
252
261
  <ListItemIcon>{iconMap[page.pxPageViewIcon]}</ListItemIcon>
253
- <ListItemText primary={localeUtils.getLocaleValue(page.pyLabel, '', localeReference)} />
254
- </ListItem>
262
+ <ListItemText primary={page.name} />
263
+ </ListItemButton>
255
264
  ))}
256
265
  </List>
257
266
  <Divider />
258
267
  <List className='marginTopAuto'>
259
268
  <>
260
- <ListItem onClick={navPanelOperatorButtonClick}>
269
+ <ListItem
270
+ onClick={navPanelOperatorButtonClick}
271
+ secondaryAction={
272
+ open ? (
273
+ <IconButton edge='end' onClick={navPanelOperatorButtonClick} size='large'>
274
+ <ChevronRightIcon />
275
+ </IconButton>
276
+ ) : null
277
+ }
278
+ >
261
279
  <ListItemIcon id='person-icon'>
262
280
  <PersonOutlineIcon fontSize='large' />
263
281
  </ListItemIcon>
264
282
  <ListItemText primary={portalOperator} />
265
- {open && (
266
- <ListItemSecondaryAction>
267
- <IconButton edge='end' onClick={navPanelOperatorButtonClick} size='large'>
268
- <ChevronRightIcon />
269
- </IconButton>
270
- </ListItemSecondaryAction>
271
- )}
272
283
  </ListItem>
273
284
  <Menu
274
285
  anchorEl={anchorEl}
@@ -1,4 +1,4 @@
1
- import { PConnProps } from '@pega/react-sdk-components/lib/types/PConnProps';
1
+ import type { PConnProps } from '@pega/react-sdk-components/lib/types/PConnProps';
2
2
 
3
3
  interface ReferenceProps extends PConnProps {
4
4
  // If any, enter additional props that only exist on this component
@@ -12,8 +12,7 @@ export default function Reference(props: ReferenceProps) {
12
12
  const { visibility = true, context = '', getPConnect, readOnly = false, displayMode = '' } = props;
13
13
 
14
14
  const pConnect = getPConnect();
15
- // @ts-ignore - Property 'getComponentConfig' is private and only accessible within class 'C11nEnv'.
16
- const referenceConfig = { ...pConnect.getComponentConfig() } || {};
15
+ const referenceConfig = { ...pConnect.getComponentConfig() };
17
16
 
18
17
  delete referenceConfig?.name;
19
18
  delete referenceConfig?.type;
@@ -34,7 +33,7 @@ export default function Reference(props: ReferenceProps) {
34
33
  }
35
34
  };
36
35
 
37
- // @ts-ignore - Argument of type 'null' is not assignable to parameter of type 'string'.
36
+ // @ts-expect-error - Argument of type 'null' is not assignable to parameter of type 'string'.
38
37
  const viewComponent: any = pConnect.createComponent(viewObject, null, null, {
39
38
  pageReference: context && context.startsWith('@CLASS') ? '' : context
40
39
  });
@@ -1,4 +1,4 @@
1
- import { PropsWithChildren } from 'react';
1
+ import type { PropsWithChildren } from 'react';
2
2
 
3
3
  // Region does NOT have getPConnect. So, no need to extend from PConnProps
4
4
  interface RegionProps {
@@ -1,11 +1,11 @@
1
- import { Children, createElement, PropsWithChildren, useContext, useEffect, useMemo, useRef, useState } from 'react';
1
+ import { Children, createElement, type PropsWithChildren, useContext, useEffect, useMemo, useRef, useState } from 'react';
2
2
  import { Box, CircularProgress } from '@mui/material';
3
3
 
4
4
  import createPConnectComponent from '@pega/react-sdk-components/lib/bridge/react_pconnect';
5
5
  import StoreContext from '@pega/react-sdk-components/lib/bridge/Context/StoreContext';
6
6
  import { LazyMap as LazyComponentMap } from '@pega/react-sdk-components/lib/components_map';
7
7
  import { isEmptyObject } from '@pega/react-sdk-components/lib/components/helpers/common-utils';
8
- import { PConnProps } from '@pega/react-sdk-components/lib/types/PConnProps';
8
+ import type { PConnProps } from '@pega/react-sdk-components/lib/types/PConnProps';
9
9
 
10
10
  interface RootContainerProps extends PConnProps {
11
11
  // If any, enter additional props that only exist on this component
@@ -179,7 +179,7 @@ export default function RootContainer(props: PropsWithChildren<RootContainerProp
179
179
  }
180
180
  };
181
181
 
182
- if (!PCore.isDeepEqual(currentRootConfig, prevRootConfig)) {
182
+ if (prevRootConfig === null || !PCore.isDeepEqual(currentRootConfig, prevRootConfig)) {
183
183
  rootView.current = createElement(createPConnectComponent(), PCore.createPConnect(currentRootConfig)) as any;
184
184
  }
185
185
 
@@ -196,7 +196,6 @@ export default function RootContainer(props: PropsWithChildren<RootContainerProp
196
196
  );
197
197
  }
198
198
  if (renderingMode === 'noPortal') {
199
- // eslint-disable-next-line no-console
200
199
  console.log(`${localizedVal('RootContainer rendering in noPortal mode', localeCategory)}`);
201
200
 
202
201
  const theChildren = pConn.getChildren() as any[];
@@ -3,7 +3,7 @@ import DoubleArrowIcon from '@mui/icons-material/DoubleArrow';
3
3
  import DoneIcon from '@mui/icons-material/Done';
4
4
  import makeStyles from '@mui/styles/makeStyles';
5
5
 
6
- import { PConnProps } from '@pega/react-sdk-components/lib/types/PConnProps';
6
+ import type { PConnProps } from '@pega/react-sdk-components/lib/types/PConnProps';
7
7
 
8
8
  interface StagesProps extends PConnProps {
9
9
  // If any, enter additional props that only exist on this component
@@ -57,14 +57,13 @@ export default function Stages(props: StagesProps) {
57
57
 
58
58
  const { getPConnect, stages } = props;
59
59
  const pConn = getPConnect();
60
- const key = `${pConn.getCaseInfo().getClassName()}!CASE!${pConn.getCaseInfo().getName()}`.toUpperCase();
61
-
60
+ const localizationService = pConn.getLocalizationService();
62
61
  const filteredStages = getFilteredStages(stages);
63
62
  const currentStageID = pConn.getValue(PCore.getConstants().CASE_INFO.STAGEID, ''); // 2nd arg empty string until typedef allows optional
64
63
  const stagesObj = filteredStages.map((stage, index, arr) => {
65
64
  const theID = stage.ID || stage.id;
66
65
  return {
67
- name: PCore.getLocaleUtils().getLocaleValue(stage.name, undefined, key),
66
+ name: localizationService.getLocalizedText(stage.name),
68
67
  id: theID,
69
68
  complete: stage.visited_status === 'completed',
70
69
  current: theID === currentStageID,
@@ -1,8 +1,8 @@
1
- import { PropsWithChildren, useEffect } from 'react';
1
+ import { type PropsWithChildren, useEffect } from 'react';
2
2
 
3
3
  import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
4
4
  import { getAllFields } from '@pega/react-sdk-components/lib/components/helpers/template-utils';
5
- import { PConnProps } from '@pega/react-sdk-components/lib/types/PConnProps';
5
+ import type { PConnProps } from '@pega/react-sdk-components/lib/types/PConnProps';
6
6
 
7
7
  // Need to import any templates that we might render
8
8
 
@@ -38,7 +38,8 @@ const NO_HEADER_TEMPLATES = [
38
38
  'WideNarrowDetails',
39
39
  'Confirmation',
40
40
  'DynamicTabs',
41
- 'DetailsSubTabs'
41
+ 'DetailsSubTabs',
42
+ 'ListView'
42
43
  ];
43
44
 
44
45
  export default function View(props: PropsWithChildren<ViewProps>) {