@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.
- package/package.json +1 -1
- package/src/tasks/create/templates/SDK-Angular/field/Boolean/boolean.component.ts.mustache +0 -1
- package/src/tasks/create/templates/SDK-Angular/field/DateTime/date-time.component.html.mustache +0 -1
- package/src/tasks/create/templates/SDK-Angular/field/DateTime/date-time.component.ts.mustache +17 -3
- package/src/tasks/create/templates/SDK-Angular/field/Decimal/decimal.component.html.mustache +1 -0
- package/src/tasks/create/templates/SDK-Angular/field/Decimal/decimal.component.ts.mustache +38 -15
- package/src/tasks/create/templates/SDK-Angular/field/Decimal-Currency/decimal-currency.component.ts.mustache +19 -13
- package/src/tasks/create/templates/SDK-Angular/field/Decimal-Percentage/decimal-percentage.component.html.mustache +1 -1
- package/src/tasks/create/templates/SDK-Angular/field/Decimal-Percentage/decimal-percentage.component.ts.mustache +27 -17
- package/src/tasks/create/templates/SDK-Angular/field/Integer/integer.component.html.mustache +1 -1
- package/src/tasks/create/templates/SDK-Angular/field/Integer/integer.component.ts.mustache +16 -6
- package/src/tasks/create/templates/SDK-Angular/field/Picklist/picklist.component.ts.mustache +18 -3
- package/src/tasks/create/templates/SDK-Angular/field/Text-Email/text-email.component.ts.mustache +17 -7
- package/src/tasks/create/templates/SDK-Angular/field/Text-Input/text.component.html.mustache +1 -1
- package/src/tasks/create/templates/SDK-Angular/field/Text-Input/text.component.ts.mustache +16 -6
- package/src/tasks/create/templates/SDK-Angular/field/Text-Paragraph/text-paragraph.component.html.mustache +1 -1
- package/src/tasks/create/templates/SDK-Angular/field/Text-Paragraph/text-paragraph.component.ts.mustache +16 -6
- package/src/tasks/create/templates/SDK-Angular/field/Text-Phone/text-phone.component.ts.mustache +6 -13
- package/src/tasks/create/templates/SDK-Angular/field/Text-URL/text-url.component.html.mustache +1 -1
- package/src/tasks/create/templates/SDK-Angular/field/Text-URL/text-url.component.ts.mustache +16 -6
- package/src/tasks/create/templates/SDK-Angular/field/TimeOfDay/time-of-day.component.html.mustache +1 -1
- package/src/tasks/create/templates/SDK-Angular/field/TimeOfDay/time-of-day.component.ts.mustache +21 -6
- package/src/tasks/create/templates/SDK-Angular/template/FORM/form.component.ts.mustache +35 -2
- package/src/tasks/create/templates/SDK-Angular/template/FORM-region/form.component.scss.mustache +1 -1
- package/tests/assets/sdk-a/components/create/override-sdk/designSystemExtension/material-case-summary/material-case-summary.component.ts +0 -1
- package/tests/assets/sdk-a/components/create/override-sdk/designSystemExtension/material-details-fields/material-details-fields.component.html +1 -1
- package/tests/assets/sdk-a/components/create/override-sdk/designSystemExtension/material-details-fields/material-details-fields.component.ts +6 -0
- package/tests/assets/sdk-a/components/create/override-sdk/designSystemExtension/operator/operator.component.html +1 -1
- package/tests/assets/sdk-a/components/create/override-sdk/designSystemExtension/operator/operator.component.scss +10 -2
- package/tests/assets/sdk-a/components/create/override-sdk/designSystemExtension/operator/operator.component.ts +4 -3
- package/tests/assets/sdk-a/components/create/override-sdk/field/currency/currency.component.ts +19 -13
- package/tests/assets/sdk-a/components/create/override-sdk/field/date-time/date-time.component.html +0 -1
- package/tests/assets/sdk-a/components/create/override-sdk/field/date-time/date-time.component.ts +17 -3
- package/tests/assets/sdk-a/components/create/override-sdk/field/decimal/decimal.component.html +1 -0
- package/tests/assets/sdk-a/components/create/override-sdk/field/decimal/decimal.component.ts +38 -15
- package/tests/assets/sdk-a/components/create/override-sdk/field/dropdown/dropdown.component.ts +18 -3
- package/tests/assets/sdk-a/components/create/override-sdk/field/email/email.component.ts +17 -7
- package/tests/assets/sdk-a/components/create/override-sdk/field/integer/integer.component.html +1 -1
- package/tests/assets/sdk-a/components/create/override-sdk/field/integer/integer.component.ts +16 -6
- package/tests/assets/sdk-a/components/create/override-sdk/field/percentage/percentage.component.html +1 -1
- package/tests/assets/sdk-a/components/create/override-sdk/field/percentage/percentage.component.ts +27 -17
- package/tests/assets/sdk-a/components/create/override-sdk/field/phone/phone.component.ts +6 -13
- package/tests/assets/sdk-a/components/create/override-sdk/field/rich-text/rich-text.component.ts +12 -3
- package/tests/assets/sdk-a/components/create/override-sdk/field/text/text.component.ts +2 -2
- package/tests/assets/sdk-a/components/create/override-sdk/field/text-area/text-area.component.html +1 -1
- package/tests/assets/sdk-a/components/create/override-sdk/field/text-area/text-area.component.ts +16 -6
- package/tests/assets/sdk-a/components/create/override-sdk/field/text-input/text-input.component.html +1 -1
- package/tests/assets/sdk-a/components/create/override-sdk/field/text-input/text-input.component.ts +16 -6
- package/tests/assets/sdk-a/components/create/override-sdk/field/time/time.component.html +1 -1
- package/tests/assets/sdk-a/components/create/override-sdk/field/time/time.component.ts +21 -6
- package/tests/assets/sdk-a/components/create/override-sdk/field/url/url.component.html +1 -1
- package/tests/assets/sdk-a/components/create/override-sdk/field/url/url.component.ts +16 -6
- package/tests/assets/sdk-a/components/create/override-sdk/field/user-reference/user-reference.component.html +40 -38
- package/tests/assets/sdk-a/components/create/override-sdk/field/user-reference/user-reference.component.ts +66 -7
- package/tests/assets/sdk-a/components/create/override-sdk/infra/action-buttons/action-buttons.component.html +1 -1
- package/tests/assets/sdk-a/components/create/override-sdk/infra/assignment/assignment.component.html +1 -1
- package/tests/assets/sdk-a/components/create/override-sdk/infra/assignment/assignment.component.ts +82 -39
- package/tests/assets/sdk-a/components/create/override-sdk/infra/assignment-card/assignment-card.component.html +1 -0
- package/tests/assets/sdk-a/components/create/override-sdk/infra/defer-load/defer-load.component.ts +4 -1
- package/tests/assets/sdk-a/components/create/override-sdk/infra/flow-container/flow-container.component.ts +17 -43
- package/tests/assets/sdk-a/components/create/override-sdk/infra/flow-container/helpers.ts +2 -2
- package/tests/assets/sdk-a/components/create/override-sdk/infra/modal-view-container/modal-view-container.component.html +1 -11
- package/tests/assets/sdk-a/components/create/override-sdk/infra/modal-view-container/modal-view-container.component.ts +0 -7
- package/tests/assets/sdk-a/components/create/override-sdk/infra/root-container/root-container.component.html +2 -15
- package/tests/assets/sdk-a/components/create/override-sdk/infra/root-container/root-container.component.ts +24 -27
- package/tests/assets/sdk-a/components/create/override-sdk/template/default-form/default-form.component.ts +35 -2
- package/tests/assets/sdk-a/components/create/override-sdk/template/field-group-template/field-group-template.component.html +7 -7
- package/tests/assets/sdk-a/components/create/override-sdk/template/field-group-template/field-group-template.component.scss +8 -0
- package/tests/assets/sdk-a/components/create/override-sdk/template/field-group-template/field-group-template.component.ts +64 -41
- package/tests/assets/sdk-a/components/create/override-sdk/template/field-group-template/utils.ts +9 -0
- package/tests/assets/sdk-a/components/create/override-sdk/template/field-value-list/field-value-list.component.html +2 -2
- package/tests/assets/sdk-a/components/create/override-sdk/template/field-value-list/field-value-list.component.scss +4 -0
- package/tests/assets/sdk-a/components/create/override-sdk/template/list-view/list-view.component.html +3 -1
- package/tests/assets/sdk-a/components/create/override-sdk/template/list-view/list-view.component.ts +1 -1
- package/tests/assets/sdk-a/components/create/override-sdk/template/simple-table-manual/helpers.ts +25 -7
- package/tests/assets/sdk-a/components/create/override-sdk/template/simple-table-manual/simple-table-manual.component.html +25 -6
- package/tests/assets/sdk-a/components/create/override-sdk/template/simple-table-manual/simple-table-manual.component.scss +7 -3
- package/tests/assets/sdk-a/components/create/override-sdk/template/simple-table-manual/simple-table-manual.component.ts +62 -23
- package/tests/assets/sdk-a/components/create/override-sdk/widget/todo/todo.component.html +4 -5
- package/tests/assets/sdk-a/components/create/override-sdk/widget/todo/todo.component.scss +9 -0
- package/tests/assets/sdk-a/components/create/override-sdk/widget/todo/todo.component.ts +4 -3
- package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-boolean/pega-dxil-my-boolean.component.ts +0 -1
- package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-currency/pega-dxil-my-currency.component.ts +19 -13
- package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-date-time/pega-dxil-my-date-time.component.html +0 -1
- package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-date-time/pega-dxil-my-date-time.component.ts +17 -3
- package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-decimal/pega-dxil-my-decimal.component.html +1 -0
- package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-decimal/pega-dxil-my-decimal.component.ts +38 -15
- package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-email/pega-dxil-my-email.component.ts +17 -7
- package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-integer/pega-dxil-my-integer.component.html +1 -1
- package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-integer/pega-dxil-my-integer.component.ts +16 -6
- package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-paragraph/pega-dxil-my-paragraph.component.html +1 -1
- package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-paragraph/pega-dxil-my-paragraph.component.ts +16 -6
- package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-percentage/pega-dxil-my-percentage.component.html +1 -1
- package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-percentage/pega-dxil-my-percentage.component.ts +27 -17
- package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-phone/pega-dxil-my-phone.component.ts +6 -13
- package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-picklist/pega-dxil-my-picklist.component.ts +18 -3
- package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-text-input/pega-dxil-my-text-input.component.html +1 -1
- package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-text-input/pega-dxil-my-text-input.component.ts +16 -6
- 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
- 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
- package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-url/pega-dxil-my-url.component.html +1 -1
- package/tests/assets/sdk-a/components/createAll/custom-sdk/field/pega-dxil-my-url/pega-dxil-my-url.component.ts +16 -6
- package/tests/assets/sdk-a/components/createAll/custom-sdk/template/pega-dxil-my-form/pega-dxil-my-form.component.ts +35 -2
- 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
- package/tests/assets/sdk-a/components/createAll/override-sdk/designSystemExtension/material-case-summary/material-case-summary.component.ts +0 -1
- package/tests/assets/sdk-a/components/createAll/override-sdk/designSystemExtension/material-details-fields/material-details-fields.component.html +1 -1
- package/tests/assets/sdk-a/components/createAll/override-sdk/designSystemExtension/material-details-fields/material-details-fields.component.ts +6 -0
- package/tests/assets/sdk-a/components/createAll/override-sdk/designSystemExtension/operator/operator.component.html +1 -1
- package/tests/assets/sdk-a/components/createAll/override-sdk/designSystemExtension/operator/operator.component.scss +10 -2
- package/tests/assets/sdk-a/components/createAll/override-sdk/designSystemExtension/operator/operator.component.ts +4 -3
- package/tests/assets/sdk-a/components/createAll/override-sdk/field/currency/currency.component.ts +19 -13
- package/tests/assets/sdk-a/components/createAll/override-sdk/field/date-time/date-time.component.html +0 -1
- package/tests/assets/sdk-a/components/createAll/override-sdk/field/date-time/date-time.component.ts +17 -3
- package/tests/assets/sdk-a/components/createAll/override-sdk/field/decimal/decimal.component.html +1 -0
- package/tests/assets/sdk-a/components/createAll/override-sdk/field/decimal/decimal.component.ts +38 -15
- package/tests/assets/sdk-a/components/createAll/override-sdk/field/dropdown/dropdown.component.ts +18 -3
- package/tests/assets/sdk-a/components/createAll/override-sdk/field/email/email.component.ts +17 -7
- package/tests/assets/sdk-a/components/createAll/override-sdk/field/integer/integer.component.html +1 -1
- package/tests/assets/sdk-a/components/createAll/override-sdk/field/integer/integer.component.ts +16 -6
- package/tests/assets/sdk-a/components/createAll/override-sdk/field/percentage/percentage.component.html +1 -1
- package/tests/assets/sdk-a/components/createAll/override-sdk/field/percentage/percentage.component.ts +27 -17
- package/tests/assets/sdk-a/components/createAll/override-sdk/field/phone/phone.component.ts +6 -13
- package/tests/assets/sdk-a/components/createAll/override-sdk/field/rich-text/rich-text.component.ts +12 -3
- package/tests/assets/sdk-a/components/createAll/override-sdk/field/text/text.component.ts +2 -2
- package/tests/assets/sdk-a/components/createAll/override-sdk/field/text-area/text-area.component.html +1 -1
- package/tests/assets/sdk-a/components/createAll/override-sdk/field/text-area/text-area.component.ts +16 -6
- package/tests/assets/sdk-a/components/createAll/override-sdk/field/text-input/text-input.component.html +1 -1
- package/tests/assets/sdk-a/components/createAll/override-sdk/field/text-input/text-input.component.ts +16 -6
- package/tests/assets/sdk-a/components/createAll/override-sdk/field/time/time.component.html +1 -1
- package/tests/assets/sdk-a/components/createAll/override-sdk/field/time/time.component.ts +21 -6
- package/tests/assets/sdk-a/components/createAll/override-sdk/field/url/url.component.html +1 -1
- package/tests/assets/sdk-a/components/createAll/override-sdk/field/url/url.component.ts +16 -6
- package/tests/assets/sdk-a/components/createAll/override-sdk/field/user-reference/user-reference.component.html +40 -38
- package/tests/assets/sdk-a/components/createAll/override-sdk/field/user-reference/user-reference.component.ts +66 -7
- package/tests/assets/sdk-a/components/createAll/override-sdk/infra/action-buttons/action-buttons.component.html +1 -1
- package/tests/assets/sdk-a/components/createAll/override-sdk/infra/assignment/assignment.component.html +1 -1
- package/tests/assets/sdk-a/components/createAll/override-sdk/infra/assignment/assignment.component.ts +82 -39
- package/tests/assets/sdk-a/components/createAll/override-sdk/infra/assignment-card/assignment-card.component.html +1 -0
- package/tests/assets/sdk-a/components/createAll/override-sdk/infra/defer-load/defer-load.component.ts +4 -1
- package/tests/assets/sdk-a/components/createAll/override-sdk/infra/flow-container/flow-container.component.ts +17 -43
- package/tests/assets/sdk-a/components/createAll/override-sdk/infra/flow-container/helpers.ts +2 -2
- package/tests/assets/sdk-a/components/createAll/override-sdk/infra/modal-view-container/modal-view-container.component.html +1 -11
- package/tests/assets/sdk-a/components/createAll/override-sdk/infra/modal-view-container/modal-view-container.component.ts +0 -7
- package/tests/assets/sdk-a/components/createAll/override-sdk/infra/root-container/root-container.component.html +2 -15
- package/tests/assets/sdk-a/components/createAll/override-sdk/infra/root-container/root-container.component.ts +24 -27
- package/tests/assets/sdk-a/components/createAll/override-sdk/template/default-form/default-form.component.ts +35 -2
- package/tests/assets/sdk-a/components/createAll/override-sdk/template/field-group-template/field-group-template.component.html +7 -7
- package/tests/assets/sdk-a/components/createAll/override-sdk/template/field-group-template/field-group-template.component.scss +8 -0
- package/tests/assets/sdk-a/components/createAll/override-sdk/template/field-group-template/field-group-template.component.ts +64 -41
- package/tests/assets/sdk-a/components/createAll/override-sdk/template/field-group-template/utils.ts +9 -0
- package/tests/assets/sdk-a/components/createAll/override-sdk/template/field-value-list/field-value-list.component.html +2 -2
- package/tests/assets/sdk-a/components/createAll/override-sdk/template/field-value-list/field-value-list.component.scss +4 -0
- package/tests/assets/sdk-a/components/createAll/override-sdk/template/list-view/list-view.component.html +3 -1
- package/tests/assets/sdk-a/components/createAll/override-sdk/template/list-view/list-view.component.ts +1 -1
- package/tests/assets/sdk-a/components/createAll/override-sdk/template/simple-table-manual/helpers.ts +25 -7
- package/tests/assets/sdk-a/components/createAll/override-sdk/template/simple-table-manual/simple-table-manual.component.html +25 -6
- package/tests/assets/sdk-a/components/createAll/override-sdk/template/simple-table-manual/simple-table-manual.component.scss +7 -3
- package/tests/assets/sdk-a/components/createAll/override-sdk/template/simple-table-manual/simple-table-manual.component.ts +62 -23
- package/tests/assets/sdk-a/components/createAll/override-sdk/widget/todo/todo.component.html +4 -5
- package/tests/assets/sdk-a/components/createAll/override-sdk/widget/todo/todo.component.scss +9 -0
- 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$"
|
|
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
|
|
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>{{
|
|
17
|
+
<b>{{ child.name }}</b>
|
|
18
18
|
</div>
|
|
19
|
-
<div *ngIf="
|
|
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="
|
|
27
|
-
<component-mapper name="Region" [props]="{ pConn$:
|
|
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>
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
110
|
-
|
|
111
|
-
this.heading =
|
|
112
|
-
this.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
|
-
|
|
120
|
-
if (this.
|
|
121
|
-
|
|
122
|
-
|
|
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.
|
|
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.
|
|
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
|
}
|
package/tests/assets/sdk-a/components/createAll/override-sdk/template/field-group-template/utils.ts
ADDED
|
@@ -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"
|
|
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>
|
|
@@ -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">
|
|
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>
|
package/tests/assets/sdk-a/components/createAll/override-sdk/template/simple-table-manual/helpers.ts
CHANGED
|
@@ -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
|
-
|
|
48
|
-
|
|
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
|
-
|
|
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]="
|
|
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">
|
|
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()"
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
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(
|
|
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
|
}
|