@pega/angular-sdk-overrides 24.2.12 → 25.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/designSystemExtension/alert/alert.component.scss +3 -3
- package/lib/designSystemExtension/alert/alert.component.ts +0 -1
- package/lib/designSystemExtension/alert-banner/alert-banner.component.ts +0 -1
- package/lib/designSystemExtension/banner/banner.component.html +1 -1
- package/lib/designSystemExtension/banner/banner.component.scss +17 -3
- package/lib/designSystemExtension/banner/banner.component.ts +0 -1
- package/lib/designSystemExtension/case-create-stage/case-create-stage.component.ts +0 -1
- package/lib/designSystemExtension/field-group/field-group.component.ts +0 -1
- package/lib/designSystemExtension/material-case-summary/material-case-summary.component.html +6 -3
- package/lib/designSystemExtension/material-case-summary/material-case-summary.component.scss +5 -34
- package/lib/designSystemExtension/material-case-summary/material-case-summary.component.ts +0 -1
- package/lib/designSystemExtension/material-details/material-details.component.scss +0 -5
- package/lib/designSystemExtension/material-details/material-details.component.ts +0 -1
- package/lib/designSystemExtension/material-details-fields/material-details-fields.component.html +2 -2
- package/lib/designSystemExtension/material-details-fields/material-details-fields.component.scss +4 -3
- package/lib/designSystemExtension/material-details-fields/material-details-fields.component.ts +0 -1
- package/lib/designSystemExtension/material-summary-item/material-summary-item.component.scss +4 -17
- package/lib/designSystemExtension/material-summary-item/material-summary-item.component.ts +0 -1
- package/lib/designSystemExtension/material-summary-list/material-summary-list.component.ts +0 -1
- package/lib/designSystemExtension/material-utility/material-utility.component.scss +1 -2
- package/lib/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.scss +1 -1
- package/lib/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.ts +0 -1
- package/lib/designSystemExtension/operator/operator.component.html +1 -1
- package/lib/designSystemExtension/operator/operator.component.scss +3 -10
- package/lib/designSystemExtension/operator/operator.component.ts +0 -2
- package/lib/designSystemExtension/pulse/pulse.component.scss +2 -2
- package/lib/designSystemExtension/pulse/pulse.component.ts +0 -1
- package/lib/designSystemExtension/rich-text-editor/rich-text-editor.component.html +4 -17
- package/lib/designSystemExtension/rich-text-editor/rich-text-editor.component.scss +0 -1
- package/lib/designSystemExtension/rich-text-editor/rich-text-editor.component.ts +30 -1
- package/lib/designSystemExtension/wss-quick-create/wss-quick-create.component.scss +16 -9
- package/lib/designSystemExtension/wss-quick-create/wss-quick-create.component.ts +0 -1
- package/lib/field/auto-complete/auto-complete.component.html +0 -1
- package/lib/field/auto-complete/auto-complete.component.ts +35 -173
- package/lib/field/cancel-alert/cancel-alert.component.html +8 -12
- package/lib/field/cancel-alert/cancel-alert.component.scss +2 -3
- package/lib/field/cancel-alert/cancel-alert.component.ts +24 -37
- package/lib/field/check-box/check-box.component.html +14 -7
- package/lib/field/check-box/check-box.component.scss +0 -1
- package/lib/field/check-box/check-box.component.ts +25 -151
- package/lib/field/currency/currency.component.ts +36 -169
- package/lib/field/date/date.component.html +2 -2
- package/lib/field/date/date.component.ts +30 -151
- package/lib/field/date-time/date-time.component.html +1 -1
- package/lib/field/date-time/date-time.component.ts +34 -149
- package/lib/field/decimal/decimal.component.ts +38 -164
- package/lib/field/dropdown/dropdown.component.ts +29 -152
- package/lib/field/email/email.component.ts +16 -156
- package/lib/field/field.base.ts +149 -0
- package/lib/field/group/group.component.ts +7 -5
- package/lib/field/integer/integer.component.ts +18 -158
- package/lib/field/list-view-action-buttons/list-view-action-buttons.component.ts +0 -1
- package/lib/field/location/config-ext.json +8 -0
- package/lib/field/location/location.component.html +45 -0
- package/lib/field/location/location.component.scss +18 -0
- package/lib/field/location/location.component.spec.ts +22 -0
- package/lib/field/location/location.component.ts +280 -0
- package/lib/field/multiselect/multiselect.component.ts +47 -152
- package/lib/field/multiselect/utils.ts +55 -47
- package/lib/field/object-reference/object-reference.component.html +17 -0
- package/lib/field/object-reference/object-reference.component.scss +0 -0
- package/lib/field/object-reference/object-reference.component.spec.ts +22 -0
- package/lib/field/object-reference/object-reference.component.ts +237 -0
- package/lib/field/percentage/percentage.component.ts +37 -155
- package/lib/field/phone/phone.component.html +18 -19
- package/lib/field/phone/phone.component.scss +4 -0
- package/lib/field/phone/phone.component.ts +43 -145
- package/lib/field/radio-buttons/radio-buttons.component.html +14 -6
- package/lib/field/radio-buttons/radio-buttons.component.scss +4 -2
- package/lib/field/radio-buttons/radio-buttons.component.ts +37 -160
- package/lib/field/rich-text/rich-text.component.html +2 -0
- package/lib/field/rich-text/rich-text.component.scss +172 -0
- package/lib/field/rich-text/rich-text.component.ts +21 -91
- package/lib/field/scalar-list/scalar-list.component.ts +17 -73
- package/lib/field/selectable-card/selectable-card.component.html +70 -0
- package/lib/field/selectable-card/selectable-card.component.scss +11 -0
- package/lib/field/selectable-card/selectable-card.component.spec.ts +22 -0
- package/lib/field/selectable-card/selectable-card.component.ts +219 -0
- package/lib/field/semantic-link/semantic-link.component.html +4 -8
- package/lib/field/semantic-link/semantic-link.component.scss +0 -13
- package/lib/field/semantic-link/semantic-link.component.ts +165 -6
- package/lib/field/text/text.component.scss +0 -1
- package/lib/field/text/text.component.ts +0 -1
- package/lib/field/text-area/text-area.component.ts +18 -153
- package/lib/field/text-content/text-content.component.ts +0 -1
- package/lib/field/text-input/text-input.component.ts +16 -156
- package/lib/field/time/time.component.ts +17 -152
- package/lib/field/url/url.component.ts +16 -155
- package/lib/field/user-reference/user-reference.component.scss +0 -1
- package/lib/field/user-reference/user-reference.component.ts +2 -4
- package/lib/infra/Containers/flow-container/flow-container.component.html +2 -2
- package/lib/infra/Containers/flow-container/flow-container.component.ts +8 -9
- package/lib/infra/Containers/hybrid-view-container/hybrid-view-container.component.ts +0 -1
- package/lib/infra/Containers/modal-view-container/modal-view-container.component.ts +5 -11
- package/lib/infra/Containers/view-container/helper.ts +35 -2
- package/lib/infra/Containers/view-container/view-container.component.ts +1 -2
- package/lib/infra/action-buttons/action-buttons.component.html +13 -8
- package/lib/infra/action-buttons/action-buttons.component.scss +23 -0
- package/lib/infra/action-buttons/action-buttons.component.ts +1 -3
- package/lib/infra/assignment/assignment.component.ts +21 -10
- package/lib/infra/assignment-card/assignment-card.component.html +1 -2
- package/lib/infra/assignment-card/assignment-card.component.scss +0 -4
- package/lib/infra/assignment-card/assignment-card.component.ts +21 -5
- package/lib/infra/dashboard-filter/dashboard-filter.component.ts +0 -1
- package/lib/infra/defer-load/defer-load.component.html +6 -2
- package/lib/infra/defer-load/defer-load.component.ts +22 -12
- package/lib/infra/error-boundary/error-boundary.component.ts +0 -1
- package/lib/infra/multi-step/multi-step.component.html +22 -38
- package/lib/infra/multi-step/multi-step.component.scss +14 -27
- package/lib/infra/multi-step/multi-step.component.ts +0 -1
- package/lib/infra/navbar/navbar.component.html +36 -41
- package/lib/infra/navbar/navbar.component.scss +22 -4
- package/lib/infra/navbar/navbar.component.ts +8 -4
- package/lib/infra/reference/reference.component.ts +5 -0
- package/lib/infra/region/region.component.ts +0 -1
- package/lib/infra/root-container/root-container.component.scss +0 -1
- package/lib/infra/root-container/root-container.component.ts +1 -5
- package/lib/infra/stages/stages.component.html +4 -3
- package/lib/infra/stages/stages.component.scss +12 -36
- package/lib/infra/stages/stages.component.ts +4 -3
- package/lib/infra/view/view.component.html +1 -1
- package/lib/infra/view/view.component.ts +3 -7
- package/lib/template/advanced-search/advanced-search.component.html +12 -0
- package/lib/template/advanced-search/advanced-search.component.scss +0 -0
- package/lib/template/advanced-search/advanced-search.component.spec.ts +0 -0
- package/lib/template/advanced-search/advanced-search.component.ts +112 -0
- package/lib/template/advanced-search/advanced-search.service.ts +27 -0
- package/lib/template/advanced-search/search-group/persist-utils.ts +56 -0
- package/lib/template/advanced-search/search-groups/search-groups.component.html +32 -0
- package/lib/template/advanced-search/search-groups/search-groups.component.scss +0 -0
- package/lib/template/advanced-search/search-groups/search-groups.component.spec.ts +0 -0
- package/lib/template/advanced-search/search-groups/search-groups.component.ts +294 -0
- package/lib/template/advanced-search/search-groups/utils.ts +29 -0
- package/lib/template/app-shell/app-shell.component.html +4 -1
- package/lib/template/app-shell/app-shell.component.scss +0 -3
- package/lib/template/app-shell/app-shell.component.ts +46 -8
- package/lib/template/banner-page/banner-page.component.ts +0 -1
- package/lib/template/case-summary/case-summary.component.scss +0 -2
- package/lib/template/case-summary/case-summary.component.ts +6 -22
- package/lib/template/case-view/case-view.component.html +4 -4
- package/lib/template/case-view/case-view.component.scss +18 -10
- package/lib/template/case-view/case-view.component.ts +1 -11
- package/lib/template/confirmation/confirmation.component.html +1 -1
- package/lib/template/confirmation/confirmation.component.ts +0 -1
- package/lib/template/data-reference/data-reference.component.html +11 -8
- package/lib/template/data-reference/data-reference.component.ts +346 -113
- package/lib/template/data-reference/search-form/search-form.component.html +39 -0
- package/lib/template/data-reference/search-form/search-form.component.scss +11 -0
- package/lib/template/data-reference/search-form/search-form.component.spec.ts +0 -0
- package/lib/template/data-reference/search-form/search-form.component.ts +167 -0
- package/lib/template/data-reference/search-form/tabsData.ts +160 -0
- package/lib/template/data-reference/utils.ts +92 -0
- package/lib/template/default-form/default-form.component.ts +10 -3
- package/lib/template/default-page/default-page.component.html +34 -0
- package/lib/template/default-page/default-page.component.scss +31 -0
- package/lib/template/default-page/default-page.component.spec.ts +24 -0
- package/lib/template/default-page/default-page.component.ts +64 -0
- package/lib/template/details/details.component.ts +0 -1
- package/lib/template/details-narrow-wide/details-narrow-wide.component.ts +0 -1
- package/lib/template/details-one-column/details-one-column.component.ts +0 -1
- package/lib/template/details-sub-tabs/details-sub-tabs.component.ts +0 -1
- package/lib/template/details-three-column/details-three-column.component.ts +0 -1
- package/lib/template/details-two-column/details-two-column.component.ts +0 -1
- package/lib/template/details-wide-narrow/details-wide-narrow.component.ts +0 -1
- package/lib/template/dynamic-tabs/dynamic-tabs.component.ts +0 -1
- package/lib/template/field-group-list/field-group-list.component.scss +0 -1
- package/lib/template/field-group-list/field-group-list.component.ts +0 -1
- package/lib/template/field-group-template/field-group-template.component.ts +14 -28
- package/lib/template/field-value-list/field-value-list.component.ts +0 -1
- package/lib/template/inline-dashboard/inline-dashboard.component.ts +0 -1
- package/lib/template/inline-dashboard-page/inline-dashboard-page.component.ts +1 -2
- package/lib/template/list-page/list-page.component.ts +0 -1
- package/lib/template/list-view/list-view.component.html +170 -162
- package/lib/template/list-view/list-view.component.scss +25 -21
- package/lib/template/list-view/list-view.component.ts +207 -119
- package/lib/template/list-view/listViewHelpers.ts +1 -4
- package/lib/template/list-view/utils.ts +25 -2
- package/lib/template/multi-reference-readonly/multi-reference-readonly.component.ts +0 -1
- package/lib/template/narrow-wide-form/narrow-wide-form.component.ts +0 -1
- package/lib/template/object-page/object-page.component.html +1 -0
- package/lib/template/object-page/object-page.component.scss +0 -0
- package/lib/template/object-page/object-page.component.spec.ts +22 -0
- package/lib/template/object-page/object-page.component.ts +14 -0
- package/lib/template/one-column/one-column.component.ts +0 -1
- package/lib/template/one-column-page/one-column-page.component.ts +0 -1
- package/lib/template/one-column-tab/one-column-tab.component.scss +1 -1
- package/lib/template/one-column-tab/one-column-tab.component.ts +0 -1
- package/lib/template/page/page.component.ts +0 -1
- package/lib/template/promoted-filters/promoted-filters.component.ts +0 -1
- package/lib/template/repeating-structures/repeating-structures.component.ts +0 -2
- package/lib/template/self-service-case-view/self-service-case-view.component.html +78 -0
- package/lib/template/self-service-case-view/self-service-case-view.component.scss +132 -0
- package/lib/template/self-service-case-view/self-service-case-view.component.spec.ts +24 -0
- package/lib/template/self-service-case-view/self-service-case-view.component.ts +207 -0
- package/lib/template/simple-table/simple-table.component.ts +0 -2
- package/lib/template/simple-table-manual/helpers.ts +117 -3
- package/lib/template/simple-table-manual/simple-table-manual.component.html +4 -4
- package/lib/template/simple-table-manual/simple-table-manual.component.scss +4 -14
- package/lib/template/simple-table-manual/simple-table-manual.component.ts +45 -25
- package/lib/template/simple-table-select/simple-table-select.component.ts +0 -1
- package/lib/template/single-reference-readonly/single-reference-readonly.component.html +4 -1
- package/lib/template/single-reference-readonly/single-reference-readonly.component.scss +21 -0
- package/lib/template/single-reference-readonly/single-reference-readonly.component.ts +104 -4
- package/lib/template/sub-tabs/sub-tabs.component.ts +0 -1
- package/lib/template/three-column/three-column.component.ts +0 -1
- package/lib/template/three-column-page/three-column-page.component.ts +0 -1
- package/lib/template/two-column/two-column.component.ts +0 -1
- package/lib/template/two-column-page/two-column-page.component.ts +0 -1
- package/lib/template/two-column-tab/two-column-tab.component.ts +0 -1
- package/lib/template/utils.ts +42 -0
- package/lib/template/wide-narrow-form/wide-narrow-form.component.ts +0 -1
- package/lib/template/wide-narrow-page/wide-narrow-page.component.ts +0 -1
- package/lib/template/wss-nav-bar/wss-nav-bar.component.html +6 -5
- package/lib/template/wss-nav-bar/wss-nav-bar.component.scss +8 -17
- package/lib/template/wss-nav-bar/wss-nav-bar.component.ts +1 -9
- package/lib/widget/app-announcement/app-announcement.component.html +1 -2
- package/lib/widget/app-announcement/app-announcement.component.scss +2 -2
- package/lib/widget/app-announcement/app-announcement.component.ts +0 -1
- package/lib/widget/attachment/Attachment.types.ts +92 -0
- package/lib/widget/attachment/AttachmentUtils.ts +287 -0
- package/lib/widget/attachment/attachment.component.html +3 -3
- package/lib/widget/attachment/attachment.component.scss +9 -12
- package/lib/widget/attachment/attachment.component.ts +267 -254
- package/lib/widget/case-history/case-history.component.ts +0 -1
- package/lib/widget/feed-container/feed-container.component.scss +3 -9
- package/lib/widget/feed-container/feed-container.component.ts +2 -3
- package/lib/widget/file-utility/file-utility.component.html +3 -3
- package/lib/widget/file-utility/file-utility.component.scss +6 -17
- package/lib/widget/file-utility/file-utility.component.ts +24 -9
- package/lib/widget/list-utility/list-utility.component.scss +4 -5
- package/lib/widget/list-utility/list-utility.component.ts +0 -1
- package/lib/widget/quick-create/quick-create.component.ts +41 -23
- package/lib/widget/todo/todo.component.html +8 -5
- package/lib/widget/todo/todo.component.scss +11 -10
- package/lib/widget/todo/todo.component.ts +7 -4
- package/lib/widget/utility/utility.component.ts +0 -1
- package/package.json +1 -1
|
@@ -1,17 +1,16 @@
|
|
|
1
|
-
import { Component,
|
|
1
|
+
import { Component, forwardRef } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { FormControl,
|
|
3
|
+
import { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
4
4
|
import { MatInputModule } from '@angular/material/input';
|
|
5
5
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
6
6
|
import { NgxCurrencyDirective, NgxCurrencyInputMode } from 'ngx-currency';
|
|
7
|
-
|
|
8
|
-
import {
|
|
9
|
-
import { Utils } from '@pega/angular-sdk-components';
|
|
7
|
+
|
|
8
|
+
import { FieldBase } from '@pega/angular-sdk-components';
|
|
10
9
|
import { ComponentMapperComponent } from '@pega/angular-sdk-components';
|
|
11
10
|
import { handleEvent } from '@pega/angular-sdk-components';
|
|
12
11
|
import { getCurrencyCharacters, getCurrencyOptions } from '@pega/angular-sdk-components';
|
|
13
|
-
import { PConnFieldProps } from '@pega/angular-sdk-components';
|
|
14
12
|
import { format } from '@pega/angular-sdk-components';
|
|
13
|
+
import { PConnFieldProps } from '@pega/angular-sdk-components';
|
|
15
14
|
|
|
16
15
|
interface DecimalProps extends PConnFieldProps {
|
|
17
16
|
// If any, enter additional props that only exist on Decimal here
|
|
@@ -25,7 +24,6 @@ interface DecimalProps extends PConnFieldProps {
|
|
|
25
24
|
selector: 'app-decimal',
|
|
26
25
|
templateUrl: './decimal.component.html',
|
|
27
26
|
styleUrls: ['./decimal.component.scss'],
|
|
28
|
-
standalone: true,
|
|
29
27
|
imports: [
|
|
30
28
|
CommonModule,
|
|
31
29
|
ReactiveFormsModule,
|
|
@@ -36,176 +34,69 @@ interface DecimalProps extends PConnFieldProps {
|
|
|
36
34
|
forwardRef(() => ComponentMapperComponent)
|
|
37
35
|
]
|
|
38
36
|
})
|
|
39
|
-
export class DecimalComponent
|
|
40
|
-
@Input() pConn$: typeof PConnect;
|
|
41
|
-
@Input() formGroup$: FormGroup;
|
|
42
|
-
|
|
43
|
-
// Used with AngularPConnect
|
|
44
|
-
angularPConnectData: AngularPConnectData = {};
|
|
37
|
+
export class DecimalComponent extends FieldBase {
|
|
45
38
|
configProps$: DecimalProps;
|
|
39
|
+
override fieldControl = new FormControl<number | null>(null, null);
|
|
46
40
|
|
|
47
|
-
label$ = '';
|
|
48
|
-
value$: any;
|
|
49
|
-
bRequired$ = false;
|
|
50
|
-
bReadonly$ = false;
|
|
51
|
-
bDisabled$ = false;
|
|
52
|
-
bVisible$ = true;
|
|
53
|
-
displayMode$?: string = '';
|
|
54
|
-
controlName$: string;
|
|
55
|
-
bHasForm$ = true;
|
|
56
|
-
componentReference = '';
|
|
57
|
-
testId: string;
|
|
58
|
-
helperText: string;
|
|
59
|
-
placeholder: string;
|
|
60
|
-
|
|
61
|
-
fieldControl = new FormControl<number | null>(null, null);
|
|
62
41
|
decimalSeparator: string;
|
|
63
42
|
thousandSeparator: string;
|
|
64
43
|
currencySymbol = '';
|
|
65
44
|
decimalPrecision: number | undefined;
|
|
66
45
|
formatter;
|
|
67
46
|
formattedValue: any;
|
|
68
|
-
inputMode: any;
|
|
47
|
+
inputMode: any = NgxCurrencyInputMode.Natural;
|
|
69
48
|
suffix = '';
|
|
70
49
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
ngOnInit(): void {
|
|
78
|
-
// First thing in initialization is registering and subscribing to the AngularPConnect service
|
|
79
|
-
this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
|
|
80
|
-
this.controlName$ = this.angularPConnect.getComponentID(this);
|
|
81
|
-
|
|
82
|
-
// Then, continue on with other initialization
|
|
50
|
+
/**
|
|
51
|
+
* Updates the component when there are changes in the state.
|
|
52
|
+
*/
|
|
53
|
+
override updateSelf(): void {
|
|
54
|
+
// Resolve config properties
|
|
55
|
+
this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps()) as DecimalProps;
|
|
83
56
|
|
|
84
|
-
//
|
|
85
|
-
|
|
86
|
-
this.checkAndUpdate();
|
|
57
|
+
// Update common properties
|
|
58
|
+
this.updateComponentCommonProperties(this.configProps$);
|
|
87
59
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
60
|
+
// Extract and normalize the value property
|
|
61
|
+
const { value } = this.configProps$;
|
|
62
|
+
if (value) {
|
|
63
|
+
this.value$ = typeof value === 'string' ? parseFloat(value) : value;
|
|
91
64
|
this.fieldControl.setValue(this.value$);
|
|
92
|
-
this.bHasForm$ = true;
|
|
93
|
-
} else {
|
|
94
|
-
this.bReadonly$ = true;
|
|
95
|
-
this.bHasForm$ = false;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
ngOnDestroy(): void {
|
|
100
|
-
if (this.formGroup$) {
|
|
101
|
-
this.formGroup$.removeControl(this.controlName$);
|
|
102
65
|
}
|
|
103
66
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
}
|
|
67
|
+
// updates decimal properties
|
|
68
|
+
this.updateDecimalProperties(this.configProps$);
|
|
107
69
|
}
|
|
108
70
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
this.updateSelf();
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
// updateSelf
|
|
126
|
-
updateSelf(): void {
|
|
127
|
-
// starting very simple...
|
|
128
|
-
|
|
129
|
-
// moved this from ngOnInit() and call this from there instead...
|
|
130
|
-
this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps()) as DecimalProps;
|
|
131
|
-
this.testId = this.configProps$.testId;
|
|
132
|
-
this.label$ = this.configProps$.label;
|
|
133
|
-
this.displayMode$ = this.configProps$.displayMode;
|
|
134
|
-
this.inputMode = NgxCurrencyInputMode.Natural;
|
|
135
|
-
let nValue: any = this.configProps$.value;
|
|
136
|
-
if (nValue) {
|
|
137
|
-
if (typeof nValue === 'string') {
|
|
138
|
-
nValue = parseFloat(nValue);
|
|
139
|
-
}
|
|
140
|
-
this.value$ = nValue;
|
|
141
|
-
this.fieldControl.setValue(this.value$);
|
|
142
|
-
}
|
|
143
|
-
this.helperText = this.configProps$.helperText;
|
|
144
|
-
this.placeholder = this.configProps$.placeholder || '';
|
|
145
|
-
const showGroupSeparators = this.configProps$.showGroupSeparators;
|
|
146
|
-
const currencyISOCode = this.configProps$?.currencyISOCode ?? '';
|
|
147
|
-
|
|
71
|
+
/**
|
|
72
|
+
* Updates decimal properties based on the provided configuration.
|
|
73
|
+
*
|
|
74
|
+
* @param {Object} configProps - Configuration properties.
|
|
75
|
+
* @param {string} configProps.currencyISOCode - ISO code of the currency.
|
|
76
|
+
* @param {string} configProps.formatter - Formatter type (e.g., 'decimal', 'currency').
|
|
77
|
+
* @param {boolean} configProps.showGroupSeparators - Whether to show group separators.
|
|
78
|
+
*/
|
|
79
|
+
protected updateDecimalProperties(configProps): void {
|
|
80
|
+
const { currencyISOCode = '', formatter, showGroupSeparators } = configProps;
|
|
81
|
+
|
|
82
|
+
// Extract currency symbols and options
|
|
148
83
|
const theSymbols = getCurrencyCharacters(currencyISOCode);
|
|
149
84
|
this.decimalSeparator = theSymbols.theDecimalIndicator;
|
|
150
85
|
this.thousandSeparator = showGroupSeparators ? theSymbols.theDigitGroupSeparator : '';
|
|
151
86
|
|
|
152
87
|
const theCurrencyOptions = getCurrencyOptions(currencyISOCode);
|
|
153
|
-
|
|
88
|
+
const formatterLower = formatter?.toLowerCase() || 'decimal';
|
|
89
|
+
this.formattedValue = format(this.value$, formatterLower, theCurrencyOptions);
|
|
154
90
|
|
|
155
|
-
if (this.formatter) {
|
|
156
|
-
this.formattedValue = format(this.value$, this.formatter.toLowerCase(), theCurrencyOptions);
|
|
157
|
-
} else {
|
|
158
|
-
this.formattedValue = format(this.value$, 'decimal', theCurrencyOptions);
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
// timeout and detectChanges to avoid ExpressionChangedAfterItHasBeenCheckedError
|
|
162
|
-
setTimeout(() => {
|
|
163
|
-
if (this.configProps$.required != null) {
|
|
164
|
-
this.bRequired$ = this.utils.getBooleanValue(this.configProps$.required);
|
|
165
|
-
}
|
|
166
|
-
this.cdRef.detectChanges();
|
|
167
|
-
});
|
|
168
|
-
|
|
169
|
-
if (this.configProps$.visibility != null) {
|
|
170
|
-
this.bVisible$ = this.utils.getBooleanValue(this.configProps$.visibility);
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
if (this.configProps$.readOnly != null) {
|
|
174
|
-
this.bReadonly$ = this.utils.getBooleanValue(this.configProps$.readOnly);
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
// disabled
|
|
178
|
-
if (this.configProps$.disabled != undefined) {
|
|
179
|
-
this.bDisabled$ = this.utils.getBooleanValue(this.configProps$.disabled);
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
if (this.bDisabled$) {
|
|
183
|
-
this.fieldControl.disable();
|
|
184
|
-
} else {
|
|
185
|
-
this.fieldControl.enable();
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
if (this.bReadonly$ && this.formatter === 'Currency') {
|
|
91
|
+
if (this.bReadonly$ && formatter === 'Currency') {
|
|
189
92
|
this.currencySymbol = theSymbols.theCurrencySymbol;
|
|
190
93
|
}
|
|
191
94
|
|
|
192
|
-
if (this.bReadonly$ &&
|
|
95
|
+
if (this.bReadonly$ && formatter === 'Percentage') {
|
|
193
96
|
this.suffix = '%';
|
|
194
97
|
}
|
|
195
98
|
|
|
196
99
|
this.decimalPrecision = this.configProps$?.decimalPrecision ?? 2;
|
|
197
|
-
|
|
198
|
-
this.componentReference = this.pConn$.getStateProps().value;
|
|
199
|
-
|
|
200
|
-
// trigger display of error message with field control
|
|
201
|
-
if (this.angularPConnectData.validateMessage != null && this.angularPConnectData.validateMessage != '') {
|
|
202
|
-
const timer = interval(100).subscribe(() => {
|
|
203
|
-
this.fieldControl.setErrors({ message: true });
|
|
204
|
-
this.fieldControl.markAsTouched();
|
|
205
|
-
|
|
206
|
-
timer.unsubscribe();
|
|
207
|
-
});
|
|
208
|
-
}
|
|
209
100
|
}
|
|
210
101
|
|
|
211
102
|
fieldOnBlur(event: any) {
|
|
@@ -230,21 +121,4 @@ export class DecimalComponent implements OnInit, OnDestroy {
|
|
|
230
121
|
handleEvent(actionsApi, 'changeNblur', propName, value);
|
|
231
122
|
}
|
|
232
123
|
}
|
|
233
|
-
|
|
234
|
-
getErrorMessage() {
|
|
235
|
-
let errMessage = '';
|
|
236
|
-
|
|
237
|
-
// look for validation messages for json, pre-defined or just an error pushed from workitem (400)
|
|
238
|
-
if (this.fieldControl.hasError('message')) {
|
|
239
|
-
errMessage = this.angularPConnectData.validateMessage ?? '';
|
|
240
|
-
return errMessage;
|
|
241
|
-
}
|
|
242
|
-
if (this.fieldControl.hasError('required')) {
|
|
243
|
-
errMessage = 'You must enter a value';
|
|
244
|
-
} else if (this.fieldControl.errors) {
|
|
245
|
-
errMessage = this.fieldControl.errors.toString();
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
return errMessage;
|
|
249
|
-
}
|
|
250
124
|
}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
import { Component, OnInit,
|
|
1
|
+
import { Component, OnInit, forwardRef, OnDestroy, Output, EventEmitter } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
|
-
import {
|
|
3
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
4
4
|
import { MatOptionModule } from '@angular/material/core';
|
|
5
5
|
import { MatSelectModule } from '@angular/material/select';
|
|
6
6
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
7
|
-
import { interval } from 'rxjs';
|
|
8
7
|
import isEqual from 'fast-deep-equal';
|
|
9
|
-
|
|
10
|
-
import {
|
|
11
|
-
import { Utils } from '@pega/angular-sdk-components';
|
|
8
|
+
|
|
9
|
+
import { FieldBase } from '@pega/angular-sdk-components';
|
|
12
10
|
import { ComponentMapperComponent } from '@pega/angular-sdk-components';
|
|
13
11
|
import { handleEvent } from '@pega/angular-sdk-components';
|
|
14
12
|
import { PConnFieldProps } from '@pega/angular-sdk-components';
|
|
@@ -68,70 +66,20 @@ interface DropdownProps extends PConnFieldProps {
|
|
|
68
66
|
selector: 'app-dropdown',
|
|
69
67
|
templateUrl: './dropdown.component.html',
|
|
70
68
|
styleUrls: ['./dropdown.component.scss'],
|
|
71
|
-
standalone: true,
|
|
72
69
|
imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatSelectModule, MatOptionModule, forwardRef(() => ComponentMapperComponent)]
|
|
73
70
|
})
|
|
74
|
-
export class DropdownComponent implements OnInit, OnDestroy {
|
|
75
|
-
@
|
|
76
|
-
@Input() formGroup$: FormGroup;
|
|
71
|
+
export class DropdownComponent extends FieldBase implements OnInit, OnDestroy {
|
|
72
|
+
@Output() onRecordChange: EventEmitter<any> = new EventEmitter();
|
|
77
73
|
|
|
78
|
-
// Used with AngularPConnect
|
|
79
|
-
angularPConnectData: AngularPConnectData = {};
|
|
80
74
|
configProps$: DropdownProps;
|
|
81
75
|
|
|
82
|
-
label$ = '';
|
|
83
|
-
value$ = '';
|
|
84
|
-
bRequired$ = false;
|
|
85
|
-
bReadonly$ = false;
|
|
86
|
-
bDisabled$ = false;
|
|
87
|
-
bVisible$ = true;
|
|
88
|
-
displayMode$?: string = '';
|
|
89
|
-
controlName$: string;
|
|
90
|
-
bHasForm$ = true;
|
|
91
76
|
options$: IOption[];
|
|
92
|
-
componentReference = '';
|
|
93
|
-
testId = '';
|
|
94
|
-
helperText: string;
|
|
95
|
-
hideLabel: any;
|
|
96
77
|
theDatasource: any[] | null;
|
|
97
|
-
fieldControl = new FormControl('', null);
|
|
98
|
-
fieldMetadata: any[];
|
|
99
78
|
localeContext = '';
|
|
100
79
|
localeClass = '';
|
|
101
80
|
localeName = '';
|
|
102
81
|
localePath = '';
|
|
103
82
|
localizedValue = '';
|
|
104
|
-
actionsApi: Object;
|
|
105
|
-
propName: string;
|
|
106
|
-
|
|
107
|
-
constructor(
|
|
108
|
-
private angularPConnect: AngularPConnectService,
|
|
109
|
-
private cdRef: ChangeDetectorRef,
|
|
110
|
-
private utils: Utils,
|
|
111
|
-
private dataPageService: DatapageService
|
|
112
|
-
) {}
|
|
113
|
-
|
|
114
|
-
ngOnInit(): void {
|
|
115
|
-
// First thing in initialization is registering and subscribing to the AngularPConnect service
|
|
116
|
-
this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
|
|
117
|
-
this.controlName$ = this.angularPConnect.getComponentID(this);
|
|
118
|
-
|
|
119
|
-
// Then, continue on with other initialization
|
|
120
|
-
|
|
121
|
-
// call updateSelf when initializing
|
|
122
|
-
this.checkAndUpdate();
|
|
123
|
-
// this should get called afer checkAndUpdate
|
|
124
|
-
|
|
125
|
-
if (this.formGroup$) {
|
|
126
|
-
// add control to formGroup
|
|
127
|
-
this.formGroup$.addControl(this.controlName$, this.fieldControl);
|
|
128
|
-
this.fieldControl.setValue(this.value$);
|
|
129
|
-
this.bHasForm$ = true;
|
|
130
|
-
} else {
|
|
131
|
-
this.bReadonly$ = true;
|
|
132
|
-
this.bHasForm$ = false;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
83
|
|
|
136
84
|
set options(options: IOption[]) {
|
|
137
85
|
this.options$ = options;
|
|
@@ -145,80 +93,34 @@ export class DropdownComponent implements OnInit, OnDestroy {
|
|
|
145
93
|
}
|
|
146
94
|
}
|
|
147
95
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
this.angularPConnectData.unsubscribeFn();
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
// Callback passed when subscribing to store change
|
|
159
|
-
onStateChange() {
|
|
160
|
-
this.checkAndUpdate();
|
|
161
|
-
}
|
|
96
|
+
/**
|
|
97
|
+
* Updates the component when there are changes in the state.
|
|
98
|
+
*/
|
|
99
|
+
override updateSelf(): void {
|
|
100
|
+
// Resolve configuration properties
|
|
101
|
+
this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps()) as DropdownProps;
|
|
162
102
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
// update itself (re-render)
|
|
166
|
-
const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this);
|
|
103
|
+
// Update component common properties
|
|
104
|
+
this.updateComponentCommonProperties(this.configProps$);
|
|
167
105
|
|
|
168
|
-
//
|
|
169
|
-
|
|
170
|
-
this.updateSelf();
|
|
171
|
-
}
|
|
106
|
+
// Set component specific properties
|
|
107
|
+
this.updateDropdownProperties(this.configProps$);
|
|
172
108
|
}
|
|
173
109
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
}
|
|
110
|
+
/**
|
|
111
|
+
* Updates dropdown properties based on the provided configuration.
|
|
112
|
+
* @param configProps - Configuration properties
|
|
113
|
+
*/
|
|
114
|
+
updateDropdownProperties(configProps) {
|
|
115
|
+
const { value, fieldMetadata, datasource } = configProps;
|
|
181
116
|
|
|
182
|
-
this.
|
|
183
|
-
this.displayMode$ = this.configProps$.displayMode;
|
|
184
|
-
this.label$ = this.configProps$.label;
|
|
185
|
-
this.helperText = this.configProps$.helperText;
|
|
186
|
-
this.hideLabel = this.configProps$.hideLabel;
|
|
187
|
-
const datasource = this.configProps$.datasource;
|
|
188
|
-
// timeout and detectChanges to avoid ExpressionChangedAfterItHasBeenCheckedError
|
|
189
|
-
setTimeout(() => {
|
|
190
|
-
if (this.configProps$.required != null) {
|
|
191
|
-
this.bRequired$ = this.utils.getBooleanValue(this.configProps$.required);
|
|
192
|
-
}
|
|
193
|
-
this.cdRef.detectChanges();
|
|
194
|
-
});
|
|
117
|
+
this.value$ = value;
|
|
195
118
|
|
|
196
119
|
if (!isEqual(datasource, this.theDatasource)) {
|
|
197
120
|
// inbound datasource is different, so update theDatasource
|
|
198
121
|
this.theDatasource = datasource || null;
|
|
199
122
|
}
|
|
200
123
|
|
|
201
|
-
if (this.configProps$.visibility != null) {
|
|
202
|
-
this.bVisible$ = this.utils.getBooleanValue(this.configProps$.visibility);
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
// disabled
|
|
206
|
-
if (this.configProps$.disabled != undefined) {
|
|
207
|
-
this.bDisabled$ = this.utils.getBooleanValue(this.configProps$.disabled);
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
if (this.bDisabled$) {
|
|
211
|
-
this.fieldControl.disable();
|
|
212
|
-
} else {
|
|
213
|
-
this.fieldControl.enable();
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
if (this.configProps$.readOnly != null) {
|
|
217
|
-
this.bReadonly$ = this.utils.getBooleanValue(this.configProps$.readOnly);
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
this.componentReference = this.pConn$.getStateProps().value;
|
|
221
|
-
|
|
222
124
|
if (this.value$ === '' && !this.bReadonly$) {
|
|
223
125
|
this.value$ = 'Select';
|
|
224
126
|
}
|
|
@@ -235,8 +137,7 @@ export class DropdownComponent implements OnInit, OnDestroy {
|
|
|
235
137
|
const className = this.pConn$.getCaseInfo().getClassName();
|
|
236
138
|
const refName = this.propName?.slice(this.propName.lastIndexOf('.') + 1);
|
|
237
139
|
|
|
238
|
-
|
|
239
|
-
const metaData = Array.isArray(this.fieldMetadata) ? this.fieldMetadata.filter(field => field?.classID === className)[0] : this.fieldMetadata;
|
|
140
|
+
const metaData = Array.isArray(fieldMetadata) ? fieldMetadata.filter(field => field?.classID === className)[0] : fieldMetadata;
|
|
240
141
|
|
|
241
142
|
let displayName = metaData?.datasource?.propertyForDisplayText;
|
|
242
143
|
displayName = displayName?.slice(displayName.lastIndexOf('.') + 1);
|
|
@@ -252,16 +153,8 @@ export class DropdownComponent implements OnInit, OnDestroy {
|
|
|
252
153
|
);
|
|
253
154
|
|
|
254
155
|
this.localizedValue = this.options$?.find(opt => opt.key === this.value$)?.value || this.localizedValue;
|
|
255
|
-
this.getDatapageData();
|
|
256
|
-
// trigger display of error message with field control
|
|
257
|
-
if (this.angularPConnectData.validateMessage != null && this.angularPConnectData.validateMessage != '') {
|
|
258
|
-
const timer = interval(100).subscribe(() => {
|
|
259
|
-
this.fieldControl.setErrors({ message: true });
|
|
260
|
-
this.fieldControl.markAsTouched();
|
|
261
156
|
|
|
262
|
-
|
|
263
|
-
});
|
|
264
|
-
}
|
|
157
|
+
this.getDatapageData();
|
|
265
158
|
}
|
|
266
159
|
|
|
267
160
|
getDatapageData() {
|
|
@@ -337,12 +230,13 @@ export class DropdownComponent implements OnInit, OnDestroy {
|
|
|
337
230
|
event.value = '';
|
|
338
231
|
}
|
|
339
232
|
handleEvent(this.actionsApi, 'changeNblur', this.propName, event.value);
|
|
340
|
-
|
|
341
|
-
this.configProps$.onRecordChange(event);
|
|
342
|
-
}
|
|
233
|
+
|
|
343
234
|
this.pConn$.clearErrorMessages({
|
|
344
235
|
property: this.propName
|
|
345
236
|
});
|
|
237
|
+
if (this.onRecordChange) {
|
|
238
|
+
this.onRecordChange.emit(event.value);
|
|
239
|
+
}
|
|
346
240
|
}
|
|
347
241
|
|
|
348
242
|
getLocalizedOptionValue(opt: IOption) {
|
|
@@ -352,21 +246,4 @@ export class DropdownComponent implements OnInit, OnDestroy {
|
|
|
352
246
|
this.pConn$.getLocaleRuleNameFromKeys(this.localeClass, this.localeContext, this.localeName)
|
|
353
247
|
);
|
|
354
248
|
}
|
|
355
|
-
|
|
356
|
-
getErrorMessage() {
|
|
357
|
-
let errMessage = '';
|
|
358
|
-
|
|
359
|
-
// look for validation messages for json, pre-defined or just an error pushed from workitem (400)
|
|
360
|
-
if (this.fieldControl.hasError('message')) {
|
|
361
|
-
errMessage = this.angularPConnectData.validateMessage ?? '';
|
|
362
|
-
return errMessage;
|
|
363
|
-
}
|
|
364
|
-
if (this.fieldControl.hasError('required')) {
|
|
365
|
-
errMessage = 'You must enter a value';
|
|
366
|
-
} else if (this.fieldControl.errors) {
|
|
367
|
-
errMessage = this.fieldControl.errors.toString();
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
return errMessage;
|
|
371
|
-
}
|
|
372
249
|
}
|