@pega/angular-sdk-overrides 25.1.12 → 26.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 (168) hide show
  1. package/lib/designSystemExtension/alert/alert.component.html +4 -1
  2. package/lib/designSystemExtension/alert/alert.component.scss +9 -10
  3. package/lib/designSystemExtension/alert/alert.component.ts +6 -2
  4. package/lib/designSystemExtension/field-group/field-group.component.ts +11 -3
  5. package/lib/designSystemExtension/material-case-summary/material-case-summary.component.html +51 -36
  6. package/lib/designSystemExtension/material-case-summary/material-case-summary.component.scss +12 -0
  7. package/lib/designSystemExtension/material-case-summary/material-case-summary.component.ts +11 -0
  8. package/lib/designSystemExtension/operator/operator.component.html +5 -3
  9. package/lib/designSystemExtension/operator/operator.component.scss +7 -0
  10. package/lib/designSystemExtension/operator/operator.component.ts +2 -1
  11. package/lib/designSystemExtension/rich-text-editor/rich-text-editor.component.html +100 -10
  12. package/lib/designSystemExtension/rich-text-editor/rich-text-editor.component.scss +141 -1
  13. package/lib/designSystemExtension/rich-text-editor/rich-text-editor.component.spec.ts +1 -1
  14. package/lib/designSystemExtension/rich-text-editor/rich-text-editor.component.ts +240 -72
  15. package/lib/field/auto-complete/auto-complete.component.html +46 -5
  16. package/lib/field/auto-complete/auto-complete.component.scss +92 -0
  17. package/lib/field/auto-complete/auto-complete.component.ts +350 -23
  18. package/lib/field/cancel-alert/cancel-alert.component.ts +38 -15
  19. package/lib/field/check-box/check-box.component.html +8 -6
  20. package/lib/field/check-box/check-box.component.ts +9 -2
  21. package/lib/field/currency/currency.component.html +2 -1
  22. package/lib/field/currency/currency.component.ts +10 -1
  23. package/lib/field/date/date.component.html +2 -1
  24. package/lib/field/date/date.component.ts +2 -0
  25. package/lib/field/date-time/date-time.component.html +2 -1
  26. package/lib/field/date-time/date-time.component.scss +46 -40
  27. package/lib/field/date-time/date-time.component.ts +29 -0
  28. package/lib/field/decimal/decimal.component.html +2 -1
  29. package/lib/field/decimal/decimal.component.ts +2 -0
  30. package/lib/field/dropdown/dropdown.component.html +4 -1
  31. package/lib/field/dropdown/dropdown.component.ts +18 -19
  32. package/lib/field/email/email.component.html +2 -1
  33. package/lib/field/email/email.component.ts +2 -2
  34. package/lib/field/embedded-data-multi/embedded-data-multi.component.html +3 -0
  35. package/lib/field/embedded-data-multi/embedded-data-multi.component.scss +0 -0
  36. package/lib/field/embedded-data-multi/embedded-data-multi.component.ts +173 -0
  37. package/lib/field/field.base.ts +27 -1
  38. package/lib/field/group/group.component.html +1 -1
  39. package/lib/field/group/group.component.ts +16 -7
  40. package/lib/field/integer/integer.component.html +2 -1
  41. package/lib/field/integer/integer.component.ts +4 -2
  42. package/lib/field/location/location.component.html +2 -1
  43. package/lib/field/location/location.component.ts +3 -1
  44. package/lib/field/multiselect/multiselect.component.html +1 -1
  45. package/lib/field/multiselect/multiselect.component.ts +23 -4
  46. package/lib/field/multiselect/utils.ts +5 -3
  47. package/lib/field/object-reference/object-reference.component.html +30 -15
  48. package/lib/field/object-reference/object-reference.component.ts +818 -94
  49. package/lib/field/percentage/percentage.component.html +2 -1
  50. package/lib/field/percentage/percentage.component.ts +10 -1
  51. package/lib/field/phone/phone.component.html +2 -1
  52. package/lib/field/phone/phone.component.ts +2 -1
  53. package/lib/field/radio-buttons/radio-buttons.component.html +2 -1
  54. package/lib/field/radio-buttons/radio-buttons.component.ts +10 -1
  55. package/lib/field/rich-text/rich-text.component.scss +1 -166
  56. package/lib/field/rich-text/rich-text.component.spec.ts +1 -1
  57. package/lib/field/rich-text/rich-text.component.ts +1 -1
  58. package/lib/field/selectable-card/selectable-card.component.html +1 -0
  59. package/lib/field/selectable-card/selectable-card.component.ts +31 -16
  60. package/lib/field/semantic-link/semantic-link.component.html +1 -1
  61. package/lib/field/semantic-link/semantic-link.component.scss +4 -0
  62. package/lib/field/semantic-link/semantic-link.component.ts +13 -7
  63. package/lib/field/text-area/text-area.component.html +2 -1
  64. package/lib/field/text-area/text-area.component.ts +2 -1
  65. package/lib/field/text-input/text-input.component.html +2 -1
  66. package/lib/field/text-input/text-input.component.ts +2 -1
  67. package/lib/field/time/time.component.html +2 -1
  68. package/lib/field/time/time.component.ts +2 -1
  69. package/lib/field/url/url.component.html +2 -1
  70. package/lib/field/url/url.component.ts +2 -1
  71. package/lib/field/user-reference/user-reference.component.html +4 -2
  72. package/lib/field/user-reference/user-reference.component.ts +11 -6
  73. package/lib/infra/Containers/flow-container/flow-container.component.html +2 -2
  74. package/lib/infra/Containers/flow-container/flow-container.component.ts +34 -42
  75. package/lib/infra/Containers/modal-view-container/data-view-action-buttons/data-view-action-buttons.component.html +12 -0
  76. package/lib/infra/Containers/modal-view-container/data-view-action-buttons/data-view-action-buttons.component.spec.ts +130 -0
  77. package/lib/infra/Containers/modal-view-container/data-view-action-buttons/data-view-action-buttons.component.ts +77 -0
  78. package/lib/infra/Containers/modal-view-container/modal-view-container.component.html +35 -8
  79. package/lib/infra/Containers/modal-view-container/modal-view-container.component.ts +185 -196
  80. package/lib/infra/Containers/view-container/view-container.component.html +1 -1
  81. package/lib/infra/Containers/view-container/view-container.component.ts +36 -43
  82. package/lib/infra/assignment/assignment.component.html +2 -1
  83. package/lib/infra/assignment/assignment.component.ts +44 -22
  84. package/lib/infra/assignment-card/assignment-card.component.html +1 -0
  85. package/lib/infra/assignment-card/assignment-card.component.ts +2 -8
  86. package/lib/infra/defer-load/defer-load.component.ts +7 -5
  87. package/lib/infra/multi-step/multi-step.component.html +25 -33
  88. package/lib/infra/multi-step/multi-step.component.scss +67 -125
  89. package/lib/infra/multi-step/multi-step.component.ts +11 -0
  90. package/lib/infra/navbar/navbar.component.ts +33 -36
  91. package/lib/infra/reference/reference.component.html +7 -1
  92. package/lib/infra/reference/reference.component.ts +63 -109
  93. package/lib/infra/region/region.component.ts +1 -3
  94. package/lib/infra/root-container/root-container.component.html +1 -0
  95. package/lib/infra/root-container/root-container.component.ts +34 -42
  96. package/lib/infra/view/view.component.ts +22 -46
  97. package/lib/template/advanced-search/advanced-search.component.ts +0 -1
  98. package/lib/template/advanced-search/search-groups/search-groups.component.ts +2 -3
  99. package/lib/template/app-shell/app-shell.component.ts +13 -13
  100. package/lib/template/banner-page/banner-page.component.ts +1 -2
  101. package/lib/template/base/details-template-base.ts +41 -14
  102. package/lib/template/base/form-template-base.ts +0 -2
  103. package/lib/template/case-summary/case-summary.component.ts +15 -7
  104. package/lib/template/case-view/case-view.component.html +14 -2
  105. package/lib/template/case-view/case-view.component.spec.ts +119 -10
  106. package/lib/template/case-view/case-view.component.ts +52 -3
  107. package/lib/template/data-reference/data-reference.component.ts +29 -22
  108. package/lib/template/data-reference/search-form/search-form.component.html +1 -1
  109. package/lib/template/data-reference/search-form/search-form.component.ts +9 -1
  110. package/lib/template/data-reference/search-form/tabsData.ts +0 -1
  111. package/lib/template/default-form/default-form.component.html +20 -4
  112. package/lib/template/default-form/default-form.component.ts +14 -5
  113. package/lib/template/default-page/default-page.component.ts +1 -2
  114. package/lib/template/details/details.component.html +23 -3
  115. package/lib/template/details/details.component.scss +9 -2
  116. package/lib/template/details/details.component.ts +3 -70
  117. package/lib/template/details-narrow-wide/details-narrow-wide.component.html +21 -2
  118. package/lib/template/details-narrow-wide/details-narrow-wide.component.scss +8 -1
  119. package/lib/template/details-narrow-wide/details-narrow-wide.component.ts +3 -39
  120. package/lib/template/details-one-column/details-one-column.component.html +23 -1
  121. package/lib/template/details-one-column/details-one-column.component.scss +14 -0
  122. package/lib/template/details-one-column/details-one-column.component.ts +3 -40
  123. package/lib/template/details-three-column/details-three-column.component.html +21 -2
  124. package/lib/template/details-three-column/details-three-column.component.scss +8 -1
  125. package/lib/template/details-three-column/details-three-column.component.ts +3 -48
  126. package/lib/template/details-two-column/details-two-column.component.html +21 -2
  127. package/lib/template/details-two-column/details-two-column.component.scss +8 -1
  128. package/lib/template/details-two-column/details-two-column.component.ts +3 -46
  129. package/lib/template/details-wide-narrow/details-wide-narrow.component.html +21 -2
  130. package/lib/template/details-wide-narrow/details-wide-narrow.component.scss +8 -1
  131. package/lib/template/details-wide-narrow/details-wide-narrow.component.ts +3 -43
  132. package/lib/template/dynamic-tabs/dynamic-tabs.component.html +1 -0
  133. package/lib/template/field-group-template/field-group-template.component.ts +19 -6
  134. package/lib/template/field-value-list/field-value-list.component.scss +17 -0
  135. package/lib/template/inline-dashboard-page/inline-dashboard-page.component.ts +2 -10
  136. package/lib/template/list-view/list-view.component.ts +47 -11
  137. package/lib/template/one-column/one-column.component.html +3 -0
  138. package/lib/template/one-column-tab/one-column-tab.component.html +1 -0
  139. package/lib/template/page/page.component.html +1 -0
  140. package/lib/template/self-service-case-view/self-service-case-view.component.html +13 -1
  141. package/lib/template/self-service-case-view/self-service-case-view.component.spec.ts +96 -11
  142. package/lib/template/self-service-case-view/self-service-case-view.component.ts +52 -3
  143. package/lib/template/simple-table/simple-table.component.ts +11 -1
  144. package/lib/template/simple-table-manual/helpers.ts +84 -16
  145. package/lib/template/simple-table-manual/simple-table-manual.component.html +30 -14
  146. package/lib/template/simple-table-manual/simple-table-manual.component.scss +8 -2
  147. package/lib/template/simple-table-manual/simple-table-manual.component.ts +142 -46
  148. package/lib/template/single-reference-readonly/single-reference-readonly.component.html +0 -0
  149. package/lib/template/single-reference-readonly/single-reference-readonly.component.scss +2 -3
  150. package/lib/template/single-reference-readonly/single-reference-readonly.component.ts +7 -8
  151. package/lib/template/wide-narrow-page/wide-narrow-page.component.ts +0 -3
  152. package/lib/template/wss-nav-bar/wss-nav-bar.component.ts +19 -21
  153. package/lib/widget/attachment/AttachmentUtils.ts +19 -11
  154. package/lib/widget/attachment/attachment.component.html +16 -6
  155. package/lib/widget/attachment/attachment.component.ts +14 -4
  156. package/lib/widget/case-history/case-history.component.ts +6 -2
  157. package/lib/widget/feed-container/feed-container.component.ts +1 -199
  158. package/lib/widget/file-utility/file-utility.component.ts +26 -30
  159. package/lib/widget/todo/todo.component.ts +7 -2
  160. package/package.json +2 -2
  161. package/lib/designSystemExtension/material-details/material-details.component.html +0 -40
  162. package/lib/designSystemExtension/material-details/material-details.component.scss +0 -116
  163. package/lib/designSystemExtension/material-details/material-details.component.spec.ts +0 -24
  164. package/lib/designSystemExtension/material-details/material-details.component.ts +0 -31
  165. package/lib/designSystemExtension/material-details-fields/material-details-fields.component.html +0 -29
  166. package/lib/designSystemExtension/material-details-fields/material-details-fields.component.scss +0 -34
  167. package/lib/designSystemExtension/material-details-fields/material-details-fields.component.spec.ts +0 -22
  168. package/lib/designSystemExtension/material-details-fields/material-details-fields.component.ts +0 -37
@@ -4,7 +4,7 @@
4
4
  <ng-template #noDisplayMode>
5
5
  <div *ngIf="bHasForm$; else noEdit">
6
6
  <div [formGroup]="formGroup$" *ngIf="bVisible$">
7
- <mat-form-field class="psdk-full-width" subscriptSizing="dynamic" [hintLabel]="helperText">
7
+ <mat-form-field class="psdk-full-width" subscriptSizing="dynamic">
8
8
  <mat-label>{{ label$ }}</mat-label>
9
9
  <input
10
10
  type="text"
@@ -30,6 +30,7 @@
30
30
  (blur)="fieldOnBlur($event)"
31
31
  [readonly]="bReadonly$"
32
32
  />
33
+ <mat-hint *ngIf="helperText" [appFieldWarning]="bFieldMessageVisible$">{{ helperText }}</mat-hint>
33
34
  <mat-error *ngIf="fieldControl.invalid">{{ getErrorMessage() }}</mat-error>
34
35
  </mat-form-field>
35
36
  </div>
@@ -6,6 +6,7 @@ import { MatFormFieldModule } from '@angular/material/form-field';
6
6
  import { NgxCurrencyDirective, NgxCurrencyInputMode } from 'ngx-currency';
7
7
 
8
8
  import { FieldBase } from '@pega/angular-sdk-components';
9
+ import { FieldWarningDirective } from '@pega/angular-sdk-components';
9
10
  import { ComponentMapperComponent } from '@pega/angular-sdk-components';
10
11
  import { handleEvent } from '@pega/angular-sdk-components';
11
12
  import { getCurrencyCharacters } from '@pega/angular-sdk-components';
@@ -24,7 +25,15 @@ interface PercentageProps extends Omit<PConnFieldProps, 'value'> {
24
25
  selector: 'app-percentage',
25
26
  templateUrl: './percentage.component.html',
26
27
  styleUrls: ['./percentage.component.scss'],
27
- imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, NgxCurrencyDirective, forwardRef(() => ComponentMapperComponent)]
28
+ imports: [
29
+ CommonModule,
30
+ ReactiveFormsModule,
31
+ MatFormFieldModule,
32
+ MatInputModule,
33
+ NgxCurrencyDirective,
34
+ FieldWarningDirective,
35
+ forwardRef(() => ComponentMapperComponent)
36
+ ]
28
37
  })
29
38
  export class PercentageComponent extends FieldBase {
30
39
  configProps$: PercentageProps;
@@ -3,7 +3,7 @@
3
3
  </div>
4
4
  <ng-template #noDisplayMode>
5
5
  <div *ngIf="bHasForm$ && bVisible$; else noEdit">
6
- <mat-form-field class="psdk-full-width" subscriptSizing="dynamic" [hintLabel]="helperText" floatLabel="always">
6
+ <mat-form-field class="psdk-full-width" subscriptSizing="dynamic" floatLabel="always">
7
7
  <mat-tel-input
8
8
  [attr.data-test-id]="testId"
9
9
  [formControl]="fieldControl"
@@ -18,6 +18,7 @@
18
18
  >
19
19
  </mat-tel-input>
20
20
  <mat-label>{{ label$ }}</mat-label>
21
+ <mat-hint *ngIf="helperText" [appFieldWarning]="bFieldMessageVisible$">{{ helperText }}</mat-hint>
21
22
  <mat-error *ngIf="fieldControl.invalid">{{ getErrorMessage() }}</mat-error>
22
23
  </mat-form-field>
23
24
  </div>
@@ -6,6 +6,7 @@ import { MatTelInput } from 'mat-tel-input';
6
6
  import { parsePhoneNumberFromString } from 'libphonenumber-js';
7
7
 
8
8
  import { FieldBase } from '@pega/angular-sdk-components';
9
+ import { FieldWarningDirective } from '@pega/angular-sdk-components';
9
10
  import { ComponentMapperComponent } from '@pega/angular-sdk-components';
10
11
  import { handleEvent } from '@pega/angular-sdk-components';
11
12
  import { PConnFieldProps } from '@pega/angular-sdk-components';
@@ -18,7 +19,7 @@ interface PhoneProps extends PConnFieldProps {
18
19
  selector: 'app-phone',
19
20
  templateUrl: './phone.component.html',
20
21
  styleUrls: ['./phone.component.scss'],
21
- imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatTelInput, forwardRef(() => ComponentMapperComponent)]
22
+ imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatTelInput, FieldWarningDirective, forwardRef(() => ComponentMapperComponent)]
22
23
  })
23
24
  export class PhoneComponent extends FieldBase {
24
25
  configProps$: PhoneProps;
@@ -9,7 +9,7 @@
9
9
  </div>
10
10
  <ng-template #noDisplayMode>
11
11
  <div [formGroup]="formGroup$" *ngIf="bVisible$">
12
- <mat-form-field class="psdk-radio-form" subscriptSizing="dynamic" [hintLabel]="helperText">
12
+ <mat-form-field class="psdk-radio-form" subscriptSizing="dynamic">
13
13
  <mat-label>{{ label$ }}</mat-label>
14
14
  <input matInput [placeholder]="placeholder" style="display: none" [required]="bRequired$" />
15
15
  <mat-radio-group
@@ -30,6 +30,7 @@
30
30
  {{ getLocalizedOptionValue(opt) }}
31
31
  </mat-radio-button>
32
32
  </mat-radio-group>
33
+ <mat-hint *ngIf="helperText" [appFieldWarning]="bFieldMessageVisible$">{{ helperText }}</mat-hint>
33
34
  <mat-error *ngIf="fieldControl.invalid">{{ getErrorMessage() }}</mat-error>
34
35
  </mat-form-field>
35
36
  </div>
@@ -6,6 +6,7 @@ import { MatInputModule } from '@angular/material/input';
6
6
  import { MatFormFieldModule } from '@angular/material/form-field';
7
7
 
8
8
  import { FieldBase } from '@pega/angular-sdk-components';
9
+ import { FieldWarningDirective } from '@pega/angular-sdk-components';
9
10
  import { ComponentMapperComponent } from '@pega/angular-sdk-components';
10
11
  import { Utils } from '@pega/angular-sdk-components';
11
12
  import { handleEvent } from '@pega/angular-sdk-components';
@@ -28,7 +29,15 @@ interface RadioButtonsProps extends PConnFieldProps {
28
29
  templateUrl: './radio-buttons.component.html',
29
30
  styleUrls: ['./radio-buttons.component.scss'],
30
31
  providers: [Utils],
31
- imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, MatRadioModule, forwardRef(() => ComponentMapperComponent)]
32
+ imports: [
33
+ CommonModule,
34
+ ReactiveFormsModule,
35
+ MatFormFieldModule,
36
+ MatInputModule,
37
+ MatRadioModule,
38
+ FieldWarningDirective,
39
+ forwardRef(() => ComponentMapperComponent)
40
+ ]
32
41
  })
33
42
  export class RadioButtonsComponent extends FieldBase {
34
43
  configProps$: RadioButtonsProps;
@@ -2,171 +2,6 @@
2
2
 
3
3
  :host {
4
4
  display: block;
5
- background-color: var(--mat-sys-surface, #fff);
5
+ background-color: transparent;
6
6
  color: var(--mat-sys-on-surface, #000);
7
7
  }
8
-
9
- ::ng-deep {
10
- .tox-tinymce {
11
- border: 1px solid var(--mat-sys-outline, #ccc) !important;
12
- border-radius: 4px !important;
13
- }
14
-
15
- .tox-edit-area__iframe {
16
- background-color: transparent !important;
17
- }
18
-
19
- .tox .tox-toolbar,
20
- .tox .tox-toolbar__primary,
21
- .tox .tox-editor-header {
22
- background-color: var(--mat-sys-surface-container-high, #f0f0f0) !important;
23
- border-bottom: 1px solid var(--mat-sys-outline-variant, #ccc) !important;
24
- }
25
-
26
- .tox .tox-tbtn {
27
- color: var(--mat-sys-on-surface-variant, #555) !important;
28
- background: transparent !important;
29
- }
30
-
31
- .tox .tox-tbtn svg {
32
- fill: var(--mat-sys-on-surface-variant, #555) !important;
33
- }
34
-
35
- .tox .tox-tbtn:hover {
36
- background: var(--mat-sys-hover-state-layer-opacity, rgba(0, 0, 0, 0.05)) !important;
37
- }
38
-
39
- .tox .tox-tbtn--enabled,
40
- .tox .tox-tbtn--enabled:hover {
41
- background: var(--mat-sys-secondary-container, #e8def8) !important;
42
- color: var(--mat-sys-on-secondary-container, #1d192b) !important;
43
- }
44
-
45
- .tox .tox-tbtn--enabled svg {
46
- fill: var(--mat-sys-on-secondary-container, #1d192b) !important;
47
- }
48
-
49
- .tox .tox-tbtn--select {
50
- background-color: transparent !important;
51
- margin: 2px 0;
52
- }
53
-
54
- .tox .tox-tbtn__select-label {
55
- color: var(--mat-sys-on-surface, #000) !important;
56
- }
57
-
58
- .tox .tox-tbtn__select-chevron svg {
59
- fill: var(--mat-sys-on-surface-variant, #555) !important;
60
- }
61
-
62
- .tox .tox-tbtn--select:hover {
63
- background-color: var(--mat-sys-hover-state-layer-opacity, rgba(0, 0, 0, 0.05)) !important;
64
- }
65
-
66
- .tox .tox-statusbar {
67
- background-color: var(--mat-sys-surface-container-high, #f0f0f0) !important;
68
- border-top: 1px solid var(--mat-sys-outline-variant, #ccc) !important;
69
- color: var(--mat-sys-on-surface-variant, #555) !important;
70
- }
71
-
72
- .tox .tox-dialog {
73
- background-color: var(--mat-sys-surface-container, #fff) !important;
74
- color: var(--mat-sys-on-surface, #000) !important;
75
- border: 1px solid var(--mat-sys-outline-variant, #ccc) !important;
76
- box-shadow: 0 4px 12px var(--mat-sys-shadow, rgba(0, 0, 0, 0.2)) !important;
77
- }
78
-
79
- .tox .tox-dialog__header {
80
- background-color: var(--mat-sys-surface-container, #fff) !important;
81
- color: var(--mat-sys-on-surface, #000) !important;
82
- border-bottom: 1px solid var(--mat-sys-outline-variant, #ccc) !important;
83
- }
84
-
85
- .tox .tox-dialog__footer {
86
- background-color: var(--mat-sys-surface-container, #fff) !important;
87
- border-top: 1px solid var(--mat-sys-outline-variant, #ccc) !important;
88
- }
89
-
90
- .tox .tox-dialog-wrap__backdrop {
91
- background-color: var(--mat-sys-scrim, rgba(0, 0, 0, 0.5)) !important;
92
- opacity: 0.6;
93
- }
94
-
95
- .tox .tox-dialog__body input,
96
- .tox .tox-dialog__body textarea,
97
- .tox .tox-dialog__body select {
98
- background-color: transparent !important;
99
- color: var(--mat-sys-on-surface, #000) !important;
100
- border: 1px solid var(--mat-sys-outline, #ccc) !important;
101
- border-radius: 4px !important;
102
- }
103
-
104
- .tox .tox-label {
105
- color: var(--mat-sys-on-surface-variant, #555) !important;
106
- }
107
-
108
- .tox .tox-button--icon--hover:hover {
109
- background-color: var(--mat-sys-hover-state-layer-opacity) !important;
110
- color: var(--mat-sys-on-surface) !important;
111
- }
112
-
113
- .tox .tox-dialog__footer .tox-button {
114
- background-color: var(--mat-sys-primary, #6200ee) !important;
115
- color: var(--mat-sys-on-primary, #fff) !important;
116
- border: none !important;
117
- }
118
-
119
- .tox .tox-dialog__footer .tox-button--secondary {
120
- background-color: transparent !important;
121
- color: var(--mat-sys-primary, #6200ee) !important;
122
- border: 1px solid var(--mat-sys-outline, #ccc) !important;
123
- }
124
- }
125
-
126
- ::ng-deep {
127
- .tox .tox-menu {
128
- background-color: var(--mat-sys-surface-container, #2e334f) !important;
129
- border: 1px solid var(--mat-sys-outline-variant, #404562) !important;
130
- box-shadow: 0 4px 10px var(--mat-sys-shadow, rgba(0, 0, 0, 0.3)) !important;
131
- }
132
-
133
- .tox .tox-collection__item {
134
- color: var(--mat-sys-on-surface, #dde1ff) !important;
135
- }
136
-
137
- .tox .tox-collection__item--active {
138
- background-color: var(--mat-sys-secondary-container, #810081) !important;
139
- color: var(--mat-sys-on-secondary-container, #ffd7f5) !important;
140
- }
141
-
142
- .tox .tox-collection__item-icon svg {
143
- fill: var(--mat-sys-on-surface, #dde1ff) !important;
144
- }
145
-
146
- .tox .tox-collection__item-accessory {
147
- color: var(--mat-sys-on-surface-variant, #c0c5e7) !important;
148
- }
149
-
150
- .tox .tox-swatches__picker-btn {
151
- border-color: var(--mat-sys-outline-variant) !important;
152
- }
153
-
154
- .tox .tox-listbox {
155
- background-color: transparent !important;
156
- border: 1px solid var(--mat-sys-outline, #8a8faf) !important;
157
- color: var(--mat-sys-on-surface, #dde1ff) !important;
158
- }
159
-
160
- .tox .tox-listbox__select-chevron svg {
161
- fill: var(--mat-sys-on-surface-variant, #c0c5e7) !important;
162
- }
163
-
164
- .tox .tox-listbox__select-label {
165
- color: var(--mat-sys-on-surface, #dde1ff) !important;
166
- }
167
-
168
- .tox .tox-listboxfield .tox-listbox--select {
169
- background-color: transparent !important;
170
- color: var(--mat-sys-on-surface, #dde1ff) !important;
171
- }
172
- }
@@ -2,7 +2,7 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
2
2
 
3
3
  import { RichTextComponent } from './rich-text.component';
4
4
 
5
- describe('RichTextComponent', () => {
5
+ describe('RichTextFieldComponent', () => {
6
6
  let component: RichTextComponent;
7
7
  let fixture: ComponentFixture<RichTextComponent>;
8
8
 
@@ -46,7 +46,7 @@ export class RichTextComponent extends FieldBase {
46
46
 
47
47
  fieldOnChange(editorValue: any) {
48
48
  const oldVal = this.value$ ?? '';
49
- const newVal = editorValue?.editor?.getBody()?.innerHTML ?? '';
49
+ const newVal = typeof editorValue === 'string' ? editorValue : (editorValue ?? '');
50
50
 
51
51
  const isValueChanged = newVal.toString() !== oldVal.toString();
52
52
 
@@ -17,6 +17,7 @@
17
17
  [checked]="cardContent.commonCardProps.selected"
18
18
  [disabled]="disabled || readOnly"
19
19
  [attr.data-test-id]="testId + ':' + cardContent.commonCardProps.label"
20
+ (click)="$event.stopPropagation()"
20
21
  (change)="handleChangeMultiMode($event, cardContent.commonCardProps)"
21
22
  (blur)="fieldOnBlur()"
22
23
  >{{ cardContent.commonCardProps.label }}</mat-checkbox
@@ -3,7 +3,7 @@ import { CommonModule } from '@angular/common';
3
3
  import { MatCardModule } from '@angular/material/card';
4
4
  import { MatRadioModule } from '@angular/material/radio';
5
5
  import { MatCheckboxModule } from '@angular/material/checkbox';
6
- import { deleteInstruction, insertInstruction } from '@pega/angular-sdk-components';
6
+ import { deleteInstruction, insertInstruction, updateNewInstructions } from '@pega/angular-sdk-components';
7
7
  import { handleEvent } from '@pega/angular-sdk-components';
8
8
  import { PConnFieldProps } from '@pega/angular-sdk-components';
9
9
  import { FieldBase } from '@pega/angular-sdk-components';
@@ -93,21 +93,9 @@ export class SelectableCardComponent extends FieldBase implements OnInit {
93
93
  const imagePosition = this.configProps$.imagePosition;
94
94
 
95
95
  // dynamic styling based on image position and readOnly option
96
- let imageWidth = '100%';
97
- this.cardStyle = { display: 'flex', flexDirection: 'column', height: '100%' };
98
- if (imagePosition && imagePosition !== 'block-start') {
99
- imageWidth = '30%';
100
- if (imagePosition === 'inline-start') {
101
- this.cardStyle = { display: 'flex', flexDirection: 'row', alignItems: this.readOnly ? 'center' : '' };
102
- } else if (imagePosition === 'inline-end') {
103
- this.cardStyle = {
104
- display: 'flex',
105
- flexDirection: 'row-reverse',
106
- justifyContent: this.readOnly ? 'space-between' : '',
107
- alignItems: this.readOnly ? 'center' : ''
108
- };
109
- }
110
- }
96
+ const { imageWidth, cardStyle } = this.resolveImageLayout(imagePosition);
97
+ this.cardStyle = cardStyle;
98
+
111
99
  if (this.type === 'radio') {
112
100
  const stateProps = this.pConn$.getStateProps();
113
101
  image = {
@@ -145,6 +133,12 @@ export class SelectableCardComponent extends FieldBase implements OnInit {
145
133
  this.selectedvalues = this.configProps$.readonlyContextList;
146
134
  this.showNoValue = this.readOnly && this.selectedvalues?.length === 0; // not used
147
135
  this.primaryField = this.configProps$.primaryField;
136
+
137
+ // Set reference list so getListActions() uses the correct path on every re-render
138
+ if (this.selectionList && !this.readOnly) {
139
+ this.pConn$.setReferenceList(this.selectionList);
140
+ updateNewInstructions(this.pConn$, this.selectionList);
141
+ }
148
142
  }
149
143
 
150
144
  this.commonProps = { hideFieldLabels, datasource, additionalProps, image, recordKey, cardLabel, radioBtnValue: this.radioBtnValue ?? '' };
@@ -182,6 +176,27 @@ export class SelectableCardComponent extends FieldBase implements OnInit {
182
176
  });
183
177
  }
184
178
 
179
+ private resolveImageLayout(imagePosition: string | undefined): { imageWidth: string; cardStyle: object } {
180
+ if (!imagePosition || imagePosition === 'block-start') {
181
+ return { imageWidth: '100%', cardStyle: { display: 'flex', flexDirection: 'column', height: '100%' } };
182
+ }
183
+ if (imagePosition === 'inline-start') {
184
+ return { imageWidth: '30%', cardStyle: { display: 'flex', flexDirection: 'row', alignItems: this.readOnly ? 'center' : '' } };
185
+ }
186
+ if (imagePosition === 'inline-end') {
187
+ return {
188
+ imageWidth: '30%',
189
+ cardStyle: {
190
+ display: 'flex',
191
+ flexDirection: 'row-reverse',
192
+ justifyContent: this.readOnly ? 'space-between' : '',
193
+ alignItems: this.readOnly ? 'center' : ''
194
+ }
195
+ };
196
+ }
197
+ return { imageWidth: '30%', cardStyle: { display: 'flex', flexDirection: 'column', height: '100%' } };
198
+ }
199
+
185
200
  fieldOnChange(value: any) {
186
201
  handleEvent(this.actionsApi, 'changeNblur', this.propName, value);
187
202
  }
@@ -1,5 +1,5 @@
1
1
  <div *ngIf="bVisible$ !== false">
2
- <a *ngIf="!isLinkTextEmpty; else noLink" class="psdk-value" href="#" (click)="openLinkClick($event)">{{ value$ || '---' }}</a>
2
+ <a *ngIf="!isLinkTextEmpty; else noLink" class="psdk-value psdk-semantic-link" href="#" (click)="openLinkClick($event)">{{ value$ || '---' }}</a>
3
3
  </div>
4
4
  <ng-template #noLink>
5
5
  <div class="psdk-value">{{ value$ || '---' }}</div>
@@ -1,3 +1,7 @@
1
1
  .psdk-value {
2
2
  margin: 8px 0px;
3
3
  }
4
+
5
+ .psdk-semantic-link {
6
+ color: var(--mat-sys-primary);
7
+ }
@@ -1,4 +1,4 @@
1
- import { Component, OnInit, Input, OnDestroy } from '@angular/core';
1
+ import { ChangeDetectorRef, Component, OnInit, Input, OnDestroy } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { FormGroup } from '@angular/forms';
4
4
  import { AngularPConnectData, AngularPConnectService } from '@pega/angular-sdk-components';
@@ -46,7 +46,8 @@ export class SemanticLinkComponent implements OnInit, OnDestroy {
46
46
 
47
47
  constructor(
48
48
  private angularPConnect: AngularPConnectService,
49
- private utils: Utils
49
+ private utils: Utils,
50
+ private cdr: ChangeDetectorRef
50
51
  ) {}
51
52
 
52
53
  ngOnInit(): void {
@@ -81,6 +82,7 @@ export class SemanticLinkComponent implements OnInit, OnDestroy {
81
82
  const isData = this.buildDataPayload();
82
83
  this.linkURL = this.buildLinkURL(isData);
83
84
  this.isLinkTextEmpty = isLinkTextEmpty(this.value$);
85
+ this.cdr.detectChanges();
84
86
  }
85
87
 
86
88
  showDataAction() {
@@ -98,11 +100,14 @@ export class SemanticLinkComponent implements OnInit, OnDestroy {
98
100
  };
99
101
  }, {});
100
102
  }
101
- this.pConn$.getActionsApi().showData('pyDetails', lookUpDataPage, {
102
- ...this.payload
103
- });
103
+ if (lookUpDataPage) {
104
+ this.pConn$.getActionsApi().showData('pyDetails', lookUpDataPage, {
105
+ ...this.payload
106
+ });
107
+ }
108
+ return;
104
109
  }
105
- if ((this.referenceType && this.referenceType.toUpperCase() === 'DATA') || this.shouldTreatAsDataReference) {
110
+ if (this.dataViewName && ((this.referenceType && this.referenceType.toUpperCase() === 'DATA') || this.shouldTreatAsDataReference)) {
106
111
  this.pConn$.getActionsApi().showData('pyDetails', this.dataViewName, {
107
112
  ...this.payload
108
113
  });
@@ -153,7 +158,8 @@ export class SemanticLinkComponent implements OnInit, OnDestroy {
153
158
  }
154
159
 
155
160
  private buildDataPayload() {
156
- const { dataRelationshipContext = null, contextPage } = this.configProps$;
161
+ const { dataRelationshipContext: configuredDataRelationshipContext, contextPage } = this.configProps$;
162
+ const dataRelationshipContext = configuredDataRelationshipContext ?? null;
157
163
  const {
158
164
  RESOURCE_TYPES: { DATA }
159
165
  } = PCore.getConstants();
@@ -5,7 +5,7 @@
5
5
  <div *ngIf="bHasForm$; else noEdit">
6
6
  <div [formGroup]="formGroup$">
7
7
  <div *ngIf="bVisible$">
8
- <mat-form-field class="psdk-full-width" subscriptSizing="dynamic" [hintLabel]="helperText">
8
+ <mat-form-field class="psdk-full-width" subscriptSizing="dynamic">
9
9
  <mat-label>{{ label$ }}</mat-label>
10
10
  <textarea
11
11
  matInput
@@ -21,6 +21,7 @@
21
21
  (change)="fieldOnChange($event)"
22
22
  (blur)="fieldOnBlur($event)"
23
23
  ></textarea>
24
+ <mat-hint *ngIf="helperText" [appFieldWarning]="bFieldMessageVisible$">{{ helperText }}</mat-hint>
24
25
  <mat-error *ngIf="fieldControl.invalid">{{ getErrorMessage() }}</mat-error>
25
26
  </mat-form-field>
26
27
  </div>
@@ -5,6 +5,7 @@ import { MatInputModule } from '@angular/material/input';
5
5
  import { MatFormFieldModule } from '@angular/material/form-field';
6
6
 
7
7
  import { FieldBase } from '@pega/angular-sdk-components';
8
+ import { FieldWarningDirective } from '@pega/angular-sdk-components';
8
9
  import { ComponentMapperComponent } from '@pega/angular-sdk-components';
9
10
  import { handleEvent } from '@pega/angular-sdk-components';
10
11
  import { PConnFieldProps } from '@pega/angular-sdk-components';
@@ -18,7 +19,7 @@ interface TextAreaProps extends PConnFieldProps {
18
19
  selector: 'app-text-area',
19
20
  templateUrl: './text-area.component.html',
20
21
  styleUrls: ['./text-area.component.scss'],
21
- imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, forwardRef(() => ComponentMapperComponent)]
22
+ imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, FieldWarningDirective, forwardRef(() => ComponentMapperComponent)]
22
23
  })
23
24
  export class TextAreaComponent extends FieldBase {
24
25
  configProps$: TextAreaProps;
@@ -4,7 +4,7 @@
4
4
  <ng-template #noDisplayMode>
5
5
  <div *ngIf="!bReadonly$ && bHasForm$; else noEdit">
6
6
  <div [formGroup]="formGroup$" *ngIf="bVisible$">
7
- <mat-form-field class="psdk-full-width" subscriptSizing="dynamic" [hintLabel]="helperText">
7
+ <mat-form-field class="psdk-full-width" subscriptSizing="dynamic">
8
8
  <mat-label>{{ label$ }}</mat-label>
9
9
  <input
10
10
  matInput
@@ -17,6 +17,7 @@
17
17
  (change)="fieldOnChange($event)"
18
18
  (blur)="fieldOnBlur($event)"
19
19
  />
20
+ <mat-hint *ngIf="helperText" [appFieldWarning]="bFieldMessageVisible$">{{ helperText }}</mat-hint>
20
21
  <mat-error *ngIf="fieldControl.invalid">{{ getErrorMessage() }}</mat-error>
21
22
  </mat-form-field>
22
23
  </div>
@@ -5,6 +5,7 @@ import { MatInputModule } from '@angular/material/input';
5
5
  import { MatFormFieldModule } from '@angular/material/form-field';
6
6
 
7
7
  import { FieldBase } from '@pega/angular-sdk-components';
8
+ import { FieldWarningDirective } from '@pega/angular-sdk-components';
8
9
  import { ComponentMapperComponent } from '@pega/angular-sdk-components';
9
10
  import { handleEvent } from '@pega/angular-sdk-components';
10
11
  import { PConnFieldProps } from '@pega/angular-sdk-components';
@@ -18,7 +19,7 @@ interface TextInputProps extends PConnFieldProps {
18
19
  selector: 'app-text-input',
19
20
  templateUrl: './text-input.component.html',
20
21
  styleUrls: ['./text-input.component.scss'],
21
- imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, forwardRef(() => ComponentMapperComponent)]
22
+ imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, FieldWarningDirective, forwardRef(() => ComponentMapperComponent)]
22
23
  })
23
24
  export class TextInputComponent extends FieldBase {
24
25
  configProps$: TextInputProps;
@@ -4,7 +4,7 @@
4
4
  <ng-template #noDisplayMode>
5
5
  <div *ngIf="!bReadonly$ && bHasForm$; else noEdit">
6
6
  <div [formGroup]="formGroup$" *ngIf="bVisible$">
7
- <mat-form-field class="psdk-full-width" subscriptSizing="dynamic" [hintLabel]="helperText">
7
+ <mat-form-field class="psdk-full-width" subscriptSizing="dynamic">
8
8
  <mat-label>{{ label$ }}</mat-label>
9
9
  <input
10
10
  matInput
@@ -17,6 +17,7 @@
17
17
  (change)="fieldOnChange($event)"
18
18
  (blur)="fieldOnBlur($event)"
19
19
  />
20
+ <mat-hint *ngIf="helperText" [appFieldWarning]="bFieldMessageVisible$">{{ helperText }}</mat-hint>
20
21
  <mat-error *ngIf="fieldControl.invalid">{{ getErrorMessage() }}</mat-error>
21
22
  </mat-form-field>
22
23
  </div>
@@ -5,6 +5,7 @@ import { MatInputModule } from '@angular/material/input';
5
5
  import { MatFormFieldModule } from '@angular/material/form-field';
6
6
 
7
7
  import { FieldBase } from '@pega/angular-sdk-components';
8
+ import { FieldWarningDirective } from '@pega/angular-sdk-components';
8
9
  import { ComponentMapperComponent } from '@pega/angular-sdk-components';
9
10
  import { handleEvent } from '@pega/angular-sdk-components';
10
11
  import { format } from '@pega/angular-sdk-components';
@@ -18,7 +19,7 @@ interface TimeProps extends PConnFieldProps {
18
19
  selector: 'app-time',
19
20
  templateUrl: './time.component.html',
20
21
  styleUrls: ['./time.component.scss'],
21
- imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, forwardRef(() => ComponentMapperComponent)]
22
+ imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, FieldWarningDirective, forwardRef(() => ComponentMapperComponent)]
22
23
  })
23
24
  export class TimeComponent extends FieldBase {
24
25
  configProps$: TimeProps;
@@ -4,7 +4,7 @@
4
4
  <ng-template #noDisplayMode>
5
5
  <div *ngIf="!bReadonly$ && bHasForm$; else noEdit">
6
6
  <div [formGroup]="formGroup$" *ngIf="bVisible$">
7
- <mat-form-field class="psdk-full-width" subscriptSizing="dynamic" [hintLabel]="helperText">
7
+ <mat-form-field class="psdk-full-width" subscriptSizing="dynamic">
8
8
  <mat-label>{{ label$ }}</mat-label>
9
9
  <input
10
10
  matInput
@@ -17,6 +17,7 @@
17
17
  (change)="fieldOnChange($event)"
18
18
  (blur)="fieldOnBlur($event)"
19
19
  />
20
+ <mat-hint *ngIf="helperText" [appFieldWarning]="bFieldMessageVisible$">{{ helperText }}</mat-hint>
20
21
  <mat-error *ngIf="fieldControl.invalid">{{ getErrorMessage() }}</mat-error>
21
22
  </mat-form-field>
22
23
  </div>
@@ -5,6 +5,7 @@ import { MatInputModule } from '@angular/material/input';
5
5
  import { MatFormFieldModule } from '@angular/material/form-field';
6
6
 
7
7
  import { FieldBase } from '@pega/angular-sdk-components';
8
+ import { FieldWarningDirective } from '@pega/angular-sdk-components';
8
9
  import { ComponentMapperComponent } from '@pega/angular-sdk-components';
9
10
  import { handleEvent } from '@pega/angular-sdk-components';
10
11
  import { PConnFieldProps } from '@pega/angular-sdk-components';
@@ -17,7 +18,7 @@ interface URLProps extends PConnFieldProps {
17
18
  selector: 'app-url',
18
19
  templateUrl: './url.component.html',
19
20
  styleUrls: ['./url.component.scss'],
20
- imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, forwardRef(() => ComponentMapperComponent)]
21
+ imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, FieldWarningDirective, forwardRef(() => ComponentMapperComponent)]
21
22
  })
22
23
  export class UrlComponent extends FieldBase {
23
24
  configProps$: URLProps;
@@ -8,7 +8,7 @@
8
8
  <component-mapper name="Operator" [props]="{ pConn$, name$: userName$ }"></component-mapper>
9
9
  </div>
10
10
  <div [formGroup]="formGroup$" *ngIf="type === 'dropdown'">
11
- <mat-form-field class="psdk-full-width" subscriptSizing="dynamic" [hintLabel]="helperText">
11
+ <mat-form-field class="psdk-full-width" subscriptSizing="dynamic">
12
12
  <mat-select [required]="bRequired$" [formControl]="fieldControl" [attr.data-test-id]="testId" (selectionChange)="fieldOnChange($event)">
13
13
  <mat-option *ngFor="let opt of options$" [value]="opt.key">
14
14
  {{ opt.value }}
@@ -18,10 +18,11 @@
18
18
  <mat-error *ngIf="fieldControl.invalid">
19
19
  {{ getErrorMessage() }}
20
20
  </mat-error>
21
+ <mat-hint *ngIf="helperText" [appFieldWarning]="bFieldMessageVisible$">{{ helperText }}</mat-hint>
21
22
  </mat-form-field>
22
23
  </div>
23
24
  <div [formGroup]="formGroup$" *ngIf="type === 'searchbox'">
24
- <mat-form-field class="psdk-full-width" subscriptSizing="dynamic" [hintLabel]="helperText">
25
+ <mat-form-field class="psdk-full-width" subscriptSizing="dynamic">
25
26
  <mat-label>{{ label$ }}</mat-label>
26
27
  <input
27
28
  matInput
@@ -40,6 +41,7 @@
40
41
  <mat-error *ngIf="fieldControl.invalid">
41
42
  {{ getErrorMessage() }}
42
43
  </mat-error>
44
+ <mat-hint *ngIf="helperText" [appFieldWarning]="bFieldMessageVisible$">{{ helperText }}</mat-hint>
43
45
  </mat-form-field>
44
46
  </div>
45
47
  </div>