@pega/dx-component-builder-sdk 0.242.18 → 0.242.19

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 (161) hide show
  1. package/package.json +1 -1
  2. package/src/tasks/create/templates/SDK-Angular/field/Boolean/boolean.component.ts.mustache +0 -1
  3. package/src/tasks/create/templates/SDK-Angular/field/DateTime/date-time.component.html.mustache +0 -1
  4. package/src/tasks/create/templates/SDK-Angular/field/DateTime/date-time.component.ts.mustache +17 -3
  5. package/src/tasks/create/templates/SDK-Angular/field/Decimal/decimal.component.html.mustache +1 -0
  6. package/src/tasks/create/templates/SDK-Angular/field/Decimal/decimal.component.ts.mustache +38 -15
  7. package/src/tasks/create/templates/SDK-Angular/field/Decimal-Currency/decimal-currency.component.ts.mustache +19 -13
  8. package/src/tasks/create/templates/SDK-Angular/field/Decimal-Percentage/decimal-percentage.component.html.mustache +1 -1
  9. package/src/tasks/create/templates/SDK-Angular/field/Decimal-Percentage/decimal-percentage.component.ts.mustache +27 -17
  10. package/src/tasks/create/templates/SDK-Angular/field/Integer/integer.component.html.mustache +1 -1
  11. package/src/tasks/create/templates/SDK-Angular/field/Integer/integer.component.ts.mustache +16 -6
  12. package/src/tasks/create/templates/SDK-Angular/field/Picklist/picklist.component.ts.mustache +18 -3
  13. package/src/tasks/create/templates/SDK-Angular/field/Text-Email/text-email.component.ts.mustache +17 -7
  14. package/src/tasks/create/templates/SDK-Angular/field/Text-Input/text.component.html.mustache +1 -1
  15. package/src/tasks/create/templates/SDK-Angular/field/Text-Input/text.component.ts.mustache +16 -6
  16. package/src/tasks/create/templates/SDK-Angular/field/Text-Paragraph/text-paragraph.component.html.mustache +1 -1
  17. package/src/tasks/create/templates/SDK-Angular/field/Text-Paragraph/text-paragraph.component.ts.mustache +16 -6
  18. package/src/tasks/create/templates/SDK-Angular/field/Text-Phone/text-phone.component.ts.mustache +6 -13
  19. package/src/tasks/create/templates/SDK-Angular/field/Text-URL/text-url.component.html.mustache +1 -1
  20. package/src/tasks/create/templates/SDK-Angular/field/Text-URL/text-url.component.ts.mustache +16 -6
  21. package/src/tasks/create/templates/SDK-Angular/field/TimeOfDay/time-of-day.component.html.mustache +1 -1
  22. package/src/tasks/create/templates/SDK-Angular/field/TimeOfDay/time-of-day.component.ts.mustache +21 -6
  23. package/src/tasks/create/templates/SDK-Angular/template/FORM/form.component.ts.mustache +35 -2
  24. package/src/tasks/create/templates/SDK-Angular/template/FORM-region/form.component.scss.mustache +1 -1
  25. package/tests/assets/sdk-a/components/create/override-sdk/designSystemExtension/material-case-summary/material-case-summary.component.ts +0 -1
  26. package/tests/assets/sdk-a/components/create/override-sdk/designSystemExtension/material-details-fields/material-details-fields.component.html +1 -1
  27. package/tests/assets/sdk-a/components/create/override-sdk/designSystemExtension/material-details-fields/material-details-fields.component.ts +6 -0
  28. package/tests/assets/sdk-a/components/create/override-sdk/designSystemExtension/operator/operator.component.html +1 -1
  29. package/tests/assets/sdk-a/components/create/override-sdk/designSystemExtension/operator/operator.component.scss +10 -2
  30. package/tests/assets/sdk-a/components/create/override-sdk/designSystemExtension/operator/operator.component.ts +4 -3
  31. package/tests/assets/sdk-a/components/create/override-sdk/field/currency/currency.component.ts +19 -13
  32. package/tests/assets/sdk-a/components/create/override-sdk/field/date-time/date-time.component.html +0 -1
  33. package/tests/assets/sdk-a/components/create/override-sdk/field/date-time/date-time.component.ts +17 -3
  34. package/tests/assets/sdk-a/components/create/override-sdk/field/decimal/decimal.component.html +1 -0
  35. package/tests/assets/sdk-a/components/create/override-sdk/field/decimal/decimal.component.ts +38 -15
  36. package/tests/assets/sdk-a/components/create/override-sdk/field/dropdown/dropdown.component.ts +18 -3
  37. package/tests/assets/sdk-a/components/create/override-sdk/field/email/email.component.ts +17 -7
  38. package/tests/assets/sdk-a/components/create/override-sdk/field/integer/integer.component.html +1 -1
  39. package/tests/assets/sdk-a/components/create/override-sdk/field/integer/integer.component.ts +16 -6
  40. package/tests/assets/sdk-a/components/create/override-sdk/field/percentage/percentage.component.html +1 -1
  41. package/tests/assets/sdk-a/components/create/override-sdk/field/percentage/percentage.component.ts +27 -17
  42. package/tests/assets/sdk-a/components/create/override-sdk/field/phone/phone.component.ts +6 -13
  43. package/tests/assets/sdk-a/components/create/override-sdk/field/rich-text/rich-text.component.ts +12 -3
  44. package/tests/assets/sdk-a/components/create/override-sdk/field/text/text.component.ts +2 -2
  45. package/tests/assets/sdk-a/components/create/override-sdk/field/text-area/text-area.component.html +1 -1
  46. package/tests/assets/sdk-a/components/create/override-sdk/field/text-area/text-area.component.ts +16 -6
  47. package/tests/assets/sdk-a/components/create/override-sdk/field/text-input/text-input.component.html +1 -1
  48. package/tests/assets/sdk-a/components/create/override-sdk/field/text-input/text-input.component.ts +16 -6
  49. package/tests/assets/sdk-a/components/create/override-sdk/field/time/time.component.html +1 -1
  50. package/tests/assets/sdk-a/components/create/override-sdk/field/time/time.component.ts +21 -6
  51. package/tests/assets/sdk-a/components/create/override-sdk/field/url/url.component.html +1 -1
  52. package/tests/assets/sdk-a/components/create/override-sdk/field/url/url.component.ts +16 -6
  53. package/tests/assets/sdk-a/components/create/override-sdk/field/user-reference/user-reference.component.html +40 -38
  54. package/tests/assets/sdk-a/components/create/override-sdk/field/user-reference/user-reference.component.ts +66 -7
  55. package/tests/assets/sdk-a/components/create/override-sdk/infra/action-buttons/action-buttons.component.html +1 -1
  56. package/tests/assets/sdk-a/components/create/override-sdk/infra/assignment/assignment.component.html +1 -1
  57. package/tests/assets/sdk-a/components/create/override-sdk/infra/assignment/assignment.component.ts +82 -39
  58. package/tests/assets/sdk-a/components/create/override-sdk/infra/assignment-card/assignment-card.component.html +1 -0
  59. package/tests/assets/sdk-a/components/create/override-sdk/infra/defer-load/defer-load.component.ts +4 -1
  60. package/tests/assets/sdk-a/components/create/override-sdk/infra/flow-container/flow-container.component.ts +17 -43
  61. package/tests/assets/sdk-a/components/create/override-sdk/infra/flow-container/helpers.ts +2 -2
  62. package/tests/assets/sdk-a/components/create/override-sdk/infra/modal-view-container/modal-view-container.component.html +1 -11
  63. package/tests/assets/sdk-a/components/create/override-sdk/infra/modal-view-container/modal-view-container.component.ts +0 -7
  64. package/tests/assets/sdk-a/components/create/override-sdk/infra/root-container/root-container.component.html +2 -15
  65. package/tests/assets/sdk-a/components/create/override-sdk/infra/root-container/root-container.component.ts +24 -27
  66. package/tests/assets/sdk-a/components/create/override-sdk/template/default-form/default-form.component.ts +35 -2
  67. package/tests/assets/sdk-a/components/create/override-sdk/template/field-group-template/field-group-template.component.html +7 -7
  68. package/tests/assets/sdk-a/components/create/override-sdk/template/field-group-template/field-group-template.component.scss +8 -0
  69. package/tests/assets/sdk-a/components/create/override-sdk/template/field-group-template/field-group-template.component.ts +64 -41
  70. package/tests/assets/sdk-a/components/create/override-sdk/template/field-group-template/utils.ts +9 -0
  71. package/tests/assets/sdk-a/components/create/override-sdk/template/field-value-list/field-value-list.component.html +2 -2
  72. package/tests/assets/sdk-a/components/create/override-sdk/template/field-value-list/field-value-list.component.scss +4 -0
  73. package/tests/assets/sdk-a/components/create/override-sdk/template/list-view/list-view.component.html +3 -1
  74. package/tests/assets/sdk-a/components/create/override-sdk/template/list-view/list-view.component.ts +1 -1
  75. package/tests/assets/sdk-a/components/create/override-sdk/template/simple-table-manual/helpers.ts +25 -7
  76. package/tests/assets/sdk-a/components/create/override-sdk/template/simple-table-manual/simple-table-manual.component.html +25 -6
  77. package/tests/assets/sdk-a/components/create/override-sdk/template/simple-table-manual/simple-table-manual.component.scss +7 -3
  78. package/tests/assets/sdk-a/components/create/override-sdk/template/simple-table-manual/simple-table-manual.component.ts +62 -23
  79. package/tests/assets/sdk-a/components/create/override-sdk/widget/todo/todo.component.html +4 -5
  80. package/tests/assets/sdk-a/components/create/override-sdk/widget/todo/todo.component.scss +9 -0
  81. package/tests/assets/sdk-a/components/create/override-sdk/widget/todo/todo.component.ts +4 -3
  82. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-boolean/pega-dxil-my-boolean.component.ts +0 -1
  83. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-currency/pega-dxil-my-currency.component.ts +19 -13
  84. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-date-time/pega-dxil-my-date-time.component.html +0 -1
  85. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-date-time/pega-dxil-my-date-time.component.ts +17 -3
  86. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-decimal/pega-dxil-my-decimal.component.html +1 -0
  87. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-decimal/pega-dxil-my-decimal.component.ts +38 -15
  88. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-email/pega-dxil-my-email.component.ts +17 -7
  89. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-integer/pega-dxil-my-integer.component.html +1 -1
  90. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-integer/pega-dxil-my-integer.component.ts +16 -6
  91. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-paragraph/pega-dxil-my-paragraph.component.html +1 -1
  92. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-paragraph/pega-dxil-my-paragraph.component.ts +16 -6
  93. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-percentage/pega-dxil-my-percentage.component.html +1 -1
  94. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-percentage/pega-dxil-my-percentage.component.ts +27 -17
  95. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-phone/pega-dxil-my-phone.component.ts +6 -13
  96. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-picklist/pega-dxil-my-picklist.component.ts +18 -3
  97. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-text-input/pega-dxil-my-text-input.component.html +1 -1
  98. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-text-input/pega-dxil-my-text-input.component.ts +16 -6
  99. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-time-of-day/pega-dxil-my-time-of-day.component.html +1 -1
  100. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-time-of-day/pega-dxil-my-time-of-day.component.ts +21 -6
  101. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-url/pega-dxil-my-url.component.html +1 -1
  102. package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-url/pega-dxil-my-url.component.ts +16 -6
  103. package/tests/assets/sdk-a/components/createAll/custom-sdk/template/pega-dxil-my-form/pega-dxil-my-form.component.ts +35 -2
  104. package/tests/assets/sdk-a/components/createAll/custom-sdk/template/pega-dxil-my-two-column-form/pega-dxil-my-two-column-form.component.scss +1 -1
  105. package/tests/assets/sdk-a/components/createAll/override-sdk/designSystemExtension/material-case-summary/material-case-summary.component.ts +0 -1
  106. package/tests/assets/sdk-a/components/createAll/override-sdk/designSystemExtension/material-details-fields/material-details-fields.component.html +1 -1
  107. package/tests/assets/sdk-a/components/createAll/override-sdk/designSystemExtension/material-details-fields/material-details-fields.component.ts +6 -0
  108. package/tests/assets/sdk-a/components/createAll/override-sdk/designSystemExtension/operator/operator.component.html +1 -1
  109. package/tests/assets/sdk-a/components/createAll/override-sdk/designSystemExtension/operator/operator.component.scss +10 -2
  110. package/tests/assets/sdk-a/components/createAll/override-sdk/designSystemExtension/operator/operator.component.ts +4 -3
  111. package/tests/assets/sdk-a/components/createAll/override-sdk/field/currency/currency.component.ts +19 -13
  112. package/tests/assets/sdk-a/components/createAll/override-sdk/field/date-time/date-time.component.html +0 -1
  113. package/tests/assets/sdk-a/components/createAll/override-sdk/field/date-time/date-time.component.ts +17 -3
  114. package/tests/assets/sdk-a/components/createAll/override-sdk/field/decimal/decimal.component.html +1 -0
  115. package/tests/assets/sdk-a/components/createAll/override-sdk/field/decimal/decimal.component.ts +38 -15
  116. package/tests/assets/sdk-a/components/createAll/override-sdk/field/dropdown/dropdown.component.ts +18 -3
  117. package/tests/assets/sdk-a/components/createAll/override-sdk/field/email/email.component.ts +17 -7
  118. package/tests/assets/sdk-a/components/createAll/override-sdk/field/integer/integer.component.html +1 -1
  119. package/tests/assets/sdk-a/components/createAll/override-sdk/field/integer/integer.component.ts +16 -6
  120. package/tests/assets/sdk-a/components/createAll/override-sdk/field/percentage/percentage.component.html +1 -1
  121. package/tests/assets/sdk-a/components/createAll/override-sdk/field/percentage/percentage.component.ts +27 -17
  122. package/tests/assets/sdk-a/components/createAll/override-sdk/field/phone/phone.component.ts +6 -13
  123. package/tests/assets/sdk-a/components/createAll/override-sdk/field/rich-text/rich-text.component.ts +12 -3
  124. package/tests/assets/sdk-a/components/createAll/override-sdk/field/text/text.component.ts +2 -2
  125. package/tests/assets/sdk-a/components/createAll/override-sdk/field/text-area/text-area.component.html +1 -1
  126. package/tests/assets/sdk-a/components/createAll/override-sdk/field/text-area/text-area.component.ts +16 -6
  127. package/tests/assets/sdk-a/components/createAll/override-sdk/field/text-input/text-input.component.html +1 -1
  128. package/tests/assets/sdk-a/components/createAll/override-sdk/field/text-input/text-input.component.ts +16 -6
  129. package/tests/assets/sdk-a/components/createAll/override-sdk/field/time/time.component.html +1 -1
  130. package/tests/assets/sdk-a/components/createAll/override-sdk/field/time/time.component.ts +21 -6
  131. package/tests/assets/sdk-a/components/createAll/override-sdk/field/url/url.component.html +1 -1
  132. package/tests/assets/sdk-a/components/createAll/override-sdk/field/url/url.component.ts +16 -6
  133. package/tests/assets/sdk-a/components/createAll/override-sdk/field/user-reference/user-reference.component.html +40 -38
  134. package/tests/assets/sdk-a/components/createAll/override-sdk/field/user-reference/user-reference.component.ts +66 -7
  135. package/tests/assets/sdk-a/components/createAll/override-sdk/infra/action-buttons/action-buttons.component.html +1 -1
  136. package/tests/assets/sdk-a/components/createAll/override-sdk/infra/assignment/assignment.component.html +1 -1
  137. package/tests/assets/sdk-a/components/createAll/override-sdk/infra/assignment/assignment.component.ts +82 -39
  138. package/tests/assets/sdk-a/components/createAll/override-sdk/infra/assignment-card/assignment-card.component.html +1 -0
  139. package/tests/assets/sdk-a/components/createAll/override-sdk/infra/defer-load/defer-load.component.ts +4 -1
  140. package/tests/assets/sdk-a/components/createAll/override-sdk/infra/flow-container/flow-container.component.ts +17 -43
  141. package/tests/assets/sdk-a/components/createAll/override-sdk/infra/flow-container/helpers.ts +2 -2
  142. package/tests/assets/sdk-a/components/createAll/override-sdk/infra/modal-view-container/modal-view-container.component.html +1 -11
  143. package/tests/assets/sdk-a/components/createAll/override-sdk/infra/modal-view-container/modal-view-container.component.ts +0 -7
  144. package/tests/assets/sdk-a/components/createAll/override-sdk/infra/root-container/root-container.component.html +2 -15
  145. package/tests/assets/sdk-a/components/createAll/override-sdk/infra/root-container/root-container.component.ts +24 -27
  146. package/tests/assets/sdk-a/components/createAll/override-sdk/template/default-form/default-form.component.ts +35 -2
  147. package/tests/assets/sdk-a/components/createAll/override-sdk/template/field-group-template/field-group-template.component.html +7 -7
  148. package/tests/assets/sdk-a/components/createAll/override-sdk/template/field-group-template/field-group-template.component.scss +8 -0
  149. package/tests/assets/sdk-a/components/createAll/override-sdk/template/field-group-template/field-group-template.component.ts +64 -41
  150. package/tests/assets/sdk-a/components/createAll/override-sdk/template/field-group-template/utils.ts +9 -0
  151. package/tests/assets/sdk-a/components/createAll/override-sdk/template/field-value-list/field-value-list.component.html +2 -2
  152. package/tests/assets/sdk-a/components/createAll/override-sdk/template/field-value-list/field-value-list.component.scss +4 -0
  153. package/tests/assets/sdk-a/components/createAll/override-sdk/template/list-view/list-view.component.html +3 -1
  154. package/tests/assets/sdk-a/components/createAll/override-sdk/template/list-view/list-view.component.ts +1 -1
  155. package/tests/assets/sdk-a/components/createAll/override-sdk/template/simple-table-manual/helpers.ts +25 -7
  156. package/tests/assets/sdk-a/components/createAll/override-sdk/template/simple-table-manual/simple-table-manual.component.html +25 -6
  157. package/tests/assets/sdk-a/components/createAll/override-sdk/template/simple-table-manual/simple-table-manual.component.scss +7 -3
  158. package/tests/assets/sdk-a/components/createAll/override-sdk/template/simple-table-manual/simple-table-manual.component.ts +62 -23
  159. package/tests/assets/sdk-a/components/createAll/override-sdk/widget/todo/todo.component.html +4 -5
  160. package/tests/assets/sdk-a/components/createAll/override-sdk/widget/todo/todo.component.scss +9 -0
  161. package/tests/assets/sdk-a/components/createAll/override-sdk/widget/todo/todo.component.ts +4 -3
@@ -1,5 +1,5 @@
1
1
  <div id="field-group">
2
- <h3 *ngIf="showLabel$" className="label" style="font-weight: bold">
2
+ <h3 *ngIf="showLabel$" class="field-group-template-header" style="font-weight: bold">
3
3
  {{ label$ }}
4
4
  </h3>
5
5
  <div *ngIf="readonlyMode; else editable">
@@ -11,23 +11,23 @@
11
11
  </div>
12
12
  <ng-template #editable>
13
13
  <div *ngIf="children && children.length > 0">
14
- <div *ngFor="let kid of children; let i = index">
14
+ <div class="field-group-template-item" *ngFor="let child of children; let i = index">
15
15
  <div class="header-div">
16
16
  <div style="width: 80%">
17
- <b>{{ kid.name }}</b>
17
+ <b>{{ child.name }}</b>
18
18
  </div>
19
- <div *ngIf="allowAddEdit !== false" style="width: 20%; text-align: right">
19
+ <div *ngIf="allowDelete && child.allowRowDelete" style="width: 20%; text-align: right">
20
20
  <button id="delete-button" mat-icon-button (click)="deleteFieldGroupItem(i)">
21
21
  <img class="psdk-utility-card-action-svg-icon" src="{{ menuIconOverride$ }}" />
22
22
  </button>
23
23
  </div>
24
24
  </div>
25
25
 
26
- <div *ngIf="kid.children.getPConnect().getRawMetadata().type.toLowerCase() == 'region'">
27
- <component-mapper name="Region" [props]="{ pConn$: kid.children.getPConnect(), formGroup$ }"></component-mapper>
26
+ <div *ngIf="child.children.getPConnect().getRawMetadata().type.toLowerCase() == 'region'">
27
+ <component-mapper name="Region" [props]="{ pConn$: child.children.getPConnect(), formGroup$ }"></component-mapper>
28
28
  </div>
29
29
  </div>
30
- <button *ngIf="allowAddEdit !== false" mat-button color="primary" style="font-size: 16px" (click)="addFieldGroupItem()">+ Add</button>
31
30
  </div>
31
+ <button *ngIf="allowAdd" mat-button color="primary" style="font-size: 16px" (click)="addFieldGroupItem()">{{ getAddBtnLabel() }}</button>
32
32
  </ng-template>
33
33
  </div>
@@ -6,3 +6,11 @@
6
6
  display: flex;
7
7
  align-items: center;
8
8
  }
9
+
10
+ .field-group-template-header {
11
+ margin-left: 0;
12
+ }
13
+
14
+ .field-group-template-item {
15
+ padding-block: 1rem;
16
+ }
@@ -1,4 +1,4 @@
1
- import { Component, OnInit, Input, forwardRef, OnDestroy, OnChanges } from '@angular/core';
1
+ import { Component, OnInit, Input, forwardRef, OnDestroy, OnChanges, AfterViewInit } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { FormGroup } from '@angular/forms';
4
4
  import { MatButtonModule } from '@angular/material/button';
@@ -6,11 +6,14 @@ import { AngularPConnectData, AngularPConnectService } from '@pega/angular-sdk-c
6
6
  import { buildView, getReferenceList } from '@pega/angular-sdk-components';
7
7
  import { Utils } from '@pega/angular-sdk-components';
8
8
  import { ComponentMapperComponent } from '@pega/angular-sdk-components';
9
+ import { evaluateAllowRowAction } from './utils';
9
10
 
10
11
  interface FieldGroupTemplateProps {
11
12
  // If any, enter additional props that only exist on this component
12
13
  label?: string;
13
- showLabel?: boolean;
14
+ hideLabel?: boolean;
15
+ allowActions?: any;
16
+ allowRowDelete?: any;
14
17
  referenceList?: any[];
15
18
  contextClass: string;
16
19
  renderMode?: string;
@@ -19,6 +22,7 @@ interface FieldGroupTemplateProps {
19
22
  displayMode?: string;
20
23
  fieldHeader?: string;
21
24
  allowTableEdit: boolean;
25
+ targetClassLabel?: string;
22
26
  }
23
27
 
24
28
  @Component({
@@ -28,26 +32,27 @@ interface FieldGroupTemplateProps {
28
32
  standalone: true,
29
33
  imports: [CommonModule, MatButtonModule, forwardRef(() => ComponentMapperComponent)]
30
34
  })
31
- export class FieldGroupTemplateComponent implements OnInit, OnDestroy, OnChanges {
35
+ export class FieldGroupTemplateComponent implements OnInit, OnDestroy, OnChanges, AfterViewInit {
32
36
  @Input() configProps$: FieldGroupTemplateProps;
33
37
  @Input() pConn$: typeof PConnect;
34
38
  @Input() formGroup$: FormGroup;
35
39
 
36
40
  angularPConnectData: AngularPConnectData = {};
37
- inheritedProps$: object;
41
+
38
42
  showLabel$?: boolean = true;
39
43
  label$?: string;
40
44
  readonlyMode: boolean;
41
45
  contextClass: any;
42
- referenceList: any;
43
- pageReference: any;
44
46
  heading: any;
45
47
  children: any;
46
48
  menuIconOverride$: any;
47
- prevRefLength: number;
48
- allowAddEdit: boolean;
49
+ referenceListLength: number;
49
50
  fieldHeader: any;
50
51
 
52
+ allowAdd = true;
53
+ allowEdit = true;
54
+ allowDelete = true;
55
+
51
56
  constructor(
52
57
  private angularPConnect: AngularPConnectService,
53
58
  private utils: Utils
@@ -58,9 +63,21 @@ export class FieldGroupTemplateComponent implements OnInit, OnDestroy, OnChanges
58
63
  this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
59
64
  this.updateSelf();
60
65
 
61
- const menuIconOverride$ = 'trash';
62
- if (menuIconOverride$) {
63
- this.menuIconOverride$ = this.utils.getImageSrc(menuIconOverride$, this.utils.getSDKStaticContentUrl());
66
+ this.menuIconOverride$ = this.utils.getImageSrc('trash', this.utils.getSDKStaticContentUrl());
67
+
68
+ const { allowActions, allowTableEdit, referenceList } = this.configProps$;
69
+
70
+ if (allowActions && Object.keys(allowActions).length > 0) {
71
+ this.allowAdd = allowActions.allowAdd ?? allowTableEdit ?? true;
72
+ this.allowEdit = allowActions.allowEdit ?? true;
73
+ this.allowDelete = allowActions.allowDelete ?? allowTableEdit ?? true;
74
+ } else {
75
+ this.allowAdd = allowTableEdit ?? true;
76
+ this.allowDelete = allowTableEdit ?? true;
77
+ }
78
+
79
+ if (referenceList?.length === 0 && (this.allowAdd || this.allowEdit)) {
80
+ this.pConn$.getListActions().insert({ classID: this.contextClass }, referenceList.length);
64
81
  }
65
82
  }
66
83
 
@@ -85,56 +102,57 @@ export class FieldGroupTemplateComponent implements OnInit, OnDestroy, OnChanges
85
102
  const props = changes.configProps$;
86
103
  if (props.currentValue !== props.previousValue) {
87
104
  this.configProps$ = props.currentValue;
105
+
88
106
  if (changes?.pConn$?.currentValue) {
89
107
  this.pConn$ = changes?.pConn$?.currentValue;
90
108
  }
109
+
91
110
  this.updateSelf();
92
111
  }
93
112
  }
94
113
  }
95
114
 
115
+ ngAfterViewInit() {
116
+ const resolvedList = getReferenceList(this.pConn$);
117
+ // @ts-ignore - Expected 3 arguments, but got 1
118
+ this.pConn$.getListActions().initDefaultPageInstructions(resolvedList);
119
+ }
120
+
96
121
  updateSelf() {
97
- this.inheritedProps$ = this.pConn$.getInheritedProps();
98
- this.label$ = this.configProps$.label;
99
- this.showLabel$ = this.configProps$.showLabel;
100
- // label & showLabel within inheritedProps takes precedence over configProps
101
- this.label$ = (this.inheritedProps$ as any).label || this.label$;
102
- this.showLabel$ = (this.inheritedProps$ as any).showLabel || this.showLabel$;
122
+ const inheritedProps: any = this.pConn$.getInheritedProps();
103
123
 
104
- this.allowAddEdit = this.configProps$.allowTableEdit;
124
+ const { label, hideLabel, allowRowDelete, referenceList, fieldHeader, renderMode, displayMode, heading, contextClass, lookForChildInConfig } =
125
+ this.configProps$;
126
+
127
+ // label within inheritedProps takes precedence over configProps
128
+ this.label$ = inheritedProps.label || label;
129
+
130
+ this.showLabel$ = referenceList?.length === 0 || !hideLabel;
105
131
 
106
- const renderMode = this.configProps$.renderMode;
107
- const displayMode = this.configProps$.displayMode;
108
132
  this.readonlyMode = renderMode === 'ReadOnly' || displayMode === 'DISPLAY_ONLY';
109
- this.contextClass = this.configProps$.contextClass;
110
- const lookForChildInConfig = this.configProps$.lookForChildInConfig;
111
- this.heading = this.configProps$.heading ?? 'Row';
112
- this.fieldHeader = this.configProps$.fieldHeader;
133
+
134
+ this.contextClass = contextClass;
135
+ this.heading = heading ?? 'Row';
136
+ this.fieldHeader = fieldHeader;
137
+
113
138
  const resolvedList = getReferenceList(this.pConn$);
114
- this.pageReference = `${this.pConn$.getPageReference()}${resolvedList}`;
115
139
  this.pConn$.setReferenceList(resolvedList);
140
+
116
141
  if (this.readonlyMode) {
117
142
  this.pConn$.setInheritedProp('displayMode', 'DISPLAY_ONLY');
118
143
  }
119
- this.referenceList = this.configProps$.referenceList;
120
- if (this.prevRefLength != this.referenceList.length) {
121
- // eslint-disable-next-line sonarjs/no-collapsible-if
122
- if (!this.readonlyMode) {
123
- if (this.referenceList?.length === 0 && this.allowAddEdit !== false) {
124
- this.addFieldGroupItem();
125
- }
126
- }
127
- const children: any = [];
128
- this.referenceList?.forEach((item, index) => {
129
- children.push({
144
+
145
+ if (this.referenceListLength != referenceList?.length) {
146
+ this.children = referenceList?.map((item, index) => {
147
+ return {
130
148
  id: index,
131
149
  name: this.fieldHeader === 'propertyRef' ? this.getDynamicHeader(item, index) : this.getStaticHeader(this.heading, index),
132
- children: buildView(this.pConn$, index, lookForChildInConfig)
133
- });
150
+ children: buildView(this.pConn$, index, lookForChildInConfig),
151
+ allowRowDelete: evaluateAllowRowAction(allowRowDelete, item)
152
+ };
134
153
  });
135
- this.children = children;
136
154
  }
137
- this.prevRefLength = this.referenceList.length;
155
+ this.referenceListLength = referenceList?.length || 0;
138
156
  }
139
157
 
140
158
  getStaticHeader = (heading, index) => {
@@ -149,10 +167,15 @@ export class FieldGroupTemplateComponent implements OnInit, OnDestroy, OnChanges
149
167
  };
150
168
 
151
169
  addFieldGroupItem() {
152
- this.pConn$.getListActions().insert({ classID: this.contextClass }, this.referenceList.length);
170
+ this.pConn$.getListActions().insert({ classID: this.contextClass }, this.referenceListLength);
153
171
  }
154
172
 
155
173
  deleteFieldGroupItem(index) {
156
174
  this.pConn$.getListActions().deleteEntry(index);
157
175
  }
176
+
177
+ getAddBtnLabel() {
178
+ const { targetClassLabel } = this.configProps$;
179
+ return targetClassLabel ? `+ Add ${targetClassLabel}` : '+ Add';
180
+ }
158
181
  }
@@ -0,0 +1,9 @@
1
+ export const evaluateAllowRowAction = (allowRowDelete, rowData) => {
2
+ if (allowRowDelete === undefined || allowRowDelete === true) return true;
3
+ if (allowRowDelete.startsWith?.('@E ')) {
4
+ const expression = allowRowDelete.replace('@E ', '');
5
+ // @ts-ignore
6
+ return PCore.getExpressionEngine().evaluate(expression, rowData);
7
+ }
8
+ return false;
9
+ };
@@ -1,5 +1,5 @@
1
- <div *ngIf="displayMode$ === 'DISPLAY_ONLY'; else STACKED_LARGE_VAL" class="psdk-container-labels-left">
2
- <div class="psdk-grid-label">{{ label$ }}</div>
1
+ <div *ngIf="displayMode$ === 'DISPLAY_ONLY'; else STACKED_LARGE_VAL" [ngClass]="label$ ? 'psdk-container-labels-left' : 'psdk-container-nolabels'">
2
+ <div *ngIf="label$" class="psdk-grid-label">{{ label$ }}</div>
3
3
  <div class="psdk-val-labels-left">
4
4
  <ng-container *ngTemplateOutlet="valueTemplate"></ng-container>
5
5
  </div>
@@ -6,6 +6,10 @@
6
6
  align-items: start;
7
7
  padding-block: 8px;
8
8
  }
9
+ .psdk-container-nolabels {
10
+ align-items: start;
11
+ padding-block: 8px;
12
+ }
9
13
  .psdk-value {
10
14
  margin: 8px 0px;
11
15
  }
@@ -180,7 +180,9 @@
180
180
  <tr mat-header-row *matHeaderRowDef="displayedColumns$"></tr>
181
181
  </table>
182
182
  </div>
183
- <div class="psdk-no-records" *ngIf="repeatListData?.length === 0">No Records Found.</div>
183
+ <div class="psdk-no-records" *ngIf="repeatListData?.length === 0">
184
+ {{ utils.getGenericFieldsLocalizedValue('CosmosFields.fields.lists', 'No records found.') }}
185
+ </div>
184
186
  </div>
185
187
  </div>
186
188
  </div>
@@ -165,7 +165,7 @@ export class ListViewComponent implements OnInit, OnDestroy {
165
165
 
166
166
  constructor(
167
167
  private psService: ProgressSpinnerService,
168
- private utils: Utils
168
+ public utils: Utils
169
169
  ) {}
170
170
 
171
171
  ngOnInit(): void {
@@ -44,18 +44,20 @@ function getFieldWidth(field, label) {
44
44
  export const getContext = thePConn => {
45
45
  const contextName = thePConn.getContextName();
46
46
  const pageReference = thePConn.getPageReference();
47
- // 8.7 change = referenceList may now be in top-level of state props,
48
- // not always in config of state props
49
- let { referenceList } = thePConn.getStateProps()?.config || thePConn.getStateProps();
47
+ const { readonlyContextList, referenceList = readonlyContextList } = thePConn.getStateProps()?.config || thePConn.getStateProps();
48
+
50
49
  const pageReferenceForRows = referenceList.startsWith('.') ? `${pageReference}.${referenceList.substring(1)}` : referenceList;
50
+ const viewName = thePConn.viewName;
51
51
 
52
52
  // removing "caseInfo.content" prefix to avoid setting it as a target while preparing pageInstructions
53
- referenceList = pageReferenceForRows.replace(PCore.getConstants().CASE_INFO.CASE_INFO_CONTENT, '');
53
+ // skipping the removal as StateMachine itself is removing this case info prefix while preparing pageInstructions
54
+ // referenceList = pageReferenceForRows.replace(PCore.getConstants().CASE_INFO.CASE_INFO_CONTENT, '');
54
55
 
55
56
  return {
56
57
  contextName,
57
58
  referenceListStr: referenceList,
58
- pageReferenceForRows
59
+ pageReferenceForRows,
60
+ viewName
59
61
  };
60
62
  };
61
63
 
@@ -189,7 +191,7 @@ export const createMetaForTable = (fields, renderMode) => {
189
191
  };
190
192
 
191
193
  export const filterDataByDate = (item, filterObj) => {
192
- let bKeep;
194
+ let bKeep = true;
193
195
  let value = item[filterObj.ref] != null || item[filterObj.ref] != '' ? getSeconds(item[filterObj.ref]) : null;
194
196
  let filterValue = filterObj.containsFilterValue != null && filterObj.containsFilterValue != '' ? getSeconds(filterObj.containsFilterValue) : null;
195
197
 
@@ -237,7 +239,7 @@ export const filterDataByDate = (item, filterObj) => {
237
239
  };
238
240
 
239
241
  export const filterDataByCommonFields = (item, filterObj) => {
240
- let bKeep;
242
+ let bKeep = true;
241
243
  const value = item[filterObj.ref].toLowerCase();
242
244
  const filterValue = filterObj.containsFilterValue.toLowerCase();
243
245
 
@@ -292,3 +294,19 @@ export const createPConnect = (contextName, referenceList, pageReference) => {
292
294
 
293
295
  return getPConnect();
294
296
  };
297
+
298
+ /**
299
+ * This method evaluates whether a row action is allowed based on the provided conditions.
300
+ * @param {string|boolean|undefined} allowRowDelete - The condition for allowing row deletion.
301
+ * @param {object} rowData - The data of the row being evaluated.
302
+ * @returns {boolean} - Returns true if the row action is allowed, false otherwise.
303
+ */
304
+ export const evaluateAllowRowAction = (allowRowDelete, rowData) => {
305
+ if (allowRowDelete === undefined || allowRowDelete === true) return true;
306
+ if (allowRowDelete.startsWith?.('@E ')) {
307
+ const expression = allowRowDelete.replace('@E ', '');
308
+ // @ts-ignore - Expected 3 arguments, but got 2
309
+ return PCore.getExpressionEngine().evaluate(expression, rowData);
310
+ }
311
+ return false;
312
+ };
@@ -3,8 +3,8 @@
3
3
  <h3 *ngIf="label" className="label" style="font-weight: bold">
4
4
  {{ label }} <span class="results-count">{{ getResultsText() }}</span>
5
5
  </h3>
6
- <table *ngIf="readOnlyMode || allowEditingInModal" mat-table [dataSource]="rowData" class="mat-elevation-z8" id="readonly-table" matSort>
7
- <ng-container *ngFor="let dCol of processedFields" [matColumnDef]="dCol.config.name">
6
+ <table *ngIf="readOnlyMode || allowEditingInModal" mat-table [dataSource]="elementsData" class="mat-elevation-z8" id="readonly-table" matSort>
7
+ <ng-container *ngFor="let dCol of processedFields; let i = index" [matColumnDef]="dCol.config.name">
8
8
  <th mat-header-cell *matHeaderCellDef mat-sort-header (click)="_headerSortClick($event, dCol)" arrowPosition="before">
9
9
  <div>{{ dCol.config.label }}</div>
10
10
  <div class="psdk-mat-header-filter">
@@ -27,7 +27,16 @@
27
27
  </mat-menu>
28
28
  </div>
29
29
  </th>
30
- <td mat-cell *matCellDef="let element">{{ element[dCol.config.name] || '---' }}</td>
30
+ <td mat-cell *matCellDef="let element">
31
+ <component-mapper
32
+ [name]="element[i].getPConnect().getComponentName()"
33
+ [props]="{
34
+ pConn$: element[i].getPConnect(),
35
+ formGroup$: formGroup$
36
+ }"
37
+ errorMsg="Table wants component not yet available: {{ element[i].getPConnect().getComponentName() }}"
38
+ ></component-mapper>
39
+ </td>
31
40
  </ng-container>
32
41
  <ng-container matColumnDef="DeleteIcon">
33
42
  <div *ngIf="allowEditingInModal">
@@ -47,6 +56,11 @@
47
56
  </ng-container>
48
57
  <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
49
58
  <tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
59
+ <tr class="mat-row psdk-no-records" *matNoDataRow>
60
+ <td id="no-records" class="mat-cell" [attr.colspan]="displayedColumns.length">
61
+ {{ utils.getGenericFieldsLocalizedValue('CosmosFields.fields.lists', 'No records found.') }}
62
+ </td>
63
+ </tr>
50
64
  </table>
51
65
  <table *ngIf="editableMode && !allowEditingInModal" mat-table [dataSource]="elementsData" class="mat-elevation-z8" id="editable-table">
52
66
  <ng-container *ngFor="let dCol of fieldDefs; let i = index">
@@ -74,11 +88,16 @@
74
88
  </ng-container>
75
89
  <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
76
90
  <tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
91
+ <tr class="mat-row psdk-no-records" *matNoDataRow>
92
+ <td id="no-records" class="mat-cell" [attr.colspan]="displayedColumns.length">
93
+ {{ utils.getGenericFieldsLocalizedValue('CosmosFields.fields.lists', 'No records found.') }}
94
+ </td>
95
+ </tr>
77
96
  </table>
78
- <div class="psdk-no-records" id="no-records" *ngIf="editableMode && referenceList?.length === 0">No Records Found.</div>
79
- <div class="psdk-no-records" id="no-records" *ngIf="readOnlyMode && rowData?.data?.length === 0">No Records Found.</div>
80
97
  </div>
81
- <button *ngIf="showAddRowButton" mat-button color="primary" style="font-size: 16px" (click)="addRecord()">+ Add</button>
98
+ <button *ngIf="showAddRowButton" mat-button color="primary" style="font-size: 16px" (click)="addRecord()">
99
+ + {{ localizedVal('Add', localeCategory) }}
100
+ </button>
82
101
  </ng-container>
83
102
 
84
103
  <!-- pop overs for filters-->
@@ -24,6 +24,12 @@ td.mat-mdc-cell,
24
24
  td.mat-mdc-footer-cell {
25
25
  border-right: 1px solid var(--app-neutral-light-color);
26
26
  padding: 8px !important;
27
+ min-width: 10rem;
28
+ }
29
+
30
+ ::ng-deep th.mat-mdc-header-cell:last-child,
31
+ td.mat-mdc-cell:last-child {
32
+ min-width: 2rem;
27
33
  }
28
34
 
29
35
  ::ng-deep .mat-mdc-button {
@@ -160,9 +166,7 @@ tr.mat-mdc-header-row {
160
166
 
161
167
  .psdk-no-records {
162
168
  height: 56px;
163
- justify-content: center;
164
- display: flex;
165
- align-items: center;
169
+ text-align: center;
166
170
  border: 1px solid var(--app-neutral-light-color);
167
171
  border-top: none;
168
172
  background: var(--app-form-color);
@@ -1,4 +1,3 @@
1
- /* eslint-disable max-classes-per-file */
2
1
  import { Component, OnInit, Input, ViewChild, forwardRef, OnDestroy } from '@angular/core';
3
2
  import { CommonModule } from '@angular/common';
4
3
  import { FormGroup } from '@angular/forms';
@@ -17,7 +16,7 @@ import { ComponentMapperComponent } from '@pega/angular-sdk-components';
17
16
  import { AngularPConnectData, AngularPConnectService } from '@pega/angular-sdk-components';
18
17
  import { DatapageService } from '@pega/angular-sdk-components';
19
18
  import { getReferenceList } from '@pega/angular-sdk-components';
20
- import { buildFieldsForTable, filterDataByCommonFields, filterDataByDate, getContext } from './helpers';
19
+ import { buildFieldsForTable, evaluateAllowRowAction, filterDataByCommonFields, filterDataByDate, getContext } from './helpers';
21
20
  import { Utils } from '@pega/angular-sdk-components';
22
21
  import { getSeconds } from '@pega/angular-sdk-components';
23
22
 
@@ -37,7 +36,9 @@ interface SimpleTableManualProps {
37
36
  contextClass?: string;
38
37
  propertyLabel?: string;
39
38
  fieldMetadata?: any;
39
+ allowActions?: any;
40
40
  allowTableEdit?: boolean;
41
+ allowRowDelete?: any;
41
42
  editMode?: string;
42
43
  addAndEditRowsWithin?: any;
43
44
  viewForAddAndEditModal?: any;
@@ -104,6 +105,7 @@ export class SimpleTableManualComponent implements OnInit, OnDestroy {
104
105
  showAddRowButton: boolean;
105
106
  prevReferenceList: any[] = [];
106
107
  elementsData: MatTableDataSource<any>;
108
+ originalElementsData: MatTableDataSource<any>;
107
109
  rawFields: any;
108
110
  label?: string = '';
109
111
  searchIcon$: string;
@@ -160,14 +162,16 @@ export class SimpleTableManualComponent implements OnInit, OnDestroy {
160
162
 
161
163
  isInitialized = false;
162
164
  targetClassLabel: string;
163
-
165
+ localizedVal = PCore.getLocaleUtils().getLocaleValue;
166
+ localeCategory = 'SimpleTable';
164
167
  constructor(
165
168
  private angularPConnect: AngularPConnectService,
166
- private utils: Utils,
169
+ public utils: Utils,
167
170
  private dataPageService: DatapageService
168
171
  ) {}
169
172
 
170
173
  ngOnInit(): void {
174
+ this.elementsData = new MatTableDataSource<any>([]);
171
175
  this.isInitialized = true;
172
176
  // First thing in initialization is registering and subscribing to the AngularPConnect service
173
177
  this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
@@ -229,7 +233,9 @@ export class SimpleTableManualComponent implements OnInit, OnDestroy {
229
233
  renderMode,
230
234
  children, // destructure children into an array var: "resolvedFields"
231
235
  presets,
236
+ allowActions,
232
237
  allowTableEdit,
238
+ allowRowDelete,
233
239
  label: labelProp,
234
240
  propertyLabel,
235
241
  fieldMetadata,
@@ -243,12 +249,22 @@ export class SimpleTableManualComponent implements OnInit, OnDestroy {
243
249
  targetClassLabel
244
250
  } = this.configProps$;
245
251
 
252
+ const simpleTableManualProps: any = {};
253
+ if (this.checkIfAllowActionsOrRowEditingExist(allowActions) && editMode) {
254
+ simpleTableManualProps.hideAddRow = allowActions?.allowAdd === false;
255
+ simpleTableManualProps.hideDeleteRow = allowActions?.allowDelete === false;
256
+ simpleTableManualProps.hideEditRow = allowActions?.allowEdit === false;
257
+ simpleTableManualProps.disableDragDrop = allowActions?.allowDragDrop === false;
258
+ } else if (allowTableEdit === false) {
259
+ simpleTableManualProps.hideAddRow = true;
260
+ simpleTableManualProps.hideDeleteRow = true;
261
+ simpleTableManualProps.disableDragDrop = true;
262
+ }
263
+
246
264
  this.referenceListStr = getContext(this.pConn$).referenceListStr;
247
265
  this.label = labelProp || propertyLabel;
248
266
  this.parameters = fieldMetadata?.datasource?.parameters;
249
267
  this.targetClassLabel = targetClassLabel;
250
- const hideAddRow = allowTableEdit === false;
251
- const hideDeleteRow = allowTableEdit === false;
252
268
  let { contextClass } = this.configProps$;
253
269
  this.referenceList = referenceList;
254
270
  if (!contextClass) {
@@ -285,10 +301,10 @@ export class SimpleTableManualComponent implements OnInit, OnDestroy {
285
301
  this.readOnlyMode = renderMode === 'ReadOnly';
286
302
  this.editableMode = renderMode === 'Editable';
287
303
  const isDisplayModeEnabled = displayMode === 'DISPLAY_ONLY';
288
- this.showAddRowButton = !this.readOnlyMode && !hideAddRow;
304
+ this.showAddRowButton = !this.readOnlyMode && !simpleTableManualProps.hideAddRow;
289
305
  this.allowEditingInModal =
290
306
  (editMode ? editMode === 'modal' : addAndEditRowsWithin === 'modal') && !(renderMode === 'ReadOnly' || isDisplayModeEnabled);
291
- const showDeleteButton = this.editableMode && !hideDeleteRow;
307
+ const showDeleteButton = this.editableMode && !simpleTableManualProps.hideDeleteRow && evaluateAllowRowAction(allowRowDelete, this.rowData);
292
308
  this.defaultView = editModeConfig ? editModeConfig.defaultView : viewForAddAndEditModal;
293
309
  this.bUseSeparateViewForEdit = editModeConfig ? editModeConfig.useSeparateViewForEdit : useSeparateViewForEdit;
294
310
  this.editView = editModeConfig ? editModeConfig.editView : viewForEditModal;
@@ -327,7 +343,7 @@ export class SimpleTableManualComponent implements OnInit, OnDestroy {
327
343
  });
328
344
 
329
345
  // for adding rows to table when editable and not modal view
330
- if (this.prevReferenceList.length !== this.referenceList.length && this.editableMode && !this.allowEditingInModal) {
346
+ if (this.prevReferenceList.length !== this.referenceList.length) {
331
347
  this.buildElementsForTable();
332
348
  }
333
349
 
@@ -354,6 +370,10 @@ export class SimpleTableManualComponent implements OnInit, OnDestroy {
354
370
  // ties the 3 data structures together.
355
371
  }
356
372
 
373
+ checkIfAllowActionsOrRowEditingExist(newflagobject) {
374
+ return (newflagobject && Object.keys(newflagobject).length > 0) || this.pConn$.getComponentConfig().allowRowEdit;
375
+ }
376
+
357
377
  initializeDefaultPageInstructions() {
358
378
  if (this.isInitialized) {
359
379
  this.isInitialized = false;
@@ -375,8 +395,8 @@ export class SimpleTableManualComponent implements OnInit, OnDestroy {
375
395
  }
376
396
 
377
397
  sortCompare(a, b): number {
378
- let aValue = a[this.compareRef];
379
- let bValue = b[this.compareRef];
398
+ let aValue = a[0][this.compareRef];
399
+ let bValue = b[0][this.compareRef];
380
400
 
381
401
  if (this.compareType == 'Date' || this.compareType == 'DateTime') {
382
402
  aValue = getSeconds(aValue);
@@ -499,17 +519,20 @@ export class SimpleTableManualComponent implements OnInit, OnDestroy {
499
519
  // run through list of elements in path, if menu not in th path, then want to
500
520
  // hide (toggle) the menu
501
521
  const eventPath = event.path;
502
- for (let eventIndex = 0; eventIndex < eventPath.length; eventIndex++) {
503
- if (
504
- eventPath[eventIndex].className == 'psdk-modal-file-top' ||
505
- eventPath[eventIndex].tagName == 'BUTTON' ||
506
- eventPath[eventIndex].tagName == 'MAT-OPTION' ||
507
- eventPath[eventIndex].tagName == 'MAT-INPUT'
508
- ) {
509
- bInPopUp = true;
510
- break;
522
+ if (eventPath) {
523
+ for (let eventIndex = 0; eventIndex < eventPath.length; eventIndex++) {
524
+ if (
525
+ eventPath[eventIndex].className == 'psdk-modal-file-top' ||
526
+ eventPath[eventIndex].tagName == 'BUTTON' ||
527
+ eventPath[eventIndex].tagName == 'MAT-OPTION' ||
528
+ eventPath[eventIndex].tagName == 'MAT-INPUT'
529
+ ) {
530
+ bInPopUp = true;
531
+ break;
532
+ }
511
533
  }
512
534
  }
535
+
513
536
  if (!bInPopUp) {
514
537
  // this.bShowFilterPopover$ = false;
515
538
 
@@ -628,7 +651,8 @@ export class SimpleTableManualComponent implements OnInit, OnDestroy {
628
651
  }
629
652
  }
630
653
 
631
- filterData(item: any) {
654
+ filterData(element: any) {
655
+ const item = element[0];
632
656
  let bKeep = true;
633
657
  for (const filterObj of this.filterByColumns) {
634
658
  if (filterObj.containsFilterValue != '' || filterObj.containsFilter == 'null' || filterObj.containsFilter == 'notnull') {
@@ -642,6 +666,8 @@ export class SimpleTableManualComponent implements OnInit, OnDestroy {
642
666
  bKeep = filterDataByCommonFields(item, filterObj);
643
667
  break;
644
668
  }
669
+ } else if (filterObj.containsFilterValue === '') {
670
+ bKeep = true;
645
671
  }
646
672
 
647
673
  // if don't keep stop filtering
@@ -654,14 +680,22 @@ export class SimpleTableManualComponent implements OnInit, OnDestroy {
654
680
  }
655
681
 
656
682
  filterSortGroupBy() {
657
- let theData = this.originalData.slice();
683
+ let theData = this.originalData.slice().map((item, index) => {
684
+ return [item, index];
685
+ });
658
686
 
659
687
  // last filter config data is global
660
688
  theData = theData.filter(this.filterData.bind(this));
661
689
 
662
690
  // last sort config data is global
663
691
  theData.sort(this.sortCompare.bind(this));
664
- this.rowData.data = theData;
692
+ this.rowData.data = theData.map(item => item[0]);
693
+
694
+ const newElements: any = new Array(this.rowData.data.length);
695
+ theData.forEach((item, index) => {
696
+ newElements[index] = this.originalElementsData[item[1]];
697
+ });
698
+ this.elementsData = newElements;
665
699
  }
666
700
 
667
701
  _headerSortClick(event, columnData) {
@@ -960,6 +994,10 @@ export class SimpleTableManualComponent implements OnInit, OnDestroy {
960
994
  this.referenceList.forEach((element, index) => {
961
995
  const data: any = [];
962
996
  this.rawFields?.forEach(item => {
997
+ item = {
998
+ ...item,
999
+ config: { ...item.config, label: '', displayMode: this.readOnlyMode || this.allowEditingInModal ? 'DISPLAY_ONLY' : undefined }
1000
+ };
963
1001
  const referenceListData = getReferenceList(this.pConn$);
964
1002
  const isDatapage = referenceListData.startsWith('D_');
965
1003
  const pageReferenceValue = isDatapage ? `${referenceListData}[${index}]` : `${this.pConn$.getPageReference()}${referenceListData}[${index}]`;
@@ -977,6 +1015,7 @@ export class SimpleTableManualComponent implements OnInit, OnDestroy {
977
1015
  });
978
1016
  eleData.push(data);
979
1017
  });
1018
+ this.originalElementsData = eleData;
980
1019
  this.elementsData = eleData;
981
1020
  }
982
1021
  }