@pepperi-addons/ngx-lib 0.4.2-beta.99 → 0.4.2-scroll.2
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/chips/chips.component.d.ts +1 -3
- package/core/common/pipes/common-pipes.d.ts +3 -0
- package/core/customization/customization.model.d.ts +1 -1
- package/esm2020/checkbox/checkbox.component.mjs +3 -3
- package/esm2020/chips/chips.component.mjs +8 -11
- package/esm2020/color/color.component.mjs +3 -3
- package/esm2020/core/common/pipes/common-pipes.mjs +14 -4
- package/esm2020/core/customization/customization.model.mjs +7 -1
- package/esm2020/core/customization/customization.service.mjs +2 -1
- package/esm2020/core/http/services/loader.service.mjs +3 -3
- package/esm2020/draggable-items/draggable-items.component.mjs +3 -3
- package/esm2020/form/field-generator.component.mjs +3 -3
- package/esm2020/form/form.component.mjs +3 -3
- package/esm2020/form/internal-carusel.component.mjs +10 -6
- package/esm2020/form/internal-field-generator.component.mjs +3 -3
- package/esm2020/form/internal-form.component.mjs +3 -3
- package/esm2020/form/internal-menu.component.mjs +4 -6
- package/esm2020/form/internal-page.component.mjs +3 -4
- package/esm2020/image/image.component.mjs +3 -3
- package/esm2020/images-filmstrip/images-filmstrip.component.mjs +3 -3
- package/esm2020/link/link.component.mjs +9 -3
- package/esm2020/list/list-actions.component.mjs +1 -1
- package/esm2020/list/list-chooser.component.mjs +1 -1
- package/esm2020/list/list-sorting.component.mjs +1 -1
- package/esm2020/list/list-views.component.mjs +1 -1
- package/esm2020/list/list.component.mjs +22 -10
- package/esm2020/list/list.model.mjs +1 -1
- package/esm2020/menu/menu-item.component.mjs +3 -3
- package/esm2020/menu/menu.component.mjs +6 -3
- package/esm2020/menu/menu.model.mjs +2 -1
- package/esm2020/profile-data-views-list/profile-data-view/profile-data-view.component.mjs +1 -1
- package/esm2020/profile-data-views-list/profile-data-views-card/profile-data-views-card.component.mjs +25 -9
- package/esm2020/profile-data-views-list/profile-data-views-list.component.mjs +58 -26
- package/esm2020/profile-data-views-list/profile-data-views-list.model.mjs +1 -1
- package/esm2020/quantity-selector/quantity-selector.component.mjs +7 -3
- package/esm2020/query-builder/common/model/legacy.mjs +1 -1
- package/esm2020/query-builder/common/model/operator.mjs +72 -62
- package/esm2020/query-builder/common/services/output-query.service.mjs +5 -3
- package/esm2020/query-builder/common/services/query-structure.service.mjs +24 -1
- package/esm2020/query-builder/query-builder-item/query-builder-item.component.mjs +3 -3
- package/esm2020/query-builder/query-builder-section/query-builder-section.component.mjs +3 -3
- package/esm2020/query-builder/query-builder.module.mjs +14 -3
- package/esm2020/query-builder/query-builder.service.mjs +2 -2
- package/esm2020/remote-loader/remote-loader.service.mjs +16 -16
- package/esm2020/rich-html-textarea/rich-html-textarea.component.mjs +10 -3
- package/esm2020/select/select.component.mjs +3 -3
- package/esm2020/select-panel/select-panel.component.mjs +3 -5
- package/esm2020/signature/signature-dialog.component.mjs +2 -1
- package/esm2020/signature/signature.component.mjs +4 -4
- package/esm2020/skeleton-loader/public-api.mjs +2 -2
- package/esm2020/skeleton-loader/skeleton-loader.component.mjs +3 -3
- package/esm2020/smart-filters/common/model/operator.mjs +11 -4
- package/esm2020/smart-filters/common/model/type.mjs +1 -1
- package/esm2020/smart-filters/multi-select-filter/multi-select-filter.component.mjs +3 -3
- package/esm2020/smart-filters/text-filter/text-filter.component.mjs +3 -3
- package/esm2020/textbox/textbox.component.mjs +26 -6
- package/fesm2015/pepperi-addons-ngx-lib-checkbox.mjs +2 -2
- package/fesm2015/pepperi-addons-ngx-lib-checkbox.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-chips.mjs +7 -10
- package/fesm2015/pepperi-addons-ngx-lib-chips.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-color.mjs +2 -2
- package/fesm2015/pepperi-addons-ngx-lib-color.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-draggable-items.mjs +2 -2
- package/fesm2015/pepperi-addons-ngx-lib-draggable-items.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-form.mjs +22 -21
- package/fesm2015/pepperi-addons-ngx-lib-form.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-image.mjs +2 -2
- package/fesm2015/pepperi-addons-ngx-lib-image.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.mjs +2 -2
- package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-link.mjs +8 -2
- package/fesm2015/pepperi-addons-ngx-lib-link.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-list.mjs +25 -13
- package/fesm2015/pepperi-addons-ngx-lib-list.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-menu.mjs +8 -4
- package/fesm2015/pepperi-addons-ngx-lib-menu.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-profile-data-views-list.mjs +81 -33
- package/fesm2015/pepperi-addons-ngx-lib-profile-data-views-list.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.mjs +7 -2
- package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-query-builder.mjs +119 -70
- package/fesm2015/pepperi-addons-ngx-lib-query-builder.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-remote-loader.mjs +16 -16
- package/fesm2015/pepperi-addons-ngx-lib-remote-loader.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.mjs +9 -2
- package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-select-panel.mjs +2 -4
- package/fesm2015/pepperi-addons-ngx-lib-select-panel.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-select.mjs +2 -2
- package/fesm2015/pepperi-addons-ngx-lib-select.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-signature.mjs +5 -3
- package/fesm2015/pepperi-addons-ngx-lib-signature.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-skeleton-loader.mjs +3 -3
- package/fesm2015/pepperi-addons-ngx-lib-skeleton-loader.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-smart-filters.mjs +14 -7
- package/fesm2015/pepperi-addons-ngx-lib-smart-filters.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-textbox.mjs +26 -5
- package/fesm2015/pepperi-addons-ngx-lib-textbox.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib.mjs +547 -532
- package/fesm2015/pepperi-addons-ngx-lib.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-checkbox.mjs +2 -2
- package/fesm2020/pepperi-addons-ngx-lib-checkbox.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-chips.mjs +7 -10
- package/fesm2020/pepperi-addons-ngx-lib-chips.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-color.mjs +2 -2
- package/fesm2020/pepperi-addons-ngx-lib-color.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-draggable-items.mjs +2 -2
- package/fesm2020/pepperi-addons-ngx-lib-draggable-items.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-form.mjs +22 -21
- package/fesm2020/pepperi-addons-ngx-lib-form.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-image.mjs +2 -2
- package/fesm2020/pepperi-addons-ngx-lib-image.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-images-filmstrip.mjs +2 -2
- package/fesm2020/pepperi-addons-ngx-lib-images-filmstrip.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-link.mjs +8 -2
- package/fesm2020/pepperi-addons-ngx-lib-link.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-list.mjs +25 -13
- package/fesm2020/pepperi-addons-ngx-lib-list.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-menu.mjs +8 -4
- package/fesm2020/pepperi-addons-ngx-lib-menu.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-profile-data-views-list.mjs +81 -33
- package/fesm2020/pepperi-addons-ngx-lib-profile-data-views-list.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-quantity-selector.mjs +6 -2
- package/fesm2020/pepperi-addons-ngx-lib-quantity-selector.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-query-builder.mjs +115 -69
- package/fesm2020/pepperi-addons-ngx-lib-query-builder.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-remote-loader.mjs +15 -15
- package/fesm2020/pepperi-addons-ngx-lib-remote-loader.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-rich-html-textarea.mjs +9 -2
- package/fesm2020/pepperi-addons-ngx-lib-rich-html-textarea.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-select-panel.mjs +2 -4
- package/fesm2020/pepperi-addons-ngx-lib-select-panel.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-select.mjs +2 -2
- package/fesm2020/pepperi-addons-ngx-lib-select.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-signature.mjs +4 -3
- package/fesm2020/pepperi-addons-ngx-lib-signature.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-skeleton-loader.mjs +3 -3
- package/fesm2020/pepperi-addons-ngx-lib-skeleton-loader.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-smart-filters.mjs +14 -7
- package/fesm2020/pepperi-addons-ngx-lib-smart-filters.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-textbox.mjs +25 -5
- package/fesm2020/pepperi-addons-ngx-lib-textbox.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib.mjs +544 -529
- package/fesm2020/pepperi-addons-ngx-lib.mjs.map +1 -1
- package/form/internal-carusel.component.d.ts +1 -0
- package/form/internal-menu.component.d.ts +1 -2
- package/link/link.component.d.ts +3 -1
- package/list/list.component.d.ts +1 -1
- package/list/list.model.d.ts +1 -2
- package/menu/menu.component.d.ts +2 -1
- package/menu/menu.model.d.ts +1 -0
- package/package.json +1 -1
- package/profile-data-views-list/profile-data-view/profile-data-view.component.d.ts +3 -3
- package/profile-data-views-list/profile-data-views-card/profile-data-views-card.component.d.ts +5 -4
- package/profile-data-views-list/profile-data-views-list.component.d.ts +13 -10
- package/profile-data-views-list/profile-data-views-list.model.d.ts +8 -0
- package/query-builder/common/model/legacy.d.ts +2 -0
- package/query-builder/common/model/operator.d.ts +11 -1
- package/query-builder/common/services/query-structure.service.d.ts +1 -0
- package/query-builder/query-builder.module.d.ts +7 -3
- package/remote-loader/remote-loader.service.d.ts +1 -1
- package/rich-html-textarea/rich-html-textarea.component.d.ts +3 -1
- package/rich-html-textarea/rich-html-textarea.component.theme.scss +4 -2
- package/select-panel/select-panel.component.d.ts +1 -2
- package/signature/signature-dialog.component.d.ts +1 -1
- package/skeleton-loader/skeleton-loader.component.d.ts +3 -3
- package/smart-filters/boolean-filter/boolean-filter.component.d.ts +1 -0
- package/smart-filters/common/model/operator.d.ts +1 -0
- package/smart-filters/common/model/type.d.ts +1 -1
- package/smart-filters/date-filter/date-filter.component.d.ts +1 -0
- package/smart-filters/multi-select-filter/multi-select-filter.component.d.ts +1 -0
- package/smart-filters/number-filter/number-filter.component.d.ts +1 -0
- package/smart-filters/text-filter/text-filter.component.d.ts +1 -0
- package/src/assets/i18n/de.ngx-lib.json +4 -1
- package/src/assets/i18n/en.ngx-lib.json +7 -1
- package/src/core/style/abstracts/mixins.scss +73 -11
- package/src/core/style/abstracts/variables.scss +1 -1
- package/src/core/style/base/base.scss +5 -3
- package/src/core/style/base/typography.scss +2 -1
- package/src/core/style/components/button.scss +11 -0
- package/src/core/style/components/general.scss +2 -4
- package/textbox/textbox.component.d.ts +2 -0
- package/theming.scss +5 -1
- package/src/assets/images/sail-away.jpg +0 -0
- package/src/core/style/abstracts/AbstractsIntro.stories.mdx +0 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pepperi-addons-ngx-lib-form.mjs","sources":["../../../projects/ngx-lib/form/indicators.component.ts","../../../projects/ngx-lib/form/indicators.component.html","../../../projects/ngx-lib/form/internal-button.component.ts","../../../projects/ngx-lib/form/internal-button.component.html","../../../projects/ngx-lib/form/internal-menu.component.ts","../../../projects/ngx-lib/form/internal-menu.component.html","../../../projects/ngx-lib/form/internal-page.service.ts","../../../projects/ngx-lib/form/internal-field-generator.component.ts","../../../projects/ngx-lib/form/internal-field-generator.component.html","../../../projects/ngx-lib/form/internal-form.component.ts","../../../projects/ngx-lib/form/internal-form.component.html","../../../projects/ngx-lib/form/internal-list.component.ts","../../../projects/ngx-lib/form/internal-list.component.html","../../../projects/ngx-lib/form/internal-page.component.ts","../../../projects/ngx-lib/form/internal-page.component.html","../../../projects/ngx-lib/form/internal-carusel.service.ts","../../../projects/ngx-lib/form/internal-carusel.component.ts","../../../projects/ngx-lib/form/internal-carusel.component.html","../../../projects/ngx-lib/form/field-generator.component.ts","../../../projects/ngx-lib/form/field-generator.component.html","../../../projects/ngx-lib/form/form.component.ts","../../../projects/ngx-lib/form/form.component.html","../../../projects/ngx-lib/form/form.module.ts","../../../projects/ngx-lib/form/public-api.ts","../../../projects/ngx-lib/form/pepperi-addons-ngx-lib-form.ts"],"sourcesContent":["import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { PepLayoutType } from '@pepperi-addons/ngx-lib';\n\n@Component({\n selector: 'pep-indicators',\n templateUrl: './indicators.component.html',\n styleUrls: ['./indicators.component.scss', './indicators.component.theme.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepIndicatorsComponent {\n @Input() key: string;\n @Input() value: string;\n\n controlType = 'indicators';\n\n @Input() layoutType: PepLayoutType = 'table';\n}\n","<div class=\"indicators-container\" [ngClass]=\"{ 'is-inside-table': layoutType === 'table' }\">\n <ng-container *ngFor=\"let value of value?.split(';')\">\n <pep-icon name=\"indicator_dot_placeholder\" class=\"pull-left flip\" [fill]=\"value\"></pep-icon>\n </ng-container>\n <ng-container *ngIf=\"key != 'ItemIndicatorsWithoutCampaign' && value?.split(';').length < 4\">\n <pep-icon name=\"indicator_dot_placeholder\" class=\"pull-left flip\"></pep-icon>\n </ng-container>\n</div>","import {\n Component,\n OnInit,\n OnChanges,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n Renderer2,\n ElementRef,\n OnDestroy,\n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport {\n PepLayoutType,\n PepCustomizationService,\n PepHorizontalAlignment,\n DEFAULT_HORIZONTAL_ALIGNMENT,\n IPepFieldClickEvent,\n PepInternalButtonFieldType,\n PepInternalButtonField,\n} from '@pepperi-addons/ngx-lib';\nimport {\n PepButton,\n IPepButtonClickEvent,\n} from '@pepperi-addons/ngx-lib/button';\nimport { pepIconSystemBin } from '@pepperi-addons/ngx-lib/icon';\n\n@Component({\n selector: 'pep-internal-button',\n templateUrl: './internal-button.component.html',\n styleUrls: ['./internal-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepInternalButtonComponent\n implements OnInit, OnChanges, OnDestroy {\n @Input() key = '';\n @Input() value = '';\n @Input() formattedValue = '';\n @Input() label = '';\n @Input() referenceObjectInternalType: any;\n @Input() type: PepInternalButtonFieldType = 'button';\n @Input() mandatory = false;\n @Input() disabled = false;\n @Input() readonly = false;\n @Input() xAlignment: PepHorizontalAlignment = DEFAULT_HORIZONTAL_ALIGNMENT;\n @Input() rowSpan = 1;\n\n private _visible = true;\n @Input()\n set visible(visible: boolean) {\n this._visible = visible;\n if (visible) {\n this.renderer.removeClass(\n this.element.nativeElement,\n 'hidden-element'\n );\n } else {\n this.renderer.addClass(\n this.element.nativeElement,\n 'hidden-element'\n );\n }\n }\n get visible(): boolean {\n return this._visible;\n }\n\n controlType = 'button';\n\n @Input() form: FormGroup = null;\n @Input() showTitle = true;\n @Input() layoutType: PepLayoutType = 'form';\n\n @Output()\n elementClick: EventEmitter<IPepFieldClickEvent> = new EventEmitter<IPepFieldClickEvent>();\n @Output()\n valueChange: EventEmitter<string> = new EventEmitter<string>();\n\n // standAlone = false;\n createNewReference = false;\n referenceButtons: Array<PepButton> = [\n {\n key: 'action',\n callback: (action: IPepButtonClickEvent) =>\n this.onButtonClicked(action.event),\n },\n {\n key: 'delete',\n callback: (action: IPepButtonClickEvent) => this.remove(),\n classNames: 'caution',\n iconName: pepIconSystemBin.name,\n },\n ];\n\n constructor(\n private customizationService: PepCustomizationService,\n private renderer: Renderer2,\n private element: ElementRef\n ) { }\n\n ngOnInit(): void {\n // if (this.form === null) {\n // this.standAlone = true;\n // // this.form = this.customizationService.getDefaultFromGroup(this.key, this.value, this.mandatory, this.readonly, this.disabled);\n // const pepField = new PepInternalButtonField({\n // key: this.key,\n // value: this.value,\n // mandatory: this.mandatory,\n // readonly: this.readonly,\n // disabled: this.disabled,\n // });\n // this.form = this.customizationService.getDefaultFromGroup(pepField);\n\n // this.formattedValue = this.formattedValue || this.value;\n // this.renderer.addClass(\n // this.element.nativeElement,\n // PepCustomizationService.STAND_ALONE_FIELD_CLASS_NAME\n // );\n // }\n }\n\n ngOnChanges(changes: any): void {\n if (this.type === 'reference') {\n this.createNewReference = this.value.length === 0;\n this.referenceButtons[0].value = this.formattedValue;\n }\n }\n\n ngOnDestroy(): void {\n //\n }\n\n // groupButtonClicked(action: IPepButtonClickEvent): void {\n // if (action.source.key === 'action') {\n // this.onButtonClicked(action.event);\n // } else if (action.source.key === 'delete') {\n // this.remove();\n // }\n // }\n\n onButtonClicked(event): void {\n if (this.type === 'reference') {\n const valueArr = this.value.split('/');\n\n this.elementClick.emit({\n key: this.key,\n value: valueArr[valueArr.length - 1], // .replace(/[^a-zA-Z0-9 ]/g, ''),\n controlType: this.controlType,\n eventWhich: event.which,\n otherData: this.referenceObjectInternalType,\n });\n } else if (this.type === 'button' && true) {\n this.elementClick.emit({\n key: this.key,\n value: this.value, // should contain the program name\n controlType: this.controlType,\n eventWhich: event.which,\n });\n } else {\n this.elementClick.emit({\n key: this.key,\n controlType: this.controlType,\n eventWhich: event.which,\n });\n }\n }\n\n hrefFunction(event): void {\n if (event.which === 1 /*|| event.which === 2*/) {\n this.onButtonClicked(event);\n }\n }\n\n openReferenceObjectInternal(event): void {\n this.elementClick.emit({\n key: this.key,\n value: this.value,\n controlType: this.controlType,\n eventWhich: event.which,\n otherData: this.referenceObjectInternalType,\n });\n }\n\n remove(): void {\n this.value = '';\n this.valueChange.emit(this.value);\n }\n}\n","<ng-container [ngSwitch]=\"type\">\n <ng-container *ngSwitchCase=\"'reference'\">\n <ng-container *ngIf=\"layoutType === 'form'; then formBlock; else notFormBlock\"></ng-container>\n <ng-template #formBlock>\n <div class=\"pep-button-container reference-button\">\n <pep-field-title [label]=\"label\" [mandatory]=\"mandatory\" [disabled]=\"disabled\" [xAlignment]=\"xAlignment\"\n [showTitle]=\"showTitle\">\n </pep-field-title>\n <ng-container *ngIf=\"createNewReference; then newBlock; else existingBlock\"></ng-container>\n <ng-template #newBlock>\n <button mat-button [id]=\"key\" title=\"{{ formattedValue }}\" class=\"pep-button md regular\"\n (click)=\"onButtonClicked($event)\" [ngClass]=\"{\n disabled: disabled,\n 'pull-left': xAlignment == 'left',\n 'pull-right': xAlignment == 'right',\n 'center-alignment': xAlignment == 'center'\n }\">\n <span class=\"ellipsis pull-left flip button-title-with-icon\">{{ 'ACTIONS.CREATE_NEW' | translate\n }}</span>\n <mat-icon class=\"pull-right flip\" pepRtlClass>\n <pep-icon name=\"number_plus\" (click)=\"onButtonClicked($event)\">\n </pep-icon>\n </mat-icon>\n </button>\n </ng-template>\n <ng-template #existingBlock>\n <pep-group-buttons [buttons]=\"referenceButtons\" styleType=\"regular\" viewType=\"split\">\n </pep-group-buttons>\n </ng-template>\n </div>\n </ng-template>\n <ng-template #notFormBlock>\n <ng-container *ngTemplateOutlet=\"linkTemplate\"></ng-container>\n </ng-template>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'listofobjects'\">\n <ng-container *ngIf=\"layoutType === 'form'; then formBlock; else notFormBlock\"></ng-container>\n <ng-template #formBlock>\n <ng-container *ngTemplateOutlet=\"buttonTemplate; context: {internal: true}\"></ng-container>\n </ng-template>\n <ng-template #notFormBlock>\n <ng-container *ngTemplateOutlet=\"linkTemplate\"></ng-container>\n </ng-template>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'button'\">\n <ng-container [ngSwitch]=\"key\">\n <ng-container *ngSwitchCase=\"'ObjectMenu'\">\n <span (click)=\"onButtonClicked($event)\" title=\"{{ key }}\">\n <mat-icon>\n <pep-icon *ngIf=\"key == 'ObjectMenu'\" name=\"system_menu\">\n </pep-icon>\n </mat-icon>\n </span>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'Agents' || 'ContactPersons' || 'Buyers'\">\n <ng-container *ngIf=\"layoutType === 'table'; then tableBlock; else nonTableBlock\">\n </ng-container>\n <ng-template #nonTableBlock>\n <ng-container *ngTemplateOutlet=\"buttonTemplate; context: {internal: true}\"></ng-container>\n </ng-template>\n <ng-template #tableBlock>\n <span [id]=\"key\" title=\"{{ formattedValue }}\" class=\"pep-report-input readonly body-sm\">{{\n formattedValue }}</span>\n </ng-template>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <ng-container *ngIf=\"layoutType === 'form'; then buttonBlock; else linkBlock\">\n </ng-container>\n\n <ng-template #buttonBlock>\n <ng-container *ngTemplateOutlet=\"buttonTemplate; context: {internal: false}\"></ng-container>\n </ng-template>\n <ng-template #linkBlock>\n <ng-container *ngTemplateOutlet=\"linkTemplate\"></ng-container>\n </ng-template>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #buttonTemplate let-internal=\"internal\">\n <div class=\"pep-button-container\">\n <pep-field-title [label]=\"label\" [mandatory]=\"mandatory\" [disabled]=\"disabled\" [xAlignment]=\"xAlignment\"\n [showTitle]=\"showTitle\">\n </pep-field-title>\n\n <ng-container *ngIf=\"internal; then internalButtonTemplate; else regularButtonTemplate\"></ng-container>\n <ng-template #regularButtonTemplate>\n <button [id]=\"key\" title=\"{{ formattedValue }}\" mat-button class=\"pep-button md regular\"\n dir=\"{{ xAlignment == 'right' ? 'rtl' : 'ltr' }}\" (click)=\"onButtonClicked($event)\"\n [disabled]=\"disabled\"\n [ngClass]=\"{disabled: disabled, 'pull-left': xAlignment == 'left', 'pull-right': xAlignment == 'right', 'center-alignment': xAlignment == 'center'}\">\n {{ formattedValue }}\n </button>\n </ng-template>\n\n <ng-template #internalButtonTemplate>\n <button [id]=\"key\" title=\"{{ formattedValue }}\" mat-button class=\"pep-button md regular\"\n dir=\"{{ xAlignment == 'right' ? 'rtl' : 'ltr' }}\" (click)=\"openReferenceObjectInternal($event)\"\n [disabled]=\"disabled\"\n [ngClass]=\"{disabled: disabled, 'pull-left': xAlignment == 'left', 'pull-right': xAlignment == 'right', 'center-alignment': xAlignment == 'center'}\">\n <ng-container *ngIf=\"formattedValue == '0' || formattedValue == ''; then newBlock; else existingBlock\">\n </ng-container>\n <ng-template #newBlock>\n <span class=\"pull-left flip button-title-with-icon\">{{ 'LIST.SELECT' | translate }} </span>\n <mat-icon>\n <pep-icon name=\"number_plus\">\n </pep-icon>\n </mat-icon>\n </ng-template>\n <ng-template #existingBlock>\n <span class=\"pull-left flip button-title-with-icon\">{{ formattedValue }} {{ 'LIST.SELECTED' |\n translate\n }} </span>\n <mat-icon>\n <pep-icon name=\"system_edit\">\n </pep-icon>\n </mat-icon>\n </ng-template>\n </button>\n </ng-template>\n </div>\n</ng-template>\n\n<ng-template #linkTemplate>\n <ng-container *ngIf=\"formattedValue?.length > 0; then notEmptyBlock; else emptyBlock\"></ng-container>\n <ng-template #notEmptyBlock>\n <a href=\"{{ value }}\" (mousedown)=\"hrefFunction($event)\" class=\"color-link\">\n <span *ngIf=\"layoutType === 'table'\" [id]=\"key\" title=\"{{ formattedValue }}\"\n class=\"body-sm pep-report-input readonly\">\n {{ formattedValue }}\n </span>\n <span *ngIf=\"layoutType !== 'table'\" [id]=\"key\" title=\"{{ formattedValue }}\" class=\"body-sm pep-card-input\"\n style=\"display: block;\">\n {{ formattedValue }}\n </span>\n </a>\n </ng-template>\n <ng-template #emptyBlock>\n <span> </span>\n </ng-template>\n</ng-template>","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n OnDestroy,\n} from '@angular/core';\nimport {\n PepLayoutType,\n IPepOption,\n PepHorizontalAlignment,\n DEFAULT_HORIZONTAL_ALIGNMENT,\n IPepFieldClickEvent,\n} from '@pepperi-addons/ngx-lib';\n\n@Component({\n selector: 'pep-internal-menu',\n templateUrl: './internal-menu.component.html',\n styleUrls: ['./internal-menu.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepInternalMenuComponent implements OnDestroy {\n @Input() key = '';\n @Input() label = '';\n @Input() disabled = false;\n @Input() xAlignment: PepHorizontalAlignment = DEFAULT_HORIZONTAL_ALIGNMENT;\n // @Input() hasSubMenu = false;\n @Input() options: IPepOption[] = [];\n @Input() invertClass = true;\n\n controlType = 'menu';\n\n @Input() layoutType: PepLayoutType = 'form';\n @Output()\n elementClick: EventEmitter<IPepFieldClickEvent> = new EventEmitter<IPepFieldClickEvent>();\n // @Output() menuItemClick: EventEmitter<IPepFieldClickEvent> = new EventEmitter<IPepFieldClickEvent>();\n\n ngOnDestroy(): void {\n // if (this.elementClick) {\n // this.elementClick.unsubscribe();\n // }\n // if (this.menuItemClick) {\n // this.menuItemClick.unsubscribe();\n // }\n }\n\n menuClicked(event: any): void {\n this.elementClick.emit({\n key: this.key,\n controlType: this.controlType,\n eventWhich: event.which,\n });\n }\n\n menuItemClicked(itemKey: any): void {\n // Not in use comment in version 16.55 for webapp.\n // this.menuItemClick.emit({ key: itemKey });\n }\n}\n","<ng-container *ngIf=\"options?.length > 0; then subMenuBlock; else noSubMenuBlock\"></ng-container>\n<ng-template #noSubMenuBlock>\n <button (click)=\"menuClicked($event)\" title=\"{{ label }}\" mat-button\n class=\"pep-button icon-button weak {{ layoutType === 'table' ? 'sm' : 'md' }}\" [ngClass]=\"{\n 'lock-events': disabled,\n 'left-alignment': xAlignment == 'left',\n 'right-alignment': xAlignment == 'right',\n 'center-alignment': xAlignment == 'center',\n 'invert': invertClass\n }\">\n <mat-icon>\n <pep-icon name=\"system_menu\">\n </pep-icon>\n </mat-icon>\n </button>\n</ng-template>\n\n<ng-template #subMenuBlock>\n <button mat-button [matMenuTriggerFor]=\"menu\" menu-blur\n class=\"pep-button icon-button weak {{ layoutType === 'table' ? 'sm' : 'md' }}\" [ngClass]=\"{\n 'left-alignment': xAlignment == 'left',\n 'right-alignment': xAlignment == 'right',\n 'center-alignment': xAlignment == 'center',\n 'invert': invertClass\n }\" title=\"{{ label }}\">\n <mat-icon>\n <pep-icon name=\"system_menu\">\n </pep-icon>\n </mat-icon>\n </button>\n\n <mat-menu #menu=\"matMenu\" xPosition=\"{{xAlignment == 'right' ? 'after' : 'before'}}\"\n [ngClass]=\"{ rtlMenu: xAlignment == 'right' }\">\n <button *ngFor=\"let option of options\" mat-menu-item (click)=\"menuItemClicked(option.key)\">\n <span>{{ option.value | translate }}</span>\n </button>\n </mat-menu>\n\n</ng-template>","import { Injectable } from '@angular/core';\nimport { PepHttpService } from '@pepperi-addons/ngx-lib';\n\n@Injectable()\nexport class PepInternalPageService {\n private transactionUrl: string;\n private objectId: string;\n private parentId = '0';\n private searchCode: string;\n private viewType: string;\n public additionalApiName = '';\n\n constructor(private httpService: PepHttpService) {\n this.transactionUrl = 'Service1.svc/v1/OrderCenter/Transaction/';\n }\n\n getBaseParentUrl(): string {\n const url = `${this.transactionUrl}${this.objectId}/ParentLine/${this.parentId}/`;\n return url;\n }\n\n getChildren(callbackFunc: any): void {\n const body = JSON.stringify({\n TransactionUID: this.objectId,\n SearchCode: this.searchCode,\n AdditionalApiName: this.additionalApiName,\n ParentTransactionLineID: this.parentId,\n ViewType: this.viewType,\n });\n\n // Set the additional api name with view type string.\n const moreParams =\n this.additionalApiName?.length > 0\n ? `${this.additionalApiName}/${this.viewType}`\n : `''/${this.viewType}`;\n\n const url = `${this.getBaseParentUrl()}Items/${moreParams}`;\n\n this.httpService.postWapiApiCall(url, body).subscribe(\n (res) => {\n callbackFunc(res);\n }\n // (error) => {},\n // () => {}\n );\n }\n\n initDetails(\n objectId: string,\n parentId: string,\n searchCode: string,\n callbackFunc: any\n ): void {\n if (!objectId || !parentId) {\n return;\n }\n\n this.objectId = objectId;\n this.parentId = parentId;\n this.searchCode = searchCode;\n\n this.httpService\n .getWapiApiCall(`${this.getBaseParentUrl()}ViewTypes`)\n .subscribe(\n (res) => {\n callbackFunc(res);\n }\n // (error) => {},\n // () => {}\n );\n }\n\n changeChildrenViewType(viewType: string, callbackFunc: any): void {\n this.viewType = viewType;\n this.getChildren(callbackFunc);\n }\n\n changeAdditionalApiName(\n additionalApiName: string,\n callbackFunc: any\n ): void {\n this.additionalApiName = additionalApiName;\n this.getChildren(callbackFunc);\n }\n\n childPlusClick(\n itemId: string,\n fieldApiName: string,\n callbackFunc: any\n ): void {\n const body = JSON.stringify({\n TransactionUID: this.objectId,\n SearchCode: this.searchCode,\n ParentTransactionLineID: this.parentId,\n TransactionLineUID: itemId,\n FieldApiName: fieldApiName,\n ViewType: this.viewType,\n });\n\n this.httpService\n .postWapiApiCall(`${this.getBaseParentUrl()}IncrementValue`, body)\n .subscribe(\n (res) => {\n callbackFunc(res);\n }\n // (error) => {},\n // () => {}\n );\n }\n\n childMinusClick(\n itemId: string,\n fieldApiName: string,\n callbackFunc: any\n ): void {\n const body = JSON.stringify({\n TransactionUID: this.objectId,\n SearchCode: this.searchCode,\n ParentTransactionLineID: this.parentId,\n TransactionLineUID: itemId,\n FieldApiName: fieldApiName,\n ViewType: this.viewType,\n });\n\n this.httpService\n .postWapiApiCall(`${this.getBaseParentUrl()}DecrementValue`, body)\n .subscribe(\n (res) => {\n callbackFunc(res);\n }\n // (error) => {},\n // () => {}\n );\n }\n\n childValueChanged(\n itemId: string,\n fieldApiName: string,\n value: string,\n callbackFunc: any\n ): void {\n const body = JSON.stringify({\n TransactionUID: this.objectId,\n SearchCode: this.searchCode,\n ParentTransactionLineID: this.parentId,\n TransactionLineUID: itemId,\n FieldApiName: fieldApiName,\n FieldValue: value,\n ViewType: this.viewType,\n });\n\n this.httpService\n .postWapiApiCall(`${this.getBaseParentUrl()}SetFieldValue`, body)\n .subscribe(\n (res) => {\n callbackFunc(res);\n }\n // (error) => {},\n // () => {}\n );\n }\n}\n","import {\n Component,\n OnChanges,\n Input,\n Output,\n EventEmitter,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n OnDestroy,\n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport {\n PepFieldBase,\n PepLayoutType,\n IPepFieldValueChangeEvent,\n IPepFieldClickEvent,\n} from '@pepperi-addons/ngx-lib';\nimport { IPepFormFieldClickEvent, IPepFormFieldValueChangeEvent } from './form.model';\n\n@Component({\n selector: 'pep-internal-field-generator',\n templateUrl: './internal-field-generator.component.html',\n styleUrls: ['./internal-field-generator.component.scss'],\n encapsulation: ViewEncapsulation.Emulated,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepInternalFieldGeneratorComponent implements OnChanges, OnDestroy {\n private _field: any;\n @Input()\n set field(value: any) {\n this._field = value;\n }\n get field(): any {\n return this._field;\n }\n\n @Input() isActive = false;\n @Input() uid: any = null;\n @Input() form: FormGroup;\n @Input() layoutType: PepLayoutType = 'form';\n @Input() showTitle = true;\n\n @Input() checkForChanges: any = null;\n @Output()\n valueChange: EventEmitter<IPepFieldValueChangeEvent> = new EventEmitter<IPepFieldValueChangeEvent>();\n // @Output()\n // formValidationChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output()\n elementClick: EventEmitter<IPepFieldClickEvent> = new EventEmitter<IPepFieldClickEvent>();\n\n // @Output() internalFormFieldChange: EventEmitter<any> = new EventEmitter<any>();\n // @Output() internalFormFieldClick: EventEmitter<any> = new EventEmitter<any>();\n\n @Output()\n formValueChange: EventEmitter<IPepFormFieldValueChangeEvent> = new EventEmitter<IPepFormFieldValueChangeEvent>();\n @Output()\n formFieldClick: EventEmitter<IPepFormFieldClickEvent> = new EventEmitter<IPepFormFieldClickEvent>();\n\n get isValid(): boolean {\n if (this.field.readonly || this.field.disabled) {\n return true;\n } else {\n const formControl = this.form && this.form.get(this.field.key);\n\n if (formControl) {\n return formControl.valid;\n } else {\n return false;\n }\n }\n }\n\n get isTouched(): boolean {\n const formControl = this.form && this.form.get(this.field.key);\n return formControl ? formControl.touched : false;\n }\n\n get isDirty(): boolean {\n const formControl = this.form && this.form.get(this.field.key);\n return formControl ? formControl.dirty : false;\n }\n\n ngOnDestroy(): void {\n //\n }\n\n onFileChanged(fileData: any, field: PepFieldBase) {\n const value = fileData ? JSON.stringify(fileData) : '';\n const fieldValueChange = {\n key: field.key,\n value: value,\n controlType: field.controlType,\n };\n this.valueChange.emit(fieldValueChange);\n }\n\n onAddressValueChanged(\n valueChange: IPepFieldValueChangeEvent,\n field: PepFieldBase\n ) {\n const fieldValueChange = {\n key: valueChange.key,\n value: valueChange.value,\n controlType: field.controlType,\n };\n this.valueChange.emit(fieldValueChange);\n }\n\n onValueChanged(value: any, field: PepFieldBase): void {\n const fieldValueChange = {\n key: field.key,\n value: value.toString(),\n controlType: field.controlType,\n };\n this.valueChange.emit(fieldValueChange);\n }\n\n // onInternalFormFieldChanged(internalFormFieldChange: any): void {\n // this.internalFormFieldChange.emit(internalFormFieldChange);\n // }\n\n // onFormValidationChanged(formValidationChange: any): void {\n // this.formValidationChange.emit(formValidationChange);\n // }\n\n onClick(fieldClicked: any): void {\n this.elementClick.emit(fieldClicked);\n }\n\n // onInternalFormFieldClick(internalFormFieldClick: any): void {\n // this.internalFormFieldClick.emit(internalFormFieldClick);\n // }\n\n onFormValueChanged(event: IPepFormFieldValueChangeEvent): void {\n this.formValueChange.emit(event);\n }\n\n onFormFieldClick(event: IPepFormFieldClickEvent): void {\n this.formFieldClick.emit(event);\n }\n\n ngOnChanges(changes: any): void {\n // debugger;\n // For testing.\n // this.field.disabled = this.field.readonly = false;\n }\n}\n","<ng-container [ngSwitch]=\"field.controlType\" [formGroup]=\"form\">\n\n <pep-address *ngSwitchCase=\"'address'\" [form]=\"form\" [key]=\"field.key\" [formattedValue]=\"field.formattedValue\"\n [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [groupFields]=\"field.groupFields\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" (addressValueChange)=\"onAddressValueChanged($event, field)\">\n </pep-address>\n\n <pep-attachment *ngSwitchCase=\"'attachment'\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.value\"\n [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [isActive]=\"isActive\" [showTitle]=\"showTitle\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" (elementClick)=\"onClick($event)\"\n (fileChange)=\"onFileChanged($event, field)\">\n </pep-attachment>\n\n <pep-checkbox *ngSwitchCase=\"'checkbox'\" [form]=\"form\" [key]=\"field.key\"\n [value]=\"(field.value | lowercase) == 'true' || field.value == '1' ? true : false\" [label]=\"field.label\"\n [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [additionalValue]=\"field.additionalValue\"\n [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\"\n (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\">\n </pep-checkbox>\n\n <pep-date *ngSwitchCase=\"'date'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [label]=\"field.label\" [type]=\"field.type\" [mandatory]=\"field.mandatory\"\n [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [textColor]=\"field.textColor\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [minValue]=\"field.minValue\"\n [maxValue]=\"field.maxValue\" [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\"\n (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\">\n </pep-date>\n\n <pep-images-filmstrip *ngSwitchCase=\"'images'\" [uid]=\"uid\" [form]=\"form\" [key]=\"field.key\" [label]=\"field.label\"\n [showTitle]=\"showTitle\" [rowSpan]=\"field.rowSpan\" [value]=\"field.value\" [layoutType]=\"layoutType\">\n </pep-images-filmstrip>\n\n <pep-image *ngSwitchCase=\"'image'\" [uid]=\"uid\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.formattedValue\"\n [srcLarge]=\"field.value\" [options]=\"field.options\" [label]=\"field.label\" [mandatory]=\"field.mandatory\"\n [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\"\n [rowSpan]=\"field.rowSpan\" [indicatorsField]=\"field.indicatorsField\" [menuField]=\"field.menuField\"\n [hasCampaignField]=\"field.hasCampaignField\" [sizeLimitMB]=\"field.sizeLimitMB\" [isActive]=\"isActive\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" (elementClick)=\"onClick($event)\"\n (fileChange)=\"onFileChanged($event, field)\">\n </pep-image>\n\n <pep-quantity-selector *ngSwitchCase=\"'qs'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [label]=\"field.label\" [type]=\"field.type\" [mandatory]=\"field.mandatory\"\n [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [textColor]=\"field.textColor\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [allowDecimal]=\"field.allowDecimal\"\n [additionalValue]=\"field.additionalValue\" [notificationInfo]=\"field.notificationInfo\" [isActive]=\"isActive\"\n [layoutType]=\"layoutType\" [showTitle]=\"showTitle\" [visible]=\"field.visible\"\n [minFractionDigits]=\"field.digitsNumberAfterDecimalPoint\"\n (valueChange)=\"onValueChanged($event, field)\" \n (elementClick)=\"onClick($event)\">\n </pep-quantity-selector>\n <!-- (formValidationChange)=\"onFormValidationChanged($event)\" -->\n\n <pep-rich-html-textarea *ngSwitchCase=\"'richhtmltextarea'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [maxFieldCharacters]=\"field.maxFieldCharacters\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\"\n (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\">\n </pep-rich-html-textarea>\n\n <pep-select *ngSwitchCase=\"'select'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\" [label]=\"field.label\"\n [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [options]=\"field.options\" [showTitle]=\"showTitle\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" (valueChange)=\"onValueChanged($event, field)\"\n [isActive]=\"isActive\">\n </pep-select>\n <!-- (formValidationChange)=\"onFormValidationChanged($event)\" -->\n\n <pep-separator *ngSwitchCase=\"'separator'\" [form]=\"form\" [key]=\"field.key\" [label]=\"field.label\"\n [xAlignment]=\"field.xAlignment\" [layoutType]=\"layoutType\" [visible]=\"field.visible\">\n </pep-separator>\n\n <pep-signature *ngSwitchCase=\"'signature'\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.value\" [label]=\"field.label\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [isActive]=\"isActive\" [layoutType]=\"layoutType\"\n [visible]=\"field.visible\" (fileChange)=\"onFileChanged($event, field)\">\n </pep-signature>\n\n <pep-textarea *ngSwitchCase=\"'textarea'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\" [label]=\"field.label\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [maxFieldCharacters]=\"field.maxFieldCharacters\" [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\"\n [rowSpan]=\"field.rowSpan\" [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\"\n (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\">\n </pep-textarea>\n\n <pep-textbox *ngSwitchCase=\"'textbox'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [accessory]=\"field.accessory\" [label]=\"field.label\" [placeholder]=\"field.placeholder\"\n [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [maxFieldCharacters]=\"field.maxFieldCharacters\" [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\"\n [rowSpan]=\"field.rowSpan\" [showTitle]=\"showTitle\" [layoutType]=\"layoutType\"\n [minFractionDigits]=\"field.digitsNumberAfterDecimalPoint\"\n (valueChange)=\"onValueChanged($event, field)\" \n [isActive]=\"isActive\" [visible]=\"field.visible\">\n </pep-textbox>\n <!-- (formValidationChange)=\"onFormValidationChanged($event)\" -->\n\n <pep-link *ngSwitchCase=\"'link'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [label]=\"field.label\" [placeholder]=\"field.placeholder\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [maxFieldCharacters]=\"field.maxFieldCharacters\" [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\"\n [rowSpan]=\"field.rowSpan\" [showTitle]=\"showTitle\" [layoutType]=\"layoutType\"\n (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\" [visible]=\"field.visible\"\n (elementClick)=\"onClick($event)\">\n </pep-link>\n <!-- (formValidationChange)=\"onFormValidationChanged($event)\" -->\n\n <pep-indicators *ngSwitchCase=\"'indicators'\" [key]=\"field.key\" [value]=\"field.value\" [layoutType]=\"layoutType\">\n </pep-indicators>\n <pep-internal-button *ngSwitchCase=\"'button'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [formattedValue]=\"field.formattedValue\" [label]=\"field.label\"\n [referenceObjectInternalType]=\"field.referenceObjectInternalType\" [type]=\"field.type\"\n [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" (elementClick)=\"onClick($event)\"\n (valueChange)=\"onValueChanged($event, field)\">\n </pep-internal-button>\n <pep-internal-menu *ngSwitchCase=\"'menu'\" [key]=\"field.key\" [label]=\"field.label\" [disabled]=\"field.disabled\"\n [xAlignment]=\"field.xAlignment\" [options]=\"field.options\" [layoutType]=\"layoutType\"\n (elementClick)=\"onClick($event)\">\n </pep-internal-menu>\n <!-- \n comment for not cause a circular reference.\n <pep-internal-page *ngSwitchCase=\"'internalPage'\" [field]=\"field\" [layoutType]=\"layoutType\"\n (internalFormFieldClick)=\"onInternalFormFieldClick($event)\"\n (internalFormFieldChange)=\"onInternalFormFieldChanged($event)\">\n </pep-internal-page>\n\n <pep-internal-carusel *ngSwitchCase=\"'internalCarusel'\" [field]=\"field\"\n (internalFormFieldClick)=\"onInternalFormFieldClick($event)\"\n (internalFormFieldChange)=\"onInternalFormFieldChanged($event)\">\n </pep-internal-carusel> \n -->\n\n <ng-container *ngSwitchCase=\"'placeholder'\">\n </ng-container>\n</ng-container>","import {\n Component,\n ChangeDetectionStrategy,\n OnInit,\n OnDestroy,\n Input,\n KeyValueDiffers,\n Output,\n EventEmitter,\n OnChanges,\n DoCheck,\n Optional,\n} from '@angular/core';\nimport {\n FormGroup,\n FormBuilder,\n Validators,\n AbstractControl,\n} from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n PepDialogService,\n PepDialogData,\n} from '@pepperi-addons/ngx-lib/dialog';\nimport {\n IPepFieldValueChangeEvent,\n IPepFieldClickEvent,\n PepLayoutType,\n FIELD_TYPE,\n PepCustomizationService,\n PepLayoutService,\n UIControl,\n UIControlField,\n ObjectsDataRow,\n ObjectsDataRowCell,\n PepFieldBase,\n PepTextboxField,\n PepSelectField,\n PepInternalMenuField,\n PepQuantitySelectorField,\n PepAddressField,\n PepIndicatorsField,\n PepInternalPageField,\n PepInternalCaruselField,\n PepInternalButtonField,\n PepAttachmentField,\n PepSignatureField,\n PepImageField,\n PepImagesField,\n PepLinkField,\n PepTextareaField,\n PepRichHtmlTextareaField,\n PepDateField,\n PepCheckboxField,\n PepSeparatorField,\n PepPlaceholderField,\n PepHorizontalAlignment,\n PepVerticalAlignment,\n X_ALIGNMENT_TYPE,\n Y_ALIGNMENT_TYPE,\n DEFAULT_VERTICAL_ALIGNMENT,\n DEFAULT_HORIZONTAL_ALIGNMENT,\n KeyValuePair,\n IPepOption,\n} from '@pepperi-addons/ngx-lib';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { IPepFormFieldValueChangeEvent, IPepFormFieldClickEvent } from './form.model';\n\n@Component({\n selector: 'pep-internal-form',\n templateUrl: './internal-form.component.html',\n styleUrls: ['./internal-form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepInternalFormComponent implements OnInit, DoCheck, OnChanges, OnDestroy {\n @Input() isInternal = true;\n @Input() isReport = false;\n @Input() layout: UIControl;\n @Input() lockEvents = false; \n @Input() canEditObject = true;\n\n private _data: ObjectsDataRow = null;\n @Input()\n set data(value: ObjectsDataRow) {\n const shouldReload = this.shouldReloadForm || !this._data;\n this._data = value;\n\n if (shouldReload) {\n this._shouldReloadForm = false;\n this.initForm();\n } else {\n this.updateForm();\n }\n }\n get data(): ObjectsDataRow {\n return this._data;\n }\n\n @Input()\n set lockFields(value: boolean) {\n this.isLocked = value;\n }\n\n @Input() isActive = false;\n @Input() layoutType: PepLayoutType = 'card';\n // @Input() listType = '';\n @Input() objectId = '0';\n @Input() parentId = '0';\n @Input() searchCode = '0';\n @Input() showTitle = true;\n @Input() firstFieldAsLink = false;\n @Input() checkForChanges: any = null;\n\n @Output()\n valueChange: EventEmitter<IPepFormFieldValueChangeEvent> = new EventEmitter<IPepFormFieldValueChangeEvent>();\n @Output()\n formValidationChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @Output()\n fieldClick: EventEmitter<IPepFormFieldClickEvent> = new EventEmitter<IPepFormFieldClickEvent>();\n\n // @Output() internalFormFieldClick: EventEmitter<any> = new EventEmitter<any>();\n // @Output() internalFormFieldChange: EventEmitter<any> = new EventEmitter<any>();\n\n isLocked = false;\n formGutterSize;\n cardGutterSize;\n rowHeight;\n // private matrixIsLast = false;\n // lastUpdatedFieldApiName: string = '';\n form: FormGroup;\n differ: any;\n\n // payLoad = '';\n private rows: Array<PepFieldBase[]> = [];\n fields: PepFieldBase[] = [];\n\n private _fieldsSubject: BehaviorSubject<PepFieldBase[]> = new BehaviorSubject<PepFieldBase[]>([]);\n get fields$(): Observable<PepFieldBase[]> {\n return this._fieldsSubject.asObservable();\n }\n\n columns = 1;\n\n private hasMenuFloatingOnOtherField = false;\n private menuField: any;\n private menuDataField: any;\n private hasCampaignField: any;\n private hasCampaignDataField: any;\n private indicatorsField: any;\n private indicatorsDataField: any = null;\n\n private _shouldReloadForm = false;\n get shouldReloadForm(): boolean {\n return this._shouldReloadForm;\n }\n\n // eventServiceSub: Subscription;\n // public jsonLib = JSON;\n\n constructor(\n private dialogService: PepDialogService,\n private customizationService: PepCustomizationService,\n private layoutService: PepLayoutService,\n private fb: FormBuilder,\n differs: KeyValueDiffers,\n private translate: TranslateService\n ) {\n // store the initial value to compare with\n this.differ = differs.find({}).create();\n }\n\n convertXAlignToHorizontalAlign(\n xAlign: X_ALIGNMENT_TYPE\n ): PepHorizontalAlignment {\n let res = DEFAULT_HORIZONTAL_ALIGNMENT;\n\n if (\n xAlign === X_ALIGNMENT_TYPE.None ||\n xAlign === X_ALIGNMENT_TYPE.Left\n ) {\n res = 'left';\n } else if (xAlign === X_ALIGNMENT_TYPE.Right) {\n res = 'right';\n } else {\n res = 'center';\n }\n\n return res;\n }\n\n convertYAlignToVerticalAlign(\n yAlign: Y_ALIGNMENT_TYPE\n ): PepVerticalAlignment {\n let res = DEFAULT_VERTICAL_ALIGNMENT;\n\n if (\n yAlign === Y_ALIGNMENT_TYPE.None ||\n yAlign === Y_ALIGNMENT_TYPE.Top\n ) {\n res = 'top';\n } else if (yAlign === Y_ALIGNMENT_TYPE.Bottom) {\n res = 'bottom';\n } else {\n res = 'middle';\n }\n\n return res;\n }\n\n convertOptionalValues(\n optionalValues: Array<KeyValuePair<string>>\n ): IPepOption[] {\n if (optionalValues && optionalValues.length > 0) {\n return optionalValues.map((ov) => {\n return { key: ov.Key, value: ov.Value };\n });\n } else {\n return [];\n }\n }\n\n convertAddressFields(\n controlField: UIControlField,\n addressFields: Array<ObjectsDataRowCell>,\n canEditObject: boolean\n ): PepFieldBase[] {\n const fields: PepFieldBase[] = [];\n\n addressFields.forEach((field) => {\n let customField: PepFieldBase;\n const placeholder = field.ApiName;\n\n if (field.ApiName.toLowerCase().indexOf('street') >= 0) {\n customField = new PepTextboxField({\n key: field.ApiName,\n label: field.ApiName,\n type: 'text',\n placeholder,\n readonly: !canEditObject,\n disabled: !field.Enabled || !canEditObject,\n hidden: false,\n mandatory: false,\n value: field.Value,\n formattedValue: field.FormattedValue,\n row: 0,\n rowSpan: 1,\n col: 0,\n colSpan: 2,\n xAlignment: this.convertXAlignToHorizontalAlign(\n controlField.Layout.XAlignment\n ),\n yAlignment: this.convertYAlignToVerticalAlign(\n controlField.Layout.YAlignment\n ),\n order: 0,\n });\n } else if (field.ApiName.toLowerCase().indexOf('city') >= 0) {\n customField = new PepTextboxField({\n key: field.ApiName,\n label: field.ApiName,\n type: 'text',\n placeholder,\n readonly: !canEditObject,\n disabled: !field.Enabled || !canEditObject,\n hidden: false,\n mandatory: false,\n value: field.Value,\n formattedValue: field.FormattedValue,\n row: 0,\n rowSpan: 1,\n col: 2,\n colSpan: 1,\n xAlignment: this.convertXAlignToHorizontalAlign(\n controlField.Layout.XAlignment\n ),\n yAlignment: this.convertYAlignToVerticalAlign(\n controlField.Layout.YAlignment\n ),\n order: 1,\n });\n } else if (field.ApiName.toLowerCase().indexOf('state') >= 0) {\n customField = new PepSelectField({\n key: field.ApiName,\n label: field.ApiName,\n placeholder,\n options: this.convertOptionalValues(field.OptionalValues),\n readonly: !canEditObject,\n disabled: !field.Enabled || !canEditObject,\n hidden: false,\n mandatory: false,\n value: field.Value,\n formattedValue: field.FormattedValue,\n row: 1,\n rowSpan: 1,\n col: 0,\n colSpan: 1,\n xAlignment: this.convertXAlignToHorizontalAlign(\n controlField.Layout.XAlignment\n ),\n yAlignment: this.convertYAlignToVerticalAlign(\n controlField.Layout.YAlignment\n ),\n order: 2,\n });\n } else if (field.ApiName.toLowerCase().indexOf('zipcode') >= 0) {\n customField = new PepTextboxField({\n key: field.ApiName,\n label: field.ApiName,\n type: 'text',\n placeholder,\n readonly: !canEditObject,\n disabled: !field.Enabled || !canEditObject,\n hidden: false,\n mandatory: false,\n value: field.Value,\n formattedValue: field.FormattedValue,\n row: 1,\n rowSpan: 1,\n col: 1,\n colSpan: 1,\n xAlignment: this.convertXAlignToHorizontalAlign(\n controlField.Layout.XAlignment\n ),\n yAlignment: this.convertYAlignToVerticalAlign(\n controlField.Layout.YAlignment\n ),\n order: 3,\n });\n } else if (field.ApiName.toLowerCase().indexOf('country') >= 0) {\n customField = new PepSelectField({\n key: field.ApiName,\n label: field.ApiName,\n placeholder,\n options: this.convertOptionalValues(field.OptionalValues),\n readonly: !canEditObject,\n disabled: !field.Enabled || !canEditObject,\n hidden: false,\n mandatory: false,\n value: field.Value,\n formattedValue: field.FormattedValue,\n row: 2,\n rowSpan: 1,\n col: 2,\n colSpan: 1,\n xAlignment: this.convertXAlignToHorizontalAlign(\n controlField.Layout.XAlignment\n ),\n yAlignment: this.convertYAlignToVerticalAlign(\n controlField.Layout.YAlignment\n ),\n order: 4,\n });\n }\n\n fields.push(customField);\n });\n\n return fields.sort((n1, n2) =>\n n1.order > n2.order ? 1 : n1.order < n2.order ? -1 : 0\n );\n }\n\n isMatrixField(apiNameToCheck: string): boolean {\n return apiNameToCheck.indexOf('Matrix') >= 0;\n }\n\n doesFieldHavaFloatingField(\n controlField: UIControlField,\n floatingField: any\n ): boolean {\n let hasFloatingField = false;\n if (\n floatingField.Layout.Y >= controlField.Layout.Y &&\n floatingField.Layout.Y <\n controlField.Layout.Y + controlField.Layout.Height &&\n floatingField.Layout.X >= controlField.Layout.X &&\n floatingField.Layout.X <\n controlField.Layout.X + controlField.Layout.Width\n ) {\n hasFloatingField = true;\n }\n\n return hasFloatingField;\n }\n\n getOptionsForCustomField(\n controlField: UIControlField,\n dataField: any,\n canEditObject: boolean\n ): any {\n if (!controlField || !dataField) {\n return;\n }\n\n const placeholder =\n controlField.ReadOnly || !canEditObject ? '' : controlField.Title;\n\n return {\n key: controlField.ApiName,\n label: controlField.Title,\n accessory: dataField.Accessory,\n placeholder,\n readonly: controlField.ReadOnly || !canEditObject,\n disabled: !dataField.Enabled || !canEditObject,\n hidden: controlField.Hidden,\n mandatory: controlField.Mandatory,\n value: dataField.Value,\n formattedValue: dataField.FormattedValue,\n additionalValue: dataField.AdditionalValue,\n row: controlField.Layout.Y,\n rowSpan: controlField.Layout.Height,\n col: controlField.Layout.X,\n colSpan: controlField.Layout.Width,\n xAlignment: this.convertXAlignToHorizontalAlign(\n controlField.Layout.XAlignment\n ),\n yAlignment: this.convertYAlignToVerticalAlign(\n controlField.Layout.YAlignment\n ),\n options: this.convertOptionalValues(dataField.OptionalValues),\n groupFields: undefined,\n maxFieldCharacters: controlField.MaxFieldCharacters,\n minValue: controlField.MinValue,\n maxValue: controlField.MaxValue,\n // hasMenu: hasMenu,\n // hasCampaign: hasCampaign,\n // hasIndicators: hasIndicators,\n textColor: dataField.TextColor,\n visible: dataField.Visible,\n digitsNumberAfterDecimalPoint: dataField.DigitsNumberAfterDecimalPoint,\n };\n }\n\n convertToCustomField(\n controlField: UIControlField,\n dataField: any,\n canEditObject: boolean,\n menuField: any,\n hasCampaignField: any,\n indicatorsField: any,\n objectId: any,\n parentId: any,\n searchCode: any\n ): PepFieldBase {\n let customField: PepFieldBase;\n const options = this.getOptionsForCustomField(\n controlField,\n dataField,\n canEditObject\n );\n\n if (controlField.ApiName === 'ObjectMenu') {\n options.type = 'menu';\n customField = new PepInternalMenuField(options);\n } else if (\n controlField.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n controlField.FieldType ===\n FIELD_TYPE.NumberIntegerQuantitySelector ||\n controlField.ApiName === 'QuantitySelector' ||\n controlField.ApiName === 'UnitsQuantity' ||\n controlField.ApiName.indexOf('size_') === 0\n ) {\n if (dataField.FieldType === FIELD_TYPE.InternalLink) {\n options.type = 'button';\n } else if (dataField.FieldType === FIELD_TYPE.Package) {\n options.type = 'packageButton';\n } else if (\n dataField.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n dataField.FieldType === FIELD_TYPE.NumberReal\n ) {\n options.type = 'qs';\n options.allowDecimal = true;\n } else if (\n dataField.FieldType ===\n FIELD_TYPE.NumberIntegerQuantitySelector ||\n dataField.FieldType === FIELD_TYPE.NumberInteger\n ) {\n options.type = 'qs';\n options.allowDecimal = false;\n } else if (\n dataField.FieldType === FIELD_TYPE.NumberIntegerForMatrix\n ) {\n options.type = 'qsForMatrix';\n options.allowDecimal = false;\n } else if (dataField.FieldType === FIELD_TYPE.NumberRealForMatrix) {\n options.type = 'qsForMatrix';\n options.allowDecimal = true;\n }\n\n options.notificationInfo = dataField.NotificationInfo;\n customField = new PepQuantitySelectorField(options);\n } else {\n // HACK: need to remove this..\n if (\n dataField.FieldType === FIELD_TYPE.Indicators &&\n this.isMatrixField(dataField.ApiName)\n ) {\n dataField.FieldType = FIELD_TYPE.InternalPage;\n }\n\n switch (dataField.FieldType) {\n case FIELD_TYPE.Address: {\n const canEditGroupObject = controlField.ReadOnly\n ? false\n : canEditObject;\n options.groupFields = this.convertAddressFields(\n controlField,\n dataField.GroupFields,\n canEditGroupObject\n );\n customField = new PepAddressField(options);\n break;\n }\n case FIELD_TYPE.Indicators: {\n // options['type'] = 'indicators'; // Not needed this is PepIndicatorsField.\n customField = new PepIndicatorsField(options);\n break;\n }\n case FIELD_TYPE.InternalPage: {\n if (this.isMatrixField(controlField.ApiName)) {\n options.rowSpan = controlField.Layout.Height;\n options.objectId = objectId;\n options.parentId = parentId;\n options.searchCode = searchCode;\n\n customField = new PepInternalPageField(options);\n } else {\n // Not supported\n }\n break;\n }\n case FIELD_TYPE.RelatedObjectsCards: {\n options.rowSpan = controlField.Layout.Height;\n options.searchCode = searchCode;\n options.pageInfo = dataField.UIPageInfo;\n\n customField = new PepInternalCaruselField(options);\n break;\n }\n case FIELD_TYPE.Link: {\n options.type = 'link';\n customField = new PepLinkField(options);\n break;\n }\n case FIELD_TYPE.InternalLink:\n case FIELD_TYPE.Button: {\n options.type = 'button';\n customField = new PepInternalButtonField(options);\n break;\n }\n case FIELD_TYPE.Attachment: {\n // options.type = 'attachment';\n customField = new PepAttachmentField(options);\n break;\n }\n case FIELD_TYPE.Signature: {\n // options.type = 'signature';\n customField = new PepSignatureField(options);\n break;\n }\n case FIELD_TYPE.Image:\n case FIELD_TYPE.ImageURL: {\n // options.type = 'image';\n options.menuField =\n menuField &&\n this.doesFieldHavaFloatingField(controlField, menuField)\n ? menuField\n : null;\n options.hasCampaignField =\n hasCampaignField &&\n this.doesFieldHavaFloatingField(\n controlField,\n hasCampaignField\n )\n ? hasCampaignField\n : null;\n options.indicatorsField =\n indicatorsField &&\n this.doesFieldHavaFloatingField(\n controlField,\n indicatorsField\n )\n ? indicatorsField\n : null;\n\n customField = new PepImageField(options);\n break;\n }\n case FIELD_TYPE.Images: {\n // options.type = 'images';\n customField = new PepImagesField(options);\n break;\n }\n case FIELD_TYPE.Email: {\n options.type = 'email';\n customField = new PepLinkField(options);\n break;\n }\n case FIELD_TYPE.Phone: {\n options.type = 'phone';\n customField = new PepLinkField(options);\n break;\n }\n case FIELD_TYPE.Duration: {\n options.type = 'duration';\n customField = new PepTextboxField(options);\n break;\n }\n case FIELD_TYPE.Default:\n case FIELD_TYPE.TextBox:\n case FIELD_TYPE.LimitedLengthTextBox:\n case FIELD_TYPE.TextHeader:\n case FIELD_TYPE.CalculatedString:\n case FIELD_TYPE.MapDataString: {\n customField = new PepTextboxField(options);\n break;\n }\n case FIELD_TYPE.TextArea: {\n customField = new PepTextareaField(options);\n break;\n }\n\n case FIELD_TYPE.RichTextHTML: {\n customField = new PepRichHtmlTextareaField(options);\n break;\n }\n case FIELD_TYPE.Date:\n case FIELD_TYPE.LimitedDate:\n case FIELD_TYPE.CalculatedDate:\n case FIELD_TYPE.DateAndTime: {\n options.type =\n dataField.FieldType === FIELD_TYPE.DateAndTime\n ? 'datetime'\n : 'date';\n customField = new PepDateField(options);\n break;\n }\n case FIELD_TYPE.NumberInteger:\n case FIELD_TYPE.CalculatedInt:\n case FIELD_TYPE.MapDataInt: {\n options.type = 'int';\n customField = new PepTextboxField(options);\n break;\n }\n case FIELD_TYPE.Percentage: {\n options.type = 'percentage';\n customField = new PepTextboxField(options);\n break;\n }\n case FIELD_TYPE.Currency: {\n options.type = 'currency';\n customField = new PepTextboxField(options);\n break;\n }\n case FIELD_TYPE.NumberReal:\n case FIELD_TYPE.CalculatedReal:\n case FIELD_TYPE.MapDataReal:\n case FIELD_TYPE.Sum:\n case FIELD_TYPE.Totals: {\n options.type = 'real';\n customField = new PepTextboxField(options);\n break;\n }\n case FIELD_TYPE.Boolean:\n case FIELD_TYPE.CalculatedBool: {\n customField = new PepCheckboxField(options);\n break;\n }\n case FIELD_TYPE.BooleanText: {\n options.type = 'booleanText';\n customField = new PepCheckboxField(options);\n break;\n }\n case FIELD_TYPE.ComboBox:\n case FIELD_TYPE.EmptyComboBox:\n case FIELD_TYPE.MapDataDropDown: {\n // options.type = 'select';\n customField = new PepSelectField(options);\n break;\n }\n case FIELD_TYPE.MultiTickBox:\n case FIELD_TYPE.MultiTickBoxToComboBox:\n case FIELD_TYPE.EmptyMultiTickBox: {\n options.type = 'multi';\n customField = new PepSelectField(options);\n break;\n }\n case FIELD_TYPE.GuidReferenceType: {\n options.type = 'reference';\n options.referenceObjectType = dataField.ReferenceObjectType;\n options.referenceObjectSubType =\n dataField.ReferenceObjectSubType;\n options.referenceObjectInternalType =\n dataField.ReferenceObjectInternalType;\n customField = new PepInternalButtonField(options);\n break;\n }\n case FIELD_TYPE.ListOfObjects: {\n options.type = 'listofobjects';\n customField = new PepInternalButtonField(options);\n break;\n }\n case FIELD_TYPE.Separator: {\n customField = new PepSeparatorField(options);\n break;\n }\n /*\n case FIELD_TYPE.Images: return that.field(value);\n */\n case FIELD_TYPE.NumberRealQuantitySelector:\n case FIELD_TYPE.NumberIntegerQuantitySelector: {\n options.type = 'qs';\n options.allowDecimal =\n dataField.FieldType ===\n FIELD_TYPE.NumberRealQuantitySelector;\n options.notificationInfo = dataField.NotificationInfo;\n\n customField = new PepQuantitySelectorField(options);\n break;\n }\n case FIELD_TYPE.Package: {\n options.type = 'packageButton';\n options.notificationInfo = dataField.NotificationInfo;\n\n customField = new PepQuantitySelectorField(options);\n break;\n }\n }\n }\n\n if (!customField) {\n options.label = controlField.ApiName + ' is not supported!!!';\n customField = new PepSeparatorField(options);\n }\n\n return customField;\n }\n\n getFieldFormattedValue(field: PepFieldBase): string {\n let fieldFormattedValue = field.formattedValue || field.value;\n\n // Fix for the custom check box component.\n if (field.controlType === 'checkbox') {\n fieldFormattedValue = fieldFormattedValue === 'true';\n }\n\n // Fix for the custom button component.\n if (field.controlType === 'button') {\n fieldFormattedValue =\n fieldFormattedValue === '0' ? '' : fieldFormattedValue;\n }\n\n return fieldFormattedValue;\n }\n\n private toControlGroup(fields: PepFieldBase[]): FormGroup {\n const group = {};\n if (fields && fields.length > 0) {\n fields.forEach((field) => {\n if (field.groupFields && field.groupFields.length > 0) {\n const subGroup = {};\n\n field.groupFields.forEach((groupField) => {\n if (\n groupField.mandatory &&\n !field.readonly &&\n !field.disabled\n ) {\n subGroup[groupField.key] = [\n {\n value: groupField.formattedValue || '',\n disabled:\n field.readonly ||\n field.disabled ||\n groupField.disabled,\n },\n [Validators.required],\n ];\n } else {\n subGroup[groupField.key] = [\n {\n value: groupField.formattedValue || '',\n disabled:\n field.readonly ||\n field.disabled ||\n groupField.disabled,\n },\n [Validators.nullValidator],\n ];\n }\n });\n\n group[field.key] = this.fb.group(subGroup);\n } else {\n const validators = field.getValidators();\n const fieldFormattedValue = this.getFieldFormattedValue(\n field\n );\n\n group[field.key] = [\n {\n value: fieldFormattedValue || '',\n disabled: field.disabled,\n },\n validators,\n ];\n }\n });\n }\n\n return this.fb.group(group);\n }\n\n private createBaseField(uiControlField: UIControlField, dataField: any) {\n const customField: PepFieldBase = this.convertToCustomField(\n uiControlField,\n dataField,\n this.canEditObject,\n this.menuDataField,\n this.hasCampaignDataField,\n this.indicatorsDataField,\n this.objectId,\n this.parentId,\n this.searchCode\n );\n\n return customField;\n }\n\n public showFormValidationMessage(): void {\n const fields: PepFieldBase[] = this.fields;\n let emptyMandatoryFieldsMsg = '';\n let notValidFieldsMsg = '';\n\n // for (let i: number = 0; i < fields.length; i++) {\n // let field = fields[i];\n for (const field of fields) {\n const formControl = this.form && this.form.get(field.key);\n\n if (formControl) {\n // Mandatory is empty.\n if (\n field.mandatory &&\n formControl.value.toString().trim().length === 0\n ) {\n emptyMandatoryFieldsMsg +=\n '<li><small>' + field.label + '</small></li>';\n } else if (!field.disabled && !formControl.valid) {\n notValidFieldsMsg +=\n '<li><small>' + field.label + '</small></li>';\n }\n }\n }\n\n // Add the header message of the empty mandatory fields\n if (emptyMandatoryFieldsMsg.length > 0) {\n emptyMandatoryFieldsMsg =\n '<div>' +\n this.translate.instant('MESSAGES.ERROR_MANDATORY_FIELDS') +\n \"</div><ul style='padding: 0 20px;'>\" +\n emptyMandatoryFieldsMsg +\n '</ul><br/>';\n }\n\n // Add the header message of the empty mandatory fields\n if (notValidFieldsMsg.length > 0) {\n notValidFieldsMsg =\n '<div>' +\n this.translate.instant('MESSAGES.ERROR_INVALID_FIELDS') +\n \"</div><ul style='padding: 0 20px;'>\" +\n notValidFieldsMsg +\n '</ul>';\n }\n\n const title = this.translate.instant('MESSAGES.TITLE_NOTICE');\n const data = new PepDialogData({\n title,\n content: emptyMandatoryFieldsMsg + notValidFieldsMsg,\n });\n this.dialogService.openDefaultDialog(data);\n }\n\n ngOnInit(): void {\n const themeVars = this.customizationService.getThemeVariables();\n // convert rem to pixel\n const RemToPixel = 16;\n this.formGutterSize =\n this.customizationService.getNumberThemeVariable(\n themeVars,\n PepCustomizationService.FORM_SPACEING_KEY\n ) * RemToPixel;\n this.cardGutterSize =\n this.customizationService.getNumberThemeVariable(\n themeVars,\n PepCustomizationService.CARD_SPACEING_KEY\n ) * RemToPixel;\n }\n\n ngDoCheck(): void {\n const changes = this.differ.diff(this.data); // check for changes\n if (changes) {\n this.updateForm();\n this.checkForChanges = new Date();\n }\n }\n\n ngOnChanges(changes): void {\n // if (changes.data && changes.data.currentValue) {\n // // Load changes\n // if (!this.shouldReloadForm && changes.data.previousValue) {\n // this.data = changes.data.currentValue;\n // this.updateForm();\n // } else {\n // this._shouldReloadForm = false;\n // this.initForm();\n // }\n // }\n // if (this.shouldReloadForm || !changes?.data?.previousValue) {\n // this._shouldReloadForm = false;\n // this.initForm();\n // this.checkForChanges = new Date();\n // }\n }\n\n ngOnDestroy(): void {\n //\n }\n\n getUiControlFields(): Array<UIControlField> {\n return this.layout ? this.layout.ControlFields : [];\n }\n\n initFieldsStructure(fields: PepFieldBase[], maxRow: number): void {\n const themeVars = this.customizationService.getThemeVariables();\n\n // Set form row height.\n if (this.layoutType === 'card') {\n const cardFieldHeight = this.customizationService.getNumberThemeVariable(\n themeVars,\n PepCustomizationService.CARD_FIELD_HEIGHT_KEY\n );\n this.rowHeight = cardFieldHeight;\n } else {\n const rowFieldHeight = this.customizationService.getNumberThemeVariable(\n themeVars,\n PepCustomizationService.FORM_FIELD_HEIGHT_KEY\n );\n const rowFieldTitleHeight = this.customizationService.getNumberThemeVariable(\n themeVars,\n PepCustomizationService.FORM_FIELD_TITLE_HEIGHT_KEY\n );\n this.rowHeight = rowFieldHeight + rowFieldTitleHeight;\n }\n\n // Create the fields structure (the fields must be sorted!!!).\n if (fields.length > 0) {\n // Init the layout.\n if (\n // this.layoutType === 'form' ||\n this.layoutType === 'table'\n ) {\n this.fields = fields;\n this._fieldsSubject.next(fields);\n\n this.rows = [];\n\n for (let i = 0; i <= maxRow; i++) {\n this.rows[i] = [];\n }\n\n // for (let i = 0; i < fields.length; i++) {\n // const field = fields[i]\n for (const field of fields) {\n this.rows[field.row].push(field);\n }\n } else {\n const doesfieldExistIn: boolean[][] = new Array(maxRow);\n\n for (let i = 0; i < doesfieldExistIn.length; i++) {\n doesfieldExistIn[i] = new Array(this.columns);\n\n for (let j = 0; j < doesfieldExistIn[i].length; j++) {\n doesfieldExistIn[i][j] = false;\n }\n }\n\n // Run in squere (row - colspan, col - rowspan) and put true where it should.\n // for (let index = 0; index < fields.length; index++) {\n // const currentField = fields[index];\n for (const currentField of fields) {\n if (currentField.rowSpan > 1) {\n for (\n let row: number = currentField.row;\n row < currentField.row + currentField.rowSpan;\n row++\n ) {\n if (currentField.colSpan > 1) {\n for (\n let col: number = currentField.col;\n col <\n currentField.col + currentField.colSpan;\n col++\n ) {\n if (\n doesfieldExistIn.length > row &&\n doesfieldExistIn[0].length > col\n ) {\n doesfieldExistIn[row][col] = true;\n }\n }\n } else {\n if (\n doesfieldExistIn.length > row &&\n doesfieldExistIn[0].length >\n currentField.col\n ) {\n doesfieldExistIn[row][\n currentField.col\n ] = true;\n }\n }\n }\n } else if (currentField.colSpan > 1) {\n for (\n let col: number = currentField.col;\n col < currentField.col + currentField.colSpan;\n col++\n ) {\n if (\n doesfieldExistIn.length > currentField.row &&\n doesfieldExistIn[0].length > col\n ) {\n doesfieldExistIn[currentField.row][col] = true;\n }\n }\n } else {\n if (\n doesfieldExistIn.length > currentField.row &&\n doesfieldExistIn[0].length > currentField.col\n ) {\n doesfieldExistIn[currentField.row][\n currentField.col\n ] = true;\n }\n }\n }\n\n // Create empty fields where doesfieldExistIn is false (For the md-grid-list UI Component).\n for (let i = 0; i < doesfieldExistIn.length; i++) {\n for (let j = 0; j < doesfieldExistIn[i].length; j++) {\n if (!doesfieldExistIn[i][j]) {\n // Create empty field and add it to the fields list.\n fields.push(\n new PepPlaceholderField({\n key: i + '_' + j,\n label: '',\n placeholder: '',\n readonly: false,\n disabled: false,\n hidden: false,\n mandatory: false,\n value: '',\n formattedValue: '',\n row: i,\n rowSpan: 1,\n col: j,\n colSpan: 1,\n order: 1,\n })\n );\n }\n }\n }\n\n // Sort the fields again.\n this.fields = fields.sort((f1, f2) =>\n f1.row > f2.row\n ? 1\n : f1.row < f2.row\n ? -1\n : f1.col > f2.col\n ? 1\n : f1.col < f2.col\n ? -1\n : 0\n );\n this._fieldsSubject.next(fields);\n }\n }\n }\n\n setForm(isForUpdate = false): void {\n let allFieldsAreReadOnly = true;\n\n if (!isForUpdate) {\n const fields = [];\n for (const currentField of this.fields) {\n // Add all fields except 'internalPage' (for children).\n if (currentField.controlType !== 'internalPage') {\n fields.push(currentField);\n }\n\n if (!currentField.readonly) {\n allFieldsAreReadOnly = false;\n }\n }\n\n this.form = this.toControlGroup(fields);\n } else {\n // Update form values if changed by calculated fields.\n for (let i = 0; i < this.fields.length; i++) {\n let currentField = this.fields[i];\n\n if (currentField.controlType === 'internalCarusel') {\n // Hack to override (update) the field.\n const uiControlField = this.getUiControlFields().find(cf => cf.ApiName === currentField.key);\n const dataField = this.data.Fields.find(df => df.ApiName === currentField.key);\n currentField = this.createBaseField(uiControlField, dataField);\n this._fieldsSubject.value[i] = currentField;\n } else if (currentField.controlType !== 'internalPage') {\n if (\n currentField.groupFields &&\n currentField.groupFields.length > 0\n ) {\n // for (let j = 0; j < currentField.groupFields.length; j++) {\n // let currentGroupField = currentField.groupFields[j];\n for (const currentGroupField of currentField.groupFields) {\n const fieldFormattedValue = this.getFieldFormattedValue(\n currentGroupField\n );\n this.customizationService.updateFormField(\n this.form,\n currentGroupField,\n fieldFormattedValue,\n currentField\n );\n }\n } else {\n const fieldFormattedValue = this.getFieldFormattedValue(\n currentField\n );\n // this.form.controls[currentField.key].setValue(fieldFormattedValue);\n this.customizationService.updateFormField(\n this.form,\n currentField,\n fieldFormattedValue\n );\n }\n }\n\n if (!currentField.readonly) {\n allFieldsAreReadOnly = false;\n }\n }\n }\n\n let isFormValid = this.form?.valid;\n\n // Change validation to true if all fields are read only.\n if (!isFormValid && allFieldsAreReadOnly) {\n isFormValid = true;\n }\n\n this.onFormValidationChanged(isFormValid);\n\n // Set it to false to enable all fields.\n if (this.isInternal && this.isLocked) {\n this.isLocked = false; \n }\n }\n\n initForm(): void {\n if (this.data && this.data.Fields) {\n const fields: PepFieldBase[] = this.convertCustomFields(\n this.getUiControlFields(),\n this.data.Fields\n );\n\n const maxRow = Math.max(\n ...fields.map((f) => {\n return f.row + f.rowSpan;\n })\n );\n this.columns = Math.max(\n ...fields.map((f) => {\n return f.col + f.colSpan;\n })\n );\n\n this.initFieldsStructure(fields, maxRow);\n this.setForm();\n }\n }\n\n private updateField(\n customField: PepFieldBase,\n updatedField: ObjectsDataRowCell\n ): void {\n const options: any = {\n disabled: !updatedField.Enabled || !this.canEditObject,\n readonly: !updatedField.Enabled || !this.canEditObject,\n visible: updatedField.Visible,\n value: updatedField.Value,\n additionalValue: updatedField.AdditionalValue,\n formattedValue: updatedField.FormattedValue,\n textColor: updatedField.TextColor,\n digitsNumberAfterDecimalPoint: updatedField.DigitsNumberAfterDecimalPoint,\n };\n\n if (customField instanceof PepQuantitySelectorField) {\n const notificationInfo = updatedField.NotificationInfo;\n options.notificationInfo = notificationInfo;\n\n // Change type if it's change (only for allowDecimal).\n let allowDecimal = false;\n if (updatedField.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n updatedField.FieldType === FIELD_TYPE.NumberReal ||\n updatedField.FieldType === FIELD_TYPE.NumberRealForMatrix\n ) {\n allowDecimal = true;\n } \n \n options.allowDecimal = allowDecimal;\n\n } else if (customField instanceof PepSelectField) {\n options.options = this.convertOptionalValues(\n updatedField.OptionalValues\n );\n\n if (!options.options || options.options.length === 0) {\n options.options.push({\n key: options.value,\n value: options.formattedValue,\n });\n }\n } else if (customField instanceof PepInternalCaruselField) {\n options.pageInfo = updatedField.UIPageInfo;\n }\n\n customField.update(options);\n }\n\n updateForm(): void {\n if (this.data && this.data.Fields) {\n for (const currentField of this.data.Fields) {\n const customField = this.fields.filter(\n (f) => f.key === currentField.ApiName\n )[0];\n // Update all fields except 'internalPage' type (for children).\n if (customField && customField.controlType !== 'internalPage') {\n this.updateField(customField, currentField);\n\n // Update the group fields.\n if (\n customField.controlType === 'address' &&\n currentField.GroupFields\n ) {\n // for (let j = 0; j < currentField.GroupFields.length; j++) {\n // let currentGroupField = currentField.GroupFields[j];\n for (const currentGroupField of currentField.GroupFields) {\n currentGroupField.Enabled = !currentField.Enabled\n ? false\n : currentGroupField.Enabled;\n\n const customGroupField = customField.groupFields.filter(\n (f) => f.key === currentGroupField.ApiName\n )[0];\n this.updateField(\n customGroupField,\n currentGroupField\n );\n }\n }\n }\n }\n\n this.setForm(true);\n }\n }\n\n public ReloadForm(): void {\n this._shouldReloadForm = true;\n }\n\n // onSubmit() {\n // if (this.form.valid) {\n // this.payLoad = JSON.stringify(this.form.value);\n // //this.submitted.emit(this.form.value);\n // }\n // }\n\n private getFormControlById(key: string): AbstractControl | null {\n let formControl = null;\n\n this.fields.forEach((field) => {\n if (field.key === key) {\n formControl = this.form.get(field.key);\n return;\n } else if (field.groupFields && field.groupFields.length > 0) {\n field.groupFields.forEach((groupField) => {\n if (groupField.key === key) {\n formControl = this.form.get(\n field.key + '.' + groupField.key\n );\n return;\n }\n });\n }\n });\n\n return formControl;\n }\n\n private setSpecialFields(\n controlFields: Array<any>,\n dataFields: Array<any>\n ): void {\n // let cf;\n // for (let index = 0; index < controlFields.length; index++) {\n // cf = controlFields[index];\n for (const cf of controlFields) {\n if (cf.ApiName === 'ObjectMenu') {\n this.menuField = cf;\n } else if (cf.ApiName === 'ItemHasActiveCampaign') {\n this.hasCampaignField = cf;\n } else if (cf.ApiName === 'ItemIndicatorsWithoutCampaign') {\n this.indicatorsField = cf;\n }\n }\n\n // let df;\n // for (let index = 0; index < dataFields.length; index++) {\n // df = dataFields[index];\n for (const df of dataFields) {\n if (df.ApiName === 'ObjectMenu') {\n this.menuDataField = df;\n } else if (df.ApiName === 'ItemHasActiveCampaign') {\n this.hasCampaignDataField = df;\n } else if (df.ApiName === 'ItemIndicatorsWithoutCampaign') {\n this.indicatorsDataField = df;\n }\n }\n\n if (this.menuField && this.menuDataField) {\n this.menuDataField.Layout = this.menuField.Layout;\n }\n\n if (this.hasCampaignField && this.hasCampaignDataField) {\n this.hasCampaignDataField.Layout = this.hasCampaignField.Layout;\n }\n\n if (this.indicatorsField && this.indicatorsDataField) {\n this.indicatorsDataField.Layout = this.indicatorsField.Layout;\n }\n\n // Check if menu is floating on other field.\n // for (let index = 0; index < controlFields.length; index++) {\n // cf = controlFields[index];\n for (const cf of controlFields) {\n if (this.menuField && cf.ApiName !== 'ObjectMenu') {\n this.hasMenuFloatingOnOtherField = this.doesFieldHavaFloatingField(\n cf,\n this.menuField\n );\n\n if (this.hasMenuFloatingOnOtherField) {\n break;\n }\n }\n }\n }\n\n convertCustomFields(\n controlFields: Array<any>,\n dataFields: Array<any>\n ): PepFieldBase[] {\n if (this.layoutType !== 'table') {\n this.setSpecialFields(controlFields, dataFields);\n } else {\n // HACK: convert to center alignment if table view & special fields)\n controlFields.forEach((field, index) => {\n if (\n field.ApiName === 'UnitsQuantity' ||\n field.ApiName === 'QuantitySelector' ||\n field.ApiName === 'ObjectMenu' ||\n field.FieldType === FIELD_TYPE.Image ||\n field.FieldType === FIELD_TYPE.ImageURL ||\n field.FieldType === FIELD_TYPE.Indicators ||\n field.FieldType === FIELD_TYPE.Boolean ||\n field.FieldType === FIELD_TYPE.CalculatedBool ||\n field.FieldType === FIELD_TYPE.Signature ||\n field.FieldType ===\n FIELD_TYPE.NumberIntegerQuantitySelector ||\n field.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n field.FieldType === FIELD_TYPE.Package ||\n field.FieldType === FIELD_TYPE.NumberIntegerForMatrix ||\n field.FieldType === FIELD_TYPE.NumberRealForMatrix\n ) {\n field.Layout.XAlignment = X_ALIGNMENT_TYPE.Center;\n } else {\n // HACK: align the rest of the fields by the culture.\n // field.Layout.XAlignment = this.layoutService.isRtl() ? X_ALIGNMENT_TYPE.Right : X_ALIGNMENT_TYPE.Left;\n }\n });\n }\n\n const fields: PepFieldBase[] = [];\n\n controlFields.forEach((field, index) => {\n const dataField = dataFields.filter(\n (df) => df.ApiName === field.ApiName\n )[0];\n\n if (!dataField) {\n return;\n }\n\n // If current view is not table view and those fields are special.\n if (\n this.layoutType !== 'table' &&\n ((this.hasMenuFloatingOnOtherField &&\n this.menuField &&\n this.menuField.ApiName === field.ApiName) ||\n (this.indicatorsField &&\n this.indicatorsField.ApiName === field.ApiName) ||\n (this.hasCampaignField &&\n this.hasCampaignField.ApiName === field.ApiName))\n ) {\n return;\n }\n\n // Set type to link\n if (index === 0 && this.firstFieldAsLink) {\n dataField.FieldType = FIELD_TYPE.InternalLink;\n // dataField.Value = this.getInternalLinkHref();\n }\n\n if (field.ApiName === 'ObjectMenu') {\n dataField.Enabled = true;\n // HACK : Until \"Enabled\" returns from the server, we set PepMenu to be\n // Disabled in cart on regular items and not campign items.\n }\n const customField: PepFieldBase = this.createBaseField(field, dataField);\n fields.push(customField);\n });\n\n return fields.sort((f1, f2) =>\n f1.row > f2.row\n ? 1\n : f1.row < f2.row\n ? -1\n : f1.col > f2.col\n ? 1\n : f1.col < f2.col\n ? -1\n : 0\n );\n }\n\n private onFormValidationChanged(formValidationChange: any): void {\n this.formValidationChange.emit(formValidationChange);\n }\n\n onValueChanged(event: IPepFieldValueChangeEvent): void {\n this.onFormValidationChanged(this.form.valid);\n\n const formControl = this.getFormControlById(event.key);\n\n const isValid = formControl ? formControl.valid : true;\n // const isValid = true;\n\n if (isValid) {\n // Set it to false to disable all fields.\n if (this.isInternal && this.layoutType === 'form') {\n this.isLocked = true;\n }\n\n // Update the current field value.\n const currentField = this.fields.find((f) => f.key === event.key);\n if (currentField) {\n currentField.formattedValue = currentField.value = event.value;\n }\n\n this.valueChange.emit({\n id: this.data.UID.toString(),\n uiObjectKey: this.data.Key,\n key: event.key,\n value: event.value,\n controlType: event.controlType,\n });\n }\n }\n\n onClick(fieldClickEvent: IPepFieldClickEvent): void {\n const clickedUiControlField = this.data.Fields.filter(\n (f) => f.ApiName === fieldClickEvent.key\n )[0];\n const idType = this.data.Type ? this.data.Type.toString() : '';\n\n if (clickedUiControlField) {\n this.fieldClick.emit({\n id: this.data.UID.toString(),\n uiObjectKey: this.data.Key,\n key: fieldClickEvent.key,\n idType,\n which: fieldClickEvent.eventWhich,\n value: fieldClickEvent.value,\n controlType: fieldClickEvent.controlType,\n fieldType: clickedUiControlField.FieldType,\n otherData: fieldClickEvent.otherData,\n });\n } else {\n // For other api names (like enter children etc).\n this.fieldClick.emit({\n id: this.data.UID.toString(),\n uiObjectKey: this.data.Key,\n key: fieldClickEvent.key,\n idType,\n which: fieldClickEvent.eventWhich,\n value: fieldClickEvent.value,\n controlType: fieldClickEvent.controlType,\n otherData: fieldClickEvent.otherData,\n });\n }\n }\n\n // // This event is for handle the internal page events.\n // onInternalFormFieldClicked(internalFormFieldClick: any): void {\n // this.internalFormFieldClick.emit(internalFormFieldClick);\n // }\n\n // // This event is for handle the internal page events.\n // onInternalFormFieldChanged(internalFormFieldChange: any): void {\n // this.internalFormFieldChange.emit(internalFormFieldChange);\n // }\n\n // This event is for handle the related items change events.\n onFormValueChanged(event: IPepFormFieldValueChangeEvent): void {\n // this.valueChange.emit(event);\n }\n\n // This event is for handle the related items change events.\n onFormFieldClick(event: IPepFormFieldClickEvent): void {\n this.fieldClick.emit(event);\n }\n}\n","<fieldset *ngIf=\"form\" [formGroup]=\"form\" [disabled]=\"isLocked\" class=\"pep-form\"\n [ngStyle]=\"{ 'background-color': layoutType == 'card' && data?.BackgroundColor }\">\n <!-- New Form -->\n <mat-grid-list *ngIf=\"layoutType == 'form'\" [cols]=\"columns\" [rowHeight]=\"rowHeight + 'rem'\"\n [gutterSize]=\"formGutterSize\">\n <mat-grid-tile *ngFor=\"let field of fields$ | async\" [rowspan]=\"field.rowSpan\" [colspan]=\"field.colSpan\">\n <pep-internal-field-generator *ngIf=\"field.controlType != 'placeholder'\" [form]=\"form\" [layoutType]=\"layoutType\"\n [checkForChanges]=\"checkForChanges\" [uid]=\"data?.UID\" [field]=\"field\" [showTitle]=\"showTitle\"\n (valueChange)=\"onValueChanged($event)\" (elementClick)=\"onClick($event)\"\n (formValueChange)=\"onFormValueChanged($event)\" (formFieldClick)=\"onFormFieldClick($event)\"\n >\n </pep-internal-field-generator>\n <!-- (formValidationChange)=\"onFormValidationChanged($event)\" -->\n </mat-grid-tile>\n </mat-grid-list>\n\n <!-- Thumbnails -->\n <mat-grid-list *ngIf=\"layoutType == 'card'\" [cols]=\"columns\" [rowHeight]=\"rowHeight + 'rem'\"\n [gutterSize]=\"cardGutterSize\" class=\"card-spacing\">\n <mat-grid-tile *ngFor=\"let field of fields$ | async\" [rowspan]=\"field.rowSpan\" [colspan]=\"field.colSpan\"\n [ngStyle]=\"{ overflow: field.type == 'qs' ? 'unset' : 'hidden' }\">\n <pep-internal-field-generator *ngIf=\"field.controlType != 'placeholder'\" [form]=\"form\" [layoutType]=\"layoutType\"\n [ngClass]=\"{ 'lock-events': lockEvents }\" [isActive]=\"isActive\" [checkForChanges]=\"checkForChanges\"\n [uid]=\"data?.UID\" [field]=\"field\" [showTitle]=\"showTitle\" (valueChange)=\"onValueChanged($event)\"\n (elementClick)=\"onClick($event)\" (formValueChange)=\"onFormValueChanged($event)\" (formFieldClick)=\"onFormFieldClick($event)\">\n </pep-internal-field-generator>\n </mat-grid-tile>\n </mat-grid-list>\n\n <ng-container *ngIf=\"layoutType == 'table'\">\n <ng-container *ngIf=\"isReport; then reportBlock; else notReportBlock\"></ng-container>\n <ng-template #reportBlock>\n <ng-container *ngTemplateOutlet=\"report\"></ng-container>\n </ng-template>\n <ng-template #notReportBlock>\n <div *ngFor=\"let field of fields$ | async; let j = index\" class=\"pull-left flip table-cell \"\n [ngClass]=\"['text-align-' + field.xAlignment]\" style=\"height: 100%\"\n [ngStyle]=\"{ width: (layout?.ControlFields)[j]?.calcColumnWidthString}\">\n <pep-internal-field-generator *ngIf=\"field.controlType != 'placeholder'\" [checkForChanges]=\"checkForChanges\"\n [uid]=\"data?.UID\" [field]=\"field\" [form]=\"form\" [layoutType]=\"layoutType\" [showTitle]=\"false\"\n (elementClick)=\"onClick($event)\" (valueChange)=\"onValueChanged($event)\"\n (formValueChange)=\"onFormValueChanged($event)\" (formFieldClick)=\"onFormFieldClick($event)\"\n [isActive]=\"isActive\">\n </pep-internal-field-generator>\n </div>\n </ng-template>\n </ng-container>\n\n <!------- For testing ------------\n {{ form.value | json }}\n {{ form.valid }}\n ---------------------------------->\n</fieldset>\n\n<ng-template #report>\n <div *ngFor=\"let field of fields$ | async; let j = index\" class=\"pull-left flip pep-report-fields\"\n [ngStyle]=\"{ width: (layout?.ControlFields)[j]?.calcColumnWidthString }\"\n [ngClass]=\"['text-align-' + field.xAlignment]\">\n <ng-container [ngSwitch]=\"field.controlType\">\n <pep-image *ngSwitchCase=\"'image'\" [uid]=\"data?.UID\" [form]=\"form\" [key]=\"field.key\"\n [src]=\"field.formattedValue\" [srcLarge]=\"field.value\" [options]=\"field.options\" [label]=\"field.label\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [layoutType]=\"layoutType\"\n (elementClick)=\"onClick($event)\">\n </pep-image>\n\n <pep-signature *ngSwitchCase=\"'signature'\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.value\"\n [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\"\n [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n [layoutType]=\"layoutType\">\n </pep-signature>\n\n <pep-checkbox *ngSwitchCase=\"'checkbox'\" [form]=\"form\" [key]=\"field.key\"\n [value]=\"(field.value | lowercase) == 'true' || field.value == '1' ? true : false\" [label]=\"field.label\"\n [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\"\n [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n [additionalValue]=\"field.additionalValue\" [layoutType]=\"layoutType\">\n </pep-checkbox>\n\n <pep-date *ngSwitchCase=\"'date'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [label]=\"field.label\" [type]=\"field.type\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n [minValue]=\"field.minValue\" [maxValue]=\"field.maxValue\" [layoutType]=\"layoutType\">\n </pep-date>\n\n <pep-internal-button *ngSwitchCase=\"'button'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [formattedValue]=\"field.formattedValue\" [label]=\"field.label\" [type]=\"field.type\"\n [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\"\n [layoutType]=\"layoutType\" (elementClick)=\"onClick($event)\">\n </pep-internal-button>\n\n <pep-textarea *ngSwitchCase=\"'textarea'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\"\n [readonly]=\"field.readonly\" [maxFieldCharacters]=\"field.maxFieldCharacters\"\n [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n [layoutType]=\"layoutType\">\n </pep-textarea>\n\n <pep-quantity-selector *ngSwitchCase=\"'qs'\" [id]=\"field.key\" [form]=\"form\" [key]=\"field.key\"\n [value]=\"field.value\" [label]=\"field.label\" [type]=\"field.type\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n [layoutType]=\"layoutType\" (valueChange)=\"onValueChanged($event)\" (elementClick)=\"onClick($event)\">\n </pep-quantity-selector>\n\n <ng-container *ngSwitchDefault>\n <ng-container *ngIf=\"field.formattedValue?.length > 0; then notEmptyBlock; else emptyBlock\">\n </ng-container>\n <ng-template #notEmptyBlock>\n <ng-container\n *ngIf=\"field.controlType === 'attachment' || field.type === 'link'; then linkBlock; else notLinkBlock\">\n </ng-container>\n <ng-template #linkBlock>\n <a [id]=\"field.key\" class=\"color-link body-sm pep-report-input readonly\"\n *ngIf=\"field.formattedValue != null\" title=\"{{ field.formattedValue }}\" target=\"_blank\"\n href=\"{{ field.value }}\">{{ field.formattedValue }}</a>\n </ng-template>\n <ng-template #notLinkBlock>\n <span [id]=\"field.key\" class=\"body-sm pep-report-input readonly\"\n title=\"{{ field.formattedValue }}\" [ngStyle]=\"{ color: field.textColor }\">{{\n field.formattedValue }}</span>\n </ng-template>\n </ng-template>\n <ng-template #emptyBlock>\n <span> </span>\n </ng-template>\n </ng-container>\n </ng-container>\n </div>\n</ng-template>","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n Renderer2,\n ViewChild,\n ElementRef,\n ChangeDetectorRef,\n OnDestroy,\n OnChanges,\n} from '@angular/core';\nimport { delay } from 'rxjs/operators';\nimport {\n PepLayoutService,\n UIControl,\n UIControlField,\n FIELD_TYPE,\n ObjectsDataRow,\n} from '@pepperi-addons/ngx-lib';\nimport {\n IPepFormFieldClickEvent,\n IPepFormFieldValueChangeEvent,\n} from './form.model';\n\nexport type PepListViewType = 'cards' | 'lines' | 'table';\n\n@Component({\n selector: 'pep-internal-list',\n templateUrl: './internal-list.component.html',\n styleUrls: ['./internal-list.component.scss'],\n host: {\n '(window:resize)': 'winResize($event)',\n },\n})\nexport class PepInternalListComponent implements OnInit, OnChanges, OnDestroy {\n @Input() noDataFoundMsg = 'Items not found';\n @Input() hideAllSelectionInMulti = false;\n\n @Input() top = -1;\n @Input() objectId = '0';\n @Input() parentId = '0';\n @Input() searchCode = '0';\n // @Input() showTopBorder = false;\n @Input() supportResizing = true;\n @Input() parentScroll: Element | Window = null;\n @Input() disabled = false;\n @Input() disableEvents = false;\n @Input() disableSelectionItems = false;\n @Input() totalsRow = [];\n\n // @Output()\n // itemClick: EventEmitter<IPepListItemClickEvent> = new EventEmitter<IPepListItemClickEvent>();\n @Output()\n fieldClick: EventEmitter<any> = new EventEmitter<IPepFormFieldClickEvent>();\n @Output()\n valueChange: EventEmitter<IPepFormFieldValueChangeEvent> = new EventEmitter<IPepFormFieldValueChangeEvent>();\n\n @ViewChild('noVirtualScrollCont') noVirtualScrollCont: ElementRef;\n @ViewChild('tableHeader') tableHeader: ElementRef;\n @ViewChild('selectAllCB') selectAllCB: any;\n\n public uiControl: UIControl = null;\n public totalRows = -1;\n itemClass: string;\n isTable = false;\n private hasColumnWidthOfTypePercentage = true;\n\n private _items: Array<ObjectsDataRow> = null;\n get items(): Array<ObjectsDataRow> {\n return this._items;\n }\n\n // isCardView = false;\n private itemsCounter = 0;\n showItems = true;\n viewType: PepListViewType;\n scrollItems: Array<ObjectsDataRow>;\n\n public SEPARATOR = ',';\n\n nativeWindow: any = null;\n\n selectedItemId = '';\n hoveredItemId = '';\n\n private lockEvents = false;\n private containerWidth = 0;\n\n deviceHasMouse = false;\n\n // headerIsInFocus = false;\n\n // For resize\n pressedColumn = '';\n startX = 0;\n startWidth = 0;\n tableStartWidth = 0;\n\n isUserSelected = false;\n checkForChanges: any = null;\n useVirtualScroll = true;\n calculatedObjectHeight: string;\n\n constructor(\n private element: ElementRef,\n private layoutService: PepLayoutService,\n private cd: ChangeDetectorRef,\n private renderer: Renderer2\n ) {\n this.nativeWindow = window;\n this.deviceHasMouse = this.layoutService.getDeviceHasMouse();\n this.layoutService.onMouseOver$.subscribe((deviceHasMouse) => {\n this.deviceHasMouse = deviceHasMouse;\n });\n }\n\n ngOnInit(): void {\n this.containerWidth = 0;\n }\n\n ngOnChanges(changes): void {\n if (this.containerWidth <= 0) {\n this.setContainerWidth();\n }\n }\n\n ngOnDestroy(): void {\n // if (this.valueChange) {\n // this.valueChange.unsubscribe();\n // }\n // if (this.itemClick) {\n // this.itemClick.unsubscribe();\n // }\n // if (this.fieldClick) {\n // this.fieldClick.unsubscribe();\n // }\n }\n\n setContainerWidth(): void {\n if (!this.element.nativeElement.parentElement) {\n return;\n }\n\n const selectionCheckBoxWidth = 0;\n\n const rowHeight = 40; // the table row height (2.5rem * 16font-size).\n const style = getComputedStyle(\n this.element.nativeElement.parentElement\n );\n // The container-fluid class padding left + right + border\n const containerFluidSpacing =\n parseInt(style.paddingLeft, 10) + parseInt(style.paddingRight, 10);\n\n const parentContainer =\n this.element.nativeElement.parentElement.parentElement > 0\n ? this.element.nativeElement.parentElement.parentElement\n : this.element.nativeElement.parentElement;\n\n // Calculate if vertical scroll should appear, if so set the scroll width. (this.totalRows + 1) + 1 is for the header row.\n const scrollWidth =\n parentContainer.clientHeight < rowHeight * (this.totalRows + 1)\n ? 18\n : 0; // 18 is the default scroll width.\n\n // The selectionCheckBoxWidth width + containerFluidSpacing + scrollWidth.\n const rowHeaderWidthToSub =\n containerFluidSpacing + selectionCheckBoxWidth + scrollWidth;\n this.containerWidth = parentContainer.offsetWidth - rowHeaderWidthToSub;\n }\n\n clear(): void {\n this.cleanItems();\n this.uiControl = null;\n }\n\n private toggleItems(isVisible: boolean): void {\n this.showItems = isVisible;\n this.lockEvents = !isVisible;\n }\n\n private updateScrollItems(startIndex, endIndex, loadInChunks = true): void {\n this.scrollItems = this.items.slice(startIndex, endIndex);\n }\n\n getUniqItemId(itemId: string, itemType = ''): string {\n return itemId + this.SEPARATOR + itemType;\n }\n\n setLayout(): void {\n if (\n this.totalRows === 0 ||\n !this.uiControl ||\n !this.uiControl.ControlFields ||\n this.uiControl.ControlFields.length === 0\n ) {\n return;\n }\n\n this.uiControl.ControlFields.forEach((cf) => {\n if (cf.ColumnWidth === 0) {\n cf.ColumnWidth = 10;\n }\n\n if (\n this.isTable &&\n (cf.FieldType === FIELD_TYPE.Image ||\n // cf.FieldType === FIELD_TYPE.Indicators || ???\n cf.FieldType === FIELD_TYPE.Signature ||\n cf.FieldType === FIELD_TYPE.NumberIntegerQuantitySelector ||\n cf.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n cf.FieldType === FIELD_TYPE.NumberIntegerForMatrix ||\n cf.FieldType === FIELD_TYPE.NumberRealForMatrix ||\n cf.FieldType === FIELD_TYPE.Package ||\n cf.ApiName === 'UnitsQuantity' ||\n cf.ApiName === 'QuantitySelector')\n ) {\n cf.Layout.XAlignment = 3;\n }\n });\n\n if (!this.cd['destroyed']) {\n this.cd.detectChanges();\n }\n\n // Set the columns width.\n if (this.containerWidth <= 0) {\n this.setContainerWidth();\n }\n\n this.calcColumnsWidth();\n this.checkForChanges = new Date().getTime();\n }\n\n private calcColumnsWidth(): void {\n const fixedMultiple = 3.78; // for converting em to pixel.\n const length = this.uiControl.ControlFields.length;\n const selectionCheckBoxWidth = 0;\n\n // Is table AND there is at least one column of width type of percentage.\n if (this.isTable) {\n if (this.uiControl && this.uiControl.ControlFields) {\n this.hasColumnWidthOfTypePercentage =\n this.uiControl.ControlFields.filter(\n (cf) => cf.ColumnWidthType === 1\n ).length === 0;\n }\n }\n\n // If the columns size is fixed and the total is small then the container change it to percentage.\n if (!this.hasColumnWidthOfTypePercentage) {\n const totalFixedColsWidth = this.uiControl.ControlFields.map(\n (cf) => cf.ColumnWidth * fixedMultiple\n ).reduce((sum, current) => sum + current);\n\n if (window.innerWidth > totalFixedColsWidth) {\n this.hasColumnWidthOfTypePercentage = true;\n }\n }\n\n let totalCalcColsWidth = 0;\n\n // Calc by percentage\n if (this.hasColumnWidthOfTypePercentage) {\n const totalColsWidth: number = this.uiControl.ControlFields.map(\n (cf) => cf.ColumnWidth\n ).reduce((sum, current) => sum + current);\n\n for (let index = 0; index < length; index++) {\n const uiControlField: UIControlField = this.uiControl\n .ControlFields[index];\n const calcColumnWidthPercentage =\n (100 / totalColsWidth) * uiControlField.ColumnWidth;\n\n uiControlField.calcColumnWidth = Math.floor(\n (this.containerWidth * calcColumnWidthPercentage) / 100\n );\n\n if (index === length - 1) {\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString =\n 'calc(100% - ' + totalCalcColsWidth + 'px)'; // For 100%\n } else {\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString =\n uiControlField.calcColumnWidth + 'px';\n totalCalcColsWidth += uiControlField.calcColumnWidth;\n }\n }\n\n this.renderer.setStyle(\n this.element.nativeElement,\n 'width',\n 'inherit'\n );\n } else {\n for (let index = 0; index < length; index++) {\n const uiControlField: UIControlField = this.uiControl\n .ControlFields[index];\n const currentFixedWidth = Math.floor(\n uiControlField.ColumnWidth * fixedMultiple\n );\n\n if (index === length - 1) {\n uiControlField.calcTitleColumnWidthString =\n currentFixedWidth + 'px';\n uiControlField.calcColumnWidthString =\n currentFixedWidth - 4 + 'px'; // -4 for the row padding.\n } else {\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString =\n currentFixedWidth + 'px';\n }\n\n totalCalcColsWidth += currentFixedWidth;\n }\n\n this.renderer.setStyle(\n this.element.nativeElement,\n 'width',\n totalCalcColsWidth + selectionCheckBoxWidth + 'px'\n );\n }\n }\n\n private initResizeData(): void {\n this.startX = 0;\n this.startWidth = 0;\n this.tableStartWidth = 0;\n this.pressedColumn = '';\n }\n\n onListResizeStart(event, columnKey): void {\n this.pressedColumn = columnKey;\n this.startX = event.x;\n this.startWidth = event.target.closest('.header-column').offsetWidth;\n // Set the tableStartWidth to the container offsetWidth\n this.tableStartWidth = this.element.nativeElement.offsetWidth; // this.noVirtualScrollCont.nativeElement.offsetWidth;\n }\n\n onListResize(event): void {\n if (this.pressedColumn.length > 0) {\n const widthToAdd = this.layoutService.isRtl()\n ? this.startX - event.x\n : event.x - this.startX;\n\n // Set the width of the column and the container of the whole columns.\n if (this.startWidth + widthToAdd >= 48 || widthToAdd > 0) {\n const length = this.uiControl.ControlFields.length;\n let totalCalcColsWidth = 0;\n\n for (let index = 0; index < length; index++) {\n const uiControlField: UIControlField = this.uiControl\n .ControlFields[index];\n\n if (index === length - 1) {\n // Calc the last column only in percentage type.\n if (this.hasColumnWidthOfTypePercentage) {\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString =\n 'calc(100% - ' + totalCalcColsWidth + 'px)'; // For 100%\n } else {\n if (uiControlField.ApiName === this.pressedColumn) {\n uiControlField.calcColumnWidth =\n this.startWidth + widthToAdd;\n uiControlField.calcTitleColumnWidthString =\n uiControlField.calcColumnWidth + 'px';\n uiControlField.calcColumnWidthString =\n uiControlField.calcColumnWidth - 4 + 'px';\n }\n }\n } else if (uiControlField.ApiName === this.pressedColumn) {\n uiControlField.calcColumnWidth =\n this.startWidth + widthToAdd;\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString =\n uiControlField.calcColumnWidth + 'px';\n }\n\n totalCalcColsWidth += uiControlField.calcColumnWidth;\n }\n\n this.renderer.setStyle(\n this.element.nativeElement,\n 'width',\n this.tableStartWidth + widthToAdd + 'px'\n );\n }\n\n this.checkForChanges = new Date().getTime();\n }\n }\n\n getParent(el, parentSelector): any {\n // If no parentSelector defined will bubble up all the way to *document*\n if (parentSelector === undefined) {\n parentSelector = document;\n }\n const parent = [];\n let p = el.parentNode;\n\n while (\n p &&\n p.className !== '' &&\n p.className.indexOf(parentSelector) === -1 &&\n parentSelector !== document\n ) {\n const o = p;\n p = o.parentNode;\n }\n if (p.className.indexOf(parentSelector) > -1) {\n parent.push(p); // Push that parentSelector you wanted to stop at\n }\n return parent;\n }\n\n onListResizeEnd(event): void {\n if (this.pressedColumn.length > 0) {\n if (\n event &&\n this.getParent(event.srcElement, 'resize-box').length > 0\n ) {\n this.initResizeData();\n } else {\n setTimeout(() => {\n this.initResizeData();\n }, 0);\n }\n }\n }\n\n onListHeaderMouseEnter(event): void {\n // this.headerIsInFocus = true;\n }\n\n onListHeaderMouseLeave(event): void {\n // this.headerIsInFocus = false;\n this.onListResizeEnd(event);\n this.initResizeData();\n }\n\n onListChange(event: any): void {\n if (this.disableEvents) {\n return;\n }\n\n // For other events do nothing.\n if (\n typeof event.start === 'undefined' ||\n typeof event.end === 'undefined'\n ) {\n return;\n }\n\n this.calculatedObjectHeight = event.calculatedChildHeight + 'px';\n\n if (!this.lockEvents) {\n this.toggleItems(false);\n this.updateScrollItems(event.start, event.end, false);\n this.toggleItems(true);\n }\n }\n\n getParentContainer(): Element | Window {\n return this.parentScroll ? this.parentScroll : window;\n }\n\n onValueChanged(valueChange: IPepFormFieldValueChangeEvent): void {\n if (this.disabled) {\n return;\n }\n\n this.valueChange.emit(valueChange);\n }\n\n onCustomizeFieldClick(\n customizeFieldClickedData: IPepFormFieldClickEvent\n ): void {\n if (this.disabled) {\n return;\n }\n\n this.fieldClick.emit(customizeFieldClickedData);\n }\n\n getIsDisabled(item: ObjectsDataRow): boolean {\n if (this.disableSelectionItems) {\n return true;\n } else {\n const IsNotSelectableForActions =\n item && !item.IsSelectableForActions;\n return IsNotSelectableForActions;\n }\n }\n\n getIsItemSelected(itemId: string, itemType = ''): boolean {\n let isSelected = false;\n\n const uniqItemId = this.getUniqItemId(itemId, itemType);\n isSelected = uniqItemId === this.selectedItemId;\n\n return isSelected;\n }\n\n private setItemClicked(\n itemId,\n isSelectableForActions: boolean,\n itemType: string,\n isChecked: boolean\n ): void {\n const uniqItemId = this.getUniqItemId(itemId, itemType);\n\n // select the selected item.\n if (isChecked) {\n // Set seleted item\n this.selectedItemId = uniqItemId;\n } else {\n if (this.selectedItemId === uniqItemId) {\n this.selectedItemId = '';\n }\n }\n }\n\n itemClicked(e: any, item: ObjectsDataRow): void {\n // Set seleted item\n const itemId = item.UID.toString();\n const itemType = item.Type.toString();\n let isChecked = false;\n\n if (item && item.IsSelectableForActions) {\n this.selectedItemId = this.getUniqItemId(itemId, itemType);\n isChecked = true;\n }\n\n if (this.isTable) {\n this.setItemClicked(\n itemId,\n item.IsSelectableForActions,\n itemType,\n true\n );\n } else {\n if (this.disabled) {\n return;\n }\n }\n\n // this.itemClick.emit({ source: item, viewType: this.viewType });\n }\n\n onTableRowMouseEnter(event: any, itemId: string, itemType: string): void {\n if (!this.deviceHasMouse) {\n return;\n }\n\n const uniqItemId = this.getUniqItemId(itemId, itemType);\n this.hoveredItemId = uniqItemId;\n }\n\n onTableRowMouseLeave(event: any, itemId: string, itemType: string): void {\n this.hoveredItemId = '';\n }\n\n onCardMouseEnter(event: any, itemId: string, itemType: string): void {\n if (!this.deviceHasMouse) {\n return;\n }\n\n const uniqItemId = this.getUniqItemId(itemId, itemType);\n this.hoveredItemId = uniqItemId;\n }\n\n onCardMouseLeave(event: any, itemId: string, itemType: string): void {\n this.hoveredItemId = '';\n }\n\n // call this function after resize + animation end\n winResize(e): void {\n this.containerWidth = 0;\n this.setLayout();\n }\n\n trackByFunc(index: number, item: ObjectsDataRow): any {\n return item && item.UID ? item.UID : index;\n }\n\n cleanItems(): void {\n this.itemsCounter = 0;\n this._items =\n this.totalRows > 0 ? Array<ObjectsDataRow>(this.totalRows) : [];\n this.scrollItems = [];\n this.calculatedObjectHeight = '';\n }\n\n getUIControl(): UIControl {\n return this.uiControl;\n }\n\n initListData(\n uiControl: UIControl,\n totalRows: number,\n items: ObjectsDataRow[],\n viewType: PepListViewType = 'table',\n itemClass = ''\n ): void {\n this.viewType = viewType;\n this.isTable = viewType === 'table';\n // this.isCardView = viewType === 'cards';\n this.uiControl = uiControl;\n this.itemClass = itemClass;\n this.selectedItemId = '';\n this.totalRows = totalRows;\n\n // fix bug for the scrollTo that doesn't work on edge div , not window\n // const scrollingElement = this.getParentContainer();\n // scrollingElement.scrollTo(0, 0);\n\n this.cleanItems();\n\n this.updateItems(items);\n\n this.setLayout();\n }\n\n private updateItems(items: ObjectsDataRow[]): void {\n this.scrollItems = this._items = items;\n this.itemsCounter = items.length;\n }\n\n updateItem(data: any): void {\n let index = 0;\n\n // Update items list\n index = this.items.findIndex((i) => i && i.UID === data.UID);\n if (index >= 0 && index < this.items.length) {\n this.items[index] = data;\n }\n\n // Update scrollItems list\n index = this.scrollItems.findIndex((i) => i && i.UID === data.UID);\n\n if (index >= 0 && index < this.scrollItems.length) {\n this.scrollItems[index] = data;\n this.checkForChanges = new Date().getTime();\n }\n }\n\n getIsItemEditable(uid: string): boolean {\n const item = this.items.filter((x) => x.UID.toString() === uid);\n if (item.length > 0) {\n return item[0].IsEditable;\n } else {\n return false;\n }\n }\n\n getItemDataByID(uid: string): ObjectsDataRow {\n return this.items.find((item) => item.UID.toString() === uid);\n }\n}\n","<ng-container *ngIf=\"totalRows == 0\">\n <div class=\"pep-border-bottom\">\n <p class=\"title-xl no-data\">\n {{ (noDataFoundMsg ? noDataFoundMsg : 'LIST.NO_DATA_FOUND') | translate}}\n </p>\n </div>\n <div class=\"no-data-suggestions\">\n <p class=\"suggestions-title title-lg\">\n {{ 'LIST.NO_DATA_FOUND_SUGGESTIONS_TITLE' | translate}}\n </p>\n <ul class=\"suggestions-list body-lg\" [innerHtml]=\"'LIST.NO_DATA_FOUND_SUGGESTIONS_LIST' | translate\"></ul>\n </div>\n</ng-container>\n<ng-container *ngIf=\"totalRows > 0\">\n <div *ngIf=\"isTable\" #tableHeader class=\"table-header\" (mouseup)=\"onListResizeEnd($event)\"\n (mouseenter)=\"onListHeaderMouseEnter($event)\" (mouseleave)=\"onListHeaderMouseLeave($event)\"\n (mousemove)=\"onListResize($event)\">\n\n <div class=\"table-header-padding-top\"></div>\n <fieldset class=\"table-header-fieldset\">\n <fieldset>\n <div *ngFor=\"let field of uiControl?.ControlFields; let j = index\" class=\"header-column pull-left flip\"\n [ngStyle]=\"{ width: field.calcTitleColumnWidthString }\" [ngClass]=\"{\n 'is-resizing': field.ApiName === pressedColumn,\n 'is-first': j === 0,\n 'is-last': j === uiControl?.ControlFields?.length - 1\n }\">\n <label *ngIf=\"field.Title != ''\" id=\"{{ field.ApiName }}\"\n class=\"header-label body-sm pull-left flip text-align-{{ field.Layout.XAlignment }}\"\n title=\"{{ field.Title }}\">\n {{ field.Title }}\n </label>\n <label *ngIf=\"field.Title == ''\" id=\"{{ field.ApiName }}\"\n class=\"header-label body-sm pull-left flip\"> </label>\n\n <div *ngIf=\"supportResizing\" class=\"resize-box pull-right flip\"\n (mousedown)=\"onListResizeStart($event, field.ApiName)\">\n <div class=\"splitter\"></div>\n </div>\n </div>\n </fieldset>\n </fieldset>\n </div>\n\n <div #noVirtualScrollCont [ngClass]=\"{ 'table-body': isTable, 'cards-body': !isTable }\">\n <ng-container *ngTemplateOutlet=\"listData\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"listTotals\"></ng-container>\n</ng-container>\n\n<ng-template #listData>\n <ng-container *ngFor=\"let item of scrollItems; let i = index; let isFirst = first; trackBy: trackByFunc\">\n <ng-container *ngIf=\"isTable\">\n <div class=\"table-row\" (mouseenter)=\"onTableRowMouseEnter($event, item?.UID, item?.Type)\"\n (mouseleave)=\"onTableRowMouseLeave($event, item?.UID, item?.Type)\" [ngClass]=\"{\n selected: getIsItemSelected(item?.UID, item?.Type),\n highlighted: item?.UID + SEPARATOR + item?.Type === selectedItemId\n }\"\n [ngStyle]=\"{ height: calculatedObjectHeight, visibility: showItems || item ? 'visible' : 'hidden' }\">\n <fieldset class=\"table-row-fieldset\" [ngStyle]=\"{ 'background-color': item?.BackgroundColor }\">\n <!-- [canEditObject]=\"!disabled && item?.IsEditable\" -->\n <pep-internal-form [checkForChanges]=\"checkForChanges\" [layout]=\"uiControl\" [data]=\"item\"\n [canEditObject]=\"!disabled\" [objectId]=\"objectId\" [parentId]=\"parentId\"\n [searchCode]=\"searchCode\" [lockEvents]=\"disableSelectionItems\" [layoutType]=\"'table'\"\n [isActive]=\"\n (item?.UID + SEPARATOR + item?.Type === selectedItemId ||\n item?.UID + SEPARATOR + item?.Type === hoveredItemId) && deviceHasMouse\n \" (valueChange)=\"onValueChanged($event)\" (fieldClick)=\"onCustomizeFieldClick($event)\"\n (click)=\"itemClicked($event, item)\">\n </pep-internal-form>\n </fieldset>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!isTable\">\n <div [class]=\"itemClass\" (mouseenter)=\"onCardMouseEnter($event, item?.UID, item?.Type)\"\n (mouseleave)=\"onCardMouseLeave($event, item?.UID, item?.Type)\" [ngClass]=\"{\n selected: getIsItemSelected(item?.UID, item?.Type),\n highlighted: item?.UID + SEPARATOR + item?.Type === selectedItemId,\n 'card-view': viewType === 'cards',\n 'line-view': viewType === 'lines'\n }\" class=\"pull-left flip\"\n [ngStyle]=\"{ height: calculatedObjectHeight, visibility: showItems || item ? 'visible' : 'hidden' }\">\n <!-- [canEditObject]=\"!disabled && item?.IsEditable\" -->\n <pep-internal-form [checkForChanges]=\"checkForChanges\" [layout]=\"uiControl\" [data]=\"item\"\n [canEditObject]=\"!disabled\" [objectId]=\" objectId\" [parentId]=\"parentId\" [searchCode]=\"searchCode\"\n [lockEvents]=\"disableSelectionItems\" [layoutType]=\"'card'\" [isActive]=\"\n (item?.UID + SEPARATOR + item?.Type === selectedItemId ||\n item?.UID + SEPARATOR + item?.Type === hoveredItemId) && deviceHasMouse\n \" (valueChange)=\"onValueChanged($event)\" (fieldClick)=\"onCustomizeFieldClick($event)\"\n (click)=\"itemClicked($event, item)\">\n </pep-internal-form>\n </div>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #listTotals>\n <div *ngIf=\"totalsRow?.length > 0 && totalsRow.length <= uiControl?.ControlFields.length\" class=\"table-total\">\n <fieldset class=\"table-header-fieldset\">\n <div *ngFor=\"let field of uiControl?.ControlFields; let j = index\" class=\"total-column pull-left flip\"\n [ngStyle]=\"{ width: field.calcTitleColumnWidthString }\">\n <label class=\"total-label body-sm text-align-{{ field.Layout.XAlignment }}\">\n {{ totalsRow[j] }}\n </label>\n </div>\n </fieldset>\n </div>\n</ng-template>","import {\n Component,\n OnInit,\n OnDestroy,\n Input,\n Output,\n EventEmitter,\n ViewChild,\n ElementRef,\n ViewContainerRef,\n TemplateRef,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { PepInternalPageService } from './internal-page.service';\n\nimport {\n PepLayoutType,\n UIControl,\n KeyValuePair,\n PepCustomizationService,\n UIControlField,\n ObjectsData,\n FIELD_TYPE,\n} from '@pepperi-addons/ngx-lib';\nimport {\n PepInternalListComponent,\n PepListViewType,\n} from './internal-list.component';\nimport {\n IPepFormFieldClickEvent,\n IPepFormFieldValueChangeEvent,\n} from './form.model';\nimport { PepDialogService } from '@pepperi-addons/ngx-lib/dialog';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { PepQuantitySelectorComponent } from '@pepperi-addons/ngx-lib/quantity-selector';\n\n@Component({\n selector: 'pep-internal-page',\n templateUrl: './internal-page.component.html',\n styleUrls: ['./internal-page.component.scss'],\n providers: [PepInternalPageService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepInternalPageComponent implements OnInit, OnDestroy {\n static CURRENT_ADDITIONAL_API_NAME =\n 'item_details_currentAdditionalApiName';\n\n controlType = 'internalPage';\n\n @Input() field: any;\n @Input() layoutType: PepLayoutType = 'form';\n\n @Output()\n internalFormFieldChange: EventEmitter<any> = new EventEmitter<any>();\n @Output()\n internalFormFieldClick: EventEmitter<IPepFormFieldClickEvent> = new EventEmitter<IPepFormFieldClickEvent>();\n\n @ViewChild('my1mm') my1mm: ElementRef;\n @ViewChild('mainViewCont') mainViewCont: ElementRef;\n\n @ViewChild('orgCont', { read: ViewContainerRef }) orgCont: ViewContainerRef;\n @ViewChild('dialogCont', { read: ViewContainerRef })\n dialogCont: ViewContainerRef;\n @ViewChild('matrixTemplate') matrixTemplate: TemplateRef<any>;\n @ViewChild('matrixDialogTemplate', { read: TemplateRef })\n matrixDialogTemplate: TemplateRef<any>;\n\n @ViewChild(PepInternalListComponent)\n customList: PepInternalListComponent;\n\n resize: any;\n checkForChanges: any = null;\n\n childData: any = null;\n\n emptyForm: FormGroup;\n uiControl: UIControl;\n rows: any;\n lineViewRows: any;\n totalsRow: any = [];\n additionalApiNames: any = null;\n currentAdditionalApiName: any = null;\n focusedQS = false;\n fieldIdWithFocus = '';\n columnWidth = 100;\n coverChildTable = false;\n childViewTypes: Array<KeyValuePair<string>>;\n currentViewType: KeyValuePair<string> = null;\n currentViewTypeTitle: string;\n sumOfMinColWidth = 0;\n totalRowsWidth = 0;\n viewWidth = '100%';\n viewHeight = 'auto';\n displayQSbtns = true;\n selectedApiName = '';\n showSort = false;\n defaultRowSpan = -1;\n\n constructor(\n private dialogService: PepDialogService,\n private internalPageService: PepInternalPageService,\n public customizationService: PepCustomizationService,\n private changeDetectorRef: ChangeDetectorRef\n ) { }\n\n private fillData(isInDialog = false): void {\n const view = this.matrixTemplate.createEmbeddedView(null);\n\n this.customList?.clear();\n this.orgCont?.clear();\n\n if (isInDialog) {\n this.dialogCont?.clear();\n this.dialogCont?.insert(view);\n } else {\n this.orgCont?.insert(view);\n }\n\n setTimeout(() => {\n const viewType: PepListViewType = this.isTableView()\n ? 'table'\n : 'lines';\n this.customList.initListData(\n this.uiControl,\n this.childData.TotalRows,\n this.childData.Rows,\n viewType\n );\n this.setTotalsRow();\n\n // if (!this.childModal.isShown) {\n const childrenCount = this.childData.Rows\n ? this.childData.Rows.length\n : 0;\n const isEven = childrenCount % 2 === 0;\n // 3 for matrix & flat matrix because the header + total is 2 more rows.\n const rowsToAdd =\n this.isMatrixView() || this.isFlatMatrixView()\n ? isEven\n ? 3\n : 4\n : 1;\n\n const formRowHeight =\n this.customizationService.calculateFormFieldHeight() * 16; // convert rem to pixel\n\n // Set the default only if not set yet.\n if (this.defaultRowSpan === -1) {\n this.defaultRowSpan = this.field.rowSpan;\n }\n\n this.sumOfMinColWidth = 0;\n this.totalRowsWidth = 0;\n\n this.childData.UIControl.ControlFields.forEach(\n (uiControlField: UIControlField) => {\n this.totalRowsWidth += uiControlField.ColumnWidth;\n uiControlField.minFieldWidth = this.mmToPx(12); // NEED TO GET THIS PARAM FROM CUSTOMIZATION;\n this.sumOfMinColWidth += 12;\n }\n );\n\n this.setViewCover(this.childData.Rows);\n\n if (this.coverChildTable) {\n this.field.rowSpan = this.defaultRowSpan;\n } else {\n // For line view Add the height of the line (form height).\n if (this.currentViewType.Key === 'OrderCenterFlatMatrixLine') {\n const maxRow = Math.max(\n ...this.uiControl.ControlFields.map((f) => {\n return f.Layout.Y + f.Layout.Height;\n })\n );\n\n // * 16 convert rem to pixel\n const cardRowsHeight =\n this.customizationService.calculateCardRowsHeight(\n maxRow\n ) * 16;\n\n // maxRow * 24 + 60 - 24 for each row in card + 60 for the padding of each card.\n // const rowSpanToAdd = Math.floor(childrenCount * ((cardRowsHeight + 56) / formRowHeight) + rowsToAdd);\n // + 16 is the 1rem margin outside card.\n const rowSpanToAdd =\n (childrenCount * (cardRowsHeight + 16)) /\n formRowHeight +\n rowsToAdd;\n this.field.rowSpan = rowSpanToAdd;\n } else {\n // const tableRowsHeight = this.customizationService.calculateTableRowsHeight(childrenCount) * 16;\n // this.field.rowSpan = Math.ceil((tableRowsHeight + (rowsToAdd * 40)) / formRowHeight);\n // * 16 convert rem to pixel\n const rowsToAddHeight =\n this.customizationService.calculateTableRowsHeight(\n rowsToAdd,\n false\n ) * 16;\n const tableRowsHeight =\n this.customizationService.calculateTableRowsHeight(\n childrenCount\n ) * 16;\n this.field.rowSpan =\n (rowsToAddHeight + tableRowsHeight) / formRowHeight;\n }\n }\n }, 0);\n\n this.changeDetectorRef.markForCheck();\n }\n\n private fillChildData(res: any): void {\n this.childData = res;\n this.uiControl = res.UIControl;\n this.additionalApiNames = res.AdditionalApiNames;\n\n this.fillData();\n }\n\n mmToPx(mm): number {\n const height = this.my1mm.nativeElement.clientHeight;\n return Math.floor(mm * height); // returns sizes in PX\n }\n\n private isMatrixView(): boolean {\n return (\n this.currentViewType &&\n this.currentViewType.Key === 'OrderCenterMatrix'\n );\n }\n\n private isFlatMatrixView(): boolean {\n return (\n this.currentViewType &&\n this.currentViewType.Key === 'OrderCenterFlatMatrixGrid'\n );\n }\n\n isTableView(): boolean {\n return this.isMatrixView() || this.isFlatMatrixView();\n }\n\n changeChildrenViewType(viewTypeKey: string): void {\n this.rows = [];\n this.uiControl = null;\n\n for (const vt of this.childViewTypes) {\n if (vt.Key === viewTypeKey) {\n this.currentViewType = vt;\n break;\n }\n }\n\n this.currentViewTypeTitle = this.currentViewType.Value;\n\n this.internalPageService.changeChildrenViewType(\n this.currentViewType.Key,\n (res: ObjectsData) => {\n if (res.Rows) {\n this.fillChildData(res);\n }\n }\n );\n }\n\n setViewCover(rows): void {\n if (!rows) {\n return;\n }\n\n const matrixCont = this.mainViewCont.nativeElement;\n const viewWidth = matrixCont.clientWidth;\n\n this.viewWidth = viewWidth ? viewWidth.toString() : '100%';\n\n // if the matrix located on the bottom / there is nothing under the matrix we dont need to check the height\n if (parseInt(viewWidth, 10) < this.mmToPx(this.sumOfMinColWidth)) {\n this.coverChildTable = true;\n } else {\n this.coverChildTable = false;\n }\n\n this.changeDetectorRef.markForCheck();\n }\n\n showMatrixDialog(): void {\n const config = this.dialogService.getDialogConfig(\n {\n disableClose: false,\n },\n 'large'\n );\n\n const dialogRef = this.dialogService.openDialog(\n this.matrixDialogTemplate,\n {},\n config\n );\n\n dialogRef.afterOpened().subscribe(() => {\n this.fillData(true);\n });\n\n dialogRef.afterClosed().subscribe((value) => {\n this.fillData(false);\n });\n }\n\n ngOnInit(): void {\n // let field = this.field as PepInternalPageField;\n\n this.internalPageService.initDetails(\n this.field.objectId,\n this.field.parentId,\n this.field.searchCode,\n (resViewTypes: any) => {\n // my code DI-7134\n resViewTypes.Rows = resViewTypes.Rows.filter(\n (item) => item.Key !== 'OrderCenterView1'\n );\n\n if (resViewTypes.Rows && resViewTypes.Rows.length > 0) {\n if (!resViewTypes.Default) {\n resViewTypes.Default = resViewTypes.Rows[0].Key;\n }\n this.childViewTypes = resViewTypes.Rows;\n this.currentViewType = resViewTypes.Rows[0];\n\n // for (var i = 0; i < resViewTypes.Rows.length; i++) {\n for (const viewTypeRow of resViewTypes.Rows) {\n if (viewTypeRow.Value === resViewTypes.Default) {\n this.currentViewType = viewTypeRow;\n }\n }\n\n this.loadLastAdditionalApiName();\n this.changeChildrenViewType(this.currentViewType.Key);\n }\n }\n );\n\n this.resize = fromEvent(window, 'resize')\n .pipe(debounceTime(10))\n .subscribe((event) => {\n this.setViewCover(this.rows);\n });\n }\n\n loadLastAdditionalApiName(): void {\n const daa = sessionStorage.getItem(\n PepInternalPageComponent.CURRENT_ADDITIONAL_API_NAME\n );\n if (daa && daa.length > 0) {\n const additionalApiName = JSON.parse(daa);\n this.currentAdditionalApiName = additionalApiName;\n this.internalPageService.additionalApiName = additionalApiName?.Key;\n }\n }\n\n ngOnDestroy(): void {\n if (this.resize) {\n this.resize.unsubscribe();\n }\n }\n\n changeAdditionalApiName(additionalApiName): void {\n this.internalPageService.changeAdditionalApiName(\n additionalApiName ? additionalApiName.Key : '',\n (res: any) => {\n // for (let index = 0; index < res.Rows.length; index++) {\n for (const row of res.Rows) {\n this.updateChanges(row);\n }\n\n this.changeDetectorRef.markForCheck();\n }\n );\n\n sessionStorage.setItem(\n PepInternalPageComponent.CURRENT_ADDITIONAL_API_NAME,\n JSON.stringify(additionalApiName)\n );\n\n setTimeout(() => {\n this.currentAdditionalApiName = additionalApiName;\n }, 0);\n }\n\n setTotalsRow(): void {\n this.totalsRow = [];\n\n if (this.isMatrixView() || this.isFlatMatrixView()) {\n let totalCol = 0;\n\n const items = this.customList.items;\n if (items) {\n for (let col = 0; col < items[0].Fields.length; col++) {\n const field = items[0].Fields[col];\n if (\n field.FieldType === FIELD_TYPE.NumberIntegerForMatrix ||\n field.FieldType ===\n FIELD_TYPE.NumberIntegerQuantitySelector ||\n field.FieldType === FIELD_TYPE.NumberRealForMatrix ||\n field.FieldType ===\n FIELD_TYPE.NumberRealQuantitySelector ||\n field.FieldType === FIELD_TYPE.CalculatedInt ||\n field.FieldType === FIELD_TYPE.NumberInteger ||\n field.FieldType === FIELD_TYPE.CalculatedReal ||\n field.FieldType === FIELD_TYPE.NumberReal\n ) {\n totalCol = 0;\n for (const listItem of items) {\n if (\n listItem.Fields[col] &&\n listItem.Fields[col].Value\n ) {\n const num = parseFloat(\n listItem.Fields[col].Value\n );\n totalCol += isNaN(num) ? 0 : num;\n }\n }\n this.totalsRow.push(totalCol);\n } else {\n this.totalsRow.push('');\n }\n }\n }\n }\n }\n\n updateChanges(elementToUpdate: any): void {\n this.customList.updateItem(elementToUpdate);\n\n // Update memory data\n for (let index = 0; index < this.childData.Rows.length; index++) {\n if (this.childData.Rows[index].UID === elementToUpdate.UID) {\n this.childData.Rows[index] = elementToUpdate;\n }\n }\n }\n\n setValueCallback(id: any, res: any): void {\n if (res.Rows.length === 1) {\n const field = res.Rows[0].Fields.find((f) => f.ApiName === 'ObjectMenu');\n if (field) {\n // HACK : Until \"Enabled\" returns from the server, we set PepMenu to be\n // Disabled in cart on regular items and not campign items.\n field.Enabled = true;\n }\n\n this.updateChanges(res.Rows[0]);\n }\n\n this.setTotalsRow();\n this.checkForChanges = new Date();\n\n // DI-15985\n this.internalFormFieldChange.emit(res);\n\n this.changeDetectorRef.markForCheck();\n }\n\n onCustomizeObjectChanged(\n customizeObjectChangedData: IPepFormFieldValueChangeEvent\n ): void {\n this.internalPageService.childValueChanged(\n customizeObjectChangedData.id,\n customizeObjectChangedData.key,\n customizeObjectChangedData.value,\n (res: any) => {\n this.setValueCallback(customizeObjectChangedData.id, res);\n }\n );\n }\n\n onCustomizeFieldClick(fieldClickEvent: IPepFormFieldClickEvent): void {\n let handledEvent = false;\n\n // For the new custom form, the plus and minus events transform in the IPepFormFieldValueChangeEvent\n if (fieldClickEvent.controlType === 'qs') {\n if (fieldClickEvent.value === PepQuantitySelectorComponent.PLUS) {\n handledEvent = true;\n this.internalPageService.childPlusClick(\n fieldClickEvent.id,\n fieldClickEvent.key,\n (res: any) => {\n this.setValueCallback(fieldClickEvent.id, res);\n }\n );\n } else if (\n fieldClickEvent.value === PepQuantitySelectorComponent.MINUS\n ) {\n handledEvent = true;\n this.internalPageService.childMinusClick(\n fieldClickEvent.id,\n fieldClickEvent.key,\n (res: any) => {\n this.setValueCallback(fieldClickEvent.id, res);\n }\n );\n }\n }\n\n if (!handledEvent) {\n this.internalFormFieldClick.emit(fieldClickEvent);\n }\n }\n}\n","<ng-template #matrixHeaderTemplate>\n <div class=\"matrix-title-container pep-border-bottom align-{{\n field.xAlignment\n }}\" title=\"{{ field.label }}\">\n <span class=\"block-with-text body-md\">{{ field.label }}</span>\n\n <div class=\"buttons-container pep-spacing-element-negative pull-right flip\">\n <ng-container *ngIf=\"\n currentViewType?.Key == 'OrderCenterMatrix' &&\n additionalApiNames &&\n additionalApiNames.length > 0\n \">\n <button class=\"pep-spacing-element pep-button icon-button sm weak\" mat-button [matMenuTriggerFor]=\"menu\"\n menu-blur>\n <span class=\"pull-left flip\" *ngIf=\"currentAdditionalApiName\"> {{\n currentAdditionalApiName?.Value }} </span>\n\n <mat-icon [ngClass]=\"{'pull-left flip': currentAdditionalApiName}\">\n <pep-icon name=\"system_info\"></pep-icon>\n </mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\" xPosition=\"before\">\n <button mat-menu-item [ngClass]=\"{\n selected: currentAdditionalApiName === null\n }\" (click)=\"changeAdditionalApiName(null)\">\n <span>{{ \"LIST.NONE\" | translate }}</span>\n </button>\n <button mat-menu-item [ngClass]=\"{\n selected:\n currentAdditionalApiName?.Key ==\n additionalApiName?.Key\n }\" *ngFor=\"let additionalApiName of additionalApiNames\"\n (click)=\"changeAdditionalApiName(additionalApiName)\">\n <span>{{ additionalApiName.Value }}</span>\n </button>\n </mat-menu>\n </ng-container>\n <ng-container *ngIf=\"childViewTypes && childViewTypes.length > 1\">\n <button class=\"pep-spacing-element pep-button icon-button sm weak\" mat-button\n [matMenuTriggerFor]=\"viewsMenu\" menu-blur>\n <mat-icon>\n <pep-icon name=\"view_card_md\"></pep-icon>\n </mat-icon>\n </button>\n\n <mat-menu #viewsMenu=\"matMenu\" xPosition=\"before\">\n <button mat-menu-item [ngClass]=\"{\n selected: currentViewType?.Key == viewType?.Key\n }\" *ngFor=\"let viewType of childViewTypes\" (click)=\"changeChildrenViewType(viewType?.Key)\">\n <mat-icon [ngSwitch]=\"viewType?.Key\">\n <pep-icon *ngSwitchCase=\"'OrderCenterMatrix'\" name=\"view_matrix\"></pep-icon>\n <pep-icon *ngSwitchCase=\"'OrderCenterFlatMatrixGrid'\" name=\"view_table\"></pep-icon>\n <pep-icon *ngSwitchCase=\"'OrderCenterFlatMatrixLine'\" name=\"view_line\"></pep-icon>\n </mat-icon>\n <span>{{ viewType?.Value }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n </div>\n\n</ng-template>\n\n<ng-template #matrixTemplate>\n <div #matrixContainer class=\"matrix-container\">\n <pep-internal-list (valueChange)=\"onCustomizeObjectChanged($event)\" [parentScroll]=\"matrixContainer\"\n (fieldClick)=\"onCustomizeFieldClick($event)\" [totalsRow]=\"totalsRow\"></pep-internal-list>\n </div>\n</ng-template>\n\n<div #mainViewCont id=\"mainViewCont\" [ngStyle]=\"{ 'max-width': viewWidth, 'max-height': viewHeight }\">\n <div #my1mm id=\"my1_mm\" style=\"height:1mm;width:1mm;visibility: hidden;\"></div>\n <ng-container *ngIf=\"coverChildTable && uiControl != null\">\n <div class=\"table-cover\"></div>\n <button (click)=\"showMatrixDialog()\" class=\"pep-button strong sm table-cover-button\"\n [ngClass]=\"{ 'lineview-btn': currentViewType?.Key == 'OrderCenterFlatMatrixLine'}\">\n {{ \"INTERNAL_PAGE.CLICK_TO_ORDER\" | translate }}\n </button>\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"matrixHeaderTemplate\"></ng-container>\n <ng-container #orgCont></ng-container>\n</div>\n\n<ng-template #matrixDialogTemplate>\n\n <div mat-dialog-title>\n <ng-container *ngTemplateOutlet=\"matrixHeaderTemplate\"></ng-container>\n </div>\n\n <div mat-dialog-content>\n <ng-container #dialogCont></ng-container>\n </div>\n</ng-template>\n\n<!-- <div id=\"childGridModal\" bsModal (onShown)=\"onShown()\" (onHidden)=\"onHidden()\" #childModal=\"bs-modal\" class=\"modal\"\n tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"gridModalLabel\" aria-hidden=\"true\">\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-body matrix-dialog-body\">\n <ng-container #modalCont></ng-container>\n </div>\n </div>\n </div>\n</div> -->","import { Injectable } from '@angular/core';\nimport { PepHttpService } from '@pepperi-addons/ngx-lib';\n\n@Injectable()\nexport class PepInternalCaruselService {\n private eventUrl: string;\n\n constructor(private httpService: PepHttpService) {\n this.eventUrl = 'Service1.svc/v1/EmitEvent';\n }\n\n emitEvent(uiObjectKey: string, fieldKey: string, fieldValue: string, eventName: string, callbackFunc: any) {\n const body = {\n 'EventKey': eventName,\n 'EventData': JSON.stringify({\n UIObjectKey: uiObjectKey,\n FieldID: fieldKey,\n Value: fieldValue\n })\n };\n\n this.httpService.postWapiApiCall(`${this.eventUrl}`, body).subscribe(\n (res) => {\n console.log(res);\n callbackFunc(res);\n }\n // (error) => {},\n // () => {}\n );\n }\n}\n","import {\n Component,\n OnInit,\n OnDestroy,\n Input,\n Output,\n EventEmitter,\n ElementRef,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ViewChild,\n AfterViewInit,\n} from '@angular/core';\nimport { PepInternalCaruselService } from './internal-carusel.service';\n\nimport {\n PepLayoutType,\n UIControl,\n PepCustomizationService,\n ObjectsDataRow,\n PepInternalCaruselField,\n PepLayoutService,\n PepScreenSizeType,\n} from '@pepperi-addons/ngx-lib';\nimport {\n IPepFormFieldClickEvent,\n IPepFormFieldValueChangeEvent,\n} from './form.model';\nimport { PepQuantitySelectorComponent } from '@pepperi-addons/ngx-lib/quantity-selector';\nimport { PepCarouselComponent } from '@pepperi-addons/ngx-lib/carousel';\n\n@Component({\n selector: 'pep-internal-carusel',\n templateUrl: './internal-carusel.component.html',\n styleUrls: ['./internal-carusel.component.scss'],\n providers: [PepInternalCaruselService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepInternalCaruselComponent implements OnInit, AfterViewInit {\n @ViewChild('carousel', { read: PepCarouselComponent })\n carousel: PepCarouselComponent;\n\n private _field: any;\n @Input()\n set field(value: any) {\n this._field = value;\n const caruselField = this._field as PepInternalCaruselField;\n\n if (caruselField && caruselField.pageInfo) {\n this.layout = caruselField.pageInfo.UIControl;\n this.items = caruselField.pageInfo.Rows;\n }\n }\n get field(): any {\n return this._field;\n }\n\n @Input() layoutType: PepLayoutType = 'form';\n\n @Output()\n internalFormFieldChange: EventEmitter<any> = new EventEmitter<any>();\n @Output()\n internalFormFieldClick: EventEmitter<IPepFormFieldClickEvent> = new EventEmitter<IPepFormFieldClickEvent>();\n\n private _items: Array<any> = null;\n set items(value: Array<any>) {\n this._items = value;\n // this.moveTo(0);\n }\n get items() {\n return this._items;\n }\n\n layout: any = null;\n duration = 1000;\n\n private itemsToMove = 3;\n\n prevDisabled = false;\n nextDisabled = false;\n screenSize: PepScreenSizeType;\n PepScreenSizeType = PepScreenSizeType;\n\n constructor(\n private layoutService: PepLayoutService,\n private internalCaruselService: PepInternalCaruselService\n ) { }\n\n ngOnInit(): void {\n //\n }\n\n ngAfterViewInit(): void {\n this.layoutService.onResize$.subscribe((size: PepScreenSizeType) => {\n this.screenSize = size;\n });\n }\n\n onCustomizeObjectChanged(\n customizeObjectChangedData: IPepFormFieldValueChangeEvent\n ): void {\n this.internalCaruselService.emitEvent(customizeObjectChangedData.uiObjectKey, customizeObjectChangedData.key, customizeObjectChangedData.value, 'SetFieldValue', () => {\n this.internalFormFieldChange.emit(customizeObjectChangedData);\n });\n }\n\n onCustomizeFieldClick(fieldClickEvent: IPepFormFieldClickEvent): void {\n let handledEvent = false;\n\n // For the new custom form, the plus and minus events transform in the IPepFormFieldValueChangeEvent\n if (fieldClickEvent.controlType === 'qs') {\n if (fieldClickEvent.value === PepQuantitySelectorComponent.PLUS) {\n handledEvent = true;\n this.internalCaruselService.emitEvent(fieldClickEvent.uiObjectKey, fieldClickEvent.key, '', 'IncrementFieldValue', () => {\n this.internalFormFieldChange.emit({});\n });\n\n } else if (fieldClickEvent.value === PepQuantitySelectorComponent.MINUS) {\n handledEvent = true;\n this.internalCaruselService.emitEvent(fieldClickEvent.uiObjectKey, fieldClickEvent.key, '', 'DecrementFieldValue', () => {\n this.internalFormFieldChange.emit({});\n });\n }\n }\n\n if (!handledEvent) {\n this.internalFormFieldClick.emit(fieldClickEvent);\n }\n }\n\n moveLeft() {\n const indexToMove = Math.max(\n this.carousel.currIndex - this.itemsToMove,\n 0\n );\n this.moveTo(indexToMove);\n }\n\n moveRight() {\n const indexToMove = Math.min(\n this.carousel.currIndex + this.itemsToMove,\n this.items.length\n );\n this.moveTo(indexToMove);\n }\n\n moveTo(index: number) {\n if (this.carousel) {\n this.carousel.moveTo(index);\n }\n }\n\n onReachesLeftBound(event: boolean) {\n this.prevDisabled = event;\n }\n\n onReachesRightBound(event: boolean) {\n this.nextDisabled = event;\n }\n}","<div class=\"carousel-container\">\n <ng-container *ngIf=\"items?.length > 0; then carouselBlock; else emptyBlock\"></ng-container>\n <ng-template #emptyBlock>\n <!-- No items -->\n </ng-template>\n <ng-template #carouselBlock>\n <pep-button *ngIf=\"screenSize <= PepScreenSizeType.SM\" [iconName]=\"'arrow_left_alt'\" [styleType]=\"'regular'\"\n [disabled]=\"prevDisabled\" (click)=\"moveLeft()\" class=\"carousel-arrow start-arrow\">\n </pep-button>\n <pep-carousel #carousel [xWheelEnabled]=\"false\" [snapDuration]=\"duration\"\n (reachesLeftBound)=\"onReachesLeftBound($event)\" (reachesRightBound)=\"onReachesRightBound($event)\">\n <ng-container *ngFor=\"let item of items\">\n <pep-internal-form pepCarouselItem [layout]=\"layout\" [data]=\"item\" [layoutType]=\"'card'\" class=\"card-view \"\n (valueChange)=\"onCustomizeObjectChanged($event)\" (fieldClick)=\"onCustomizeFieldClick($event)\">\n </pep-internal-form>\n </ng-container>\n </pep-carousel>\n <pep-button *ngIf=\"screenSize <= PepScreenSizeType.SM\" [iconName]=\"'arrow_right_alt'\" [styleType]=\"'regular'\"\n [disabled]=\"nextDisabled\" (click)=\"moveRight()\" class=\"carousel-arrow end-arrow\">\n </pep-button>\n </ng-template>\n</div>","import {\n Component, \n OnChanges,\n Input,\n Output,\n EventEmitter, \n ViewEncapsulation,\n ChangeDetectionStrategy, \n OnDestroy \n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport {\n PepFieldBase,\n PepLayoutType,\n IPepFieldValueChangeEvent,\n IPepFieldClickEvent,\n} from '@pepperi-addons/ngx-lib';\nimport { IPepFormFieldClickEvent, IPepFormFieldValueChangeEvent } from './form.model';\n\n\n@Component({\n selector: 'pep-field-generator',\n templateUrl: './field-generator.component.html',\n styleUrls: ['./field-generator.component.scss'],\n encapsulation: ViewEncapsulation.Emulated,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepFieldGeneratorComponent implements OnChanges, OnDestroy { \n private _field: any;\n @Input()\n set field(value: any) {\n this._field = value; \n }\n get field(): any {\n return this._field;\n }\n\n @Input() isActive = false;\n @Input() uid: any = null;\n @Input() form: FormGroup;\n @Input() layoutType: PepLayoutType = 'form';\n @Input() showTitle = true;\n\n @Input() checkForChanges: any = null;\n @Output()\n valueChange: EventEmitter<IPepFieldValueChangeEvent> = new EventEmitter<IPepFieldValueChangeEvent>();\n // @Output()\n // formValidationChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output()\n elementClick: EventEmitter<IPepFieldClickEvent> = new EventEmitter<IPepFieldClickEvent>();\n\n @Output() internalFormFieldChange: EventEmitter<any> = new EventEmitter<any>();\n @Output() internalFormFieldClick: EventEmitter<any> = new EventEmitter<any>();\n\n @Output()\n formValueChange: EventEmitter<IPepFormFieldValueChangeEvent> = new EventEmitter<IPepFormFieldValueChangeEvent>();\n @Output()\n formFieldClick: EventEmitter<IPepFormFieldClickEvent> = new EventEmitter<IPepFormFieldClickEvent>();\n\n get isValid(): boolean {\n if (this.field.readonly || this.field.disabled) {\n return true;\n } else {\n const formControl = this.form && this.form.get(this.field.key);\n\n if (formControl) {\n return formControl.valid;\n } else {\n return false;\n }\n }\n }\n\n get isTouched(): boolean {\n const formControl = this.form && this.form.get(this.field.key);\n return formControl ? formControl.touched : false;\n }\n\n get isDirty(): boolean {\n const formControl = this.form && this.form.get(this.field.key);\n return formControl ? formControl.dirty : false;\n }\n\n onFileChanged(fileData: any, field: PepFieldBase) {\n const value = fileData ? JSON.stringify(fileData) : '';\n const fieldValueChange = {\n key: field.key,\n value: value,\n controlType: field.controlType,\n };\n this.valueChange.emit(fieldValueChange);\n }\n\n onAddressValueChanged(\n valueChange: IPepFieldValueChangeEvent,\n field: PepFieldBase\n ) {\n const fieldValueChange = {\n key: valueChange.key,\n value: valueChange.value,\n controlType: field.controlType,\n };\n this.valueChange.emit(fieldValueChange);\n }\n\n onValueChanged(value: any, field: PepFieldBase): void {\n const fieldValueChange = {\n key: field.key,\n value: value.toString(),\n controlType: field.controlType,\n };\n this.valueChange.emit(fieldValueChange);\n }\n\n onInternalFormFieldChanged(internalFormFieldChange: any): void {\n this.internalFormFieldChange.emit(internalFormFieldChange);\n }\n\n // onFormValidationChanged(formValidationChange: any): void {\n // this.formValidationChange.emit(formValidationChange);\n // }\n\n onClick(fieldClicked: any): void {\n this.elementClick.emit(fieldClicked);\n }\n\n onInternalFormFieldClick(internalFormFieldClick: any): void {\n this.internalFormFieldClick.emit(internalFormFieldClick);\n }\n\n onFormValueChanged(event: IPepFormFieldValueChangeEvent): void {\n this.formValueChange.emit(event);\n }\n\n onFormFieldClick(event: IPepFormFieldClickEvent): void {\n this.formFieldClick.emit(event);\n }\n\n ngOnChanges(changes: any): void {\n // debugger;\n // For testing.\n // this.field.disabled = this.field.readonly = false;\n }\n\n ngOnDestroy(): void {\n //\n }\n}\n","<ng-container [ngSwitch]=\"field.controlType\" [formGroup]=\"form\">\n\n <pep-address *ngSwitchCase=\"'address'\" [form]=\"form\" [key]=\"field.key\" [formattedValue]=\"field.formattedValue\"\n [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [groupFields]=\"field.groupFields\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" (addressValueChange)=\"onAddressValueChanged($event, field)\">\n </pep-address>\n\n <pep-attachment *ngSwitchCase=\"'attachment'\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.value\"\n [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [isActive]=\"isActive\" [showTitle]=\"showTitle\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" (elementClick)=\"onClick($event)\"\n (fileChange)=\"onFileChanged($event, field)\">\n </pep-attachment>\n\n <pep-checkbox *ngSwitchCase=\"'checkbox'\" [form]=\"form\" [key]=\"field.key\"\n [value]=\"(field.value?.toString() | lowercase) == 'true' || field.value == '1' ? true : false\" [label]=\"field.label\"\n [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [additionalValue]=\"field.additionalValue\"\n [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\"\n (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\">\n </pep-checkbox>\n\n <pep-date *ngSwitchCase=\"'date'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [label]=\"field.label\" [type]=\"field.type\" [mandatory]=\"field.mandatory\"\n [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [textColor]=\"field.textColor\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [minValue]=\"field.minValue\"\n [maxValue]=\"field.maxValue\" [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\"\n (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\">\n </pep-date>\n\n <pep-images-filmstrip *ngSwitchCase=\"'images'\" [uid]=\"uid\" [form]=\"form\" [key]=\"field.key\" [label]=\"field.label\"\n [showTitle]=\"showTitle\" [rowSpan]=\"field.rowSpan\" [value]=\"field.value\" [layoutType]=\"layoutType\">\n </pep-images-filmstrip>\n\n <pep-image *ngSwitchCase=\"'image'\" [uid]=\"uid\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.formattedValue\"\n [srcLarge]=\"field.value\" [options]=\"field.options\" [label]=\"field.label\" [mandatory]=\"field.mandatory\"\n [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\"\n [rowSpan]=\"field.rowSpan\" [indicatorsField]=\"field.indicatorsField\" [menuField]=\"field.menuField\"\n [hasCampaignField]=\"field.hasCampaignField\" [sizeLimitMB]=\"field.sizeLimitMB\" [isActive]=\"isActive\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" (elementClick)=\"onClick($event)\"\n (fileChange)=\"onFileChanged($event, field)\">\n </pep-image>\n\n <pep-quantity-selector *ngSwitchCase=\"'qs'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [label]=\"field.label\" [type]=\"field.type\" [mandatory]=\"field.mandatory\"\n [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [textColor]=\"field.textColor\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [allowDecimal]=\"field.allowDecimal\"\n [additionalValue]=\"field.additionalValue\" [notificationInfo]=\"field.notificationInfo\" [isActive]=\"isActive\"\n [layoutType]=\"layoutType\" [showTitle]=\"showTitle\" [visible]=\"field.visible\"\n [minFractionDigits]=\"field.digitsNumberAfterDecimalPoint\" (valueChange)=\"onValueChanged($event, field)\"\n (elementClick)=\"onClick($event)\">\n </pep-quantity-selector>\n <!-- (formValidationChange)=\"onFormValidationChanged($event)\" -->\n\n <pep-rich-html-textarea *ngSwitchCase=\"'richhtmltextarea'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [maxFieldCharacters]=\"field.maxFieldCharacters\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\" [renderTitle]=\"field.renderTitle\"\n [renderEnlargeButton]=\"field.renderEnlargeButton\" (valueChange)=\"onValueChanged($event, field)\"\n [isActive]=\"isActive\">\n </pep-rich-html-textarea>\n\n <pep-select *ngSwitchCase=\"'select'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\" [label]=\"field.label\"\n [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [options]=\"field.options\" [showTitle]=\"showTitle\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" [emptyOption]=\"field.emptyOption\"\n (valueChange)=\"onValueChanged($event, field)\" \n [isActive]=\"isActive\">\n </pep-select>\n <!-- (formValidationChange)=\"onFormValidationChanged($event)\" -->\n\n <pep-separator *ngSwitchCase=\"'separator'\" [form]=\"form\" [key]=\"field.key\" [label]=\"field.label\"\n [xAlignment]=\"field.xAlignment\" [layoutType]=\"layoutType\" [visible]=\"field.visible\">\n </pep-separator>\n\n <pep-signature *ngSwitchCase=\"'signature'\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.value\" [label]=\"field.label\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [isActive]=\"isActive\" [layoutType]=\"layoutType\"\n [visible]=\"field.visible\" (fileChange)=\"onFileChanged($event, field)\">\n </pep-signature>\n\n <pep-textarea *ngSwitchCase=\"'textarea'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\" [label]=\"field.label\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [maxFieldCharacters]=\"field.maxFieldCharacters\" [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\"\n [rowSpan]=\"field.rowSpan\" [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\"\n (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\">\n </pep-textarea>\n\n <pep-textbox *ngSwitchCase=\"'textbox'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [accessory]=\"field.accessory\" [label]=\"field.label\"\n [placeholder]=\"field.placeholder\" [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\"\n [readonly]=\"field.readonly\" [maxFieldCharacters]=\"field.maxFieldCharacters\" [textColor]=\"field.textColor\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [regex]=\"field.regex\" [regexError]=\"field.regexError\"\n [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [minFractionDigits]=\"field.digitsNumberAfterDecimalPoint\"\n (valueChange)=\"onValueChanged($event, field)\" \n [isActive]=\"isActive\" [visible]=\"field.visible\">\n </pep-textbox>\n <!-- (formValidationChange)=\"onFormValidationChanged($event)\" -->\n\n <pep-link *ngSwitchCase=\"'link'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\" [displayValue]=\"field.formattedValue\"\n [label]=\"field.label\" [placeholder]=\"field.placeholder\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [maxFieldCharacters]=\"field.maxFieldCharacters\" [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\"\n [rowSpan]=\"field.rowSpan\" [showTitle]=\"showTitle\" [layoutType]=\"layoutType\"\n (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\" [visible]=\"field.visible\"\n (elementClick)=\"onClick($event)\">\n </pep-link>\n <!-- (formValidationChange)=\"onFormValidationChanged($event)\" -->\n\n <pep-indicators *ngSwitchCase=\"'indicators'\" [key]=\"field.key\" [value]=\"field.value\" [layoutType]=\"layoutType\">\n </pep-indicators>\n <pep-internal-button *ngSwitchCase=\"'button'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [formattedValue]=\"field.formattedValue\" [label]=\"field.label\"\n [referenceObjectInternalType]=\"field.referenceObjectInternalType\" [type]=\"field.type\"\n [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" (elementClick)=\"onClick($event)\"\n (valueChange)=\"onValueChanged($event, field)\">\n </pep-internal-button>\n <pep-internal-menu *ngSwitchCase=\"'menu'\" [key]=\"field.key\" [label]=\"field.label\" [disabled]=\"field.disabled\"\n [xAlignment]=\"field.xAlignment\" [options]=\"field.options\" [layoutType]=\"layoutType\"\n (elementClick)=\"onClick($event)\">\n </pep-internal-menu>\n <pep-internal-page *ngSwitchCase=\"'internalPage'\" [field]=\"field\" [layoutType]=\"layoutType\"\n (internalFormFieldClick)=\"onInternalFormFieldClick($event)\"\n (internalFormFieldChange)=\"onInternalFormFieldChanged($event)\">\n </pep-internal-page>\n\n <pep-internal-carusel *ngSwitchCase=\"'internalCarusel'\" [field]=\"field\"\n (internalFormFieldClick)=\"onInternalFormFieldClick($event)\"\n (internalFormFieldChange)=\"onInternalFormFieldChanged($event)\">\n </pep-internal-carusel>\n\n <ng-container *ngSwitchCase=\"'placeholder'\">\n </ng-container>\n</ng-container>","import {\n Component,\n ChangeDetectionStrategy,\n OnInit,\n OnDestroy,\n Input,\n KeyValueDiffers,\n Output,\n EventEmitter,\n OnChanges,\n DoCheck, \n} from '@angular/core';\nimport {\n FormGroup,\n FormBuilder,\n Validators,\n AbstractControl,\n} from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n PepDialogService,\n PepDialogData,\n} from '@pepperi-addons/ngx-lib/dialog';\nimport {\n IPepFieldValueChangeEvent,\n IPepFieldClickEvent,\n PepLayoutType,\n FIELD_TYPE,\n PepCustomizationService,\n PepLayoutService,\n UIControl,\n UIControlField,\n ObjectsDataRow,\n ObjectsDataRowCell,\n PepFieldBase,\n PepTextboxField,\n PepSelectField,\n PepInternalMenuField,\n PepQuantitySelectorField,\n PepAddressField,\n PepIndicatorsField,\n PepInternalPageField,\n PepInternalCaruselField,\n PepInternalButtonField,\n PepAttachmentField,\n PepSignatureField,\n PepImageField,\n PepImagesField,\n PepLinkField,\n PepTextareaField,\n PepRichHtmlTextareaField,\n PepDateField,\n PepCheckboxField,\n PepSeparatorField,\n PepPlaceholderField,\n PepHorizontalAlignment,\n PepVerticalAlignment,\n X_ALIGNMENT_TYPE,\n Y_ALIGNMENT_TYPE,\n DEFAULT_VERTICAL_ALIGNMENT,\n DEFAULT_HORIZONTAL_ALIGNMENT,\n KeyValuePair,\n IPepOption,\n} from '@pepperi-addons/ngx-lib';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { IPepFormFieldValueChangeEvent, IPepFormFieldClickEvent } from './form.model';\n\n@Component({\n selector: 'pep-form',\n templateUrl: './form.component.html',\n styleUrls: ['./form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepFormComponent implements OnInit, DoCheck, OnChanges, OnDestroy {\n @Input() isInternal = true;\n @Input() isReport = false;\n @Input() layout: UIControl;\n @Input() lockEvents = false;\n @Input() canEditObject = true;\n\n private _data: ObjectsDataRow = null;\n @Input()\n set data(value: ObjectsDataRow) {\n const shouldReload = this.shouldReloadForm || !this._data;\n this._data = value;\n\n if (shouldReload) {\n this._shouldReloadForm = false;\n this.initForm();\n } else {\n this.updateForm();\n }\n }\n get data(): ObjectsDataRow {\n return this._data;\n }\n\n @Input()\n set lockFields(value: boolean) {\n this.isLocked = value;\n }\n\n @Input() isActive = false; \n @Input() layoutType: PepLayoutType = 'card';\n // @Input() listType = '';\n @Input() objectId = '0';\n @Input() parentId = '0';\n @Input() searchCode = '0';\n @Input() showTitle = true;\n @Input() firstFieldAsLink = false;\n @Input() checkForChanges: any = null;\n\n @Output()\n valueChange: EventEmitter<IPepFormFieldValueChangeEvent> = new EventEmitter<IPepFormFieldValueChangeEvent>();\n @Output()\n formValidationChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @Output()\n fieldClick: EventEmitter<IPepFormFieldClickEvent> = new EventEmitter<IPepFormFieldClickEvent>();\n\n @Output() internalFormFieldClick: EventEmitter<any> = new EventEmitter<any>();\n @Output() internalFormFieldChange: EventEmitter<any> = new EventEmitter<any>();\n\n isLocked = false;\n formGutterSize;\n cardGutterSize;\n rowHeight;\n // private matrixIsLast = false;\n // lastUpdatedFieldApiName: string = '';\n form: FormGroup;\n differ: any;\n\n // payLoad = '';\n private rows: Array<PepFieldBase[]> = [];\n fields: PepFieldBase[] = [];\n\n private _fieldsSubject: BehaviorSubject<PepFieldBase[]> = new BehaviorSubject<PepFieldBase[]>([]);\n get fields$(): Observable<PepFieldBase[]> {\n return this._fieldsSubject.asObservable();\n }\n\n columns = 1;\n\n private hasMenuFloatingOnOtherField = false;\n private menuField: any;\n private menuDataField: any;\n private hasCampaignField: any;\n private hasCampaignDataField: any;\n private indicatorsField: any;\n private indicatorsDataField: any = null;\n\n private _shouldReloadForm = false;\n get shouldReloadForm(): boolean {\n return this._shouldReloadForm;\n }\n\n // eventServiceSub: Subscription;\n // public jsonLib = JSON;\n\n constructor(\n private dialogService: PepDialogService,\n private customizationService: PepCustomizationService,\n private layoutService: PepLayoutService,\n private fb: FormBuilder,\n differs: KeyValueDiffers,\n private translate: TranslateService\n ) {\n // store the initial value to compare with\n this.differ = differs.find({}).create();\n }\n\n convertXAlignToHorizontalAlign(\n xAlign: X_ALIGNMENT_TYPE\n ): PepHorizontalAlignment {\n let res = DEFAULT_HORIZONTAL_ALIGNMENT;\n\n if (\n xAlign === X_ALIGNMENT_TYPE.None ||\n xAlign === X_ALIGNMENT_TYPE.Left\n ) {\n res = 'left';\n } else if (xAlign === X_ALIGNMENT_TYPE.Right) {\n res = 'right';\n } else {\n res = 'center';\n }\n\n return res;\n }\n\n convertYAlignToVerticalAlign(\n yAlign: Y_ALIGNMENT_TYPE\n ): PepVerticalAlignment {\n let res = DEFAULT_VERTICAL_ALIGNMENT;\n\n if (\n yAlign === Y_ALIGNMENT_TYPE.None ||\n yAlign === Y_ALIGNMENT_TYPE.Top\n ) {\n res = 'top';\n } else if (yAlign === Y_ALIGNMENT_TYPE.Bottom) {\n res = 'bottom';\n } else {\n res = 'middle';\n }\n\n return res;\n }\n\n convertOptionalValues(\n optionalValues: Array<KeyValuePair<string>>\n ): IPepOption[] {\n if (optionalValues && optionalValues.length > 0) {\n return optionalValues.map((ov) => {\n return { key: ov.Key, value: ov.Value };\n });\n } else {\n return [];\n }\n }\n\n convertAddressFields(\n controlField: UIControlField,\n addressFields: Array<ObjectsDataRowCell>,\n canEditObject: boolean\n ): PepFieldBase[] {\n const fields: PepFieldBase[] = [];\n\n addressFields.forEach((field) => {\n let customField: PepFieldBase;\n const placeholder = field.ApiName;\n\n if (field.ApiName.toLowerCase().indexOf('street') >= 0) {\n customField = new PepTextboxField({\n key: field.ApiName,\n label: field.ApiName,\n type: 'text',\n placeholder,\n readonly: !canEditObject,\n disabled: !field.Enabled || !canEditObject,\n hidden: false,\n mandatory: false,\n value: field.Value,\n formattedValue: field.FormattedValue,\n row: 0,\n rowSpan: 1,\n col: 0,\n colSpan: 2,\n xAlignment: this.convertXAlignToHorizontalAlign(\n controlField.Layout.XAlignment\n ),\n yAlignment: this.convertYAlignToVerticalAlign(\n controlField.Layout.YAlignment\n ),\n order: 0,\n });\n } else if (field.ApiName.toLowerCase().indexOf('city') >= 0) {\n customField = new PepTextboxField({\n key: field.ApiName,\n label: field.ApiName,\n type: 'text',\n placeholder,\n readonly: !canEditObject,\n disabled: !field.Enabled || !canEditObject,\n hidden: false,\n mandatory: false,\n value: field.Value,\n formattedValue: field.FormattedValue,\n row: 0,\n rowSpan: 1,\n col: 2,\n colSpan: 1,\n xAlignment: this.convertXAlignToHorizontalAlign(\n controlField.Layout.XAlignment\n ),\n yAlignment: this.convertYAlignToVerticalAlign(\n controlField.Layout.YAlignment\n ),\n order: 1,\n });\n } else if (field.ApiName.toLowerCase().indexOf('state') >= 0) {\n customField = new PepSelectField({\n key: field.ApiName,\n label: field.ApiName,\n placeholder,\n options: this.convertOptionalValues(field.OptionalValues),\n readonly: !canEditObject,\n disabled: !field.Enabled || !canEditObject,\n hidden: false,\n mandatory: false,\n value: field.Value,\n formattedValue: field.FormattedValue,\n row: 1,\n rowSpan: 1,\n col: 0,\n colSpan: 1,\n xAlignment: this.convertXAlignToHorizontalAlign(\n controlField.Layout.XAlignment\n ),\n yAlignment: this.convertYAlignToVerticalAlign(\n controlField.Layout.YAlignment\n ),\n order: 2,\n });\n } else if (field.ApiName.toLowerCase().indexOf('zipcode') >= 0) {\n customField = new PepTextboxField({\n key: field.ApiName,\n label: field.ApiName,\n type: 'text',\n placeholder,\n readonly: !canEditObject,\n disabled: !field.Enabled || !canEditObject,\n hidden: false,\n mandatory: false,\n value: field.Value,\n formattedValue: field.FormattedValue,\n row: 1,\n rowSpan: 1,\n col: 1,\n colSpan: 1,\n xAlignment: this.convertXAlignToHorizontalAlign(\n controlField.Layout.XAlignment\n ),\n yAlignment: this.convertYAlignToVerticalAlign(\n controlField.Layout.YAlignment\n ),\n order: 3,\n });\n } else if (field.ApiName.toLowerCase().indexOf('country') >= 0) {\n customField = new PepSelectField({\n key: field.ApiName,\n label: field.ApiName,\n placeholder,\n options: this.convertOptionalValues(field.OptionalValues),\n readonly: !canEditObject,\n disabled: !field.Enabled || !canEditObject,\n hidden: false,\n mandatory: false,\n value: field.Value,\n formattedValue: field.FormattedValue,\n row: 2,\n rowSpan: 1,\n col: 2,\n colSpan: 1,\n xAlignment: this.convertXAlignToHorizontalAlign(\n controlField.Layout.XAlignment\n ),\n yAlignment: this.convertYAlignToVerticalAlign(\n controlField.Layout.YAlignment\n ),\n order: 4,\n });\n }\n\n fields.push(customField);\n });\n\n return fields.sort((n1, n2) =>\n n1.order > n2.order ? 1 : n1.order < n2.order ? -1 : 0\n );\n }\n\n isMatrixField(apiNameToCheck: string): boolean {\n return apiNameToCheck.indexOf('Matrix') >= 0;\n }\n\n doesFieldHavaFloatingField(\n controlField: UIControlField,\n floatingField: any\n ): boolean {\n let hasFloatingField = false;\n if (\n floatingField.Layout.Y >= controlField.Layout.Y &&\n floatingField.Layout.Y <\n controlField.Layout.Y + controlField.Layout.Height &&\n floatingField.Layout.X >= controlField.Layout.X &&\n floatingField.Layout.X <\n controlField.Layout.X + controlField.Layout.Width\n ) {\n hasFloatingField = true;\n }\n\n return hasFloatingField;\n }\n\n getOptionsForCustomField(\n controlField: UIControlField,\n dataField: any,\n canEditObject: boolean\n ): any {\n if (!controlField || !dataField) {\n return;\n }\n\n const placeholder =\n controlField.ReadOnly || !canEditObject ? '' : controlField.Title;\n\n let fieldProperties = {\n key: controlField.ApiName,\n label: controlField.Title,\n accessory: dataField.Accessory,\n placeholder,\n readonly: controlField.ReadOnly || !canEditObject,\n disabled: !dataField.Enabled || !canEditObject,\n hidden: controlField.Hidden,\n mandatory: controlField.Mandatory,\n value: dataField.Value,\n formattedValue: dataField.FormattedValue,\n additionalValue: dataField.AdditionalValue,\n row: controlField.Layout.Y,\n rowSpan: controlField.Layout.Height,\n col: controlField.Layout.X,\n colSpan: controlField.Layout.Width,\n xAlignment: this.convertXAlignToHorizontalAlign(\n controlField.Layout.XAlignment\n ),\n yAlignment: this.convertYAlignToVerticalAlign(\n controlField.Layout.YAlignment\n ),\n options: this.convertOptionalValues(dataField.OptionalValues),\n groupFields: undefined,\n maxFieldCharacters: controlField.MaxFieldCharacters,\n minValue: controlField.MinValue,\n maxValue: controlField.MaxValue,\n // hasMenu: hasMenu,\n // hasCampaign: hasCampaign,\n // hasIndicators: hasIndicators,\n textColor: dataField.TextColor,\n visible: dataField.Visible,\n digitsNumberAfterDecimalPoint: dataField.DigitsNumberAfterDecimalPoint,\n };\n\n if (dataField.AdditionalProps) {\n fieldProperties = {\n ...fieldProperties,\n ...dataField.AdditionalProps\n }\n }\n return fieldProperties;\n }\n\n convertToCustomField(\n controlField: UIControlField,\n dataField: any,\n canEditObject: boolean,\n menuField: any,\n hasCampaignField: any,\n indicatorsField: any,\n objectId: any,\n parentId: any,\n searchCode: any\n ): PepFieldBase {\n let customField: PepFieldBase;\n const options = this.getOptionsForCustomField(\n controlField,\n dataField,\n canEditObject\n );\n\n if (controlField.ApiName === 'ObjectMenu') {\n options.type = 'menu';\n customField = new PepInternalMenuField(options);\n } else if (\n controlField.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n controlField.FieldType ===\n FIELD_TYPE.NumberIntegerQuantitySelector ||\n controlField.ApiName === 'QuantitySelector' ||\n controlField.ApiName === 'UnitsQuantity' ||\n controlField.ApiName.indexOf('size_') === 0\n ) {\n if (dataField.FieldType === FIELD_TYPE.InternalLink) {\n options.type = 'button';\n } else if (dataField.FieldType === FIELD_TYPE.Package) {\n options.type = 'packageButton';\n } else if (\n dataField.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n dataField.FieldType === FIELD_TYPE.NumberReal\n ) {\n options.type = 'qs';\n options.allowDecimal = true;\n } else if (\n dataField.FieldType ===\n FIELD_TYPE.NumberIntegerQuantitySelector ||\n dataField.FieldType === FIELD_TYPE.NumberInteger\n ) {\n options.type = 'qs';\n options.allowDecimal = false;\n } else if (\n dataField.FieldType === FIELD_TYPE.NumberIntegerForMatrix\n ) {\n options.type = 'qsForMatrix';\n options.allowDecimal = false;\n } else if (dataField.FieldType === FIELD_TYPE.NumberRealForMatrix) {\n options.type = 'qsForMatrix';\n options.allowDecimal = true;\n }\n\n options.notificationInfo = dataField.NotificationInfo;\n customField = new PepQuantitySelectorField(options);\n } else {\n // HACK: need to remove this..\n if (\n dataField.FieldType === FIELD_TYPE.Indicators &&\n this.isMatrixField(dataField.ApiName)\n ) {\n dataField.FieldType = FIELD_TYPE.InternalPage;\n }\n\n switch (dataField.FieldType) {\n case FIELD_TYPE.Address: {\n const canEditGroupObject = controlField.ReadOnly\n ? false\n : canEditObject;\n options.groupFields = this.convertAddressFields(\n controlField,\n dataField.GroupFields,\n canEditGroupObject\n );\n customField = new PepAddressField(options);\n break;\n }\n case FIELD_TYPE.Indicators: {\n // options['type'] = 'indicators'; // Not needed this is PepIndicatorsField.\n customField = new PepIndicatorsField(options);\n break;\n }\n case FIELD_TYPE.InternalPage: {\n if (this.isMatrixField(controlField.ApiName)) {\n options.rowSpan = controlField.Layout.Height;\n options.objectId = objectId;\n options.parentId = parentId;\n options.searchCode = searchCode;\n\n customField = new PepInternalPageField(options);\n } else {\n // Not supported\n }\n break;\n }\n case FIELD_TYPE.RelatedObjectsCards: {\n options.rowSpan = controlField.Layout.Height;\n options.searchCode = searchCode;\n options.pageInfo = dataField.UIPageInfo;\n\n customField = new PepInternalCaruselField(options);\n break;\n }\n case FIELD_TYPE.Link: {\n options.type = 'link';\n customField = new PepLinkField(options);\n break;\n }\n case FIELD_TYPE.InternalLink:\n case FIELD_TYPE.Button: {\n options.type = 'button';\n customField = new PepInternalButtonField(options);\n break;\n }\n case FIELD_TYPE.Attachment: {\n // options.type = 'attachment';\n customField = new PepAttachmentField(options);\n break;\n }\n case FIELD_TYPE.Signature: {\n // options.type = 'signature';\n customField = new PepSignatureField(options);\n break;\n }\n case FIELD_TYPE.Image:\n case FIELD_TYPE.ImageURL: {\n // options.type = 'image';\n options.menuField =\n menuField &&\n this.doesFieldHavaFloatingField(controlField, menuField)\n ? menuField\n : null;\n options.hasCampaignField =\n hasCampaignField &&\n this.doesFieldHavaFloatingField(\n controlField,\n hasCampaignField\n )\n ? hasCampaignField\n : null;\n options.indicatorsField =\n indicatorsField &&\n this.doesFieldHavaFloatingField(\n controlField,\n indicatorsField\n )\n ? indicatorsField\n : null;\n\n customField = new PepImageField(options);\n break;\n }\n case FIELD_TYPE.Images: {\n // options.type = 'images';\n customField = new PepImagesField(options);\n break;\n }\n case FIELD_TYPE.Email: {\n options.type = 'email';\n customField = new PepTextboxField(options);\n break;\n }\n case FIELD_TYPE.Phone: {\n options.type = 'phone';\n customField = new PepTextboxField(options);\n break;\n }\n case FIELD_TYPE.Duration: {\n options.type = 'duration';\n customField = new PepTextboxField(options);\n break;\n }\n case FIELD_TYPE.Default:\n case FIELD_TYPE.TextBox:\n case FIELD_TYPE.LimitedLengthTextBox:\n case FIELD_TYPE.TextHeader:\n case FIELD_TYPE.CalculatedString:\n case FIELD_TYPE.MapDataString: {\n customField = new PepTextboxField(options);\n break;\n }\n case FIELD_TYPE.TextArea: {\n customField = new PepTextareaField(options);\n break;\n }\n\n case FIELD_TYPE.RichTextHTML: {\n customField = new PepRichHtmlTextareaField(options);\n break;\n }\n case FIELD_TYPE.Date:\n case FIELD_TYPE.LimitedDate:\n case FIELD_TYPE.CalculatedDate:\n case FIELD_TYPE.DateAndTime: {\n options.type =\n dataField.FieldType === FIELD_TYPE.DateAndTime\n ? 'datetime'\n : 'date';\n customField = new PepDateField(options);\n break;\n }\n case FIELD_TYPE.NumberInteger:\n case FIELD_TYPE.CalculatedInt:\n case FIELD_TYPE.MapDataInt: {\n options.type = 'int';\n customField = new PepTextboxField(options);\n break;\n }\n case FIELD_TYPE.Percentage: {\n options.type = 'percentage';\n customField = new PepTextboxField(options);\n break;\n }\n case FIELD_TYPE.Currency: {\n options.type = 'currency';\n customField = new PepTextboxField(options);\n break;\n }\n case FIELD_TYPE.NumberReal:\n case FIELD_TYPE.CalculatedReal:\n case FIELD_TYPE.MapDataReal:\n case FIELD_TYPE.Sum:\n case FIELD_TYPE.Totals: {\n options.type = 'real';\n customField = new PepTextboxField(options);\n break;\n }\n case FIELD_TYPE.Boolean:\n case FIELD_TYPE.CalculatedBool: {\n customField = new PepCheckboxField(options);\n break;\n }\n case FIELD_TYPE.BooleanText: {\n options.type = 'booleanText';\n customField = new PepCheckboxField(options);\n break;\n }\n case FIELD_TYPE.ComboBox:\n case FIELD_TYPE.EmptyComboBox:\n case FIELD_TYPE.MapDataDropDown: {\n // options.type = 'select';\n customField = new PepSelectField(options);\n break;\n }\n case FIELD_TYPE.MultiTickBox:\n case FIELD_TYPE.MultiTickBoxToComboBox:\n case FIELD_TYPE.EmptyMultiTickBox: {\n options.type = 'multi';\n customField = new PepSelectField(options);\n break;\n }\n case FIELD_TYPE.GuidReferenceType: {\n options.type = 'reference';\n options.referenceObjectType = dataField.ReferenceObjectType;\n options.referenceObjectSubType =\n dataField.ReferenceObjectSubType;\n options.referenceObjectInternalType =\n dataField.ReferenceObjectInternalType;\n customField = new PepInternalButtonField(options);\n break;\n }\n case FIELD_TYPE.ListOfObjects: {\n options.type = 'listofobjects';\n customField = new PepInternalButtonField(options);\n break;\n }\n case FIELD_TYPE.Separator: {\n customField = new PepSeparatorField(options);\n break;\n }\n /*\n case FIELD_TYPE.Images: return that.field(value);\n */\n case FIELD_TYPE.NumberRealQuantitySelector:\n case FIELD_TYPE.NumberIntegerQuantitySelector: {\n options.type = 'qs';\n options.allowDecimal =\n dataField.FieldType ===\n FIELD_TYPE.NumberRealQuantitySelector;\n options.notificationInfo = dataField.NotificationInfo;\n\n customField = new PepQuantitySelectorField(options);\n break;\n }\n case FIELD_TYPE.Package: {\n options.type = 'packageButton';\n options.notificationInfo = dataField.NotificationInfo;\n\n customField = new PepQuantitySelectorField(options);\n break;\n }\n }\n }\n\n if (!customField) {\n options.label = controlField.ApiName + ' is not supported!!!';\n customField = new PepSeparatorField(options);\n }\n\n return customField;\n }\n\n getFieldFormattedValue(field: PepFieldBase): string {\n let fieldFormattedValue = field.formattedValue || field.value;\n\n // Fix for the custom check box component.\n if (field.controlType === 'checkbox') {\n fieldFormattedValue = fieldFormattedValue === 'true';\n }\n\n // Fix for the custom button component.\n if (field.controlType === 'button') {\n fieldFormattedValue =\n fieldFormattedValue === '0' ? '' : fieldFormattedValue;\n }\n\n // Fix for the custom date component.\n if (field.controlType === 'date' || field.controlType === 'datetime') {\n if(fieldFormattedValue === '' ||\n fieldFormattedValue.indexOf('1900-1-1') >= 0 ||\n fieldFormattedValue.indexOf('1900-01-01') >= 0 ||\n fieldFormattedValue.indexOf('1970-1-1') >= 0 ||\n fieldFormattedValue.indexOf('1970-01-01') >= 0\n ) {\n fieldFormattedValue = '';\n }\n }\n\n return fieldFormattedValue;\n }\n\n private toControlGroup(fields: PepFieldBase[]): FormGroup {\n const group = {};\n if (fields && fields.length > 0) {\n fields.forEach((field) => {\n if (field.groupFields && field.groupFields.length > 0) {\n const subGroup = {};\n\n field.groupFields.forEach((groupField) => {\n if (\n groupField.mandatory &&\n !field.readonly &&\n !field.disabled\n ) {\n subGroup[groupField.key] = [\n {\n value: groupField.formattedValue || '',\n disabled:\n field.readonly ||\n field.disabled ||\n groupField.disabled,\n },\n [Validators.required],\n ];\n } else {\n subGroup[groupField.key] = [\n {\n value: groupField.formattedValue || '',\n disabled:\n field.readonly ||\n field.disabled ||\n groupField.disabled,\n },\n [Validators.nullValidator],\n ];\n }\n });\n\n group[field.key] = this.fb.group(subGroup);\n } else {\n const validators = field.getValidators();\n const fieldFormattedValue = this.getFieldFormattedValue(\n field\n );\n\n group[field.key] = [\n {\n value: fieldFormattedValue || '',\n disabled: field.disabled,\n },\n validators,\n ];\n }\n });\n }\n\n return this.fb.group(group);\n }\n\n private createBaseField(uiControlField: UIControlField, dataField: any) {\n const customField: PepFieldBase = this.convertToCustomField(\n uiControlField,\n dataField,\n this.canEditObject,\n this.menuDataField,\n this.hasCampaignDataField,\n this.indicatorsDataField,\n this.objectId,\n this.parentId,\n this.searchCode\n );\n\n return customField;\n }\n\n public showFormValidationMessage(): void {\n const fields: PepFieldBase[] = this.fields;\n let emptyMandatoryFieldsMsg = '';\n let notValidFieldsMsg = '';\n\n // for (let i: number = 0; i < fields.length; i++) {\n // let field = fields[i];\n for (const field of fields) {\n const formControl = this.form && this.form.get(field.key);\n\n if (formControl) {\n // Mandatory is empty.\n if (\n field.mandatory &&\n formControl.value.toString().trim().length === 0\n ) {\n emptyMandatoryFieldsMsg +=\n '<li><small>' + field.label + '</small></li>';\n } else if (!field.disabled && !formControl.valid) {\n notValidFieldsMsg +=\n '<li><small>' + field.label + '</small></li>';\n }\n }\n }\n\n // Add the header message of the empty mandatory fields\n if (emptyMandatoryFieldsMsg.length > 0) {\n emptyMandatoryFieldsMsg =\n '<div>' +\n this.translate.instant('MESSAGES.ERROR_MANDATORY_FIELDS') +\n \"</div><ul style='padding: 0 20px;'>\" +\n emptyMandatoryFieldsMsg +\n '</ul><br/>';\n }\n\n // Add the header message of the empty mandatory fields\n if (notValidFieldsMsg.length > 0) {\n notValidFieldsMsg =\n '<div>' +\n this.translate.instant('MESSAGES.ERROR_INVALID_FIELDS') +\n \"</div><ul style='padding: 0 20px;'>\" +\n notValidFieldsMsg +\n '</ul>';\n }\n\n const title = this.translate.instant('MESSAGES.TITLE_NOTICE');\n const data = new PepDialogData({\n title,\n content: emptyMandatoryFieldsMsg + notValidFieldsMsg,\n });\n this.dialogService.openDefaultDialog(data);\n }\n\n ngOnInit(): void {\n const themeVars = this.customizationService.getThemeVariables();\n // convert rem to pixel\n const RemToPixel = 16;\n this.formGutterSize =\n this.customizationService.getNumberThemeVariable(\n themeVars,\n PepCustomizationService.FORM_SPACEING_KEY\n ) * RemToPixel;\n this.cardGutterSize =\n this.customizationService.getNumberThemeVariable(\n themeVars,\n PepCustomizationService.CARD_SPACEING_KEY\n ) * RemToPixel;\n }\n\n ngDoCheck(): void {\n const changes = this.differ.diff(this.data); // check for changes\n if (changes) {\n this.updateForm();\n this.checkForChanges = new Date();\n }\n }\n\n ngOnChanges(changes): void {\n // if (changes.data && changes.data.currentValue) {\n // // Load changes\n // if (!this.shouldReloadForm && changes.data.previousValue) {\n // this.data = changes.data.currentValue;\n // this.updateForm();\n // } else {\n // this._shouldReloadForm = false;\n // this.initForm();\n // }\n // }\n // if (this.shouldReloadForm || !changes?.data?.previousValue) {\n // this._shouldReloadForm = false;\n // this.initForm();\n // this.checkForChanges = new Date();\n // }\n }\n\n ngOnDestroy(): void {\n //\n }\n\n getUiControlFields(): Array<UIControlField> {\n return this.layout ? this.layout.ControlFields : [];\n }\n\n initFieldsStructure(fields: PepFieldBase[], maxRow: number): void {\n const themeVars = this.customizationService.getThemeVariables();\n\n // Set form row height.\n if (this.layoutType === 'card') {\n const cardFieldHeight = this.customizationService.getNumberThemeVariable(\n themeVars,\n PepCustomizationService.CARD_FIELD_HEIGHT_KEY\n );\n this.rowHeight = cardFieldHeight;\n } else {\n const rowFieldHeight = this.customizationService.getNumberThemeVariable(\n themeVars,\n PepCustomizationService.FORM_FIELD_HEIGHT_KEY\n );\n const rowFieldTitleHeight = this.customizationService.getNumberThemeVariable(\n themeVars,\n PepCustomizationService.FORM_FIELD_TITLE_HEIGHT_KEY\n );\n this.rowHeight = rowFieldHeight + rowFieldTitleHeight;\n }\n\n // Create the fields structure (the fields must be sorted!!!).\n if (fields.length > 0) {\n // Init the layout.\n if (\n // this.layoutType === 'form' ||\n this.layoutType === 'table'\n ) {\n this.fields = fields;\n this._fieldsSubject.next(fields);\n\n this.rows = [];\n\n for (let i = 0; i <= maxRow; i++) {\n this.rows[i] = [];\n }\n\n // for (let i = 0; i < fields.length; i++) {\n // const field = fields[i]\n for (const field of fields) {\n this.rows[field.row].push(field);\n }\n } else {\n const doesfieldExistIn: boolean[][] = new Array(maxRow);\n\n for (let i = 0; i < doesfieldExistIn.length; i++) {\n doesfieldExistIn[i] = new Array(this.columns);\n\n for (let j = 0; j < doesfieldExistIn[i].length; j++) {\n doesfieldExistIn[i][j] = false;\n }\n }\n\n // Run in squere (row - colspan, col - rowspan) and put true where it should.\n // for (let index = 0; index < fields.length; index++) {\n // const currentField = fields[index];\n for (const currentField of fields) {\n if (currentField.rowSpan > 1) {\n for (\n let row: number = currentField.row;\n row < currentField.row + currentField.rowSpan;\n row++\n ) {\n if (currentField.colSpan > 1) {\n for (\n let col: number = currentField.col;\n col <\n currentField.col + currentField.colSpan;\n col++\n ) {\n if (\n doesfieldExistIn.length > row &&\n doesfieldExistIn[0].length > col\n ) {\n doesfieldExistIn[row][col] = true;\n }\n }\n } else {\n if (\n doesfieldExistIn.length > row &&\n doesfieldExistIn[0].length >\n currentField.col\n ) {\n doesfieldExistIn[row][\n currentField.col\n ] = true;\n }\n }\n }\n } else if (currentField.colSpan > 1) {\n for (\n let col: number = currentField.col;\n col < currentField.col + currentField.colSpan;\n col++\n ) {\n if (\n doesfieldExistIn.length > currentField.row &&\n doesfieldExistIn[0].length > col\n ) {\n doesfieldExistIn[currentField.row][col] = true;\n }\n }\n } else {\n if (\n doesfieldExistIn.length > currentField.row &&\n doesfieldExistIn[0].length > currentField.col\n ) {\n doesfieldExistIn[currentField.row][\n currentField.col\n ] = true;\n }\n }\n }\n\n // Create empty fields where doesfieldExistIn is false (For the md-grid-list UI Component).\n for (let i = 0; i < doesfieldExistIn.length; i++) {\n for (let j = 0; j < doesfieldExistIn[i].length; j++) {\n if (!doesfieldExistIn[i][j]) {\n // Create empty field and add it to the fields list.\n fields.push(\n new PepPlaceholderField({\n key: i + '_' + j,\n label: '',\n placeholder: '',\n readonly: false,\n disabled: false,\n hidden: false,\n mandatory: false,\n value: '',\n formattedValue: '',\n row: i,\n rowSpan: 1,\n col: j,\n colSpan: 1,\n order: 1,\n })\n );\n }\n }\n }\n\n // Sort the fields again.\n this.fields = fields.sort((f1, f2) =>\n f1.row > f2.row\n ? 1\n : f1.row < f2.row\n ? -1\n : f1.col > f2.col\n ? 1\n : f1.col < f2.col\n ? -1\n : 0\n );\n this._fieldsSubject.next(fields);\n }\n }\n }\n\n setForm(isForUpdate = false): void {\n let allFieldsAreReadOnly = true;\n\n if (!isForUpdate) {\n const fields = [];\n for (const currentField of this.fields) {\n // Add all fields except 'internalPage' (for children).\n if (currentField.controlType !== 'internalPage') {\n fields.push(currentField);\n }\n\n if (!currentField.readonly) {\n allFieldsAreReadOnly = false;\n }\n }\n\n this.form = this.toControlGroup(fields);\n } else {\n // Update form values if changed by calculated fields.\n for (let i = 0; i < this.fields.length; i++) {\n let currentField = this.fields[i];\n\n if (currentField.controlType === 'internalCarusel') {\n // Hack to override (update) the field.\n const uiControlField = this.getUiControlFields().find(cf => cf.ApiName === currentField.key);\n const dataField = this.data.Fields.find(df => df.ApiName === currentField.key);\n currentField = this.createBaseField(uiControlField, dataField);\n this._fieldsSubject.value[i] = currentField;\n } else if (currentField.controlType !== 'internalPage') {\n if (\n currentField.groupFields &&\n currentField.groupFields.length > 0\n ) {\n // for (let j = 0; j < currentField.groupFields.length; j++) {\n // let currentGroupField = currentField.groupFields[j];\n for (const currentGroupField of currentField.groupFields) {\n const fieldFormattedValue = this.getFieldFormattedValue(\n currentGroupField\n );\n this.customizationService.updateFormField(\n this.form,\n currentGroupField,\n fieldFormattedValue,\n currentField\n );\n }\n } else {\n const fieldFormattedValue = this.getFieldFormattedValue(\n currentField\n );\n // this.form.controls[currentField.key].setValue(fieldFormattedValue);\n this.customizationService.updateFormField(\n this.form,\n currentField,\n fieldFormattedValue\n );\n }\n }\n\n if (!currentField.readonly) {\n allFieldsAreReadOnly = false;\n }\n }\n }\n\n let isFormValid = this.form?.valid;\n\n // Change validation to true if all fields are read only.\n if (!isFormValid && allFieldsAreReadOnly) {\n isFormValid = true;\n }\n\n this.onFormValidationChanged(isFormValid);\n\n // Set it to false to enable all fields.\n if (this.isInternal && this.isLocked) {\n this.isLocked = false;\n }\n }\n\n initForm(): void {\n if (this.data && this.data.Fields) {\n const fields: PepFieldBase[] = this.convertCustomFields(\n this.getUiControlFields(),\n this.data.Fields\n );\n\n const maxRow = Math.max(\n ...fields.map((f) => {\n return f.row + f.rowSpan;\n })\n );\n this.columns = Math.max(\n ...fields.map((f) => {\n return f.col + f.colSpan;\n })\n );\n\n this.initFieldsStructure(fields, maxRow);\n this.setForm();\n }\n }\n\n private updateField(\n customField: PepFieldBase,\n updatedField: ObjectsDataRowCell\n ): void {\n const options: any = {\n disabled: !updatedField.Enabled || !this.canEditObject,\n readonly: !updatedField.Enabled || !this.canEditObject,\n visible: updatedField.Visible,\n value: updatedField.Value,\n additionalValue: updatedField.AdditionalValue,\n formattedValue: updatedField.FormattedValue,\n textColor: updatedField.TextColor,\n digitsNumberAfterDecimalPoint: updatedField.DigitsNumberAfterDecimalPoint\n };\n\n if (customField instanceof PepQuantitySelectorField) {\n const notificationInfo = updatedField.NotificationInfo;\n options.notificationInfo = notificationInfo;\n\n // Change type if it's change (only for allowDecimal).\n let allowDecimal = false;\n if (updatedField.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n updatedField.FieldType === FIELD_TYPE.NumberReal ||\n updatedField.FieldType === FIELD_TYPE.NumberRealForMatrix\n ) {\n allowDecimal = true;\n }\n\n options.allowDecimal = allowDecimal;\n\n } else if (customField instanceof PepSelectField) {\n options.options = this.convertOptionalValues(\n updatedField.OptionalValues\n );\n\n if (!options.options || options.options.length === 0) {\n options.options.push({\n key: options.value,\n value: options.formattedValue,\n });\n }\n } else if (customField instanceof PepInternalCaruselField) {\n options.pageInfo = updatedField.UIPageInfo;\n }\n\n customField.update(options);\n }\n\n updateForm(): void {\n if (this.data && this.data.Fields) {\n for (const currentField of this.data.Fields) {\n const customField = this.fields.filter(\n (f) => f.key === currentField.ApiName\n )[0];\n // Update all fields except 'internalPage' type (for children).\n if (customField && customField.controlType !== 'internalPage') {\n this.updateField(customField, currentField);\n\n // Update the group fields.\n if (\n customField.controlType === 'address' &&\n currentField.GroupFields\n ) {\n // for (let j = 0; j < currentField.GroupFields.length; j++) {\n // let currentGroupField = currentField.GroupFields[j];\n for (const currentGroupField of currentField.GroupFields) {\n currentGroupField.Enabled = !currentField.Enabled\n ? false\n : currentGroupField.Enabled;\n\n const customGroupField = customField.groupFields.filter(\n (f) => f.key === currentGroupField.ApiName\n )[0];\n this.updateField(\n customGroupField,\n currentGroupField\n );\n }\n }\n }\n }\n\n this.setForm(true);\n }\n }\n\n public ReloadForm(): void {\n this._shouldReloadForm = true;\n }\n\n // onSubmit() {\n // if (this.form.valid) {\n // this.payLoad = JSON.stringify(this.form.value);\n // //this.submitted.emit(this.form.value);\n // }\n // }\n\n private getFormControlById(key: string): AbstractControl | null {\n let formControl = null;\n\n this.fields.forEach((field) => {\n if (field.key === key) {\n formControl = this.form.get(field.key);\n return;\n } else if (field.groupFields && field.groupFields.length > 0) {\n field.groupFields.forEach((groupField) => {\n if (groupField.key === key) {\n formControl = this.form.get(\n field.key + '.' + groupField.key\n );\n return;\n }\n });\n }\n });\n\n return formControl;\n }\n\n private setSpecialFields(\n controlFields: Array<any>,\n dataFields: Array<any>\n ): void {\n // let cf;\n // for (let index = 0; index < controlFields.length; index++) {\n // cf = controlFields[index];\n for (const cf of controlFields) {\n if (cf.ApiName === 'ObjectMenu') {\n this.menuField = cf;\n } else if (cf.ApiName === 'ItemHasActiveCampaign') {\n this.hasCampaignField = cf;\n } else if (cf.ApiName === 'ItemIndicatorsWithoutCampaign') {\n this.indicatorsField = cf;\n }\n }\n\n // let df;\n // for (let index = 0; index < dataFields.length; index++) {\n // df = dataFields[index];\n for (const df of dataFields) {\n if (df.ApiName === 'ObjectMenu') {\n this.menuDataField = df;\n } else if (df.ApiName === 'ItemHasActiveCampaign') {\n this.hasCampaignDataField = df;\n } else if (df.ApiName === 'ItemIndicatorsWithoutCampaign') {\n this.indicatorsDataField = df;\n }\n }\n\n if (this.menuField && this.menuDataField) {\n this.menuDataField.Layout = this.menuField.Layout;\n }\n\n if (this.hasCampaignField && this.hasCampaignDataField) {\n this.hasCampaignDataField.Layout = this.hasCampaignField.Layout;\n }\n\n if (this.indicatorsField && this.indicatorsDataField) {\n this.indicatorsDataField.Layout = this.indicatorsField.Layout;\n }\n\n // Check if menu is floating on other field.\n // for (let index = 0; index < controlFields.length; index++) {\n // cf = controlFields[index];\n for (const cf of controlFields) {\n if (this.menuField && cf.ApiName !== 'ObjectMenu') {\n this.hasMenuFloatingOnOtherField = this.doesFieldHavaFloatingField(\n cf,\n this.menuField\n );\n\n if (this.hasMenuFloatingOnOtherField) {\n break;\n }\n }\n }\n }\n\n convertCustomFields(\n controlFields: Array<any>,\n dataFields: Array<any>\n ): PepFieldBase[] {\n if (this.layoutType !== 'table') {\n this.setSpecialFields(controlFields, dataFields);\n } else {\n // HACK: convert to center alignment if table view & special fields)\n controlFields.forEach((field, index) => {\n if (\n field.ApiName === 'UnitsQuantity' ||\n field.ApiName === 'QuantitySelector' ||\n field.ApiName === 'ObjectMenu' ||\n field.FieldType === FIELD_TYPE.Image ||\n field.FieldType === FIELD_TYPE.ImageURL ||\n field.FieldType === FIELD_TYPE.Indicators ||\n field.FieldType === FIELD_TYPE.Boolean ||\n field.FieldType === FIELD_TYPE.CalculatedBool ||\n field.FieldType === FIELD_TYPE.Signature ||\n field.FieldType ===\n FIELD_TYPE.NumberIntegerQuantitySelector ||\n field.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n field.FieldType === FIELD_TYPE.Package ||\n field.FieldType === FIELD_TYPE.NumberIntegerForMatrix ||\n field.FieldType === FIELD_TYPE.NumberRealForMatrix\n ) {\n field.Layout.XAlignment = X_ALIGNMENT_TYPE.Center;\n } else {\n // HACK: align the rest of the fields by the culture.\n // field.Layout.XAlignment = this.layoutService.isRtl() ? X_ALIGNMENT_TYPE.Right : X_ALIGNMENT_TYPE.Left;\n }\n });\n }\n\n const fields: PepFieldBase[] = [];\n\n controlFields.forEach((field, index) => {\n const dataField = dataFields.filter(\n (df) => df.ApiName === field.ApiName\n )[0];\n\n if (!dataField) {\n return;\n }\n\n // If current view is not table view and those fields are special.\n if (\n this.layoutType !== 'table' &&\n ((this.hasMenuFloatingOnOtherField &&\n this.menuField &&\n this.menuField.ApiName === field.ApiName) ||\n (this.indicatorsField &&\n this.indicatorsField.ApiName === field.ApiName) ||\n (this.hasCampaignField &&\n this.hasCampaignField.ApiName === field.ApiName))\n ) {\n return;\n }\n\n // Set type to link\n if (index === 0 && this.firstFieldAsLink) {\n dataField.FieldType = FIELD_TYPE.InternalLink;\n // dataField.Value = this.getInternalLinkHref();\n }\n\n if (field.ApiName === 'ObjectMenu') {\n dataField.Enabled = true;\n // HACK : Until \"Enabled\" returns from the server, we set PepMenu to be\n // Disabled in cart on regular items and not campign items.\n }\n const customField: PepFieldBase = this.createBaseField(field, dataField);\n fields.push(customField);\n });\n\n return fields.sort((f1, f2) =>\n f1.row > f2.row\n ? 1\n : f1.row < f2.row\n ? -1\n : f1.col > f2.col\n ? 1\n : f1.col < f2.col\n ? -1\n : 0\n );\n }\n\n private onFormValidationChanged(formValidationChange: any): void {\n this.formValidationChange.emit(formValidationChange);\n }\n\n onValueChanged(event: IPepFieldValueChangeEvent): void {\n this.onFormValidationChanged(this.form.valid);\n\n const formControl = this.getFormControlById(event.key);\n\n const isValid = formControl ? formControl.valid : true;\n // const isValid = true;\n \n // If isValid || event.value === '' for init the field if the user want.\n if (isValid || event.value === '') {\n // Set it to false to disable all fields.\n if (this.isInternal && this.layoutType === 'form') {\n this.isLocked = true;\n }\n\n // Update the current field value.\n const currentField = this.fields.find((f) => f.key === event.key);\n if (currentField) {\n currentField.formattedValue = currentField.value = event.value;\n }\n\n this.valueChange.emit({\n id: this.data.UID.toString(),\n uiObjectKey: this.data.Key,\n key: event.key,\n value: event.value,\n controlType: event.controlType,\n });\n }\n }\n\n onClick(fieldClickEvent: IPepFieldClickEvent): void {\n const clickedUiControlField = this.data.Fields.filter(\n (f) => f.ApiName === fieldClickEvent.key\n )[0];\n const idType = this.data.Type ? this.data.Type.toString() : '';\n\n if (clickedUiControlField) {\n this.fieldClick.emit({\n id: this.data.UID.toString(),\n uiObjectKey: this.data.Key,\n key: fieldClickEvent.key,\n idType,\n which: fieldClickEvent.eventWhich,\n value: fieldClickEvent.value,\n controlType: fieldClickEvent.controlType,\n fieldType: clickedUiControlField.FieldType,\n otherData: fieldClickEvent.otherData,\n });\n } else {\n // For other api names (like enter children etc).\n this.fieldClick.emit({\n id: this.data.UID.toString(),\n uiObjectKey: this.data.Key,\n key: fieldClickEvent.key,\n idType,\n which: fieldClickEvent.eventWhich,\n value: fieldClickEvent.value,\n controlType: fieldClickEvent.controlType,\n otherData: fieldClickEvent.otherData,\n });\n }\n }\n\n // This event is for handle the internal page events.\n onInternalFormFieldClicked(internalFormFieldClick: any): void {\n this.internalFormFieldClick.emit(internalFormFieldClick);\n }\n\n // This event is for handle the internal page events.\n onInternalFormFieldChanged(internalFormFieldChange: any): void {\n this.internalFormFieldChange.emit(internalFormFieldChange);\n }\n\n // This event is for handle the related items change events.\n onFormValueChanged(event: IPepFormFieldValueChangeEvent): void {\n // this.valueChange.emit(event);\n }\n\n // This event is for handle the related items change events.\n onFormFieldClick(event: IPepFormFieldClickEvent): void {\n this.fieldClick.emit(event);\n }\n}\n","<fieldset *ngIf=\"form\" [formGroup]=\"form\" [disabled]=\"isLocked\" class=\"pep-form\"\n [ngStyle]=\"{ 'background-color': layoutType == 'card' && data?.BackgroundColor }\">\n <!-- New Form -->\n <mat-grid-list *ngIf=\"layoutType == 'form'\" [cols]=\"columns\" [rowHeight]=\"rowHeight + 'rem'\"\n [gutterSize]=\"formGutterSize\">\n <mat-grid-tile *ngFor=\"let field of fields$ | async\" [rowspan]=\"field.rowSpan\" [colspan]=\"field.colSpan\">\n <pep-field-generator *ngIf=\"field.controlType != 'placeholder'\" [form]=\"form\" [layoutType]=\"layoutType\"\n [checkForChanges]=\"checkForChanges\" [uid]=\"data?.UID\" [field]=\"field\" [showTitle]=\"showTitle\"\n (valueChange)=\"onValueChanged($event)\" (elementClick)=\"onClick($event)\"\n (internalFormFieldClick)=\"onInternalFormFieldClicked($event)\"\n (internalFormFieldChange)=\"onInternalFormFieldChanged($event)\"\n (formValueChange)=\"onFormValueChanged($event)\" (formFieldClick)=\"onFormFieldClick($event)\"\n >\n </pep-field-generator>\n <!-- (formValidationChange)=\"onFormValidationChanged($event)\" -->\n </mat-grid-tile>\n </mat-grid-list>\n\n <!-- Thumbnails -->\n <mat-grid-list *ngIf=\"layoutType == 'card'\" [cols]=\"columns\" [rowHeight]=\"rowHeight + 'rem'\"\n [gutterSize]=\"cardGutterSize\" class=\"card-spacing\">\n <mat-grid-tile *ngFor=\"let field of fields$ | async\" [rowspan]=\"field.rowSpan\" [colspan]=\"field.colSpan\"\n [ngStyle]=\"{ overflow: field.type == 'qs' ? 'unset' : 'hidden' }\">\n <pep-field-generator *ngIf=\"field.controlType != 'placeholder'\" [form]=\"form\" [layoutType]=\"layoutType\"\n [ngClass]=\"{ 'lock-events': lockEvents }\" [isActive]=\"isActive\" [checkForChanges]=\"checkForChanges\"\n [uid]=\"data?.UID\" [field]=\"field\" [showTitle]=\"showTitle\" (valueChange)=\"onValueChanged($event)\"\n (elementClick)=\"onClick($event)\" (internalFormFieldClick)=\"onInternalFormFieldClicked($event)\"\n (internalFormFieldChange)=\"onInternalFormFieldChanged($event)\"\n (formValueChange)=\"onFormValueChanged($event)\" (formFieldClick)=\"onFormFieldClick($event)\">\n </pep-field-generator>\n </mat-grid-tile>\n </mat-grid-list>\n\n <ng-container *ngIf=\"layoutType == 'table'\">\n <ng-container *ngIf=\"isReport; then reportBlock; else notReportBlock\"></ng-container>\n <ng-template #reportBlock>\n <ng-container *ngTemplateOutlet=\"report\"></ng-container>\n </ng-template>\n <ng-template #notReportBlock>\n <div *ngFor=\"let field of fields$ | async; let j = index\" class=\"pull-left flip table-cell \"\n [ngClass]=\"['text-align-' + field.xAlignment]\" style=\"height: 100%\"\n [ngStyle]=\"{ width: (layout?.ControlFields)[j]?.calcColumnWidthString}\">\n <pep-field-generator *ngIf=\"field.controlType != 'placeholder'\" [checkForChanges]=\"checkForChanges\"\n [uid]=\"data?.UID\" [field]=\"field\" [form]=\"form\" [layoutType]=\"layoutType\" [showTitle]=\"false\"\n (elementClick)=\"onClick($event)\" (valueChange)=\"onValueChanged($event)\"\n (formValueChange)=\"onFormValueChanged($event)\" (formFieldClick)=\"onFormFieldClick($event)\"\n [isActive]=\"isActive\">\n </pep-field-generator>\n </div>\n </ng-template>\n </ng-container>\n\n <!------- For testing ------------\n {{ form.value | json }}\n {{ form.valid }}\n ---------------------------------->\n</fieldset>\n\n<ng-template #report>\n <div *ngFor=\"let field of fields$ | async; let j = index\" class=\"pull-left flip pep-report-fields\"\n [ngStyle]=\"{ width: (layout?.ControlFields)[j]?.calcColumnWidthString }\"\n [ngClass]=\"['text-align-' + field.xAlignment]\">\n <ng-container [ngSwitch]=\"field.controlType\">\n <pep-image *ngSwitchCase=\"'image'\" [uid]=\"data?.UID\" [form]=\"form\" [key]=\"field.key\"\n [src]=\"field.formattedValue\" [srcLarge]=\"field.value\" [options]=\"field.options\" [label]=\"field.label\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [layoutType]=\"layoutType\"\n (elementClick)=\"onClick($event)\">\n </pep-image>\n\n <pep-signature *ngSwitchCase=\"'signature'\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.value\"\n [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\"\n [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n [layoutType]=\"layoutType\">\n </pep-signature>\n\n <pep-checkbox *ngSwitchCase=\"'checkbox'\" [form]=\"form\" [key]=\"field.key\"\n [value]=\"(field.value?.toString() | lowercase) == 'true' || field.value == '1' ? true : false\" [label]=\"field.label\"\n [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\"\n [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n [additionalValue]=\"field.additionalValue\" [layoutType]=\"layoutType\">\n </pep-checkbox>\n\n <pep-date *ngSwitchCase=\"'date'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [label]=\"field.label\" [type]=\"field.type\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n [minValue]=\"field.minValue\" [maxValue]=\"field.maxValue\" [layoutType]=\"layoutType\">\n </pep-date>\n\n <pep-internal-button *ngSwitchCase=\"'button'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [formattedValue]=\"field.formattedValue\" [label]=\"field.label\" [type]=\"field.type\"\n [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\"\n [layoutType]=\"layoutType\" (elementClick)=\"onClick($event)\">\n </pep-internal-button>\n\n <pep-textarea *ngSwitchCase=\"'textarea'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\"\n [readonly]=\"field.readonly\" [maxFieldCharacters]=\"field.maxFieldCharacters\"\n [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n [layoutType]=\"layoutType\">\n </pep-textarea>\n\n <pep-quantity-selector *ngSwitchCase=\"'qs'\" [id]=\"field.key\" [form]=\"form\" [key]=\"field.key\"\n [value]=\"field.value\" [label]=\"field.label\" [type]=\"field.type\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n [layoutType]=\"layoutType\" (valueChange)=\"onValueChanged($event)\" (elementClick)=\"onClick($event)\">\n </pep-quantity-selector>\n\n <ng-container *ngSwitchDefault>\n <ng-container *ngIf=\"field.formattedValue?.length > 0; then notEmptyBlock; else emptyBlock\">\n </ng-container>\n <ng-template #notEmptyBlock>\n <ng-container\n *ngIf=\"field.controlType === 'attachment' || field.type === 'link'; then linkBlock; else notLinkBlock\">\n </ng-container>\n <ng-template #linkBlock>\n <a [id]=\"field.key\" class=\"color-link body-sm pep-report-input readonly\"\n *ngIf=\"field.formattedValue != null\" title=\"{{ field.formattedValue }}\" target=\"_blank\"\n href=\"{{ field.value }}\">{{ field.formattedValue }}</a>\n </ng-template>\n <ng-template #notLinkBlock>\n <span [id]=\"field.key\" class=\"body-sm pep-report-input readonly\"\n title=\"{{ field.formattedValue }}\" [ngStyle]=\"{ color: field.textColor }\">{{\n field.formattedValue }}</span>\n </ng-template>\n </ng-template>\n <ng-template #emptyBlock>\n <span> </span>\n </ng-template>\n </ng-container>\n </ng-container>\n </div>\n</ng-template>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormBuilder, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\n\nimport { SignaturePadModule } from 'ngx-signaturepad';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport {\n PepIconModule,\n PepIconRegistry,\n pepIconSystemEdit,\n pepIconSystemMenu,\n pepIconNumberPlus,\n pepIconSystemBin,\n pepIconIndicatorDotPlaceholder,\n} from '@pepperi-addons/ngx-lib/icon';\n\nimport { PepDialogModule } from '@pepperi-addons/ngx-lib/dialog';\n\nimport { PepAddressModule } from '@pepperi-addons/ngx-lib/address';\nimport { PepAttachmentModule } from '@pepperi-addons/ngx-lib/attachment';\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\nimport { PepCarouselModule } from '@pepperi-addons/ngx-lib/carousel';\nimport { PepCheckboxModule } from '@pepperi-addons/ngx-lib/checkbox';\nimport { PepDateModule } from '@pepperi-addons/ngx-lib/date';\nimport { PepImageModule } from '@pepperi-addons/ngx-lib/image';\nimport { PepImagesFilmstripModule } from '@pepperi-addons/ngx-lib/images-filmstrip';\nimport { PepQuantitySelectorModule } from '@pepperi-addons/ngx-lib/quantity-selector';\nimport { PepRichHtmlTextareaModule } from '@pepperi-addons/ngx-lib/rich-html-textarea';\nimport { PepSelectModule } from '@pepperi-addons/ngx-lib/select';\nimport { PepSelectPanelModule } from '@pepperi-addons/ngx-lib/select-panel';\nimport { PepSeparatorModule } from '@pepperi-addons/ngx-lib/separator';\nimport { PepSignatureModule } from '@pepperi-addons/ngx-lib/signature';\nimport { PepTextareaModule } from '@pepperi-addons/ngx-lib/textarea';\nimport { PepTextboxModule } from '@pepperi-addons/ngx-lib/textbox';\nimport { PepLinkModule } from '@pepperi-addons/ngx-lib/link';\nimport { PepFieldTitleModule } from '@pepperi-addons/ngx-lib/field-title';\nimport { PepGroupButtonsModule } from '@pepperi-addons/ngx-lib/group-buttons';\n\nconst pepComponentsModules = [\n PepAddressModule,\n PepAttachmentModule,\n PepButtonModule,\n PepCarouselModule,\n PepCheckboxModule,\n PepDateModule,\n PepImageModule,\n PepImagesFilmstripModule,\n PepQuantitySelectorModule,\n PepRichHtmlTextareaModule,\n PepSelectModule,\n PepSelectPanelModule,\n PepSeparatorModule,\n PepSignatureModule,\n PepTextareaModule,\n PepTextboxModule,\n PepLinkModule\n];\n\nimport { PepFormComponent } from './form.component';\nimport { PepInternalFormComponent } from './internal-form.component';\nimport { PepFieldGeneratorComponent } from './field-generator.component';\nimport { PepInternalFieldGeneratorComponent } from './internal-field-generator.component';\nimport { PepIndicatorsComponent } from './indicators.component';\nimport { PepInternalButtonComponent } from './internal-button.component';\nimport { PepInternalListComponent } from './internal-list.component';\nimport { PepInternalMenuComponent } from './internal-menu.component';\nimport { PepInternalPageComponent } from './internal-page.component';\nimport { PepInternalCaruselComponent } from './internal-carusel.component';\n\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n // Material modules,\n MatCommonModule,\n MatFormFieldModule,\n MatButtonModule,\n MatGridListModule,\n MatIconModule,\n MatMenuModule,\n // External modules\n SignaturePadModule,\n // ngx-lib modules\n PepNgxLibModule,\n PepDialogModule,\n PepIconModule,\n pepComponentsModules,\n PepFieldTitleModule,\n PepGroupButtonsModule,\n ],\n exports: [PepFormComponent],\n declarations: [\n PepFormComponent,\n PepInternalFormComponent,\n PepFieldGeneratorComponent,\n PepInternalFieldGeneratorComponent,\n PepIndicatorsComponent,\n PepInternalButtonComponent,\n PepInternalListComponent,\n PepInternalMenuComponent,\n PepInternalPageComponent,\n PepInternalCaruselComponent\n ],\n providers: [\n FormBuilder\n ]\n})\nexport class PepFormModule {\n constructor(private pepIconRegistry: PepIconRegistry) {\n this.pepIconRegistry.registerIcons([\n pepIconSystemEdit,\n pepIconSystemMenu,\n pepIconNumberPlus,\n pepIconSystemBin,\n pepIconIndicatorDotPlaceholder,\n ]);\n }\n}\n","/*\n * Public API Surface of ngx-lib/form\n */\nexport * from './form.module';\nexport * from './form.model';\nexport * from './form.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i5","i6","i9","i3","i4","i7","i8","i17.PepIndicatorsComponent","i18.PepInternalButtonComponent","i19.PepInternalMenuComponent","i10","i11","i12","i13.PepInternalFieldGeneratorComponent","i14.PepInternalButtonComponent","i3.PepInternalFormComponent","i2.PepInternalPageService","i9.PepInternalListComponent","i2.PepInternalCaruselService","i6.PepInternalFormComponent","i20.PepInternalPageComponent","i21.PepInternalCaruselComponent","i13.PepFieldGeneratorComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pepperi-addons-ngx-lib-form.mjs","sources":["../../../projects/ngx-lib/form/indicators.component.ts","../../../projects/ngx-lib/form/indicators.component.html","../../../projects/ngx-lib/form/internal-button.component.ts","../../../projects/ngx-lib/form/internal-button.component.html","../../../projects/ngx-lib/form/internal-menu.component.ts","../../../projects/ngx-lib/form/internal-menu.component.html","../../../projects/ngx-lib/form/internal-page.service.ts","../../../projects/ngx-lib/form/internal-field-generator.component.ts","../../../projects/ngx-lib/form/internal-field-generator.component.html","../../../projects/ngx-lib/form/internal-form.component.ts","../../../projects/ngx-lib/form/internal-form.component.html","../../../projects/ngx-lib/form/internal-list.component.ts","../../../projects/ngx-lib/form/internal-list.component.html","../../../projects/ngx-lib/form/internal-page.component.ts","../../../projects/ngx-lib/form/internal-page.component.html","../../../projects/ngx-lib/form/internal-carusel.service.ts","../../../projects/ngx-lib/form/internal-carusel.component.ts","../../../projects/ngx-lib/form/internal-carusel.component.html","../../../projects/ngx-lib/form/field-generator.component.ts","../../../projects/ngx-lib/form/field-generator.component.html","../../../projects/ngx-lib/form/form.component.ts","../../../projects/ngx-lib/form/form.component.html","../../../projects/ngx-lib/form/form.module.ts","../../../projects/ngx-lib/form/public-api.ts","../../../projects/ngx-lib/form/pepperi-addons-ngx-lib-form.ts"],"sourcesContent":["import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { PepLayoutType } from '@pepperi-addons/ngx-lib';\n\n@Component({\n selector: 'pep-indicators',\n templateUrl: './indicators.component.html',\n styleUrls: ['./indicators.component.scss', './indicators.component.theme.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepIndicatorsComponent {\n @Input() key: string;\n @Input() value: string;\n\n controlType = 'indicators';\n\n @Input() layoutType: PepLayoutType = 'table';\n}\n","<div class=\"indicators-container\" [ngClass]=\"{ 'is-inside-table': layoutType === 'table' }\">\n <ng-container *ngFor=\"let value of value?.split(';')\">\n <pep-icon name=\"indicator_dot_placeholder\" class=\"pull-left flip\" [fill]=\"value\"></pep-icon>\n </ng-container>\n <ng-container *ngIf=\"key != 'ItemIndicatorsWithoutCampaign' && value?.split(';').length < 4\">\n <pep-icon name=\"indicator_dot_placeholder\" class=\"pull-left flip\"></pep-icon>\n </ng-container>\n</div>","import {\n Component,\n OnInit,\n OnChanges,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n Renderer2,\n ElementRef,\n OnDestroy,\n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport {\n PepLayoutType,\n PepCustomizationService,\n PepHorizontalAlignment,\n DEFAULT_HORIZONTAL_ALIGNMENT,\n IPepFieldClickEvent,\n PepInternalButtonFieldType,\n PepInternalButtonField,\n} from '@pepperi-addons/ngx-lib';\nimport {\n PepButton,\n IPepButtonClickEvent,\n} from '@pepperi-addons/ngx-lib/button';\nimport { pepIconSystemBin } from '@pepperi-addons/ngx-lib/icon';\n\n@Component({\n selector: 'pep-internal-button',\n templateUrl: './internal-button.component.html',\n styleUrls: ['./internal-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepInternalButtonComponent\n implements OnInit, OnChanges, OnDestroy {\n @Input() key = '';\n @Input() value = '';\n @Input() formattedValue = '';\n @Input() label = '';\n @Input() referenceObjectInternalType: any;\n @Input() type: PepInternalButtonFieldType = 'button';\n @Input() mandatory = false;\n @Input() disabled = false;\n @Input() readonly = false;\n @Input() xAlignment: PepHorizontalAlignment = DEFAULT_HORIZONTAL_ALIGNMENT;\n @Input() rowSpan = 1;\n\n private _visible = true;\n @Input()\n set visible(visible: boolean) {\n this._visible = visible;\n if (visible) {\n this.renderer.removeClass(\n this.element.nativeElement,\n 'hidden-element'\n );\n } else {\n this.renderer.addClass(\n this.element.nativeElement,\n 'hidden-element'\n );\n }\n }\n get visible(): boolean {\n return this._visible;\n }\n\n controlType = 'button';\n\n @Input() form: FormGroup = null;\n @Input() showTitle = true;\n @Input() layoutType: PepLayoutType = 'form';\n\n @Output()\n elementClick: EventEmitter<IPepFieldClickEvent> = new EventEmitter<IPepFieldClickEvent>();\n @Output()\n valueChange: EventEmitter<string> = new EventEmitter<string>();\n\n // standAlone = false;\n createNewReference = false;\n referenceButtons: Array<PepButton> = [\n {\n key: 'action',\n callback: (action: IPepButtonClickEvent) =>\n this.onButtonClicked(action.event),\n },\n {\n key: 'delete',\n callback: (action: IPepButtonClickEvent) => this.remove(),\n classNames: 'caution',\n iconName: pepIconSystemBin.name,\n },\n ];\n\n constructor(\n private customizationService: PepCustomizationService,\n private renderer: Renderer2,\n private element: ElementRef\n ) { }\n\n ngOnInit(): void {\n // if (this.form === null) {\n // this.standAlone = true;\n // // this.form = this.customizationService.getDefaultFromGroup(this.key, this.value, this.mandatory, this.readonly, this.disabled);\n // const pepField = new PepInternalButtonField({\n // key: this.key,\n // value: this.value,\n // mandatory: this.mandatory,\n // readonly: this.readonly,\n // disabled: this.disabled,\n // });\n // this.form = this.customizationService.getDefaultFromGroup(pepField);\n\n // this.formattedValue = this.formattedValue || this.value;\n // this.renderer.addClass(\n // this.element.nativeElement,\n // PepCustomizationService.STAND_ALONE_FIELD_CLASS_NAME\n // );\n // }\n }\n\n ngOnChanges(changes: any): void {\n if (this.type === 'reference') {\n this.createNewReference = this.value.length === 0;\n this.referenceButtons[0].value = this.formattedValue;\n }\n }\n\n ngOnDestroy(): void {\n //\n }\n\n // groupButtonClicked(action: IPepButtonClickEvent): void {\n // if (action.source.key === 'action') {\n // this.onButtonClicked(action.event);\n // } else if (action.source.key === 'delete') {\n // this.remove();\n // }\n // }\n\n onButtonClicked(event): void {\n if (this.type === 'reference') {\n const valueArr = this.value.split('/');\n\n this.elementClick.emit({\n key: this.key,\n value: valueArr[valueArr.length - 1], // .replace(/[^a-zA-Z0-9 ]/g, ''),\n controlType: this.controlType,\n eventWhich: event.which,\n otherData: this.referenceObjectInternalType,\n });\n } else if (this.type === 'button' && true) {\n this.elementClick.emit({\n key: this.key,\n value: this.value, // should contain the program name\n controlType: this.controlType,\n eventWhich: event.which,\n });\n } else {\n this.elementClick.emit({\n key: this.key,\n controlType: this.controlType,\n eventWhich: event.which,\n });\n }\n }\n\n hrefFunction(event): void {\n if (event.which === 1 /*|| event.which === 2*/) {\n this.onButtonClicked(event);\n }\n }\n\n openReferenceObjectInternal(event): void {\n this.elementClick.emit({\n key: this.key,\n value: this.value,\n controlType: this.controlType,\n eventWhich: event.which,\n otherData: this.referenceObjectInternalType,\n });\n }\n\n remove(): void {\n this.value = '';\n this.valueChange.emit(this.value);\n }\n}\n","<ng-container [ngSwitch]=\"type\">\n <ng-container *ngSwitchCase=\"'reference'\">\n <ng-container *ngIf=\"layoutType === 'form'; then formBlock; else notFormBlock\"></ng-container>\n <ng-template #formBlock>\n <div class=\"pep-button-container reference-button\">\n <pep-field-title [label]=\"label\" [mandatory]=\"mandatory\" [disabled]=\"disabled\" [xAlignment]=\"xAlignment\"\n [showTitle]=\"showTitle\">\n </pep-field-title>\n <ng-container *ngIf=\"createNewReference; then newBlock; else existingBlock\"></ng-container>\n <ng-template #newBlock>\n <button mat-button [id]=\"key\" title=\"{{ formattedValue }}\" class=\"pep-button md regular\"\n (click)=\"onButtonClicked($event)\" [ngClass]=\"{\n disabled: disabled,\n 'pull-left': xAlignment == 'left',\n 'pull-right': xAlignment == 'right',\n 'center-alignment': xAlignment == 'center'\n }\">\n <span class=\"ellipsis pull-left flip button-title-with-icon\">{{ 'ACTIONS.CREATE_NEW' | translate\n }}</span>\n <mat-icon class=\"pull-right flip\" pepRtlClass>\n <pep-icon name=\"number_plus\" (click)=\"onButtonClicked($event)\">\n </pep-icon>\n </mat-icon>\n </button>\n </ng-template>\n <ng-template #existingBlock>\n <pep-group-buttons [buttons]=\"referenceButtons\" styleType=\"regular\" viewType=\"split\">\n </pep-group-buttons>\n </ng-template>\n </div>\n </ng-template>\n <ng-template #notFormBlock>\n <ng-container *ngTemplateOutlet=\"linkTemplate\"></ng-container>\n </ng-template>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'listofobjects'\">\n <ng-container *ngIf=\"layoutType === 'form'; then formBlock; else notFormBlock\"></ng-container>\n <ng-template #formBlock>\n <ng-container *ngTemplateOutlet=\"buttonTemplate; context: {internal: true}\"></ng-container>\n </ng-template>\n <ng-template #notFormBlock>\n <ng-container *ngTemplateOutlet=\"linkTemplate\"></ng-container>\n </ng-template>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'button'\">\n <ng-container [ngSwitch]=\"key\">\n <ng-container *ngSwitchCase=\"'ObjectMenu'\">\n <span (click)=\"onButtonClicked($event)\" title=\"{{ key }}\">\n <mat-icon>\n <pep-icon *ngIf=\"key == 'ObjectMenu'\" name=\"system_menu\">\n </pep-icon>\n </mat-icon>\n </span>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'Agents' || 'ContactPersons' || 'Buyers'\">\n <ng-container *ngIf=\"layoutType === 'table'; then tableBlock; else nonTableBlock\">\n </ng-container>\n <ng-template #nonTableBlock>\n <ng-container *ngTemplateOutlet=\"buttonTemplate; context: {internal: true}\"></ng-container>\n </ng-template>\n <ng-template #tableBlock>\n <span [id]=\"key\" title=\"{{ formattedValue }}\" class=\"pep-report-input readonly body-sm\">{{\n formattedValue }}</span>\n </ng-template>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <ng-container *ngIf=\"layoutType === 'form'; then buttonBlock; else linkBlock\">\n </ng-container>\n\n <ng-template #buttonBlock>\n <ng-container *ngTemplateOutlet=\"buttonTemplate; context: {internal: false}\"></ng-container>\n </ng-template>\n <ng-template #linkBlock>\n <ng-container *ngTemplateOutlet=\"linkTemplate\"></ng-container>\n </ng-template>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #buttonTemplate let-internal=\"internal\">\n <div class=\"pep-button-container\">\n <pep-field-title [label]=\"label\" [mandatory]=\"mandatory\" [disabled]=\"disabled\" [xAlignment]=\"xAlignment\"\n [showTitle]=\"showTitle\">\n </pep-field-title>\n\n <ng-container *ngIf=\"internal; then internalButtonTemplate; else regularButtonTemplate\"></ng-container>\n <ng-template #regularButtonTemplate>\n <button [id]=\"key\" title=\"{{ formattedValue }}\" mat-button class=\"pep-button md regular\"\n dir=\"{{ xAlignment == 'right' ? 'rtl' : 'ltr' }}\" (click)=\"onButtonClicked($event)\"\n [disabled]=\"disabled\"\n [ngClass]=\"{disabled: disabled, 'pull-left': xAlignment == 'left', 'pull-right': xAlignment == 'right', 'center-alignment': xAlignment == 'center'}\">\n {{ formattedValue }}\n </button>\n </ng-template>\n\n <ng-template #internalButtonTemplate>\n <button [id]=\"key\" title=\"{{ formattedValue }}\" mat-button class=\"pep-button md regular\"\n dir=\"{{ xAlignment == 'right' ? 'rtl' : 'ltr' }}\" (click)=\"openReferenceObjectInternal($event)\"\n [disabled]=\"disabled\"\n [ngClass]=\"{disabled: disabled, 'pull-left': xAlignment == 'left', 'pull-right': xAlignment == 'right', 'center-alignment': xAlignment == 'center'}\">\n <ng-container *ngIf=\"formattedValue == '0' || formattedValue == ''; then newBlock; else existingBlock\">\n </ng-container>\n <ng-template #newBlock>\n <span class=\"pull-left flip button-title-with-icon\">{{ 'LIST.SELECT' | translate }} </span>\n <mat-icon>\n <pep-icon name=\"number_plus\">\n </pep-icon>\n </mat-icon>\n </ng-template>\n <ng-template #existingBlock>\n <span class=\"pull-left flip button-title-with-icon\">{{ formattedValue }} {{ 'LIST.SELECTED' |\n translate\n }} </span>\n <mat-icon>\n <pep-icon name=\"system_edit\">\n </pep-icon>\n </mat-icon>\n </ng-template>\n </button>\n </ng-template>\n </div>\n</ng-template>\n\n<ng-template #linkTemplate>\n <ng-container *ngIf=\"formattedValue?.length > 0; then notEmptyBlock; else emptyBlock\"></ng-container>\n <ng-template #notEmptyBlock>\n <a href=\"{{ value }}\" (mousedown)=\"hrefFunction($event)\" class=\"color-link\">\n <span *ngIf=\"layoutType === 'table'\" [id]=\"key\" title=\"{{ formattedValue }}\"\n class=\"body-sm pep-report-input readonly\">\n {{ formattedValue }}\n </span>\n <span *ngIf=\"layoutType !== 'table'\" [id]=\"key\" title=\"{{ formattedValue }}\" class=\"body-sm pep-card-input\"\n style=\"display: block;\">\n {{ formattedValue }}\n </span>\n </a>\n </ng-template>\n <ng-template #emptyBlock>\n <span> </span>\n </ng-template>\n</ng-template>","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n OnDestroy,\n} from '@angular/core';\nimport {\n PepLayoutType,\n IPepOption,\n PepHorizontalAlignment,\n DEFAULT_HORIZONTAL_ALIGNMENT,\n IPepFieldClickEvent,\n} from '@pepperi-addons/ngx-lib';\n\n@Component({\n selector: 'pep-internal-menu',\n templateUrl: './internal-menu.component.html',\n styleUrls: ['./internal-menu.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepInternalMenuComponent implements OnDestroy {\n @Input() key = '';\n @Input() label = '';\n @Input() disabled = false;\n @Input() xAlignment: PepHorizontalAlignment = DEFAULT_HORIZONTAL_ALIGNMENT;\n // @Input() hasSubMenu = false;\n @Input() options: IPepOption[] = [];\n // @Input() invertClass = true;\n\n controlType = 'menu';\n\n @Input() layoutType: PepLayoutType = 'form';\n @Output()\n elementClick: EventEmitter<IPepFieldClickEvent> = new EventEmitter<IPepFieldClickEvent>();\n // @Output() menuItemClick: EventEmitter<IPepFieldClickEvent> = new EventEmitter<IPepFieldClickEvent>();\n\n ngOnDestroy(): void {\n // if (this.elementClick) {\n // this.elementClick.unsubscribe();\n // }\n // if (this.menuItemClick) {\n // this.menuItemClick.unsubscribe();\n // }\n }\n\n menuClicked(event: any): void {\n this.elementClick.emit({\n key: this.key,\n controlType: this.controlType,\n eventWhich: event.which,\n });\n }\n\n menuItemClicked(itemKey: any): void {\n // Not in use comment in version 16.55 for webapp.\n // this.menuItemClick.emit({ key: itemKey });\n }\n}\n","<ng-container *ngIf=\"options?.length > 0; then subMenuBlock; else noSubMenuBlock\"></ng-container>\n<ng-template #noSubMenuBlock>\n <button (click)=\"menuClicked($event)\" title=\"{{ label }}\" mat-button\n class=\"pep-button icon-button weak special {{ layoutType === 'table' ? 'sm' : 'md' }}\" [ngClass]=\"{\n 'lock-events': disabled,\n 'left-alignment': xAlignment == 'left',\n 'right-alignment': xAlignment == 'right',\n 'center-alignment': xAlignment == 'center'\n }\">\n <mat-icon>\n <pep-icon name=\"system_menu\">\n </pep-icon>\n </mat-icon>\n </button>\n</ng-template>\n\n<ng-template #subMenuBlock>\n <button mat-button [matMenuTriggerFor]=\"menu\" menu-blur\n class=\"pep-button icon-button weak special {{ layoutType === 'table' ? 'sm' : 'md' }}\" [ngClass]=\"{\n 'left-alignment': xAlignment == 'left',\n 'right-alignment': xAlignment == 'right',\n 'center-alignment': xAlignment == 'center'\n }\" title=\"{{ label }}\">\n <mat-icon>\n <pep-icon name=\"system_menu\">\n </pep-icon>\n </mat-icon>\n </button>\n\n <mat-menu #menu=\"matMenu\" xPosition=\"{{xAlignment == 'right' ? 'after' : 'before'}}\"\n [ngClass]=\"{ rtlMenu: xAlignment == 'right' }\">\n <button *ngFor=\"let option of options\" mat-menu-item (click)=\"menuItemClicked(option.key)\">\n <span>{{ option.value | translate }}</span>\n </button>\n </mat-menu>\n\n</ng-template>","import { Injectable } from '@angular/core';\nimport { PepHttpService } from '@pepperi-addons/ngx-lib';\n\n@Injectable()\nexport class PepInternalPageService {\n private transactionUrl: string;\n private objectId: string;\n private parentId = '0';\n private searchCode: string;\n private viewType: string;\n public additionalApiName = '';\n\n constructor(private httpService: PepHttpService) {\n this.transactionUrl = 'Service1.svc/v1/OrderCenter/Transaction/';\n }\n\n getBaseParentUrl(): string {\n const url = `${this.transactionUrl}${this.objectId}/ParentLine/${this.parentId}/`;\n return url;\n }\n\n getChildren(callbackFunc: any): void {\n const body = JSON.stringify({\n TransactionUID: this.objectId,\n SearchCode: this.searchCode,\n AdditionalApiName: this.additionalApiName,\n ParentTransactionLineID: this.parentId,\n ViewType: this.viewType,\n });\n\n // Set the additional api name with view type string.\n const moreParams =\n this.additionalApiName?.length > 0\n ? `${this.additionalApiName}/${this.viewType}`\n : `''/${this.viewType}`;\n\n const url = `${this.getBaseParentUrl()}Items/${moreParams}`;\n\n this.httpService.postWapiApiCall(url, body).subscribe(\n (res) => {\n callbackFunc(res);\n }\n // (error) => {},\n // () => {}\n );\n }\n\n initDetails(\n objectId: string,\n parentId: string,\n searchCode: string,\n callbackFunc: any\n ): void {\n if (!objectId || !parentId) {\n return;\n }\n\n this.objectId = objectId;\n this.parentId = parentId;\n this.searchCode = searchCode;\n\n this.httpService\n .getWapiApiCall(`${this.getBaseParentUrl()}ViewTypes`)\n .subscribe(\n (res) => {\n callbackFunc(res);\n }\n // (error) => {},\n // () => {}\n );\n }\n\n changeChildrenViewType(viewType: string, callbackFunc: any): void {\n this.viewType = viewType;\n this.getChildren(callbackFunc);\n }\n\n changeAdditionalApiName(\n additionalApiName: string,\n callbackFunc: any\n ): void {\n this.additionalApiName = additionalApiName;\n this.getChildren(callbackFunc);\n }\n\n childPlusClick(\n itemId: string,\n fieldApiName: string,\n callbackFunc: any\n ): void {\n const body = JSON.stringify({\n TransactionUID: this.objectId,\n SearchCode: this.searchCode,\n ParentTransactionLineID: this.parentId,\n TransactionLineUID: itemId,\n FieldApiName: fieldApiName,\n ViewType: this.viewType,\n });\n\n this.httpService\n .postWapiApiCall(`${this.getBaseParentUrl()}IncrementValue`, body)\n .subscribe(\n (res) => {\n callbackFunc(res);\n }\n // (error) => {},\n // () => {}\n );\n }\n\n childMinusClick(\n itemId: string,\n fieldApiName: string,\n callbackFunc: any\n ): void {\n const body = JSON.stringify({\n TransactionUID: this.objectId,\n SearchCode: this.searchCode,\n ParentTransactionLineID: this.parentId,\n TransactionLineUID: itemId,\n FieldApiName: fieldApiName,\n ViewType: this.viewType,\n });\n\n this.httpService\n .postWapiApiCall(`${this.getBaseParentUrl()}DecrementValue`, body)\n .subscribe(\n (res) => {\n callbackFunc(res);\n }\n // (error) => {},\n // () => {}\n );\n }\n\n childValueChanged(\n itemId: string,\n fieldApiName: string,\n value: string,\n callbackFunc: any\n ): void {\n const body = JSON.stringify({\n TransactionUID: this.objectId,\n SearchCode: this.searchCode,\n ParentTransactionLineID: this.parentId,\n TransactionLineUID: itemId,\n FieldApiName: fieldApiName,\n FieldValue: value,\n ViewType: this.viewType,\n });\n\n this.httpService\n .postWapiApiCall(`${this.getBaseParentUrl()}SetFieldValue`, body)\n .subscribe(\n (res) => {\n callbackFunc(res);\n }\n // (error) => {},\n // () => {}\n );\n }\n}\n","import {\n Component,\n OnChanges,\n Input,\n Output,\n EventEmitter,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n OnDestroy,\n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport {\n PepFieldBase,\n PepLayoutType,\n IPepFieldValueChangeEvent,\n IPepFieldClickEvent,\n} from '@pepperi-addons/ngx-lib';\nimport { IPepFormFieldClickEvent, IPepFormFieldValueChangeEvent } from './form.model';\n\n@Component({\n selector: 'pep-internal-field-generator',\n templateUrl: './internal-field-generator.component.html',\n styleUrls: ['./internal-field-generator.component.scss'],\n encapsulation: ViewEncapsulation.Emulated,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepInternalFieldGeneratorComponent implements OnChanges, OnDestroy {\n private _field: any;\n @Input()\n set field(value: any) {\n this._field = value;\n }\n get field(): any {\n return this._field;\n }\n\n @Input() isActive = false;\n @Input() uid: any = null;\n @Input() form: FormGroup;\n @Input() layoutType: PepLayoutType = 'form';\n @Input() showTitle = true;\n\n @Input() checkForChanges: any = null;\n @Output()\n valueChange: EventEmitter<IPepFieldValueChangeEvent> = new EventEmitter<IPepFieldValueChangeEvent>();\n // @Output()\n // formValidationChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output()\n elementClick: EventEmitter<IPepFieldClickEvent> = new EventEmitter<IPepFieldClickEvent>();\n\n // @Output() internalFormFieldChange: EventEmitter<any> = new EventEmitter<any>();\n // @Output() internalFormFieldClick: EventEmitter<any> = new EventEmitter<any>();\n\n @Output()\n formValueChange: EventEmitter<IPepFormFieldValueChangeEvent> = new EventEmitter<IPepFormFieldValueChangeEvent>();\n @Output()\n formFieldClick: EventEmitter<IPepFormFieldClickEvent> = new EventEmitter<IPepFormFieldClickEvent>();\n\n get isValid(): boolean {\n if (this.field.readonly || this.field.disabled) {\n return true;\n } else {\n const formControl = this.form && this.form.get(this.field.key);\n\n if (formControl) {\n return formControl.valid;\n } else {\n return false;\n }\n }\n }\n\n get isTouched(): boolean {\n const formControl = this.form && this.form.get(this.field.key);\n return formControl ? formControl.touched : false;\n }\n\n get isDirty(): boolean {\n const formControl = this.form && this.form.get(this.field.key);\n return formControl ? formControl.dirty : false;\n }\n\n ngOnDestroy(): void {\n //\n }\n\n onFileChanged(fileData: any, field: PepFieldBase) {\n const value = fileData ? JSON.stringify(fileData) : '';\n const fieldValueChange = {\n key: field.key,\n value: value,\n controlType: field.controlType,\n };\n this.valueChange.emit(fieldValueChange);\n }\n\n onAddressValueChanged(\n valueChange: IPepFieldValueChangeEvent,\n field: PepFieldBase\n ) {\n const fieldValueChange = {\n key: valueChange.key,\n value: valueChange.value,\n controlType: field.controlType,\n };\n this.valueChange.emit(fieldValueChange);\n }\n\n onValueChanged(value: any, field: PepFieldBase): void {\n const fieldValueChange = {\n key: field.key,\n value: value.toString(),\n controlType: field.controlType,\n };\n this.valueChange.emit(fieldValueChange);\n }\n\n // onInternalFormFieldChanged(internalFormFieldChange: any): void {\n // this.internalFormFieldChange.emit(internalFormFieldChange);\n // }\n\n // onFormValidationChanged(formValidationChange: any): void {\n // this.formValidationChange.emit(formValidationChange);\n // }\n\n onClick(fieldClicked: any): void {\n this.elementClick.emit(fieldClicked);\n }\n\n // onInternalFormFieldClick(internalFormFieldClick: any): void {\n // this.internalFormFieldClick.emit(internalFormFieldClick);\n // }\n\n onFormValueChanged(event: IPepFormFieldValueChangeEvent): void {\n this.formValueChange.emit(event);\n }\n\n onFormFieldClick(event: IPepFormFieldClickEvent): void {\n this.formFieldClick.emit(event);\n }\n\n ngOnChanges(changes: any): void {\n // debugger;\n // For testing.\n // this.field.disabled = this.field.readonly = false;\n }\n}\n","<ng-container [ngSwitch]=\"field.controlType\" [formGroup]=\"form\">\n\n <pep-address *ngSwitchCase=\"'address'\" [form]=\"form\" [key]=\"field.key\" [formattedValue]=\"field.formattedValue\"\n [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [groupFields]=\"field.groupFields\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" (addressValueChange)=\"onAddressValueChanged($event, field)\">\n </pep-address>\n\n <pep-attachment *ngSwitchCase=\"'attachment'\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.value\"\n [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [isActive]=\"isActive\" [showTitle]=\"showTitle\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" (elementClick)=\"onClick($event)\"\n (fileChange)=\"onFileChanged($event, field)\">\n </pep-attachment>\n\n <pep-checkbox *ngSwitchCase=\"'checkbox'\" [form]=\"form\" [key]=\"field.key\"\n [value]=\"(field.value | lowercase) == 'true' || field.value == '1' ? true : false\" [label]=\"field.label\"\n [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [additionalValue]=\"field.additionalValue\"\n [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\"\n (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\">\n </pep-checkbox>\n\n <pep-date *ngSwitchCase=\"'date'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [label]=\"field.label\" [type]=\"field.type\" [mandatory]=\"field.mandatory\"\n [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [textColor]=\"field.textColor\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [minValue]=\"field.minValue\"\n [maxValue]=\"field.maxValue\" [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\"\n (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\">\n </pep-date>\n\n <pep-images-filmstrip *ngSwitchCase=\"'images'\" [uid]=\"uid\" [form]=\"form\" [key]=\"field.key\" [label]=\"field.label\"\n [showTitle]=\"showTitle\" [rowSpan]=\"field.rowSpan\" [value]=\"field.value\" [layoutType]=\"layoutType\">\n </pep-images-filmstrip>\n\n <pep-image *ngSwitchCase=\"'image'\" [uid]=\"uid\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.formattedValue\"\n [srcLarge]=\"field.value\" [options]=\"field.options\" [label]=\"field.label\" [mandatory]=\"field.mandatory\"\n [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\"\n [rowSpan]=\"field.rowSpan\" [indicatorsField]=\"field.indicatorsField\" [menuField]=\"field.menuField\"\n [hasCampaignField]=\"field.hasCampaignField\" [sizeLimitMB]=\"field.sizeLimitMB\" [isActive]=\"isActive\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" (elementClick)=\"onClick($event)\"\n (fileChange)=\"onFileChanged($event, field)\">\n </pep-image>\n\n <pep-quantity-selector *ngSwitchCase=\"'qs'\" [form]=\"form\" [key]=\"field.key\" [allowDecimal]=\"field.allowDecimal\" [value]=\"field.value\"\n [label]=\"field.label\" [type]=\"field.type\" [mandatory]=\"field.mandatory\"\n [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [textColor]=\"field.textColor\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n [additionalValue]=\"field.additionalValue\" [notificationInfo]=\"field.notificationInfo\" [isActive]=\"isActive\"\n [layoutType]=\"layoutType\" [showTitle]=\"showTitle\" [visible]=\"field.visible\"\n [minFractionDigits]=\"field.digitsNumberAfterDecimalPoint\"\n (valueChange)=\"onValueChanged($event, field)\" \n (elementClick)=\"onClick($event)\">\n </pep-quantity-selector>\n <!-- (formValidationChange)=\"onFormValidationChanged($event)\" -->\n\n <pep-rich-html-textarea *ngSwitchCase=\"'richhtmltextarea'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [maxFieldCharacters]=\"field.maxFieldCharacters\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\"\n (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\">\n </pep-rich-html-textarea>\n\n <pep-select *ngSwitchCase=\"'select'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\" [label]=\"field.label\"\n [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [options]=\"field.options\" [showTitle]=\"showTitle\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" (valueChange)=\"onValueChanged($event, field)\"\n [isActive]=\"isActive\">\n </pep-select>\n <!-- (formValidationChange)=\"onFormValidationChanged($event)\" -->\n\n <pep-separator *ngSwitchCase=\"'separator'\" [form]=\"form\" [key]=\"field.key\" [label]=\"field.label\"\n [xAlignment]=\"field.xAlignment\" [layoutType]=\"layoutType\" [visible]=\"field.visible\">\n </pep-separator>\n\n <pep-signature *ngSwitchCase=\"'signature'\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.value\" [label]=\"field.label\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [isActive]=\"isActive\" [layoutType]=\"layoutType\"\n [visible]=\"field.visible\" (fileChange)=\"onFileChanged($event, field)\">\n </pep-signature>\n\n <pep-textarea *ngSwitchCase=\"'textarea'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\" [label]=\"field.label\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [maxFieldCharacters]=\"field.maxFieldCharacters\" [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\"\n [rowSpan]=\"field.rowSpan\" [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\"\n (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\">\n </pep-textarea>\n\n <pep-textbox *ngSwitchCase=\"'textbox'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [accessory]=\"field.accessory\" [label]=\"field.label\" [placeholder]=\"field.placeholder\"\n [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [maxFieldCharacters]=\"field.maxFieldCharacters\" [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\"\n [rowSpan]=\"field.rowSpan\" [showTitle]=\"showTitle\" [layoutType]=\"layoutType\"\n [minFractionDigits]=\"field.digitsNumberAfterDecimalPoint\"\n (valueChange)=\"onValueChanged($event, field)\" \n [isActive]=\"isActive\" [visible]=\"field.visible\">\n </pep-textbox>\n <!-- (formValidationChange)=\"onFormValidationChanged($event)\" -->\n\n <pep-link *ngSwitchCase=\"'link'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\" [displayValue]=\"field.formattedValue\"\n [label]=\"field.label\" [placeholder]=\"field.placeholder\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [maxFieldCharacters]=\"field.maxFieldCharacters\" [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\"\n [rowSpan]=\"field.rowSpan\" [showTitle]=\"showTitle\" [layoutType]=\"layoutType\"\n (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\" [visible]=\"field.visible\"\n (elementClick)=\"onClick($event)\">\n </pep-link>\n <!-- (formValidationChange)=\"onFormValidationChanged($event)\" -->\n\n <pep-indicators *ngSwitchCase=\"'indicators'\" [key]=\"field.key\" [value]=\"field.value\" [layoutType]=\"layoutType\">\n </pep-indicators>\n <pep-internal-button *ngSwitchCase=\"'button'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [formattedValue]=\"field.formattedValue\" [label]=\"field.label\"\n [referenceObjectInternalType]=\"field.referenceObjectInternalType\" [type]=\"field.type\"\n [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" (elementClick)=\"onClick($event)\"\n (valueChange)=\"onValueChanged($event, field)\">\n </pep-internal-button>\n <pep-internal-menu *ngSwitchCase=\"'menu'\" [key]=\"field.key\" [label]=\"field.label\" [disabled]=\"field.disabled\"\n [xAlignment]=\"field.xAlignment\" [options]=\"field.options\" [layoutType]=\"layoutType\"\n (elementClick)=\"onClick($event)\">\n </pep-internal-menu>\n <!-- \n comment for not cause a circular reference.\n <pep-internal-page *ngSwitchCase=\"'internalPage'\" [field]=\"field\" [layoutType]=\"layoutType\"\n (internalFormFieldClick)=\"onInternalFormFieldClick($event)\"\n (internalFormFieldChange)=\"onInternalFormFieldChanged($event)\">\n </pep-internal-page>\n\n <pep-internal-carusel *ngSwitchCase=\"'internalCarusel'\" [field]=\"field\"\n (internalFormFieldClick)=\"onInternalFormFieldClick($event)\"\n (internalFormFieldChange)=\"onInternalFormFieldChanged($event)\">\n </pep-internal-carusel> \n -->\n\n <ng-container *ngSwitchCase=\"'placeholder'\">\n </ng-container>\n</ng-container>","import {\n Component,\n ChangeDetectionStrategy,\n OnInit,\n OnDestroy,\n Input,\n KeyValueDiffers,\n Output,\n EventEmitter,\n OnChanges,\n DoCheck,\n Optional,\n} from '@angular/core';\nimport {\n FormGroup,\n FormBuilder,\n Validators,\n AbstractControl,\n} from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n PepDialogService,\n PepDialogData,\n} from '@pepperi-addons/ngx-lib/dialog';\nimport {\n IPepFieldValueChangeEvent,\n IPepFieldClickEvent,\n PepLayoutType,\n FIELD_TYPE,\n PepCustomizationService,\n PepLayoutService,\n UIControl,\n UIControlField,\n ObjectsDataRow,\n ObjectsDataRowCell,\n PepFieldBase,\n PepTextboxField,\n PepSelectField,\n PepInternalMenuField,\n PepQuantitySelectorField,\n PepAddressField,\n PepIndicatorsField,\n PepInternalPageField,\n PepInternalCaruselField,\n PepInternalButtonField,\n PepAttachmentField,\n PepSignatureField,\n PepImageField,\n PepImagesField,\n PepLinkField,\n PepTextareaField,\n PepRichHtmlTextareaField,\n PepDateField,\n PepCheckboxField,\n PepSeparatorField,\n PepPlaceholderField,\n PepHorizontalAlignment,\n PepVerticalAlignment,\n X_ALIGNMENT_TYPE,\n Y_ALIGNMENT_TYPE,\n DEFAULT_VERTICAL_ALIGNMENT,\n DEFAULT_HORIZONTAL_ALIGNMENT,\n KeyValuePair,\n IPepOption,\n} from '@pepperi-addons/ngx-lib';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { IPepFormFieldValueChangeEvent, IPepFormFieldClickEvent } from './form.model';\n\n@Component({\n selector: 'pep-internal-form',\n templateUrl: './internal-form.component.html',\n styleUrls: ['./internal-form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepInternalFormComponent implements OnInit, DoCheck, OnChanges, OnDestroy {\n @Input() isInternal = true;\n @Input() isReport = false;\n @Input() layout: UIControl;\n @Input() lockEvents = false; \n @Input() canEditObject = true;\n\n private _data: ObjectsDataRow = null;\n @Input()\n set data(value: ObjectsDataRow) {\n const shouldReload = this.shouldReloadForm || !this._data;\n this._data = value;\n\n if (shouldReload) {\n this._shouldReloadForm = false;\n this.initForm();\n } else {\n this.updateForm();\n }\n }\n get data(): ObjectsDataRow {\n return this._data;\n }\n\n @Input()\n set lockFields(value: boolean) {\n this.isLocked = value;\n }\n\n @Input() isActive = false;\n @Input() layoutType: PepLayoutType = 'card';\n // @Input() listType = '';\n @Input() objectId = '0';\n @Input() parentId = '0';\n @Input() searchCode = '0';\n @Input() showTitle = true;\n @Input() firstFieldAsLink = false;\n @Input() checkForChanges: any = null;\n\n @Output()\n valueChange: EventEmitter<IPepFormFieldValueChangeEvent> = new EventEmitter<IPepFormFieldValueChangeEvent>();\n @Output()\n formValidationChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @Output()\n fieldClick: EventEmitter<IPepFormFieldClickEvent> = new EventEmitter<IPepFormFieldClickEvent>();\n\n // @Output() internalFormFieldClick: EventEmitter<any> = new EventEmitter<any>();\n // @Output() internalFormFieldChange: EventEmitter<any> = new EventEmitter<any>();\n\n isLocked = false;\n formGutterSize;\n cardGutterSize;\n rowHeight;\n // private matrixIsLast = false;\n // lastUpdatedFieldApiName: string = '';\n form: FormGroup;\n differ: any;\n\n // payLoad = '';\n private rows: Array<PepFieldBase[]> = [];\n fields: PepFieldBase[] = [];\n\n private _fieldsSubject: BehaviorSubject<PepFieldBase[]> = new BehaviorSubject<PepFieldBase[]>([]);\n get fields$(): Observable<PepFieldBase[]> {\n return this._fieldsSubject.asObservable();\n }\n\n columns = 1;\n\n private hasMenuFloatingOnOtherField = false;\n private menuField: any;\n private menuDataField: any;\n private hasCampaignField: any;\n private hasCampaignDataField: any;\n private indicatorsField: any;\n private indicatorsDataField: any = null;\n\n private _shouldReloadForm = false;\n get shouldReloadForm(): boolean {\n return this._shouldReloadForm;\n }\n\n // eventServiceSub: Subscription;\n // public jsonLib = JSON;\n\n constructor(\n private dialogService: PepDialogService,\n private customizationService: PepCustomizationService,\n private layoutService: PepLayoutService,\n private fb: FormBuilder,\n differs: KeyValueDiffers,\n private translate: TranslateService\n ) {\n // store the initial value to compare with\n this.differ = differs.find({}).create();\n }\n\n convertXAlignToHorizontalAlign(\n xAlign: X_ALIGNMENT_TYPE\n ): PepHorizontalAlignment {\n let res = DEFAULT_HORIZONTAL_ALIGNMENT;\n\n if (\n xAlign === X_ALIGNMENT_TYPE.None ||\n xAlign === X_ALIGNMENT_TYPE.Left\n ) {\n res = 'left';\n } else if (xAlign === X_ALIGNMENT_TYPE.Right) {\n res = 'right';\n } else {\n res = 'center';\n }\n\n return res;\n }\n\n convertYAlignToVerticalAlign(\n yAlign: Y_ALIGNMENT_TYPE\n ): PepVerticalAlignment {\n let res = DEFAULT_VERTICAL_ALIGNMENT;\n\n if (\n yAlign === Y_ALIGNMENT_TYPE.None ||\n yAlign === Y_ALIGNMENT_TYPE.Top\n ) {\n res = 'top';\n } else if (yAlign === Y_ALIGNMENT_TYPE.Bottom) {\n res = 'bottom';\n } else {\n res = 'middle';\n }\n\n return res;\n }\n\n convertOptionalValues(\n optionalValues: Array<KeyValuePair<string>>\n ): IPepOption[] {\n if (optionalValues && optionalValues.length > 0) {\n return optionalValues.map((ov) => {\n return { key: ov.Key, value: ov.Value };\n });\n } else {\n return [];\n }\n }\n\n convertAddressFields(\n controlField: UIControlField,\n addressFields: Array<ObjectsDataRowCell>,\n canEditObject: boolean\n ): PepFieldBase[] {\n const fields: PepFieldBase[] = [];\n\n addressFields.forEach((field) => {\n let customField: PepFieldBase;\n const placeholder = field.ApiName;\n\n if (field.ApiName.toLowerCase().indexOf('street') >= 0) {\n customField = new PepTextboxField({\n key: field.ApiName,\n label: field.ApiName,\n type: 'text',\n placeholder,\n readonly: !canEditObject,\n disabled: !field.Enabled || !canEditObject,\n hidden: false,\n mandatory: false,\n value: field.Value,\n formattedValue: field.FormattedValue,\n row: 0,\n rowSpan: 1,\n col: 0,\n colSpan: 2,\n xAlignment: this.convertXAlignToHorizontalAlign(\n controlField.Layout.XAlignment\n ),\n yAlignment: this.convertYAlignToVerticalAlign(\n controlField.Layout.YAlignment\n ),\n order: 0,\n });\n } else if (field.ApiName.toLowerCase().indexOf('city') >= 0) {\n customField = new PepTextboxField({\n key: field.ApiName,\n label: field.ApiName,\n type: 'text',\n placeholder,\n readonly: !canEditObject,\n disabled: !field.Enabled || !canEditObject,\n hidden: false,\n mandatory: false,\n value: field.Value,\n formattedValue: field.FormattedValue,\n row: 0,\n rowSpan: 1,\n col: 2,\n colSpan: 1,\n xAlignment: this.convertXAlignToHorizontalAlign(\n controlField.Layout.XAlignment\n ),\n yAlignment: this.convertYAlignToVerticalAlign(\n controlField.Layout.YAlignment\n ),\n order: 1,\n });\n } else if (field.ApiName.toLowerCase().indexOf('state') >= 0) {\n customField = new PepSelectField({\n key: field.ApiName,\n label: field.ApiName,\n placeholder,\n options: this.convertOptionalValues(field.OptionalValues),\n readonly: !canEditObject,\n disabled: !field.Enabled || !canEditObject,\n hidden: false,\n mandatory: false,\n value: field.Value,\n formattedValue: field.FormattedValue,\n row: 1,\n rowSpan: 1,\n col: 0,\n colSpan: 1,\n xAlignment: this.convertXAlignToHorizontalAlign(\n controlField.Layout.XAlignment\n ),\n yAlignment: this.convertYAlignToVerticalAlign(\n controlField.Layout.YAlignment\n ),\n order: 2,\n });\n } else if (field.ApiName.toLowerCase().indexOf('zipcode') >= 0) {\n customField = new PepTextboxField({\n key: field.ApiName,\n label: field.ApiName,\n type: 'text',\n placeholder,\n readonly: !canEditObject,\n disabled: !field.Enabled || !canEditObject,\n hidden: false,\n mandatory: false,\n value: field.Value,\n formattedValue: field.FormattedValue,\n row: 1,\n rowSpan: 1,\n col: 1,\n colSpan: 1,\n xAlignment: this.convertXAlignToHorizontalAlign(\n controlField.Layout.XAlignment\n ),\n yAlignment: this.convertYAlignToVerticalAlign(\n controlField.Layout.YAlignment\n ),\n order: 3,\n });\n } else if (field.ApiName.toLowerCase().indexOf('country') >= 0) {\n customField = new PepSelectField({\n key: field.ApiName,\n label: field.ApiName,\n placeholder,\n options: this.convertOptionalValues(field.OptionalValues),\n readonly: !canEditObject,\n disabled: !field.Enabled || !canEditObject,\n hidden: false,\n mandatory: false,\n value: field.Value,\n formattedValue: field.FormattedValue,\n row: 2,\n rowSpan: 1,\n col: 2,\n colSpan: 1,\n xAlignment: this.convertXAlignToHorizontalAlign(\n controlField.Layout.XAlignment\n ),\n yAlignment: this.convertYAlignToVerticalAlign(\n controlField.Layout.YAlignment\n ),\n order: 4,\n });\n }\n\n fields.push(customField);\n });\n\n return fields.sort((n1, n2) =>\n n1.order > n2.order ? 1 : n1.order < n2.order ? -1 : 0\n );\n }\n\n isMatrixField(apiNameToCheck: string): boolean {\n return apiNameToCheck.indexOf('Matrix') >= 0;\n }\n\n doesFieldHavaFloatingField(\n controlField: UIControlField,\n floatingField: any\n ): boolean {\n let hasFloatingField = false;\n if (\n floatingField.Layout.Y >= controlField.Layout.Y &&\n floatingField.Layout.Y <\n controlField.Layout.Y + controlField.Layout.Height &&\n floatingField.Layout.X >= controlField.Layout.X &&\n floatingField.Layout.X <\n controlField.Layout.X + controlField.Layout.Width\n ) {\n hasFloatingField = true;\n }\n\n return hasFloatingField;\n }\n\n getOptionsForCustomField(\n controlField: UIControlField,\n dataField: any,\n canEditObject: boolean\n ): any {\n if (!controlField || !dataField) {\n return;\n }\n\n const placeholder =\n controlField.ReadOnly || !canEditObject ? '' : controlField.Title;\n\n return {\n key: controlField.ApiName,\n label: controlField.Title,\n accessory: dataField.Accessory,\n placeholder,\n readonly: controlField.ReadOnly || !canEditObject,\n disabled: !dataField.Enabled || !canEditObject,\n hidden: controlField.Hidden,\n mandatory: controlField.Mandatory,\n value: dataField.Value,\n formattedValue: dataField.FormattedValue,\n additionalValue: dataField.AdditionalValue,\n row: controlField.Layout.Y,\n rowSpan: controlField.Layout.Height,\n col: controlField.Layout.X,\n colSpan: controlField.Layout.Width,\n xAlignment: this.convertXAlignToHorizontalAlign(\n controlField.Layout.XAlignment\n ),\n yAlignment: this.convertYAlignToVerticalAlign(\n controlField.Layout.YAlignment\n ),\n options: this.convertOptionalValues(dataField.OptionalValues),\n groupFields: undefined,\n maxFieldCharacters: controlField.MaxFieldCharacters,\n minValue: controlField.MinValue,\n maxValue: controlField.MaxValue,\n // hasMenu: hasMenu,\n // hasCampaign: hasCampaign,\n // hasIndicators: hasIndicators,\n textColor: dataField.TextColor,\n visible: dataField.Visible,\n digitsNumberAfterDecimalPoint: dataField.DigitsNumberAfterDecimalPoint,\n };\n }\n\n convertToCustomField(\n controlField: UIControlField,\n dataField: any,\n canEditObject: boolean,\n menuField: any,\n hasCampaignField: any,\n indicatorsField: any,\n objectId: any,\n parentId: any,\n searchCode: any\n ): PepFieldBase {\n let customField: PepFieldBase;\n const options = this.getOptionsForCustomField(\n controlField,\n dataField,\n canEditObject\n );\n\n if (controlField.ApiName === 'ObjectMenu') {\n options.type = 'menu';\n customField = new PepInternalMenuField(options);\n } else if (\n controlField.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n controlField.FieldType ===\n FIELD_TYPE.NumberIntegerQuantitySelector ||\n controlField.ApiName === 'QuantitySelector' ||\n controlField.ApiName === 'UnitsQuantity' ||\n controlField.ApiName.indexOf('size_') === 0\n ) {\n if (dataField.FieldType === FIELD_TYPE.InternalLink) {\n options.type = 'button';\n } else if (dataField.FieldType === FIELD_TYPE.Package) {\n options.type = 'packageButton';\n } else if (\n dataField.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n dataField.FieldType === FIELD_TYPE.NumberReal\n ) {\n options.type = 'qs';\n options.allowDecimal = true;\n } else if (\n dataField.FieldType ===\n FIELD_TYPE.NumberIntegerQuantitySelector ||\n dataField.FieldType === FIELD_TYPE.NumberInteger\n ) {\n options.type = 'qs';\n options.allowDecimal = false;\n } else if (\n dataField.FieldType === FIELD_TYPE.NumberIntegerForMatrix\n ) {\n options.type = 'qsForMatrix';\n options.allowDecimal = false;\n } else if (dataField.FieldType === FIELD_TYPE.NumberRealForMatrix) {\n options.type = 'qsForMatrix';\n options.allowDecimal = true;\n }\n\n options.notificationInfo = dataField.NotificationInfo;\n customField = new PepQuantitySelectorField(options);\n } else {\n // HACK: need to remove this..\n if (\n dataField.FieldType === FIELD_TYPE.Indicators &&\n this.isMatrixField(dataField.ApiName)\n ) {\n dataField.FieldType = FIELD_TYPE.InternalPage;\n }\n\n switch (dataField.FieldType) {\n case FIELD_TYPE.Address: {\n const canEditGroupObject = controlField.ReadOnly\n ? false\n : canEditObject;\n options.groupFields = this.convertAddressFields(\n controlField,\n dataField.GroupFields,\n canEditGroupObject\n );\n customField = new PepAddressField(options);\n break;\n }\n case FIELD_TYPE.Indicators: {\n // options['type'] = 'indicators'; // Not needed this is PepIndicatorsField.\n customField = new PepIndicatorsField(options);\n break;\n }\n case FIELD_TYPE.InternalPage: {\n if (this.isMatrixField(controlField.ApiName)) {\n options.rowSpan = controlField.Layout.Height;\n options.objectId = objectId;\n options.parentId = parentId;\n options.searchCode = searchCode;\n\n customField = new PepInternalPageField(options);\n } else {\n // Not supported\n }\n break;\n }\n case FIELD_TYPE.RelatedObjectsCards: {\n options.rowSpan = controlField.Layout.Height;\n options.searchCode = searchCode;\n options.pageInfo = dataField.UIPageInfo;\n\n customField = new PepInternalCaruselField(options);\n break;\n }\n case FIELD_TYPE.Link: {\n options.type = 'link';\n customField = new PepLinkField(options);\n break;\n }\n case FIELD_TYPE.InternalLink:\n case FIELD_TYPE.Button: {\n options.type = 'button';\n customField = new PepInternalButtonField(options);\n break;\n }\n case FIELD_TYPE.Attachment: {\n // options.type = 'attachment';\n customField = new PepAttachmentField(options);\n break;\n }\n case FIELD_TYPE.Signature: {\n // options.type = 'signature';\n customField = new PepSignatureField(options);\n break;\n }\n case FIELD_TYPE.Image:\n case FIELD_TYPE.ImageURL: {\n // options.type = 'image';\n options.menuField =\n menuField &&\n this.doesFieldHavaFloatingField(controlField, menuField)\n ? menuField\n : null;\n options.hasCampaignField =\n hasCampaignField &&\n this.doesFieldHavaFloatingField(\n controlField,\n hasCampaignField\n )\n ? hasCampaignField\n : null;\n options.indicatorsField =\n indicatorsField &&\n this.doesFieldHavaFloatingField(\n controlField,\n indicatorsField\n )\n ? indicatorsField\n : null;\n\n customField = new PepImageField(options);\n break;\n }\n case FIELD_TYPE.Images: {\n // options.type = 'images';\n customField = new PepImagesField(options);\n break;\n }\n case FIELD_TYPE.Email: {\n options.type = 'email';\n customField = new PepLinkField(options);\n break;\n }\n case FIELD_TYPE.Phone: {\n options.type = 'phone';\n customField = new PepLinkField(options);\n break;\n }\n case FIELD_TYPE.Duration: {\n options.type = 'duration';\n customField = new PepTextboxField(options);\n break;\n }\n case FIELD_TYPE.Default:\n case FIELD_TYPE.TextBox:\n case FIELD_TYPE.LimitedLengthTextBox:\n case FIELD_TYPE.TextHeader:\n case FIELD_TYPE.CalculatedString:\n case FIELD_TYPE.MapDataString: {\n customField = new PepTextboxField(options);\n break;\n }\n case FIELD_TYPE.TextArea: {\n customField = new PepTextareaField(options);\n break;\n }\n\n case FIELD_TYPE.RichTextHTML: {\n customField = new PepRichHtmlTextareaField(options);\n break;\n }\n case FIELD_TYPE.Date:\n case FIELD_TYPE.LimitedDate:\n case FIELD_TYPE.CalculatedDate:\n case FIELD_TYPE.DateAndTime: {\n options.type =\n dataField.FieldType === FIELD_TYPE.DateAndTime\n ? 'datetime'\n : 'date';\n customField = new PepDateField(options);\n break;\n }\n case FIELD_TYPE.NumberInteger:\n case FIELD_TYPE.CalculatedInt:\n case FIELD_TYPE.MapDataInt: {\n options.type = 'int';\n customField = new PepTextboxField(options);\n break;\n }\n case FIELD_TYPE.Percentage: {\n options.type = 'percentage';\n customField = new PepTextboxField(options);\n break;\n }\n case FIELD_TYPE.Currency: {\n options.type = 'currency';\n customField = new PepTextboxField(options);\n break;\n }\n case FIELD_TYPE.NumberReal:\n case FIELD_TYPE.CalculatedReal:\n case FIELD_TYPE.MapDataReal:\n case FIELD_TYPE.Sum:\n case FIELD_TYPE.Totals: {\n options.type = 'real';\n customField = new PepTextboxField(options);\n break;\n }\n case FIELD_TYPE.Boolean:\n case FIELD_TYPE.CalculatedBool: {\n customField = new PepCheckboxField(options);\n break;\n }\n case FIELD_TYPE.BooleanText: {\n options.type = 'booleanText';\n customField = new PepCheckboxField(options);\n break;\n }\n case FIELD_TYPE.ComboBox:\n case FIELD_TYPE.EmptyComboBox:\n case FIELD_TYPE.MapDataDropDown: {\n // options.type = 'select';\n customField = new PepSelectField(options);\n break;\n }\n case FIELD_TYPE.MultiTickBox:\n case FIELD_TYPE.MultiTickBoxToComboBox:\n case FIELD_TYPE.EmptyMultiTickBox: {\n options.type = 'multi';\n customField = new PepSelectField(options);\n break;\n }\n case FIELD_TYPE.GuidReferenceType: {\n options.type = 'reference';\n options.referenceObjectType = dataField.ReferenceObjectType;\n options.referenceObjectSubType =\n dataField.ReferenceObjectSubType;\n options.referenceObjectInternalType =\n dataField.ReferenceObjectInternalType;\n customField = new PepInternalButtonField(options);\n break;\n }\n case FIELD_TYPE.ListOfObjects: {\n options.type = 'listofobjects';\n customField = new PepInternalButtonField(options);\n break;\n }\n case FIELD_TYPE.Separator: {\n customField = new PepSeparatorField(options);\n break;\n }\n /*\n case FIELD_TYPE.Images: return that.field(value);\n */\n case FIELD_TYPE.NumberRealQuantitySelector:\n case FIELD_TYPE.NumberIntegerQuantitySelector: {\n options.type = 'qs';\n options.allowDecimal =\n dataField.FieldType ===\n FIELD_TYPE.NumberRealQuantitySelector;\n options.notificationInfo = dataField.NotificationInfo;\n\n customField = new PepQuantitySelectorField(options);\n break;\n }\n case FIELD_TYPE.Package: {\n options.type = 'packageButton';\n options.notificationInfo = dataField.NotificationInfo;\n\n customField = new PepQuantitySelectorField(options);\n break;\n }\n }\n }\n\n if (!customField) {\n options.label = controlField.ApiName + ' is not supported!!!';\n customField = new PepSeparatorField(options);\n }\n\n return customField;\n }\n\n getFieldFormattedValue(field: PepFieldBase): string {\n let fieldFormattedValue = field.formattedValue || field.value;\n\n // Fix for the custom check box component.\n if (field.controlType === 'checkbox') {\n fieldFormattedValue = fieldFormattedValue === 'true';\n }\n\n // Fix for the custom button component.\n if (field.controlType === 'button') {\n fieldFormattedValue =\n fieldFormattedValue === '0' ? '' : fieldFormattedValue;\n }\n\n return fieldFormattedValue;\n }\n\n private toControlGroup(fields: PepFieldBase[]): FormGroup {\n const group = {};\n if (fields && fields.length > 0) {\n fields.forEach((field) => {\n if (field.groupFields && field.groupFields.length > 0) {\n const subGroup = {};\n\n field.groupFields.forEach((groupField) => {\n if (\n groupField.mandatory &&\n !field.readonly &&\n !field.disabled\n ) {\n subGroup[groupField.key] = [\n {\n value: groupField.formattedValue || '',\n disabled:\n field.readonly ||\n field.disabled ||\n groupField.disabled,\n },\n [Validators.required],\n ];\n } else {\n subGroup[groupField.key] = [\n {\n value: groupField.formattedValue || '',\n disabled:\n field.readonly ||\n field.disabled ||\n groupField.disabled,\n },\n [Validators.nullValidator],\n ];\n }\n });\n\n group[field.key] = this.fb.group(subGroup);\n } else {\n const validators = field.getValidators();\n const fieldFormattedValue = this.getFieldFormattedValue(\n field\n );\n\n group[field.key] = [\n {\n value: fieldFormattedValue || '',\n disabled: field.disabled,\n },\n validators,\n ];\n }\n });\n }\n\n return this.fb.group(group);\n }\n\n private createBaseField(uiControlField: UIControlField, dataField: any) {\n const customField: PepFieldBase = this.convertToCustomField(\n uiControlField,\n dataField,\n this.canEditObject,\n this.menuDataField,\n this.hasCampaignDataField,\n this.indicatorsDataField,\n this.objectId,\n this.parentId,\n this.searchCode\n );\n\n return customField;\n }\n\n public showFormValidationMessage(): void {\n const fields: PepFieldBase[] = this.fields;\n let emptyMandatoryFieldsMsg = '';\n let notValidFieldsMsg = '';\n\n // for (let i: number = 0; i < fields.length; i++) {\n // let field = fields[i];\n for (const field of fields) {\n const formControl = this.form && this.form.get(field.key);\n\n if (formControl) {\n // Mandatory is empty.\n if (\n field.mandatory &&\n formControl.value.toString().trim().length === 0\n ) {\n emptyMandatoryFieldsMsg +=\n '<li><small>' + field.label + '</small></li>';\n } else if (!field.disabled && !formControl.valid) {\n notValidFieldsMsg +=\n '<li><small>' + field.label + '</small></li>';\n }\n }\n }\n\n // Add the header message of the empty mandatory fields\n if (emptyMandatoryFieldsMsg.length > 0) {\n emptyMandatoryFieldsMsg =\n '<div>' +\n this.translate.instant('MESSAGES.ERROR_MANDATORY_FIELDS') +\n \"</div><ul style='padding: 0 20px;'>\" +\n emptyMandatoryFieldsMsg +\n '</ul><br/>';\n }\n\n // Add the header message of the empty mandatory fields\n if (notValidFieldsMsg.length > 0) {\n notValidFieldsMsg =\n '<div>' +\n this.translate.instant('MESSAGES.ERROR_INVALID_FIELDS') +\n \"</div><ul style='padding: 0 20px;'>\" +\n notValidFieldsMsg +\n '</ul>';\n }\n\n const title = this.translate.instant('MESSAGES.TITLE_NOTICE');\n const data = new PepDialogData({\n title,\n content: emptyMandatoryFieldsMsg + notValidFieldsMsg,\n });\n this.dialogService.openDefaultDialog(data);\n }\n\n ngOnInit(): void {\n const themeVars = this.customizationService.getThemeVariables();\n // convert rem to pixel\n const RemToPixel = 16;\n this.formGutterSize =\n this.customizationService.getNumberThemeVariable(\n themeVars,\n PepCustomizationService.FORM_SPACEING_KEY\n ) * RemToPixel;\n this.cardGutterSize =\n this.customizationService.getNumberThemeVariable(\n themeVars,\n PepCustomizationService.CARD_SPACEING_KEY\n ) * RemToPixel;\n }\n\n ngDoCheck(): void {\n const changes = this.differ.diff(this.data); // check for changes\n if (changes) {\n this.updateForm();\n this.checkForChanges = new Date();\n }\n }\n\n ngOnChanges(changes): void {\n // if (changes.data && changes.data.currentValue) {\n // // Load changes\n // if (!this.shouldReloadForm && changes.data.previousValue) {\n // this.data = changes.data.currentValue;\n // this.updateForm();\n // } else {\n // this._shouldReloadForm = false;\n // this.initForm();\n // }\n // }\n // if (this.shouldReloadForm || !changes?.data?.previousValue) {\n // this._shouldReloadForm = false;\n // this.initForm();\n // this.checkForChanges = new Date();\n // }\n }\n\n ngOnDestroy(): void {\n //\n }\n\n getUiControlFields(): Array<UIControlField> {\n return this.layout ? this.layout.ControlFields : [];\n }\n\n initFieldsStructure(fields: PepFieldBase[], maxRow: number): void {\n const themeVars = this.customizationService.getThemeVariables();\n\n // Set form row height.\n if (this.layoutType === 'card') {\n const cardFieldHeight = this.customizationService.getNumberThemeVariable(\n themeVars,\n PepCustomizationService.CARD_FIELD_HEIGHT_KEY\n );\n this.rowHeight = cardFieldHeight;\n } else {\n const rowFieldHeight = this.customizationService.getNumberThemeVariable(\n themeVars,\n PepCustomizationService.FORM_FIELD_HEIGHT_KEY\n );\n const rowFieldTitleHeight = this.customizationService.getNumberThemeVariable(\n themeVars,\n PepCustomizationService.FORM_FIELD_TITLE_HEIGHT_KEY\n );\n this.rowHeight = rowFieldHeight + rowFieldTitleHeight;\n }\n\n // Create the fields structure (the fields must be sorted!!!).\n if (fields.length > 0) {\n // Init the layout.\n if (\n // this.layoutType === 'form' ||\n this.layoutType === 'table'\n ) {\n this.fields = fields;\n this._fieldsSubject.next(fields);\n\n this.rows = [];\n\n for (let i = 0; i <= maxRow; i++) {\n this.rows[i] = [];\n }\n\n // for (let i = 0; i < fields.length; i++) {\n // const field = fields[i]\n for (const field of fields) {\n this.rows[field.row].push(field);\n }\n } else {\n const doesfieldExistIn: boolean[][] = new Array(maxRow);\n\n for (let i = 0; i < doesfieldExistIn.length; i++) {\n doesfieldExistIn[i] = new Array(this.columns);\n\n for (let j = 0; j < doesfieldExistIn[i].length; j++) {\n doesfieldExistIn[i][j] = false;\n }\n }\n\n // Run in squere (row - colspan, col - rowspan) and put true where it should.\n // for (let index = 0; index < fields.length; index++) {\n // const currentField = fields[index];\n for (const currentField of fields) {\n if (currentField.rowSpan > 1) {\n for (\n let row: number = currentField.row;\n row < currentField.row + currentField.rowSpan;\n row++\n ) {\n if (currentField.colSpan > 1) {\n for (\n let col: number = currentField.col;\n col <\n currentField.col + currentField.colSpan;\n col++\n ) {\n if (\n doesfieldExistIn.length > row &&\n doesfieldExistIn[0].length > col\n ) {\n doesfieldExistIn[row][col] = true;\n }\n }\n } else {\n if (\n doesfieldExistIn.length > row &&\n doesfieldExistIn[0].length >\n currentField.col\n ) {\n doesfieldExistIn[row][\n currentField.col\n ] = true;\n }\n }\n }\n } else if (currentField.colSpan > 1) {\n for (\n let col: number = currentField.col;\n col < currentField.col + currentField.colSpan;\n col++\n ) {\n if (\n doesfieldExistIn.length > currentField.row &&\n doesfieldExistIn[0].length > col\n ) {\n doesfieldExistIn[currentField.row][col] = true;\n }\n }\n } else {\n if (\n doesfieldExistIn.length > currentField.row &&\n doesfieldExistIn[0].length > currentField.col\n ) {\n doesfieldExistIn[currentField.row][\n currentField.col\n ] = true;\n }\n }\n }\n\n // Create empty fields where doesfieldExistIn is false (For the md-grid-list UI Component).\n for (let i = 0; i < doesfieldExistIn.length; i++) {\n for (let j = 0; j < doesfieldExistIn[i].length; j++) {\n if (!doesfieldExistIn[i][j]) {\n // Create empty field and add it to the fields list.\n fields.push(\n new PepPlaceholderField({\n key: i + '_' + j,\n label: '',\n placeholder: '',\n readonly: false,\n disabled: false,\n hidden: false,\n mandatory: false,\n value: '',\n formattedValue: '',\n row: i,\n rowSpan: 1,\n col: j,\n colSpan: 1,\n order: 1,\n })\n );\n }\n }\n }\n\n // Sort the fields again.\n this.fields = fields.sort((f1, f2) =>\n f1.row > f2.row\n ? 1\n : f1.row < f2.row\n ? -1\n : f1.col > f2.col\n ? 1\n : f1.col < f2.col\n ? -1\n : 0\n );\n this._fieldsSubject.next(fields);\n }\n }\n }\n\n setForm(isForUpdate = false): void {\n let allFieldsAreReadOnly = true;\n\n if (!isForUpdate) {\n const fields = [];\n for (const currentField of this.fields) {\n // Add all fields except 'internalPage' (for children).\n if (currentField.controlType !== 'internalPage') {\n fields.push(currentField);\n }\n\n if (!currentField.readonly) {\n allFieldsAreReadOnly = false;\n }\n }\n\n this.form = this.toControlGroup(fields);\n } else {\n // Update form values if changed by calculated fields.\n for (let i = 0; i < this.fields.length; i++) {\n let currentField = this.fields[i];\n\n if (currentField.controlType === 'internalCarusel') {\n // Hack to override (update) the field.\n const uiControlField = this.getUiControlFields().find(cf => cf.ApiName === currentField.key);\n const dataField = this.data.Fields.find(df => df.ApiName === currentField.key);\n currentField = this.createBaseField(uiControlField, dataField);\n this._fieldsSubject.value[i] = currentField;\n } else if (currentField.controlType !== 'internalPage') {\n if (\n currentField.groupFields &&\n currentField.groupFields.length > 0\n ) {\n // for (let j = 0; j < currentField.groupFields.length; j++) {\n // let currentGroupField = currentField.groupFields[j];\n for (const currentGroupField of currentField.groupFields) {\n const fieldFormattedValue = this.getFieldFormattedValue(\n currentGroupField\n );\n this.customizationService.updateFormField(\n this.form,\n currentGroupField,\n fieldFormattedValue,\n currentField\n );\n }\n } else {\n const fieldFormattedValue = this.getFieldFormattedValue(\n currentField\n );\n // this.form.controls[currentField.key].setValue(fieldFormattedValue);\n this.customizationService.updateFormField(\n this.form,\n currentField,\n fieldFormattedValue\n );\n }\n }\n\n if (!currentField.readonly) {\n allFieldsAreReadOnly = false;\n }\n }\n }\n\n let isFormValid = this.form?.valid;\n\n // Change validation to true if all fields are read only.\n if (!isFormValid && allFieldsAreReadOnly) {\n isFormValid = true;\n }\n\n this.onFormValidationChanged(isFormValid);\n\n // Set it to false to enable all fields.\n if (this.isInternal && this.isLocked) {\n this.isLocked = false; \n }\n }\n\n initForm(): void {\n if (this.data && this.data.Fields) {\n const fields: PepFieldBase[] = this.convertCustomFields(\n this.getUiControlFields(),\n this.data.Fields\n );\n\n const maxRow = Math.max(\n ...fields.map((f) => {\n return f.row + f.rowSpan;\n })\n );\n this.columns = Math.max(\n ...fields.map((f) => {\n return f.col + f.colSpan;\n })\n );\n\n this.initFieldsStructure(fields, maxRow);\n this.setForm();\n }\n }\n\n private updateField(\n customField: PepFieldBase,\n updatedField: ObjectsDataRowCell\n ): void {\n const options: any = {\n disabled: !updatedField.Enabled || !this.canEditObject,\n readonly: !updatedField.Enabled || !this.canEditObject,\n visible: updatedField.Visible,\n value: updatedField.Value,\n additionalValue: updatedField.AdditionalValue,\n formattedValue: updatedField.FormattedValue,\n textColor: updatedField.TextColor,\n digitsNumberAfterDecimalPoint: updatedField.DigitsNumberAfterDecimalPoint,\n };\n\n if (customField instanceof PepQuantitySelectorField) {\n const notificationInfo = updatedField.NotificationInfo;\n options.notificationInfo = notificationInfo;\n\n // Change type if it's change (only for allowDecimal).\n let allowDecimal = false;\n if (updatedField.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n updatedField.FieldType === FIELD_TYPE.NumberReal ||\n updatedField.FieldType === FIELD_TYPE.NumberRealForMatrix\n ) {\n allowDecimal = true;\n } \n \n options.allowDecimal = allowDecimal;\n\n } else if (customField instanceof PepSelectField) {\n options.options = this.convertOptionalValues(\n updatedField.OptionalValues\n );\n\n if (!options.options || options.options.length === 0) {\n options.options.push({\n key: options.value,\n value: options.formattedValue,\n });\n }\n } else if (customField instanceof PepInternalCaruselField) {\n options.pageInfo = updatedField.UIPageInfo;\n }\n\n customField.update(options);\n }\n\n updateForm(): void {\n if (this.data && this.data.Fields) {\n for (const currentField of this.data.Fields) {\n const customField = this.fields.filter(\n (f) => f.key === currentField.ApiName\n )[0];\n // Update all fields except 'internalPage' type (for children).\n if (customField && customField.controlType !== 'internalPage') {\n this.updateField(customField, currentField);\n\n // Update the group fields.\n if (\n customField.controlType === 'address' &&\n currentField.GroupFields\n ) {\n // for (let j = 0; j < currentField.GroupFields.length; j++) {\n // let currentGroupField = currentField.GroupFields[j];\n for (const currentGroupField of currentField.GroupFields) {\n currentGroupField.Enabled = !currentField.Enabled\n ? false\n : currentGroupField.Enabled;\n\n const customGroupField = customField.groupFields.filter(\n (f) => f.key === currentGroupField.ApiName\n )[0];\n this.updateField(\n customGroupField,\n currentGroupField\n );\n }\n }\n }\n }\n\n this.setForm(true);\n }\n }\n\n public ReloadForm(): void {\n this._shouldReloadForm = true;\n }\n\n // onSubmit() {\n // if (this.form.valid) {\n // this.payLoad = JSON.stringify(this.form.value);\n // //this.submitted.emit(this.form.value);\n // }\n // }\n\n private getFormControlById(key: string): AbstractControl | null {\n let formControl = null;\n\n this.fields.forEach((field) => {\n if (field.key === key) {\n formControl = this.form.get(field.key);\n return;\n } else if (field.groupFields && field.groupFields.length > 0) {\n field.groupFields.forEach((groupField) => {\n if (groupField.key === key) {\n formControl = this.form.get(\n field.key + '.' + groupField.key\n );\n return;\n }\n });\n }\n });\n\n return formControl;\n }\n\n private setSpecialFields(\n controlFields: Array<any>,\n dataFields: Array<any>\n ): void {\n // let cf;\n // for (let index = 0; index < controlFields.length; index++) {\n // cf = controlFields[index];\n for (const cf of controlFields) {\n if (cf.ApiName === 'ObjectMenu') {\n this.menuField = cf;\n } else if (cf.ApiName === 'ItemHasActiveCampaign') {\n this.hasCampaignField = cf;\n } else if (cf.ApiName === 'ItemIndicatorsWithoutCampaign') {\n this.indicatorsField = cf;\n }\n }\n\n // let df;\n // for (let index = 0; index < dataFields.length; index++) {\n // df = dataFields[index];\n for (const df of dataFields) {\n if (df.ApiName === 'ObjectMenu') {\n this.menuDataField = df;\n } else if (df.ApiName === 'ItemHasActiveCampaign') {\n this.hasCampaignDataField = df;\n } else if (df.ApiName === 'ItemIndicatorsWithoutCampaign') {\n this.indicatorsDataField = df;\n }\n }\n\n if (this.menuField && this.menuDataField) {\n this.menuDataField.Layout = this.menuField.Layout;\n }\n\n if (this.hasCampaignField && this.hasCampaignDataField) {\n this.hasCampaignDataField.Layout = this.hasCampaignField.Layout;\n }\n\n if (this.indicatorsField && this.indicatorsDataField) {\n this.indicatorsDataField.Layout = this.indicatorsField.Layout;\n }\n\n // Check if menu is floating on other field.\n // for (let index = 0; index < controlFields.length; index++) {\n // cf = controlFields[index];\n for (const cf of controlFields) {\n if (this.menuField && cf.ApiName !== 'ObjectMenu') {\n this.hasMenuFloatingOnOtherField = this.doesFieldHavaFloatingField(\n cf,\n this.menuField\n );\n\n if (this.hasMenuFloatingOnOtherField) {\n break;\n }\n }\n }\n }\n\n convertCustomFields(\n controlFields: Array<any>,\n dataFields: Array<any>\n ): PepFieldBase[] {\n if (this.layoutType !== 'table') {\n this.setSpecialFields(controlFields, dataFields);\n } else {\n // HACK: convert to center alignment if table view & special fields)\n controlFields.forEach((field, index) => {\n if (\n field.ApiName === 'UnitsQuantity' ||\n field.ApiName === 'QuantitySelector' ||\n field.ApiName === 'ObjectMenu' ||\n field.FieldType === FIELD_TYPE.Image ||\n field.FieldType === FIELD_TYPE.ImageURL ||\n field.FieldType === FIELD_TYPE.Indicators ||\n field.FieldType === FIELD_TYPE.Boolean ||\n field.FieldType === FIELD_TYPE.CalculatedBool ||\n field.FieldType === FIELD_TYPE.Signature ||\n field.FieldType ===\n FIELD_TYPE.NumberIntegerQuantitySelector ||\n field.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n field.FieldType === FIELD_TYPE.Package ||\n field.FieldType === FIELD_TYPE.NumberIntegerForMatrix ||\n field.FieldType === FIELD_TYPE.NumberRealForMatrix\n ) {\n field.Layout.XAlignment = X_ALIGNMENT_TYPE.Center;\n } else {\n // HACK: align the rest of the fields by the culture.\n // field.Layout.XAlignment = this.layoutService.isRtl() ? X_ALIGNMENT_TYPE.Right : X_ALIGNMENT_TYPE.Left;\n }\n });\n }\n\n const fields: PepFieldBase[] = [];\n\n controlFields.forEach((field, index) => {\n const dataField = dataFields.filter(\n (df) => df.ApiName === field.ApiName\n )[0];\n\n if (!dataField) {\n return;\n }\n\n // If current view is not table view and those fields are special.\n if (\n this.layoutType !== 'table' &&\n ((this.hasMenuFloatingOnOtherField &&\n this.menuField &&\n this.menuField.ApiName === field.ApiName) ||\n (this.indicatorsField &&\n this.indicatorsField.ApiName === field.ApiName) ||\n (this.hasCampaignField &&\n this.hasCampaignField.ApiName === field.ApiName))\n ) {\n return;\n }\n\n // Set type to link\n if (index === 0 && this.firstFieldAsLink) {\n dataField.FieldType = FIELD_TYPE.InternalLink;\n // dataField.Value = this.getInternalLinkHref();\n }\n\n if (field.ApiName === 'ObjectMenu') {\n dataField.Enabled = true;\n // HACK : Until \"Enabled\" returns from the server, we set PepMenu to be\n // Disabled in cart on regular items and not campign items.\n }\n const customField: PepFieldBase = this.createBaseField(field, dataField);\n fields.push(customField);\n });\n\n return fields.sort((f1, f2) =>\n f1.row > f2.row\n ? 1\n : f1.row < f2.row\n ? -1\n : f1.col > f2.col\n ? 1\n : f1.col < f2.col\n ? -1\n : 0\n );\n }\n\n private onFormValidationChanged(formValidationChange: any): void {\n this.formValidationChange.emit(formValidationChange);\n }\n\n onValueChanged(event: IPepFieldValueChangeEvent): void {\n this.onFormValidationChanged(this.form.valid);\n\n const formControl = this.getFormControlById(event.key);\n\n const isValid = formControl ? formControl.valid : true;\n // const isValid = true;\n\n if (isValid) {\n // Set it to false to disable all fields.\n if (this.isInternal && this.layoutType === 'form') {\n this.isLocked = true;\n }\n\n // Update the current field value.\n const currentField = this.fields.find((f) => f.key === event.key);\n if (currentField) {\n currentField.formattedValue = currentField.value = event.value;\n }\n\n this.valueChange.emit({\n id: this.data.UID.toString(),\n uiObjectKey: this.data.Key,\n key: event.key,\n value: event.value,\n controlType: event.controlType,\n });\n }\n }\n\n onClick(fieldClickEvent: IPepFieldClickEvent): void {\n const clickedUiControlField = this.data.Fields.filter(\n (f) => f.ApiName === fieldClickEvent.key\n )[0];\n const idType = this.data.Type ? this.data.Type.toString() : '';\n\n if (clickedUiControlField) {\n this.fieldClick.emit({\n id: this.data.UID.toString(),\n uiObjectKey: this.data.Key,\n key: fieldClickEvent.key,\n idType,\n which: fieldClickEvent.eventWhich,\n value: fieldClickEvent.value,\n controlType: fieldClickEvent.controlType,\n fieldType: clickedUiControlField.FieldType,\n otherData: fieldClickEvent.otherData,\n });\n } else {\n // For other api names (like enter children etc).\n this.fieldClick.emit({\n id: this.data.UID.toString(),\n uiObjectKey: this.data.Key,\n key: fieldClickEvent.key,\n idType,\n which: fieldClickEvent.eventWhich,\n value: fieldClickEvent.value,\n controlType: fieldClickEvent.controlType,\n otherData: fieldClickEvent.otherData,\n });\n }\n }\n\n // // This event is for handle the internal page events.\n // onInternalFormFieldClicked(internalFormFieldClick: any): void {\n // this.internalFormFieldClick.emit(internalFormFieldClick);\n // }\n\n // // This event is for handle the internal page events.\n // onInternalFormFieldChanged(internalFormFieldChange: any): void {\n // this.internalFormFieldChange.emit(internalFormFieldChange);\n // }\n\n // This event is for handle the related items change events.\n onFormValueChanged(event: IPepFormFieldValueChangeEvent): void {\n // this.valueChange.emit(event);\n }\n\n // This event is for handle the related items change events.\n onFormFieldClick(event: IPepFormFieldClickEvent): void {\n this.fieldClick.emit(event);\n }\n}\n","<fieldset *ngIf=\"form\" [formGroup]=\"form\" [disabled]=\"isLocked\" class=\"pep-form\"\n [ngStyle]=\"{ 'background-color': layoutType == 'card' && data?.BackgroundColor }\">\n <!-- New Form -->\n <mat-grid-list *ngIf=\"layoutType == 'form'\" [cols]=\"columns\" [rowHeight]=\"rowHeight + 'rem'\"\n [gutterSize]=\"formGutterSize\">\n <mat-grid-tile *ngFor=\"let field of fields$ | async\" [rowspan]=\"field.rowSpan\" [colspan]=\"field.colSpan\">\n <pep-internal-field-generator *ngIf=\"field.controlType != 'placeholder'\" [form]=\"form\" [layoutType]=\"layoutType\"\n [checkForChanges]=\"checkForChanges\" [uid]=\"data?.UID\" [field]=\"field\" [showTitle]=\"showTitle\"\n (valueChange)=\"onValueChanged($event)\" (elementClick)=\"onClick($event)\"\n (formValueChange)=\"onFormValueChanged($event)\" (formFieldClick)=\"onFormFieldClick($event)\"\n >\n </pep-internal-field-generator>\n <!-- (formValidationChange)=\"onFormValidationChanged($event)\" -->\n </mat-grid-tile>\n </mat-grid-list>\n\n <!-- Thumbnails -->\n <mat-grid-list *ngIf=\"layoutType == 'card'\" [cols]=\"columns\" [rowHeight]=\"rowHeight + 'rem'\"\n [gutterSize]=\"cardGutterSize\" class=\"card-spacing\">\n <mat-grid-tile *ngFor=\"let field of fields$ | async\" [rowspan]=\"field.rowSpan\" [colspan]=\"field.colSpan\"\n [ngStyle]=\"{ overflow: field.type == 'qs' ? 'unset' : 'hidden' }\">\n <pep-internal-field-generator *ngIf=\"field.controlType != 'placeholder'\" [form]=\"form\" [layoutType]=\"layoutType\"\n [ngClass]=\"{ 'lock-events': lockEvents }\" [isActive]=\"isActive\" [checkForChanges]=\"checkForChanges\"\n [uid]=\"data?.UID\" [field]=\"field\" [showTitle]=\"showTitle\" (valueChange)=\"onValueChanged($event)\"\n (elementClick)=\"onClick($event)\" (formValueChange)=\"onFormValueChanged($event)\" (formFieldClick)=\"onFormFieldClick($event)\">\n </pep-internal-field-generator>\n </mat-grid-tile>\n </mat-grid-list>\n\n <ng-container *ngIf=\"layoutType == 'table'\">\n <ng-container *ngIf=\"isReport; then reportBlock; else notReportBlock\"></ng-container>\n <ng-template #reportBlock>\n <ng-container *ngTemplateOutlet=\"report\"></ng-container>\n </ng-template>\n <ng-template #notReportBlock>\n <div *ngFor=\"let field of fields$ | async; let j = index\" class=\"pull-left flip table-cell \"\n [ngClass]=\"['text-align-' + field.xAlignment]\" style=\"height: 100%\"\n [ngStyle]=\"{ width: (layout?.ControlFields)[j]?.calcColumnWidthString}\">\n <pep-internal-field-generator *ngIf=\"field.controlType != 'placeholder'\" [checkForChanges]=\"checkForChanges\"\n [uid]=\"data?.UID\" [field]=\"field\" [form]=\"form\" [layoutType]=\"layoutType\" [showTitle]=\"false\"\n (elementClick)=\"onClick($event)\" (valueChange)=\"onValueChanged($event)\"\n (formValueChange)=\"onFormValueChanged($event)\" (formFieldClick)=\"onFormFieldClick($event)\"\n [isActive]=\"isActive\">\n </pep-internal-field-generator>\n </div>\n </ng-template>\n </ng-container>\n\n <!------- For testing ------------\n {{ form.value | json }}\n {{ form.valid }}\n ---------------------------------->\n</fieldset>\n\n<ng-template #report>\n <div *ngFor=\"let field of fields$ | async; let j = index\" class=\"pull-left flip pep-report-fields\"\n [ngStyle]=\"{ width: (layout?.ControlFields)[j]?.calcColumnWidthString }\"\n [ngClass]=\"['text-align-' + field.xAlignment]\">\n <ng-container [ngSwitch]=\"field.controlType\">\n <pep-image *ngSwitchCase=\"'image'\" [uid]=\"data?.UID\" [form]=\"form\" [key]=\"field.key\"\n [src]=\"field.formattedValue\" [srcLarge]=\"field.value\" [options]=\"field.options\" [label]=\"field.label\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [layoutType]=\"layoutType\"\n (elementClick)=\"onClick($event)\">\n </pep-image>\n\n <pep-signature *ngSwitchCase=\"'signature'\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.value\"\n [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\"\n [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n [layoutType]=\"layoutType\">\n </pep-signature>\n\n <pep-checkbox *ngSwitchCase=\"'checkbox'\" [form]=\"form\" [key]=\"field.key\"\n [value]=\"(field.value | lowercase) == 'true' || field.value == '1' ? true : false\" [label]=\"field.label\"\n [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\"\n [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n [additionalValue]=\"field.additionalValue\" [layoutType]=\"layoutType\">\n </pep-checkbox>\n\n <pep-date *ngSwitchCase=\"'date'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [label]=\"field.label\" [type]=\"field.type\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n [minValue]=\"field.minValue\" [maxValue]=\"field.maxValue\" [layoutType]=\"layoutType\">\n </pep-date>\n\n <pep-internal-button *ngSwitchCase=\"'button'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [formattedValue]=\"field.formattedValue\" [label]=\"field.label\" [type]=\"field.type\"\n [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\"\n [layoutType]=\"layoutType\" (elementClick)=\"onClick($event)\">\n </pep-internal-button>\n\n <pep-textarea *ngSwitchCase=\"'textarea'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\"\n [readonly]=\"field.readonly\" [maxFieldCharacters]=\"field.maxFieldCharacters\"\n [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n [layoutType]=\"layoutType\">\n </pep-textarea>\n\n <pep-quantity-selector *ngSwitchCase=\"'qs'\" [id]=\"field.key\" [form]=\"form\" [key]=\"field.key\"\n [value]=\"field.value\" [label]=\"field.label\" [type]=\"field.type\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n [layoutType]=\"layoutType\" (valueChange)=\"onValueChanged($event)\" (elementClick)=\"onClick($event)\">\n </pep-quantity-selector>\n\n <ng-container *ngSwitchDefault>\n <ng-container *ngIf=\"field.formattedValue?.length > 0; then notEmptyBlock; else emptyBlock\">\n </ng-container>\n <ng-template #notEmptyBlock>\n <ng-container\n *ngIf=\"field.controlType === 'attachment' || field.type === 'link'; then linkBlock; else notLinkBlock\">\n </ng-container>\n <ng-template #linkBlock>\n <a [id]=\"field.key\" class=\"color-link body-sm pep-report-input readonly {{field.value?.length > 0 ? '' : 'disable'}}\"\n *ngIf=\"field.formattedValue != null\" title=\"{{ field.formattedValue }}\" target=\"_blank\"\n href=\"{{ field.value }}\">{{ field.formattedValue }}</a>\n </ng-template>\n <ng-template #notLinkBlock>\n <span [id]=\"field.key\" class=\"body-sm pep-report-input readonly\"\n title=\"{{ field.formattedValue }}\" [ngStyle]=\"{ color: field.textColor }\">{{\n field.formattedValue }}</span>\n </ng-template>\n </ng-template>\n <ng-template #emptyBlock>\n <span> </span>\n </ng-template>\n </ng-container>\n </ng-container>\n </div>\n</ng-template>","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n Renderer2,\n ViewChild,\n ElementRef,\n ChangeDetectorRef,\n OnDestroy,\n OnChanges,\n} from '@angular/core';\nimport { delay } from 'rxjs/operators';\nimport {\n PepLayoutService,\n UIControl,\n UIControlField,\n FIELD_TYPE,\n ObjectsDataRow,\n} from '@pepperi-addons/ngx-lib';\nimport {\n IPepFormFieldClickEvent,\n IPepFormFieldValueChangeEvent,\n} from './form.model';\n\nexport type PepListViewType = 'cards' | 'lines' | 'table';\n\n@Component({\n selector: 'pep-internal-list',\n templateUrl: './internal-list.component.html',\n styleUrls: ['./internal-list.component.scss'],\n host: {\n '(window:resize)': 'winResize($event)',\n },\n})\nexport class PepInternalListComponent implements OnInit, OnChanges, OnDestroy {\n @Input() noDataFoundMsg = 'Items not found';\n @Input() hideAllSelectionInMulti = false;\n\n @Input() top = -1;\n @Input() objectId = '0';\n @Input() parentId = '0';\n @Input() searchCode = '0';\n // @Input() showTopBorder = false;\n @Input() supportResizing = true;\n @Input() parentScroll: Element | Window = null;\n @Input() disabled = false;\n @Input() disableEvents = false;\n @Input() disableSelectionItems = false;\n @Input() totalsRow = [];\n\n // @Output()\n // itemClick: EventEmitter<IPepListItemClickEvent> = new EventEmitter<IPepListItemClickEvent>();\n @Output()\n fieldClick: EventEmitter<any> = new EventEmitter<IPepFormFieldClickEvent>();\n @Output()\n valueChange: EventEmitter<IPepFormFieldValueChangeEvent> = new EventEmitter<IPepFormFieldValueChangeEvent>();\n\n @ViewChild('noVirtualScrollCont') noVirtualScrollCont: ElementRef;\n @ViewChild('tableHeader') tableHeader: ElementRef;\n @ViewChild('selectAllCB') selectAllCB: any;\n\n public uiControl: UIControl = null;\n public totalRows = -1;\n itemClass: string;\n isTable = false;\n private hasColumnWidthOfTypePercentage = true;\n\n private _items: Array<ObjectsDataRow> = null;\n get items(): Array<ObjectsDataRow> {\n return this._items;\n }\n\n // isCardView = false;\n private itemsCounter = 0;\n showItems = true;\n viewType: PepListViewType;\n scrollItems: Array<ObjectsDataRow>;\n\n public SEPARATOR = ',';\n\n nativeWindow: any = null;\n\n selectedItemId = '';\n hoveredItemId = '';\n\n private lockEvents = false;\n private containerWidth = 0;\n\n deviceHasMouse = false;\n\n // headerIsInFocus = false;\n\n // For resize\n pressedColumn = '';\n startX = 0;\n startWidth = 0;\n tableStartWidth = 0;\n\n isUserSelected = false;\n checkForChanges: any = null;\n useVirtualScroll = true;\n calculatedObjectHeight: string;\n\n constructor(\n private element: ElementRef,\n private layoutService: PepLayoutService,\n private cd: ChangeDetectorRef,\n private renderer: Renderer2\n ) {\n this.nativeWindow = window;\n this.deviceHasMouse = this.layoutService.getDeviceHasMouse();\n this.layoutService.onMouseOver$.subscribe((deviceHasMouse) => {\n this.deviceHasMouse = deviceHasMouse;\n });\n }\n\n ngOnInit(): void {\n this.containerWidth = 0;\n }\n\n ngOnChanges(changes): void {\n if (this.containerWidth <= 0) {\n this.setContainerWidth();\n }\n }\n\n ngOnDestroy(): void {\n // if (this.valueChange) {\n // this.valueChange.unsubscribe();\n // }\n // if (this.itemClick) {\n // this.itemClick.unsubscribe();\n // }\n // if (this.fieldClick) {\n // this.fieldClick.unsubscribe();\n // }\n }\n\n setContainerWidth(): void {\n if (!this.element.nativeElement.parentElement) {\n return;\n }\n\n const selectionCheckBoxWidth = 0;\n\n const rowHeight = 40; // the table row height (2.5rem * 16font-size).\n const style = getComputedStyle(\n this.element.nativeElement.parentElement\n );\n // The container-fluid class padding left + right + border\n const containerFluidSpacing =\n parseInt(style.paddingLeft, 10) + parseInt(style.paddingRight, 10);\n\n const parentContainer =\n this.element.nativeElement.parentElement.parentElement > 0\n ? this.element.nativeElement.parentElement.parentElement\n : this.element.nativeElement.parentElement;\n\n // Calculate if vertical scroll should appear, if so set the scroll width. (this.totalRows + 1) + 1 is for the header row.\n const scrollWidth =\n parentContainer.clientHeight < rowHeight * (this.totalRows + 1)\n ? 18\n : 0; // 18 is the default scroll width.\n\n // The selectionCheckBoxWidth width + containerFluidSpacing + scrollWidth.\n const rowHeaderWidthToSub =\n containerFluidSpacing + selectionCheckBoxWidth + scrollWidth;\n this.containerWidth = parentContainer.offsetWidth - rowHeaderWidthToSub;\n }\n\n clear(): void {\n this.cleanItems();\n this.uiControl = null;\n }\n\n private toggleItems(isVisible: boolean): void {\n this.showItems = isVisible;\n this.lockEvents = !isVisible;\n }\n\n private updateScrollItems(startIndex, endIndex, loadInChunks = true): void {\n this.scrollItems = this.items.slice(startIndex, endIndex);\n }\n\n getUniqItemId(itemId: string, itemType = ''): string {\n return itemId + this.SEPARATOR + itemType;\n }\n\n setLayout(): void {\n if (\n this.totalRows === 0 ||\n !this.uiControl ||\n !this.uiControl.ControlFields ||\n this.uiControl.ControlFields.length === 0\n ) {\n return;\n }\n\n this.uiControl.ControlFields.forEach((cf) => {\n if (cf.ColumnWidth === 0) {\n cf.ColumnWidth = 10;\n }\n\n if (\n this.isTable &&\n (cf.FieldType === FIELD_TYPE.Image ||\n // cf.FieldType === FIELD_TYPE.Indicators || ???\n cf.FieldType === FIELD_TYPE.Signature ||\n cf.FieldType === FIELD_TYPE.NumberIntegerQuantitySelector ||\n cf.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n cf.FieldType === FIELD_TYPE.NumberIntegerForMatrix ||\n cf.FieldType === FIELD_TYPE.NumberRealForMatrix ||\n cf.FieldType === FIELD_TYPE.Package ||\n cf.ApiName === 'UnitsQuantity' ||\n cf.ApiName === 'QuantitySelector')\n ) {\n cf.Layout.XAlignment = 3;\n }\n });\n\n if (!this.cd['destroyed']) {\n this.cd.detectChanges();\n }\n\n // Set the columns width.\n if (this.containerWidth <= 0) {\n this.setContainerWidth();\n }\n\n this.calcColumnsWidth();\n this.checkForChanges = new Date().getTime();\n }\n\n private calcColumnsWidth(): void {\n const fixedMultiple = 3.78; // for converting em to pixel.\n const length = this.uiControl.ControlFields.length;\n const selectionCheckBoxWidth = 0;\n\n // Is table AND there is at least one column of width type of percentage.\n if (this.isTable) {\n if (this.uiControl && this.uiControl.ControlFields) {\n this.hasColumnWidthOfTypePercentage =\n this.uiControl.ControlFields.filter(\n (cf) => cf.ColumnWidthType === 1\n ).length === 0;\n }\n }\n\n // If the columns size is fixed and the total is small then the container change it to percentage.\n if (!this.hasColumnWidthOfTypePercentage) {\n const totalFixedColsWidth = this.uiControl.ControlFields.map(\n (cf) => cf.ColumnWidth * fixedMultiple\n ).reduce((sum, current) => sum + current);\n\n if (window.innerWidth > totalFixedColsWidth) {\n this.hasColumnWidthOfTypePercentage = true;\n }\n }\n\n let totalCalcColsWidth = 0;\n\n // Calc by percentage\n if (this.hasColumnWidthOfTypePercentage) {\n const totalColsWidth: number = this.uiControl.ControlFields.map(\n (cf) => cf.ColumnWidth\n ).reduce((sum, current) => sum + current);\n\n for (let index = 0; index < length; index++) {\n const uiControlField: UIControlField = this.uiControl\n .ControlFields[index];\n const calcColumnWidthPercentage =\n (100 / totalColsWidth) * uiControlField.ColumnWidth;\n\n uiControlField.calcColumnWidth = Math.floor(\n (this.containerWidth * calcColumnWidthPercentage) / 100\n );\n\n if (index === length - 1) {\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString =\n 'calc(100% - ' + totalCalcColsWidth + 'px)'; // For 100%\n } else {\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString =\n uiControlField.calcColumnWidth + 'px';\n totalCalcColsWidth += uiControlField.calcColumnWidth;\n }\n }\n\n this.renderer.setStyle(\n this.element.nativeElement,\n 'width',\n 'inherit'\n );\n } else {\n for (let index = 0; index < length; index++) {\n const uiControlField: UIControlField = this.uiControl\n .ControlFields[index];\n const currentFixedWidth = Math.floor(\n uiControlField.ColumnWidth * fixedMultiple\n );\n\n if (index === length - 1) {\n uiControlField.calcTitleColumnWidthString =\n currentFixedWidth + 'px';\n uiControlField.calcColumnWidthString =\n currentFixedWidth - 4 + 'px'; // -4 for the row padding.\n } else {\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString =\n currentFixedWidth + 'px';\n }\n\n totalCalcColsWidth += currentFixedWidth;\n }\n\n this.renderer.setStyle(\n this.element.nativeElement,\n 'width',\n totalCalcColsWidth + selectionCheckBoxWidth + 'px'\n );\n }\n }\n\n private initResizeData(): void {\n this.startX = 0;\n this.startWidth = 0;\n this.tableStartWidth = 0;\n this.pressedColumn = '';\n }\n\n onListResizeStart(event, columnKey): void {\n this.pressedColumn = columnKey;\n this.startX = event.x;\n this.startWidth = event.target.closest('.header-column').offsetWidth;\n // Set the tableStartWidth to the container offsetWidth\n this.tableStartWidth = this.element.nativeElement.offsetWidth; // this.noVirtualScrollCont.nativeElement.offsetWidth;\n }\n\n onListResize(event): void {\n if (this.pressedColumn.length > 0) {\n const widthToAdd = this.layoutService.isRtl()\n ? this.startX - event.x\n : event.x - this.startX;\n\n // Set the width of the column and the container of the whole columns.\n if (this.startWidth + widthToAdd >= 48 || widthToAdd > 0) {\n const length = this.uiControl.ControlFields.length;\n let totalCalcColsWidth = 0;\n\n for (let index = 0; index < length; index++) {\n const uiControlField: UIControlField = this.uiControl\n .ControlFields[index];\n\n if (index === length - 1) {\n // Calc the last column only in percentage type.\n if (this.hasColumnWidthOfTypePercentage) {\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString =\n 'calc(100% - ' + totalCalcColsWidth + 'px)'; // For 100%\n } else {\n if (uiControlField.ApiName === this.pressedColumn) {\n uiControlField.calcColumnWidth =\n this.startWidth + widthToAdd;\n uiControlField.calcTitleColumnWidthString =\n uiControlField.calcColumnWidth + 'px';\n uiControlField.calcColumnWidthString =\n uiControlField.calcColumnWidth - 4 + 'px';\n }\n }\n } else if (uiControlField.ApiName === this.pressedColumn) {\n uiControlField.calcColumnWidth =\n this.startWidth + widthToAdd;\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString =\n uiControlField.calcColumnWidth + 'px';\n }\n\n totalCalcColsWidth += uiControlField.calcColumnWidth;\n }\n\n this.renderer.setStyle(\n this.element.nativeElement,\n 'width',\n this.tableStartWidth + widthToAdd + 'px'\n );\n }\n\n this.checkForChanges = new Date().getTime();\n }\n }\n\n getParent(el, parentSelector): any {\n // If no parentSelector defined will bubble up all the way to *document*\n if (parentSelector === undefined) {\n parentSelector = document;\n }\n const parent = [];\n let p = el.parentNode;\n\n while (\n p &&\n p.className !== '' &&\n p.className.indexOf(parentSelector) === -1 &&\n parentSelector !== document\n ) {\n const o = p;\n p = o.parentNode;\n }\n if (p.className.indexOf(parentSelector) > -1) {\n parent.push(p); // Push that parentSelector you wanted to stop at\n }\n return parent;\n }\n\n onListResizeEnd(event): void {\n if (this.pressedColumn.length > 0) {\n if (\n event &&\n this.getParent(event.srcElement, 'resize-box').length > 0\n ) {\n this.initResizeData();\n } else {\n setTimeout(() => {\n this.initResizeData();\n }, 0);\n }\n }\n }\n\n onListHeaderMouseEnter(event): void {\n // this.headerIsInFocus = true;\n }\n\n onListHeaderMouseLeave(event): void {\n // this.headerIsInFocus = false;\n this.onListResizeEnd(event);\n this.initResizeData();\n }\n\n onListChange(event: any): void {\n if (this.disableEvents) {\n return;\n }\n\n // For other events do nothing.\n if (\n typeof event.start === 'undefined' ||\n typeof event.end === 'undefined'\n ) {\n return;\n }\n\n this.calculatedObjectHeight = event.calculatedChildHeight + 'px';\n\n if (!this.lockEvents) {\n this.toggleItems(false);\n this.updateScrollItems(event.start, event.end, false);\n this.toggleItems(true);\n }\n }\n\n getParentContainer(): Element | Window {\n return this.parentScroll ? this.parentScroll : window;\n }\n\n onValueChanged(valueChange: IPepFormFieldValueChangeEvent): void {\n if (this.disabled) {\n return;\n }\n\n this.valueChange.emit(valueChange);\n }\n\n onCustomizeFieldClick(\n customizeFieldClickedData: IPepFormFieldClickEvent\n ): void {\n if (this.disabled) {\n return;\n }\n\n this.fieldClick.emit(customizeFieldClickedData);\n }\n\n getIsDisabled(item: ObjectsDataRow): boolean {\n if (this.disableSelectionItems) {\n return true;\n } else {\n const IsNotSelectableForActions =\n item && !item.IsSelectableForActions;\n return IsNotSelectableForActions;\n }\n }\n\n getIsItemSelected(itemId: string, itemType = ''): boolean {\n let isSelected = false;\n\n const uniqItemId = this.getUniqItemId(itemId, itemType);\n isSelected = uniqItemId === this.selectedItemId;\n\n return isSelected;\n }\n\n private setItemClicked(\n itemId,\n isSelectableForActions: boolean,\n itemType: string,\n isChecked: boolean\n ): void {\n const uniqItemId = this.getUniqItemId(itemId, itemType);\n\n // select the selected item.\n if (isChecked) {\n // Set seleted item\n this.selectedItemId = uniqItemId;\n } else {\n if (this.selectedItemId === uniqItemId) {\n this.selectedItemId = '';\n }\n }\n }\n\n itemClicked(e: any, item: ObjectsDataRow): void {\n // Set seleted item\n const itemId = item.UID.toString();\n const itemType = item.Type.toString();\n let isChecked = false;\n\n if (item && item.IsSelectableForActions) {\n this.selectedItemId = this.getUniqItemId(itemId, itemType);\n isChecked = true;\n }\n\n if (this.isTable) {\n this.setItemClicked(\n itemId,\n item.IsSelectableForActions,\n itemType,\n true\n );\n } else {\n if (this.disabled) {\n return;\n }\n }\n\n // this.itemClick.emit({ source: item, viewType: this.viewType });\n }\n\n onTableRowMouseEnter(event: any, itemId: string, itemType: string): void {\n if (!this.deviceHasMouse) {\n return;\n }\n\n const uniqItemId = this.getUniqItemId(itemId, itemType);\n this.hoveredItemId = uniqItemId;\n }\n\n onTableRowMouseLeave(event: any, itemId: string, itemType: string): void {\n this.hoveredItemId = '';\n }\n\n onCardMouseEnter(event: any, itemId: string, itemType: string): void {\n if (!this.deviceHasMouse) {\n return;\n }\n\n const uniqItemId = this.getUniqItemId(itemId, itemType);\n this.hoveredItemId = uniqItemId;\n }\n\n onCardMouseLeave(event: any, itemId: string, itemType: string): void {\n this.hoveredItemId = '';\n }\n\n // call this function after resize + animation end\n winResize(e): void {\n this.containerWidth = 0;\n this.setLayout();\n }\n\n trackByFunc(index: number, item: ObjectsDataRow): any {\n return item && item.UID ? item.UID : index;\n }\n\n cleanItems(): void {\n this.itemsCounter = 0;\n this._items =\n this.totalRows > 0 ? Array<ObjectsDataRow>(this.totalRows) : [];\n this.scrollItems = [];\n this.calculatedObjectHeight = '';\n }\n\n getUIControl(): UIControl {\n return this.uiControl;\n }\n\n initListData(\n uiControl: UIControl,\n totalRows: number,\n items: ObjectsDataRow[],\n viewType: PepListViewType = 'table',\n itemClass = ''\n ): void {\n this.viewType = viewType;\n this.isTable = viewType === 'table';\n // this.isCardView = viewType === 'cards';\n this.uiControl = uiControl;\n this.itemClass = itemClass;\n this.selectedItemId = '';\n this.totalRows = totalRows;\n\n // fix bug for the scrollTo that doesn't work on edge div , not window\n // const scrollingElement = this.getParentContainer();\n // scrollingElement.scrollTo(0, 0);\n\n this.cleanItems();\n\n this.updateItems(items);\n\n this.setLayout();\n }\n\n private updateItems(items: ObjectsDataRow[]): void {\n this.scrollItems = this._items = items;\n this.itemsCounter = items.length;\n }\n\n updateItem(data: any): void {\n let index = 0;\n\n // Update items list\n index = this.items.findIndex((i) => i && i.UID === data.UID);\n if (index >= 0 && index < this.items.length) {\n this.items[index] = data;\n }\n\n // Update scrollItems list\n index = this.scrollItems.findIndex((i) => i && i.UID === data.UID);\n\n if (index >= 0 && index < this.scrollItems.length) {\n this.scrollItems[index] = data;\n this.checkForChanges = new Date().getTime();\n }\n }\n\n getIsItemEditable(uid: string): boolean {\n const item = this.items.filter((x) => x.UID.toString() === uid);\n if (item.length > 0) {\n return item[0].IsEditable;\n } else {\n return false;\n }\n }\n\n getItemDataByID(uid: string): ObjectsDataRow {\n return this.items.find((item) => item.UID.toString() === uid);\n }\n}\n","<ng-container *ngIf=\"totalRows == 0\">\n <div class=\"pep-border-bottom\">\n <p class=\"title-xl no-data\">\n {{ (noDataFoundMsg ? noDataFoundMsg : 'LIST.NO_DATA_FOUND') | translate}}\n </p>\n </div>\n <div class=\"no-data-suggestions\">\n <p class=\"suggestions-title title-lg\">\n {{ 'LIST.NO_DATA_FOUND_SUGGESTIONS_TITLE' | translate}}\n </p>\n <ul class=\"suggestions-list body-lg\" [innerHtml]=\"'LIST.NO_DATA_FOUND_SUGGESTIONS_LIST' | translate\"></ul>\n </div>\n</ng-container>\n<ng-container *ngIf=\"totalRows > 0\">\n <div *ngIf=\"isTable\" #tableHeader class=\"table-header\" (mouseup)=\"onListResizeEnd($event)\"\n (mouseenter)=\"onListHeaderMouseEnter($event)\" (mouseleave)=\"onListHeaderMouseLeave($event)\"\n (mousemove)=\"onListResize($event)\">\n\n <div class=\"table-header-padding-top\"></div>\n <fieldset class=\"table-header-fieldset\">\n <fieldset>\n <div *ngFor=\"let field of uiControl?.ControlFields; let j = index\" class=\"header-column pull-left flip\"\n [ngStyle]=\"{ width: field.calcTitleColumnWidthString }\" [ngClass]=\"{\n 'is-resizing': field.ApiName === pressedColumn,\n 'is-first': j === 0,\n 'is-last': j === uiControl?.ControlFields?.length - 1\n }\">\n <label *ngIf=\"field.Title != ''\" id=\"{{ field.ApiName }}\"\n class=\"header-label body-sm pull-left flip text-align-{{ field.Layout.XAlignment }}\"\n title=\"{{ field.Title }}\">\n {{ field.Title }}\n </label>\n <label *ngIf=\"field.Title == ''\" id=\"{{ field.ApiName }}\"\n class=\"header-label body-sm pull-left flip\"> </label>\n\n <div *ngIf=\"supportResizing\" class=\"resize-box pull-right flip\"\n (mousedown)=\"onListResizeStart($event, field.ApiName)\">\n <div class=\"splitter\"></div>\n </div>\n </div>\n </fieldset>\n </fieldset>\n </div>\n\n <div #noVirtualScrollCont [ngClass]=\"{ 'table-body': isTable, 'cards-body': !isTable }\">\n <ng-container *ngTemplateOutlet=\"listData\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"listTotals\"></ng-container>\n</ng-container>\n\n<ng-template #listData>\n <ng-container *ngFor=\"let item of scrollItems; let i = index; let isFirst = first; trackBy: trackByFunc\">\n <ng-container *ngIf=\"isTable\">\n <div class=\"table-row\" (mouseenter)=\"onTableRowMouseEnter($event, item?.UID, item?.Type)\"\n (mouseleave)=\"onTableRowMouseLeave($event, item?.UID, item?.Type)\" [ngClass]=\"{\n selected: getIsItemSelected(item?.UID, item?.Type),\n highlighted: item?.UID + SEPARATOR + item?.Type === selectedItemId\n }\"\n [ngStyle]=\"{ height: calculatedObjectHeight, visibility: showItems || item ? 'visible' : 'hidden' }\">\n <fieldset class=\"table-row-fieldset\" [ngStyle]=\"{ 'background-color': item?.BackgroundColor }\">\n <!-- [canEditObject]=\"!disabled && item?.IsEditable\" -->\n <pep-internal-form [checkForChanges]=\"checkForChanges\" [layout]=\"uiControl\" [data]=\"item\"\n [canEditObject]=\"!disabled\" [objectId]=\"objectId\" [parentId]=\"parentId\"\n [searchCode]=\"searchCode\" [lockEvents]=\"disableSelectionItems\" [layoutType]=\"'table'\"\n [isActive]=\"\n (item?.UID + SEPARATOR + item?.Type === selectedItemId ||\n item?.UID + SEPARATOR + item?.Type === hoveredItemId) && deviceHasMouse\n \" (valueChange)=\"onValueChanged($event)\" (fieldClick)=\"onCustomizeFieldClick($event)\"\n (click)=\"itemClicked($event, item)\">\n </pep-internal-form>\n </fieldset>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!isTable\">\n <div [class]=\"itemClass\" (mouseenter)=\"onCardMouseEnter($event, item?.UID, item?.Type)\"\n (mouseleave)=\"onCardMouseLeave($event, item?.UID, item?.Type)\" [ngClass]=\"{\n selected: getIsItemSelected(item?.UID, item?.Type),\n highlighted: item?.UID + SEPARATOR + item?.Type === selectedItemId,\n 'card-view': viewType === 'cards',\n 'line-view': viewType === 'lines'\n }\" class=\"pull-left flip\"\n [ngStyle]=\"{ height: calculatedObjectHeight, visibility: showItems || item ? 'visible' : 'hidden' }\">\n <!-- [canEditObject]=\"!disabled && item?.IsEditable\" -->\n <pep-internal-form [checkForChanges]=\"checkForChanges\" [layout]=\"uiControl\" [data]=\"item\"\n [canEditObject]=\"!disabled\" [objectId]=\" objectId\" [parentId]=\"parentId\" [searchCode]=\"searchCode\"\n [lockEvents]=\"disableSelectionItems\" [layoutType]=\"'card'\" [isActive]=\"\n (item?.UID + SEPARATOR + item?.Type === selectedItemId ||\n item?.UID + SEPARATOR + item?.Type === hoveredItemId) && deviceHasMouse\n \" (valueChange)=\"onValueChanged($event)\" (fieldClick)=\"onCustomizeFieldClick($event)\"\n (click)=\"itemClicked($event, item)\">\n </pep-internal-form>\n </div>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #listTotals>\n <div *ngIf=\"totalsRow?.length > 0 && totalsRow.length <= uiControl?.ControlFields.length\" class=\"table-total\">\n <fieldset class=\"table-header-fieldset\">\n <div *ngFor=\"let field of uiControl?.ControlFields; let j = index\" class=\"total-column pull-left flip\"\n [ngStyle]=\"{ width: field.calcTitleColumnWidthString }\">\n <label class=\"total-label body-sm text-align-{{ field.Layout.XAlignment }}\">\n {{ totalsRow[j] }}\n </label>\n </div>\n </fieldset>\n </div>\n</ng-template>","import {\n Component,\n OnInit,\n OnDestroy,\n Input,\n Output,\n EventEmitter,\n ViewChild,\n ElementRef,\n ViewContainerRef,\n TemplateRef,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { PepInternalPageService } from './internal-page.service';\n\nimport {\n PepLayoutType,\n UIControl,\n KeyValuePair,\n PepCustomizationService,\n UIControlField,\n ObjectsData,\n FIELD_TYPE,\n} from '@pepperi-addons/ngx-lib';\nimport {\n PepInternalListComponent,\n PepListViewType,\n} from './internal-list.component';\nimport {\n IPepFormFieldClickEvent,\n IPepFormFieldValueChangeEvent,\n} from './form.model';\nimport { PepDialogService } from '@pepperi-addons/ngx-lib/dialog';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { PepQuantitySelectorComponent } from '@pepperi-addons/ngx-lib/quantity-selector';\n\n@Component({\n selector: 'pep-internal-page',\n templateUrl: './internal-page.component.html',\n styleUrls: ['./internal-page.component.scss'],\n providers: [PepInternalPageService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepInternalPageComponent implements OnInit, OnDestroy {\n static CURRENT_ADDITIONAL_API_NAME =\n 'item_details_currentAdditionalApiName';\n\n controlType = 'internalPage';\n\n @Input() field: any;\n @Input() layoutType: PepLayoutType = 'form';\n\n @Output()\n internalFormFieldChange: EventEmitter<any> = new EventEmitter<any>();\n @Output()\n internalFormFieldClick: EventEmitter<IPepFormFieldClickEvent> = new EventEmitter<IPepFormFieldClickEvent>();\n\n @ViewChild('my1mm') my1mm: ElementRef;\n @ViewChild('mainViewCont') mainViewCont: ElementRef;\n\n @ViewChild('orgCont', { read: ViewContainerRef }) orgCont: ViewContainerRef;\n @ViewChild('dialogCont', { read: ViewContainerRef })\n dialogCont: ViewContainerRef;\n @ViewChild('matrixTemplate') matrixTemplate: TemplateRef<any>;\n @ViewChild('matrixDialogTemplate', { read: TemplateRef })\n matrixDialogTemplate: TemplateRef<any>;\n\n @ViewChild(PepInternalListComponent)\n customList: PepInternalListComponent;\n\n resize: any;\n checkForChanges: any = null;\n\n childData: any = null;\n\n emptyForm: FormGroup;\n uiControl: UIControl;\n rows: any;\n lineViewRows: any;\n totalsRow: any = [];\n additionalApiNames: any = null;\n currentAdditionalApiName: any = null;\n focusedQS = false;\n fieldIdWithFocus = '';\n columnWidth = 100;\n coverChildTable = false;\n childViewTypes: Array<KeyValuePair<string>>;\n currentViewType: KeyValuePair<string> = null;\n currentViewTypeTitle: string;\n sumOfMinColWidth = 0;\n totalRowsWidth = 0;\n viewWidth = '100%';\n viewHeight = 'auto';\n displayQSbtns = true;\n selectedApiName = '';\n showSort = false;\n defaultRowSpan = -1;\n\n constructor(\n private dialogService: PepDialogService,\n private internalPageService: PepInternalPageService,\n public customizationService: PepCustomizationService,\n private changeDetectorRef: ChangeDetectorRef\n ) { }\n\n private fillData(isInDialog = false): void {\n const view = this.matrixTemplate.createEmbeddedView(null);\n\n this.customList?.clear();\n this.orgCont?.clear();\n\n if (isInDialog) {\n this.dialogCont?.clear();\n this.dialogCont?.insert(view);\n } else {\n this.orgCont?.insert(view);\n }\n\n setTimeout(() => {\n const viewType: PepListViewType = this.isTableView()\n ? 'table'\n : 'lines';\n this.customList.initListData(\n this.uiControl,\n this.childData.TotalRows,\n this.childData.Rows,\n viewType\n );\n this.setTotalsRow();\n\n // if (!this.childModal.isShown) {\n const childrenCount = this.childData.Rows\n ? this.childData.Rows.length\n : 0;\n const isEven = childrenCount % 2 === 0;\n // 3 for matrix & flat matrix because the header + total is 2 more rows.\n const rowsToAdd =\n this.isMatrixView() || this.isFlatMatrixView()\n ? isEven\n ? 3\n : 4\n : 1;\n\n const formRowHeight =\n this.customizationService.calculateFormFieldHeight() * 16; // convert rem to pixel\n\n // Set the default only if not set yet.\n if (this.defaultRowSpan === -1) {\n this.defaultRowSpan = this.field.rowSpan;\n }\n\n this.sumOfMinColWidth = 0;\n this.totalRowsWidth = 0;\n\n this.childData.UIControl.ControlFields.forEach(\n (uiControlField: UIControlField) => {\n this.totalRowsWidth += uiControlField.ColumnWidth;\n uiControlField.minFieldWidth = this.mmToPx(12); // NEED TO GET THIS PARAM FROM CUSTOMIZATION;\n this.sumOfMinColWidth += 12;\n }\n );\n\n this.setViewCover(this.childData.Rows);\n\n if (this.coverChildTable) {\n this.field.rowSpan = this.defaultRowSpan;\n } else {\n // For line view Add the height of the line (form height).\n if (this.currentViewType.Key === 'OrderCenterFlatMatrixLine') {\n const maxRow = Math.max(\n ...this.uiControl.ControlFields.map((f) => {\n return f.Layout.Y + f.Layout.Height;\n })\n );\n\n // * 16 convert rem to pixel\n const cardRowsHeight =\n this.customizationService.calculateCardRowsHeight(\n maxRow\n ) * 16;\n\n // maxRow * 24 + 60 - 24 for each row in card + 60 for the padding of each card.\n // const rowSpanToAdd = childrenCount * ((cardRowsHeight + 24) / formRowHeight) + rowsToAdd;\n const rowSpanToAdd = \n (childrenCount * (cardRowsHeight + 24)) /\n formRowHeight +\n rowsToAdd;\n this.field.rowSpan = rowSpanToAdd;\n } else {\n // const tableRowsHeight = this.customizationService.calculateTableRowsHeight(childrenCount) * 16;\n // this.field.rowSpan = Math.ceil((tableRowsHeight + (rowsToAdd * 40)) / formRowHeight);\n // * 16 convert rem to pixel\n const rowsToAddHeight =\n this.customizationService.calculateTableRowsHeight(\n rowsToAdd,\n false\n ) * 16;\n const tableRowsHeight =\n this.customizationService.calculateTableRowsHeight(\n childrenCount\n ) * 16;\n this.field.rowSpan =\n (rowsToAddHeight + tableRowsHeight) / formRowHeight;\n }\n }\n }, 0);\n\n this.changeDetectorRef.markForCheck();\n }\n\n private fillChildData(res: any): void {\n this.childData = res;\n this.uiControl = res.UIControl;\n this.additionalApiNames = res.AdditionalApiNames;\n\n this.fillData();\n }\n\n mmToPx(mm): number {\n const height = this.my1mm.nativeElement.clientHeight;\n return Math.floor(mm * height); // returns sizes in PX\n }\n\n private isMatrixView(): boolean {\n return (\n this.currentViewType &&\n this.currentViewType.Key === 'OrderCenterMatrix'\n );\n }\n\n private isFlatMatrixView(): boolean {\n return (\n this.currentViewType &&\n this.currentViewType.Key === 'OrderCenterFlatMatrixGrid'\n );\n }\n\n isTableView(): boolean {\n return this.isMatrixView() || this.isFlatMatrixView();\n }\n\n changeChildrenViewType(viewTypeKey: string): void {\n this.rows = [];\n this.uiControl = null;\n\n for (const vt of this.childViewTypes) {\n if (vt.Key === viewTypeKey) {\n this.currentViewType = vt;\n break;\n }\n }\n\n this.currentViewTypeTitle = this.currentViewType.Value;\n\n this.internalPageService.changeChildrenViewType(\n this.currentViewType.Key,\n (res: ObjectsData) => {\n if (res.Rows) {\n this.fillChildData(res);\n }\n }\n );\n }\n\n setViewCover(rows): void {\n if (!rows) {\n return;\n }\n\n const matrixCont = this.mainViewCont.nativeElement;\n const viewWidth = matrixCont.clientWidth;\n\n this.viewWidth = viewWidth ? viewWidth.toString() : '100%';\n\n // if the matrix located on the bottom / there is nothing under the matrix we dont need to check the height\n if (parseInt(viewWidth, 10) < this.mmToPx(this.sumOfMinColWidth)) {\n this.coverChildTable = true;\n } else {\n this.coverChildTable = false;\n }\n\n this.changeDetectorRef.markForCheck();\n }\n\n showMatrixDialog(): void {\n const config = this.dialogService.getDialogConfig(\n {\n disableClose: false,\n },\n 'large'\n );\n\n const dialogRef = this.dialogService.openDialog(\n this.matrixDialogTemplate,\n {},\n config\n );\n\n dialogRef.afterOpened().subscribe(() => {\n this.fillData(true);\n });\n\n dialogRef.afterClosed().subscribe((value) => {\n this.fillData(false);\n });\n }\n\n ngOnInit(): void {\n // let field = this.field as PepInternalPageField;\n\n this.internalPageService.initDetails(\n this.field.objectId,\n this.field.parentId,\n this.field.searchCode,\n (resViewTypes: any) => {\n // my code DI-7134\n resViewTypes.Rows = resViewTypes.Rows.filter(\n (item) => item.Key !== 'OrderCenterView1'\n );\n\n if (resViewTypes.Rows && resViewTypes.Rows.length > 0) {\n if (!resViewTypes.Default) {\n resViewTypes.Default = resViewTypes.Rows[0].Key;\n }\n this.childViewTypes = resViewTypes.Rows;\n this.currentViewType = resViewTypes.Rows[0];\n\n // for (var i = 0; i < resViewTypes.Rows.length; i++) {\n for (const viewTypeRow of resViewTypes.Rows) {\n if (viewTypeRow.Value === resViewTypes.Default) {\n this.currentViewType = viewTypeRow;\n }\n }\n\n this.loadLastAdditionalApiName();\n this.changeChildrenViewType(this.currentViewType.Key);\n }\n }\n );\n\n this.resize = fromEvent(window, 'resize')\n .pipe(debounceTime(10))\n .subscribe((event) => {\n this.setViewCover(this.rows);\n });\n }\n\n loadLastAdditionalApiName(): void {\n const daa = sessionStorage.getItem(\n PepInternalPageComponent.CURRENT_ADDITIONAL_API_NAME\n );\n if (daa && daa.length > 0) {\n const additionalApiName = JSON.parse(daa);\n this.currentAdditionalApiName = additionalApiName;\n this.internalPageService.additionalApiName = additionalApiName?.Key;\n }\n }\n\n ngOnDestroy(): void {\n if (this.resize) {\n this.resize.unsubscribe();\n }\n }\n\n changeAdditionalApiName(additionalApiName): void {\n this.internalPageService.changeAdditionalApiName(\n additionalApiName ? additionalApiName.Key : '',\n (res: any) => {\n // for (let index = 0; index < res.Rows.length; index++) {\n for (const row of res.Rows) {\n this.updateChanges(row);\n }\n\n this.changeDetectorRef.markForCheck();\n }\n );\n\n sessionStorage.setItem(\n PepInternalPageComponent.CURRENT_ADDITIONAL_API_NAME,\n JSON.stringify(additionalApiName)\n );\n\n setTimeout(() => {\n this.currentAdditionalApiName = additionalApiName;\n }, 0);\n }\n\n setTotalsRow(): void {\n this.totalsRow = [];\n\n if (this.isMatrixView() || this.isFlatMatrixView()) {\n let totalCol = 0;\n\n const items = this.customList.items;\n if (items) {\n for (let col = 0; col < items[0].Fields.length; col++) {\n const field = items[0].Fields[col];\n if (\n field.FieldType === FIELD_TYPE.NumberIntegerForMatrix ||\n field.FieldType ===\n FIELD_TYPE.NumberIntegerQuantitySelector ||\n field.FieldType === FIELD_TYPE.NumberRealForMatrix ||\n field.FieldType ===\n FIELD_TYPE.NumberRealQuantitySelector ||\n field.FieldType === FIELD_TYPE.CalculatedInt ||\n field.FieldType === FIELD_TYPE.NumberInteger ||\n field.FieldType === FIELD_TYPE.CalculatedReal ||\n field.FieldType === FIELD_TYPE.NumberReal\n ) {\n totalCol = 0;\n for (const listItem of items) {\n if (\n listItem.Fields[col] &&\n listItem.Fields[col].Value\n ) {\n const num = parseFloat(\n listItem.Fields[col].Value\n );\n totalCol += isNaN(num) ? 0 : num;\n }\n }\n this.totalsRow.push(totalCol);\n } else {\n this.totalsRow.push('');\n }\n }\n }\n }\n }\n\n updateChanges(elementToUpdate: any): void {\n this.customList.updateItem(elementToUpdate);\n\n // Update memory data\n for (let index = 0; index < this.childData.Rows.length; index++) {\n if (this.childData.Rows[index].UID === elementToUpdate.UID) {\n this.childData.Rows[index] = elementToUpdate;\n }\n }\n }\n\n setValueCallback(id: any, res: any): void {\n if (res.Rows.length === 1) {\n const field = res.Rows[0].Fields.find((f) => f.ApiName === 'ObjectMenu');\n if (field) {\n // HACK : Until \"Enabled\" returns from the server, we set PepMenu to be\n // Disabled in cart on regular items and not campign items.\n field.Enabled = true;\n }\n\n this.updateChanges(res.Rows[0]);\n }\n\n this.setTotalsRow();\n this.checkForChanges = new Date();\n\n // DI-15985\n this.internalFormFieldChange.emit(res);\n\n this.changeDetectorRef.markForCheck();\n }\n\n onCustomizeObjectChanged(\n customizeObjectChangedData: IPepFormFieldValueChangeEvent\n ): void {\n this.internalPageService.childValueChanged(\n customizeObjectChangedData.id,\n customizeObjectChangedData.key,\n customizeObjectChangedData.value,\n (res: any) => {\n this.setValueCallback(customizeObjectChangedData.id, res);\n }\n );\n }\n\n onCustomizeFieldClick(fieldClickEvent: IPepFormFieldClickEvent): void {\n let handledEvent = false;\n\n // For the new custom form, the plus and minus events transform in the IPepFormFieldValueChangeEvent\n if (fieldClickEvent.controlType === 'qs') {\n if (fieldClickEvent.value === PepQuantitySelectorComponent.PLUS) {\n handledEvent = true;\n this.internalPageService.childPlusClick(\n fieldClickEvent.id,\n fieldClickEvent.key,\n (res: any) => {\n this.setValueCallback(fieldClickEvent.id, res);\n }\n );\n } else if (\n fieldClickEvent.value === PepQuantitySelectorComponent.MINUS\n ) {\n handledEvent = true;\n this.internalPageService.childMinusClick(\n fieldClickEvent.id,\n fieldClickEvent.key,\n (res: any) => {\n this.setValueCallback(fieldClickEvent.id, res);\n }\n );\n }\n }\n\n if (!handledEvent) {\n this.internalFormFieldClick.emit(fieldClickEvent);\n }\n }\n}\n","<ng-template #matrixHeaderTemplate>\n <div class=\"matrix-title-container pep-border-bottom align-{{\n field.xAlignment\n }}\" title=\"{{ field.label }}\">\n <span class=\"block-with-text body-md\">{{ field.label }}</span>\n\n <div class=\"buttons-container pep-spacing-element-negative pull-right flip\">\n <ng-container *ngIf=\"\n currentViewType?.Key == 'OrderCenterMatrix' &&\n additionalApiNames &&\n additionalApiNames.length > 0\n \">\n <button class=\"pep-spacing-element pep-button icon-button sm weak\" mat-button [matMenuTriggerFor]=\"menu\"\n menu-blur>\n <span class=\"pull-left flip\" *ngIf=\"currentAdditionalApiName\"> {{\n currentAdditionalApiName?.Value }} </span>\n\n <mat-icon [ngClass]=\"{'pull-left flip': currentAdditionalApiName}\">\n <pep-icon name=\"system_info\"></pep-icon>\n </mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\" xPosition=\"before\">\n <button mat-menu-item [ngClass]=\"{\n selected: currentAdditionalApiName === null\n }\" (click)=\"changeAdditionalApiName(null)\">\n <span>{{ \"LIST.NONE\" | translate }}</span>\n </button>\n <button mat-menu-item [ngClass]=\"{\n selected:\n currentAdditionalApiName?.Key ==\n additionalApiName?.Key\n }\" *ngFor=\"let additionalApiName of additionalApiNames\"\n (click)=\"changeAdditionalApiName(additionalApiName)\">\n <span>{{ additionalApiName.Value }}</span>\n </button>\n </mat-menu>\n </ng-container>\n <ng-container *ngIf=\"childViewTypes && childViewTypes.length > 1\">\n <button class=\"pep-spacing-element pep-button icon-button sm weak\" mat-button\n [matMenuTriggerFor]=\"viewsMenu\" menu-blur>\n <mat-icon>\n <pep-icon name=\"view_card_md\"></pep-icon>\n </mat-icon>\n </button>\n\n <mat-menu #viewsMenu=\"matMenu\" xPosition=\"before\">\n <button mat-menu-item [ngClass]=\"{\n selected: currentViewType?.Key == viewType?.Key\n }\" *ngFor=\"let viewType of childViewTypes\" (click)=\"changeChildrenViewType(viewType?.Key)\">\n <mat-icon [ngSwitch]=\"viewType?.Key\">\n <pep-icon *ngSwitchCase=\"'OrderCenterMatrix'\" name=\"view_matrix\"></pep-icon>\n <pep-icon *ngSwitchCase=\"'OrderCenterFlatMatrixGrid'\" name=\"view_table\"></pep-icon>\n <pep-icon *ngSwitchCase=\"'OrderCenterFlatMatrixLine'\" name=\"view_line\"></pep-icon>\n </mat-icon>\n <span>{{ viewType?.Value }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n </div>\n\n</ng-template>\n\n<ng-template #matrixTemplate>\n <div #matrixContainer class=\"matrix-container\">\n <pep-internal-list (valueChange)=\"onCustomizeObjectChanged($event)\" [parentScroll]=\"matrixContainer\"\n (fieldClick)=\"onCustomizeFieldClick($event)\" [totalsRow]=\"totalsRow\"></pep-internal-list>\n </div>\n</ng-template>\n\n<div #mainViewCont id=\"mainViewCont\" [ngStyle]=\"{ 'max-width': viewWidth, 'max-height': viewHeight }\">\n <div #my1mm id=\"my1_mm\" style=\"height:1mm;width:1mm;visibility: hidden;\"></div>\n <ng-container *ngIf=\"coverChildTable && uiControl != null\">\n <div class=\"table-cover\"></div>\n <button (click)=\"showMatrixDialog()\" class=\"pep-button strong sm table-cover-button\"\n [ngClass]=\"{ 'lineview-btn': currentViewType?.Key == 'OrderCenterFlatMatrixLine'}\">\n {{ \"INTERNAL_PAGE.CLICK_TO_ORDER\" | translate }}\n </button>\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"matrixHeaderTemplate\"></ng-container>\n <ng-container #orgCont></ng-container>\n</div>\n\n<ng-template #matrixDialogTemplate>\n\n <div mat-dialog-title>\n <ng-container *ngTemplateOutlet=\"matrixHeaderTemplate\"></ng-container>\n </div>\n\n <div mat-dialog-content>\n <ng-container #dialogCont></ng-container>\n </div>\n</ng-template>\n\n<!-- <div id=\"childGridModal\" bsModal (onShown)=\"onShown()\" (onHidden)=\"onHidden()\" #childModal=\"bs-modal\" class=\"modal\"\n tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"gridModalLabel\" aria-hidden=\"true\">\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-body matrix-dialog-body\">\n <ng-container #modalCont></ng-container>\n </div>\n </div>\n </div>\n</div> -->","import { Injectable } from '@angular/core';\nimport { PepHttpService } from '@pepperi-addons/ngx-lib';\n\n@Injectable()\nexport class PepInternalCaruselService {\n private eventUrl: string;\n\n constructor(private httpService: PepHttpService) {\n this.eventUrl = 'Service1.svc/v1/EmitEvent';\n }\n\n emitEvent(uiObjectKey: string, fieldKey: string, fieldValue: string, eventName: string, callbackFunc: any) {\n const body = {\n 'EventKey': eventName,\n 'EventData': JSON.stringify({\n UIObjectKey: uiObjectKey,\n FieldID: fieldKey,\n Value: fieldValue\n })\n };\n\n this.httpService.postWapiApiCall(`${this.eventUrl}`, body).subscribe(\n (res) => {\n console.log(res);\n callbackFunc(res);\n }\n // (error) => {},\n // () => {}\n );\n }\n}\n","import {\n Component,\n OnInit,\n OnDestroy,\n Input,\n Output,\n EventEmitter,\n ElementRef,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ViewChild,\n AfterViewInit,\n} from '@angular/core';\nimport { PepInternalCaruselService } from './internal-carusel.service';\n\nimport {\n PepLayoutType,\n UIControl,\n PepCustomizationService,\n ObjectsDataRow,\n PepInternalCaruselField,\n PepLayoutService,\n PepScreenSizeType,\n} from '@pepperi-addons/ngx-lib';\nimport {\n IPepFormFieldClickEvent,\n IPepFormFieldValueChangeEvent,\n} from './form.model';\nimport { PepQuantitySelectorComponent } from '@pepperi-addons/ngx-lib/quantity-selector';\nimport { PepCarouselComponent } from '@pepperi-addons/ngx-lib/carousel';\n\n@Component({\n selector: 'pep-internal-carusel',\n templateUrl: './internal-carusel.component.html',\n styleUrls: ['./internal-carusel.component.scss'],\n providers: [PepInternalCaruselService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepInternalCaruselComponent implements OnInit, AfterViewInit {\n @ViewChild('carousel', { read: PepCarouselComponent })\n carousel: PepCarouselComponent;\n\n private _field: any;\n @Input()\n set field(value: any) {\n this._field = value;\n const caruselField = this._field as PepInternalCaruselField;\n\n if (caruselField && caruselField.pageInfo) {\n this.layout = caruselField.pageInfo.UIControl;\n this.items = caruselField.pageInfo.Rows;\n }\n }\n get field(): any {\n return this._field;\n }\n\n @Input() layoutType: PepLayoutType = 'form';\n\n @Output()\n internalFormFieldChange: EventEmitter<any> = new EventEmitter<any>();\n @Output()\n internalFormFieldClick: EventEmitter<IPepFormFieldClickEvent> = new EventEmitter<IPepFormFieldClickEvent>();\n\n private _items: Array<any> = null;\n set items(value: Array<any>) {\n this._items = value;\n // this.moveTo(0);\n }\n get items() {\n return this._items;\n }\n\n layout: any = null;\n duration = 250;\n\n private itemsToMove = 3;\n\n prevDisabled = true;\n nextDisabled = false;\n screenSize: PepScreenSizeType;\n PepScreenSizeType = PepScreenSizeType;\n\n constructor(\n private layoutService: PepLayoutService,\n private internalCaruselService: PepInternalCaruselService\n ) { }\n\n ngOnInit(): void {\n //\n }\n\n ngAfterViewInit(): void {\n this.layoutService.onResize$.subscribe((size: PepScreenSizeType) => {\n this.screenSize = size;\n });\n }\n\n onCustomizeObjectChanged(\n customizeObjectChangedData: IPepFormFieldValueChangeEvent\n ): void {\n this.internalCaruselService.emitEvent(customizeObjectChangedData.uiObjectKey, customizeObjectChangedData.key, customizeObjectChangedData.value, 'SetFieldValue', () => {\n this.internalFormFieldChange.emit(customizeObjectChangedData);\n });\n }\n\n onCustomizeFieldClick(fieldClickEvent: IPepFormFieldClickEvent): void {\n let handledEvent = false;\n\n // For the new custom form, the plus and minus events transform in the IPepFormFieldValueChangeEvent\n if (fieldClickEvent.controlType === 'qs') {\n if (fieldClickEvent.value === PepQuantitySelectorComponent.PLUS) {\n handledEvent = true;\n this.internalCaruselService.emitEvent(fieldClickEvent.uiObjectKey, fieldClickEvent.key, '', 'IncrementFieldValue', () => {\n this.internalFormFieldChange.emit({});\n });\n\n } else if (fieldClickEvent.value === PepQuantitySelectorComponent.MINUS) {\n handledEvent = true;\n this.internalCaruselService.emitEvent(fieldClickEvent.uiObjectKey, fieldClickEvent.key, '', 'DecrementFieldValue', () => {\n this.internalFormFieldChange.emit({});\n });\n }\n }\n\n if (!handledEvent) {\n this.internalFormFieldClick.emit(fieldClickEvent);\n }\n }\n\n moveLeft() {\n const indexToMove = Math.max(\n this.carousel.currIndex - this.itemsToMove,\n 0\n );\n this.moveTo(indexToMove);\n }\n\n moveRight() {\n const indexToMove = Math.min(\n this.carousel.currIndex + this.itemsToMove,\n this.items.length\n );\n this.moveTo(indexToMove);\n }\n\n moveTo(index: number) {\n if (this.carousel) {\n this.carousel.moveTo(index);\n }\n }\n\n onReachesLeftBound(event: boolean) {\n // this.prevDisabled = event;\n }\n\n onReachesRightBound(event: boolean) {\n this.nextDisabled = event;\n }\n\n onIndexChanged(event: number) {\n this.prevDisabled = event === 0;\n // this.nextDisabled = event === this.items.length - 1;\n }\n}","<div class=\"carousel-container\">\n <ng-container *ngIf=\"items?.length > 0; then carouselBlock; else emptyBlock\"></ng-container>\n <ng-template #emptyBlock>\n <!-- No items -->\n </ng-template>\n <ng-template #carouselBlock>\n <pep-button *ngIf=\"screenSize <= PepScreenSizeType.SM\" [iconName]=\"'arrow_left_alt'\" [styleType]=\"'regular'\"\n [disabled]=\"prevDisabled\" (click)=\"moveLeft()\" class=\"carousel-arrow start-arrow\">\n </pep-button>\n <pep-carousel #carousel [xWheelEnabled]=\"false\" [snapDuration]=\"duration\"\n (reachesLeftBound)=\"onReachesLeftBound($event)\" (reachesRightBound)=\"onReachesRightBound($event)\" (indexChanged)=\"onIndexChanged($event)\">\n <ng-container *ngFor=\"let item of items\">\n <pep-internal-form pepCarouselItem [layout]=\"layout\" [data]=\"item\" [layoutType]=\"'card'\" class=\"card-view \"\n (valueChange)=\"onCustomizeObjectChanged($event)\" (fieldClick)=\"onCustomizeFieldClick($event)\">\n </pep-internal-form>\n </ng-container>\n </pep-carousel>\n <pep-button *ngIf=\"screenSize <= PepScreenSizeType.SM\" [iconName]=\"'arrow_right_alt'\" [styleType]=\"'regular'\"\n [disabled]=\"nextDisabled\" (click)=\"moveRight()\" class=\"carousel-arrow end-arrow\">\n </pep-button>\n </ng-template>\n</div>","import {\n Component, \n OnChanges,\n Input,\n Output,\n EventEmitter, \n ViewEncapsulation,\n ChangeDetectionStrategy, \n OnDestroy \n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport {\n PepFieldBase,\n PepLayoutType,\n IPepFieldValueChangeEvent,\n IPepFieldClickEvent,\n} from '@pepperi-addons/ngx-lib';\nimport { IPepFormFieldClickEvent, IPepFormFieldValueChangeEvent } from './form.model';\n\n\n@Component({\n selector: 'pep-field-generator',\n templateUrl: './field-generator.component.html',\n styleUrls: ['./field-generator.component.scss'],\n encapsulation: ViewEncapsulation.Emulated,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepFieldGeneratorComponent implements OnChanges, OnDestroy { \n private _field: any;\n @Input()\n set field(value: any) {\n this._field = value; \n }\n get field(): any {\n return this._field;\n }\n\n @Input() isActive = false;\n @Input() uid: any = null;\n @Input() form: FormGroup;\n @Input() layoutType: PepLayoutType = 'form';\n @Input() showTitle = true;\n\n @Input() checkForChanges: any = null;\n @Output()\n valueChange: EventEmitter<IPepFieldValueChangeEvent> = new EventEmitter<IPepFieldValueChangeEvent>();\n // @Output()\n // formValidationChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output()\n elementClick: EventEmitter<IPepFieldClickEvent> = new EventEmitter<IPepFieldClickEvent>();\n\n @Output() internalFormFieldChange: EventEmitter<any> = new EventEmitter<any>();\n @Output() internalFormFieldClick: EventEmitter<any> = new EventEmitter<any>();\n\n @Output()\n formValueChange: EventEmitter<IPepFormFieldValueChangeEvent> = new EventEmitter<IPepFormFieldValueChangeEvent>();\n @Output()\n formFieldClick: EventEmitter<IPepFormFieldClickEvent> = new EventEmitter<IPepFormFieldClickEvent>();\n\n get isValid(): boolean {\n if (this.field.readonly || this.field.disabled) {\n return true;\n } else {\n const formControl = this.form && this.form.get(this.field.key);\n\n if (formControl) {\n return formControl.valid;\n } else {\n return false;\n }\n }\n }\n\n get isTouched(): boolean {\n const formControl = this.form && this.form.get(this.field.key);\n return formControl ? formControl.touched : false;\n }\n\n get isDirty(): boolean {\n const formControl = this.form && this.form.get(this.field.key);\n return formControl ? formControl.dirty : false;\n }\n\n onFileChanged(fileData: any, field: PepFieldBase) {\n const value = fileData ? JSON.stringify(fileData) : '';\n const fieldValueChange = {\n key: field.key,\n value: value,\n controlType: field.controlType,\n };\n this.valueChange.emit(fieldValueChange);\n }\n\n onAddressValueChanged(\n valueChange: IPepFieldValueChangeEvent,\n field: PepFieldBase\n ) {\n const fieldValueChange = {\n key: valueChange.key,\n value: valueChange.value,\n controlType: field.controlType,\n };\n this.valueChange.emit(fieldValueChange);\n }\n\n onValueChanged(value: any, field: PepFieldBase): void {\n const fieldValueChange = {\n key: field.key,\n value: value.toString(),\n controlType: field.controlType,\n };\n this.valueChange.emit(fieldValueChange);\n }\n\n onInternalFormFieldChanged(internalFormFieldChange: any): void {\n this.internalFormFieldChange.emit(internalFormFieldChange);\n }\n\n // onFormValidationChanged(formValidationChange: any): void {\n // this.formValidationChange.emit(formValidationChange);\n // }\n\n onClick(fieldClicked: any): void {\n this.elementClick.emit(fieldClicked);\n }\n\n onInternalFormFieldClick(internalFormFieldClick: any): void {\n this.internalFormFieldClick.emit(internalFormFieldClick);\n }\n\n onFormValueChanged(event: IPepFormFieldValueChangeEvent): void {\n this.formValueChange.emit(event);\n }\n\n onFormFieldClick(event: IPepFormFieldClickEvent): void {\n this.formFieldClick.emit(event);\n }\n\n ngOnChanges(changes: any): void {\n // debugger;\n // For testing.\n // this.field.disabled = this.field.readonly = false;\n }\n\n ngOnDestroy(): void {\n //\n }\n}\n","<ng-container [ngSwitch]=\"field.controlType\" [formGroup]=\"form\">\n\n <pep-address *ngSwitchCase=\"'address'\" [form]=\"form\" [key]=\"field.key\" [formattedValue]=\"field.formattedValue\"\n [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [groupFields]=\"field.groupFields\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" (addressValueChange)=\"onAddressValueChanged($event, field)\">\n </pep-address>\n\n <pep-attachment *ngSwitchCase=\"'attachment'\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.value\"\n [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [isActive]=\"isActive\" [showTitle]=\"showTitle\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" (elementClick)=\"onClick($event)\"\n (fileChange)=\"onFileChanged($event, field)\">\n </pep-attachment>\n\n <pep-checkbox *ngSwitchCase=\"'checkbox'\" [form]=\"form\" [key]=\"field.key\"\n [value]=\"(field.value?.toString() | lowercase) == 'true' || field.value == '1' ? true : false\" [label]=\"field.label\"\n [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [additionalValue]=\"field.additionalValue\"\n [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\"\n (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\">\n </pep-checkbox>\n\n <pep-date *ngSwitchCase=\"'date'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [label]=\"field.label\" [type]=\"field.type\" [mandatory]=\"field.mandatory\"\n [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [textColor]=\"field.textColor\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [minValue]=\"field.minValue\"\n [maxValue]=\"field.maxValue\" [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\"\n (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\">\n </pep-date>\n\n <pep-images-filmstrip *ngSwitchCase=\"'images'\" [uid]=\"uid\" [form]=\"form\" [key]=\"field.key\" [label]=\"field.label\"\n [showTitle]=\"showTitle\" [rowSpan]=\"field.rowSpan\" [value]=\"field.value\" [layoutType]=\"layoutType\">\n </pep-images-filmstrip>\n\n <pep-image *ngSwitchCase=\"'image'\" [uid]=\"uid\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.formattedValue\"\n [srcLarge]=\"field.value\" [options]=\"field.options\" [label]=\"field.label\" [mandatory]=\"field.mandatory\"\n [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\"\n [rowSpan]=\"field.rowSpan\" [indicatorsField]=\"field.indicatorsField\" [menuField]=\"field.menuField\"\n [hasCampaignField]=\"field.hasCampaignField\" [sizeLimitMB]=\"field.sizeLimitMB\" [isActive]=\"isActive\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" (elementClick)=\"onClick($event)\"\n (fileChange)=\"onFileChanged($event, field)\">\n </pep-image>\n\n <pep-quantity-selector *ngSwitchCase=\"'qs'\" [form]=\"form\" [key]=\"field.key\" [allowDecimal]=\"field.allowDecimal\" [value]=\"field.value\"\n [label]=\"field.label\" [type]=\"field.type\" [mandatory]=\"field.mandatory\"\n [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [textColor]=\"field.textColor\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n [additionalValue]=\"field.additionalValue\" [notificationInfo]=\"field.notificationInfo\" [isActive]=\"isActive\"\n [layoutType]=\"layoutType\" [showTitle]=\"showTitle\" [visible]=\"field.visible\"\n [minFractionDigits]=\"field.digitsNumberAfterDecimalPoint\" (valueChange)=\"onValueChanged($event, field)\"\n (elementClick)=\"onClick($event)\">\n </pep-quantity-selector>\n <!-- (formValidationChange)=\"onFormValidationChanged($event)\" -->\n\n <pep-rich-html-textarea *ngSwitchCase=\"'richhtmltextarea'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [maxFieldCharacters]=\"field.maxFieldCharacters\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\" [renderTitle]=\"field.renderTitle\"\n [renderEnlargeButton]=\"field.renderEnlargeButton\" (valueChange)=\"onValueChanged($event, field)\"\n [isActive]=\"isActive\">\n </pep-rich-html-textarea>\n\n <pep-select *ngSwitchCase=\"'select'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\" [label]=\"field.label\"\n [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [options]=\"field.options\" [showTitle]=\"showTitle\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" [emptyOption]=\"field.emptyOption\"\n (valueChange)=\"onValueChanged($event, field)\" \n [isActive]=\"isActive\">\n </pep-select>\n <!-- (formValidationChange)=\"onFormValidationChanged($event)\" -->\n\n <pep-separator *ngSwitchCase=\"'separator'\" [form]=\"form\" [key]=\"field.key\" [label]=\"field.label\"\n [xAlignment]=\"field.xAlignment\" [layoutType]=\"layoutType\" [visible]=\"field.visible\">\n </pep-separator>\n\n <pep-signature *ngSwitchCase=\"'signature'\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.value\" [label]=\"field.label\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [isActive]=\"isActive\" [layoutType]=\"layoutType\"\n [visible]=\"field.visible\" (fileChange)=\"onFileChanged($event, field)\">\n </pep-signature>\n\n <pep-textarea *ngSwitchCase=\"'textarea'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\" [label]=\"field.label\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [maxFieldCharacters]=\"field.maxFieldCharacters\" [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\"\n [rowSpan]=\"field.rowSpan\" [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [visible]=\"field.visible\"\n (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\">\n </pep-textarea>\n\n <pep-textbox *ngSwitchCase=\"'textbox'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [accessory]=\"field.accessory\" [label]=\"field.label\"\n [placeholder]=\"field.placeholder\" [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\"\n [readonly]=\"field.readonly\" [maxFieldCharacters]=\"field.maxFieldCharacters\" [textColor]=\"field.textColor\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [regex]=\"field.regex\" [regexError]=\"field.regexError\"\n [showTitle]=\"showTitle\" [layoutType]=\"layoutType\" [minFractionDigits]=\"field.digitsNumberAfterDecimalPoint\"\n (valueChange)=\"onValueChanged($event, field)\" \n [isActive]=\"isActive\" [visible]=\"field.visible\">\n </pep-textbox>\n <!-- (formValidationChange)=\"onFormValidationChanged($event)\" -->\n\n <pep-link *ngSwitchCase=\"'link'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\" [displayValue]=\"field.formattedValue\"\n [label]=\"field.label\" [placeholder]=\"field.placeholder\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [maxFieldCharacters]=\"field.maxFieldCharacters\" [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\"\n [rowSpan]=\"field.rowSpan\" [showTitle]=\"showTitle\" [layoutType]=\"layoutType\"\n (valueChange)=\"onValueChanged($event, field)\" [isActive]=\"isActive\" [visible]=\"field.visible\"\n (elementClick)=\"onClick($event)\">\n </pep-link>\n <!-- (formValidationChange)=\"onFormValidationChanged($event)\" -->\n\n <pep-indicators *ngSwitchCase=\"'indicators'\" [key]=\"field.key\" [value]=\"field.value\" [layoutType]=\"layoutType\">\n </pep-indicators>\n <pep-internal-button *ngSwitchCase=\"'button'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [formattedValue]=\"field.formattedValue\" [label]=\"field.label\"\n [referenceObjectInternalType]=\"field.referenceObjectInternalType\" [type]=\"field.type\"\n [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\"\n [layoutType]=\"layoutType\" [visible]=\"field.visible\" (elementClick)=\"onClick($event)\"\n (valueChange)=\"onValueChanged($event, field)\">\n </pep-internal-button>\n <pep-internal-menu *ngSwitchCase=\"'menu'\" [key]=\"field.key\" [label]=\"field.label\" [disabled]=\"field.disabled\"\n [xAlignment]=\"field.xAlignment\" [options]=\"field.options\" [layoutType]=\"layoutType\"\n (elementClick)=\"onClick($event)\">\n </pep-internal-menu>\n <pep-internal-page *ngSwitchCase=\"'internalPage'\" [field]=\"field\" [layoutType]=\"layoutType\"\n (internalFormFieldClick)=\"onInternalFormFieldClick($event)\"\n (internalFormFieldChange)=\"onInternalFormFieldChanged($event)\">\n </pep-internal-page>\n\n <pep-internal-carusel *ngSwitchCase=\"'internalCarusel'\" [field]=\"field\"\n (internalFormFieldClick)=\"onInternalFormFieldClick($event)\"\n (internalFormFieldChange)=\"onInternalFormFieldChanged($event)\">\n </pep-internal-carusel>\n\n <ng-container *ngSwitchCase=\"'placeholder'\">\n </ng-container>\n</ng-container>","import {\n Component,\n ChangeDetectionStrategy,\n OnInit,\n OnDestroy,\n Input,\n KeyValueDiffers,\n Output,\n EventEmitter,\n OnChanges,\n DoCheck, \n} from '@angular/core';\nimport {\n FormGroup,\n FormBuilder,\n Validators,\n AbstractControl,\n} from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n PepDialogService,\n PepDialogData,\n} from '@pepperi-addons/ngx-lib/dialog';\nimport {\n IPepFieldValueChangeEvent,\n IPepFieldClickEvent,\n PepLayoutType,\n FIELD_TYPE,\n PepCustomizationService,\n PepLayoutService,\n UIControl,\n UIControlField,\n ObjectsDataRow,\n ObjectsDataRowCell,\n PepFieldBase,\n PepTextboxField,\n PepSelectField,\n PepInternalMenuField,\n PepQuantitySelectorField,\n PepAddressField,\n PepIndicatorsField,\n PepInternalPageField,\n PepInternalCaruselField,\n PepInternalButtonField,\n PepAttachmentField,\n PepSignatureField,\n PepImageField,\n PepImagesField,\n PepLinkField,\n PepTextareaField,\n PepRichHtmlTextareaField,\n PepDateField,\n PepCheckboxField,\n PepSeparatorField,\n PepPlaceholderField,\n PepHorizontalAlignment,\n PepVerticalAlignment,\n X_ALIGNMENT_TYPE,\n Y_ALIGNMENT_TYPE,\n DEFAULT_VERTICAL_ALIGNMENT,\n DEFAULT_HORIZONTAL_ALIGNMENT,\n KeyValuePair,\n IPepOption,\n} from '@pepperi-addons/ngx-lib';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { IPepFormFieldValueChangeEvent, IPepFormFieldClickEvent } from './form.model';\n\n@Component({\n selector: 'pep-form',\n templateUrl: './form.component.html',\n styleUrls: ['./form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepFormComponent implements OnInit, DoCheck, OnChanges, OnDestroy {\n @Input() isInternal = true;\n @Input() isReport = false;\n @Input() layout: UIControl;\n @Input() lockEvents = false;\n @Input() canEditObject = true;\n\n private _data: ObjectsDataRow = null;\n @Input()\n set data(value: ObjectsDataRow) {\n const shouldReload = this.shouldReloadForm || !this._data;\n this._data = value;\n\n if (shouldReload) {\n this._shouldReloadForm = false;\n this.initForm();\n } else {\n this.updateForm();\n }\n }\n get data(): ObjectsDataRow {\n return this._data;\n }\n\n @Input()\n set lockFields(value: boolean) {\n this.isLocked = value;\n }\n\n @Input() isActive = false; \n @Input() layoutType: PepLayoutType = 'card';\n // @Input() listType = '';\n @Input() objectId = '0';\n @Input() parentId = '0';\n @Input() searchCode = '0';\n @Input() showTitle = true;\n @Input() firstFieldAsLink = false;\n @Input() checkForChanges: any = null;\n\n @Output()\n valueChange: EventEmitter<IPepFormFieldValueChangeEvent> = new EventEmitter<IPepFormFieldValueChangeEvent>();\n @Output()\n formValidationChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @Output()\n fieldClick: EventEmitter<IPepFormFieldClickEvent> = new EventEmitter<IPepFormFieldClickEvent>();\n\n @Output() internalFormFieldClick: EventEmitter<any> = new EventEmitter<any>();\n @Output() internalFormFieldChange: EventEmitter<any> = new EventEmitter<any>();\n\n isLocked = false;\n formGutterSize;\n cardGutterSize;\n rowHeight;\n // private matrixIsLast = false;\n // lastUpdatedFieldApiName: string = '';\n form: FormGroup;\n differ: any;\n\n // payLoad = '';\n private rows: Array<PepFieldBase[]> = [];\n fields: PepFieldBase[] = [];\n\n private _fieldsSubject: BehaviorSubject<PepFieldBase[]> = new BehaviorSubject<PepFieldBase[]>([]);\n get fields$(): Observable<PepFieldBase[]> {\n return this._fieldsSubject.asObservable();\n }\n\n columns = 1;\n\n private hasMenuFloatingOnOtherField = false;\n private menuField: any;\n private menuDataField: any;\n private hasCampaignField: any;\n private hasCampaignDataField: any;\n private indicatorsField: any;\n private indicatorsDataField: any = null;\n\n private _shouldReloadForm = false;\n get shouldReloadForm(): boolean {\n return this._shouldReloadForm;\n }\n\n // eventServiceSub: Subscription;\n // public jsonLib = JSON;\n\n constructor(\n private dialogService: PepDialogService,\n private customizationService: PepCustomizationService,\n private layoutService: PepLayoutService,\n private fb: FormBuilder,\n differs: KeyValueDiffers,\n private translate: TranslateService\n ) {\n // store the initial value to compare with\n this.differ = differs.find({}).create();\n }\n\n convertXAlignToHorizontalAlign(\n xAlign: X_ALIGNMENT_TYPE\n ): PepHorizontalAlignment {\n let res = DEFAULT_HORIZONTAL_ALIGNMENT;\n\n if (\n xAlign === X_ALIGNMENT_TYPE.None ||\n xAlign === X_ALIGNMENT_TYPE.Left\n ) {\n res = 'left';\n } else if (xAlign === X_ALIGNMENT_TYPE.Right) {\n res = 'right';\n } else {\n res = 'center';\n }\n\n return res;\n }\n\n convertYAlignToVerticalAlign(\n yAlign: Y_ALIGNMENT_TYPE\n ): PepVerticalAlignment {\n let res = DEFAULT_VERTICAL_ALIGNMENT;\n\n if (\n yAlign === Y_ALIGNMENT_TYPE.None ||\n yAlign === Y_ALIGNMENT_TYPE.Top\n ) {\n res = 'top';\n } else if (yAlign === Y_ALIGNMENT_TYPE.Bottom) {\n res = 'bottom';\n } else {\n res = 'middle';\n }\n\n return res;\n }\n\n convertOptionalValues(\n optionalValues: Array<KeyValuePair<string>>\n ): IPepOption[] {\n if (optionalValues && optionalValues.length > 0) {\n return optionalValues.map((ov) => {\n return { key: ov.Key, value: ov.Value };\n });\n } else {\n return [];\n }\n }\n\n convertAddressFields(\n controlField: UIControlField,\n addressFields: Array<ObjectsDataRowCell>,\n canEditObject: boolean\n ): PepFieldBase[] {\n const fields: PepFieldBase[] = [];\n\n addressFields.forEach((field) => {\n let customField: PepFieldBase;\n const placeholder = field.ApiName;\n\n if (field.ApiName.toLowerCase().indexOf('street') >= 0) {\n customField = new PepTextboxField({\n key: field.ApiName,\n label: field.ApiName,\n type: 'text',\n placeholder,\n readonly: !canEditObject,\n disabled: !field.Enabled || !canEditObject,\n hidden: false,\n mandatory: false,\n value: field.Value,\n formattedValue: field.FormattedValue,\n row: 0,\n rowSpan: 1,\n col: 0,\n colSpan: 2,\n xAlignment: this.convertXAlignToHorizontalAlign(\n controlField.Layout.XAlignment\n ),\n yAlignment: this.convertYAlignToVerticalAlign(\n controlField.Layout.YAlignment\n ),\n order: 0,\n });\n } else if (field.ApiName.toLowerCase().indexOf('city') >= 0) {\n customField = new PepTextboxField({\n key: field.ApiName,\n label: field.ApiName,\n type: 'text',\n placeholder,\n readonly: !canEditObject,\n disabled: !field.Enabled || !canEditObject,\n hidden: false,\n mandatory: false,\n value: field.Value,\n formattedValue: field.FormattedValue,\n row: 0,\n rowSpan: 1,\n col: 2,\n colSpan: 1,\n xAlignment: this.convertXAlignToHorizontalAlign(\n controlField.Layout.XAlignment\n ),\n yAlignment: this.convertYAlignToVerticalAlign(\n controlField.Layout.YAlignment\n ),\n order: 1,\n });\n } else if (field.ApiName.toLowerCase().indexOf('state') >= 0) {\n customField = new PepSelectField({\n key: field.ApiName,\n label: field.ApiName,\n placeholder,\n options: this.convertOptionalValues(field.OptionalValues),\n readonly: !canEditObject,\n disabled: !field.Enabled || !canEditObject,\n hidden: false,\n mandatory: false,\n value: field.Value,\n formattedValue: field.FormattedValue,\n row: 1,\n rowSpan: 1,\n col: 0,\n colSpan: 1,\n xAlignment: this.convertXAlignToHorizontalAlign(\n controlField.Layout.XAlignment\n ),\n yAlignment: this.convertYAlignToVerticalAlign(\n controlField.Layout.YAlignment\n ),\n order: 2,\n });\n } else if (field.ApiName.toLowerCase().indexOf('zipcode') >= 0) {\n customField = new PepTextboxField({\n key: field.ApiName,\n label: field.ApiName,\n type: 'text',\n placeholder,\n readonly: !canEditObject,\n disabled: !field.Enabled || !canEditObject,\n hidden: false,\n mandatory: false,\n value: field.Value,\n formattedValue: field.FormattedValue,\n row: 1,\n rowSpan: 1,\n col: 1,\n colSpan: 1,\n xAlignment: this.convertXAlignToHorizontalAlign(\n controlField.Layout.XAlignment\n ),\n yAlignment: this.convertYAlignToVerticalAlign(\n controlField.Layout.YAlignment\n ),\n order: 3,\n });\n } else if (field.ApiName.toLowerCase().indexOf('country') >= 0) {\n customField = new PepSelectField({\n key: field.ApiName,\n label: field.ApiName,\n placeholder,\n options: this.convertOptionalValues(field.OptionalValues),\n readonly: !canEditObject,\n disabled: !field.Enabled || !canEditObject,\n hidden: false,\n mandatory: false,\n value: field.Value,\n formattedValue: field.FormattedValue,\n row: 2,\n rowSpan: 1,\n col: 2,\n colSpan: 1,\n xAlignment: this.convertXAlignToHorizontalAlign(\n controlField.Layout.XAlignment\n ),\n yAlignment: this.convertYAlignToVerticalAlign(\n controlField.Layout.YAlignment\n ),\n order: 4,\n });\n }\n\n fields.push(customField);\n });\n\n return fields.sort((n1, n2) =>\n n1.order > n2.order ? 1 : n1.order < n2.order ? -1 : 0\n );\n }\n\n isMatrixField(apiNameToCheck: string): boolean {\n return apiNameToCheck.indexOf('Matrix') >= 0;\n }\n\n doesFieldHavaFloatingField(\n controlField: UIControlField,\n floatingField: any\n ): boolean {\n let hasFloatingField = false;\n if (\n floatingField.Layout.Y >= controlField.Layout.Y &&\n floatingField.Layout.Y <\n controlField.Layout.Y + controlField.Layout.Height &&\n floatingField.Layout.X >= controlField.Layout.X &&\n floatingField.Layout.X <\n controlField.Layout.X + controlField.Layout.Width\n ) {\n hasFloatingField = true;\n }\n\n return hasFloatingField;\n }\n\n getOptionsForCustomField(\n controlField: UIControlField,\n dataField: any,\n canEditObject: boolean\n ): any {\n if (!controlField || !dataField) {\n return;\n }\n\n const placeholder =\n controlField.ReadOnly || !canEditObject ? '' : controlField.Title;\n\n let fieldProperties = {\n key: controlField.ApiName,\n label: controlField.Title,\n accessory: dataField.Accessory,\n placeholder,\n readonly: controlField.ReadOnly || !canEditObject,\n disabled: !dataField.Enabled || !canEditObject,\n hidden: controlField.Hidden,\n mandatory: controlField.Mandatory,\n value: dataField.Value,\n formattedValue: dataField.FormattedValue,\n additionalValue: dataField.AdditionalValue,\n row: controlField.Layout.Y,\n rowSpan: controlField.Layout.Height,\n col: controlField.Layout.X,\n colSpan: controlField.Layout.Width,\n xAlignment: this.convertXAlignToHorizontalAlign(\n controlField.Layout.XAlignment\n ),\n yAlignment: this.convertYAlignToVerticalAlign(\n controlField.Layout.YAlignment\n ),\n options: this.convertOptionalValues(dataField.OptionalValues),\n groupFields: undefined,\n maxFieldCharacters: controlField.MaxFieldCharacters,\n minValue: controlField.MinValue,\n maxValue: controlField.MaxValue,\n // hasMenu: hasMenu,\n // hasCampaign: hasCampaign,\n // hasIndicators: hasIndicators,\n textColor: dataField.TextColor,\n visible: dataField.Visible,\n digitsNumberAfterDecimalPoint: dataField.DigitsNumberAfterDecimalPoint,\n };\n\n if (dataField.AdditionalProps) {\n fieldProperties = {\n ...fieldProperties,\n ...dataField.AdditionalProps\n }\n }\n return fieldProperties;\n }\n\n convertToCustomField(\n controlField: UIControlField,\n dataField: any,\n canEditObject: boolean,\n menuField: any,\n hasCampaignField: any,\n indicatorsField: any,\n objectId: any,\n parentId: any,\n searchCode: any\n ): PepFieldBase {\n let customField: PepFieldBase;\n const options = this.getOptionsForCustomField(\n controlField,\n dataField,\n canEditObject\n );\n\n if (controlField.ApiName === 'ObjectMenu') {\n options.type = 'menu';\n customField = new PepInternalMenuField(options);\n } else if (\n controlField.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n controlField.FieldType ===\n FIELD_TYPE.NumberIntegerQuantitySelector ||\n controlField.ApiName === 'QuantitySelector' ||\n controlField.ApiName === 'UnitsQuantity' ||\n controlField.ApiName.indexOf('size_') === 0\n ) {\n if (dataField.FieldType === FIELD_TYPE.InternalLink) {\n options.type = 'button';\n } else if (dataField.FieldType === FIELD_TYPE.Package) {\n options.type = 'packageButton';\n } else if (\n dataField.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n dataField.FieldType === FIELD_TYPE.NumberReal\n ) {\n options.type = 'qs';\n options.allowDecimal = true;\n } else if (\n dataField.FieldType ===\n FIELD_TYPE.NumberIntegerQuantitySelector ||\n dataField.FieldType === FIELD_TYPE.NumberInteger\n ) {\n options.type = 'qs';\n options.allowDecimal = false;\n } else if (\n dataField.FieldType === FIELD_TYPE.NumberIntegerForMatrix\n ) {\n options.type = 'qsForMatrix';\n options.allowDecimal = false;\n } else if (dataField.FieldType === FIELD_TYPE.NumberRealForMatrix) {\n options.type = 'qsForMatrix';\n options.allowDecimal = true;\n }\n\n options.notificationInfo = dataField.NotificationInfo;\n customField = new PepQuantitySelectorField(options);\n } else {\n // HACK: need to remove this..\n if (\n dataField.FieldType === FIELD_TYPE.Indicators &&\n this.isMatrixField(dataField.ApiName)\n ) {\n dataField.FieldType = FIELD_TYPE.InternalPage;\n }\n\n switch (dataField.FieldType) {\n case FIELD_TYPE.Address: {\n const canEditGroupObject = controlField.ReadOnly\n ? false\n : canEditObject;\n options.groupFields = this.convertAddressFields(\n controlField,\n dataField.GroupFields,\n canEditGroupObject\n );\n customField = new PepAddressField(options);\n break;\n }\n case FIELD_TYPE.Indicators: {\n // options['type'] = 'indicators'; // Not needed this is PepIndicatorsField.\n customField = new PepIndicatorsField(options);\n break;\n }\n case FIELD_TYPE.InternalPage: {\n if (this.isMatrixField(controlField.ApiName)) {\n options.rowSpan = controlField.Layout.Height;\n options.objectId = objectId;\n options.parentId = parentId;\n options.searchCode = searchCode;\n\n customField = new PepInternalPageField(options);\n } else {\n // Not supported\n }\n break;\n }\n case FIELD_TYPE.RelatedObjectsCards: {\n options.rowSpan = controlField.Layout.Height;\n options.searchCode = searchCode;\n options.pageInfo = dataField.UIPageInfo;\n\n customField = new PepInternalCaruselField(options);\n break;\n }\n case FIELD_TYPE.Link: {\n options.type = 'link';\n customField = new PepLinkField(options);\n break;\n }\n case FIELD_TYPE.InternalLink:\n case FIELD_TYPE.Button: {\n options.type = 'button';\n customField = new PepInternalButtonField(options);\n break;\n }\n case FIELD_TYPE.Attachment: {\n // options.type = 'attachment';\n customField = new PepAttachmentField(options);\n break;\n }\n case FIELD_TYPE.Signature: {\n // options.type = 'signature';\n customField = new PepSignatureField(options);\n break;\n }\n case FIELD_TYPE.Image:\n case FIELD_TYPE.ImageURL: {\n // options.type = 'image';\n options.menuField =\n menuField &&\n this.doesFieldHavaFloatingField(controlField, menuField)\n ? menuField\n : null;\n options.hasCampaignField =\n hasCampaignField &&\n this.doesFieldHavaFloatingField(\n controlField,\n hasCampaignField\n )\n ? hasCampaignField\n : null;\n options.indicatorsField =\n indicatorsField &&\n this.doesFieldHavaFloatingField(\n controlField,\n indicatorsField\n )\n ? indicatorsField\n : null;\n\n customField = new PepImageField(options);\n break;\n }\n case FIELD_TYPE.Images: {\n // options.type = 'images';\n customField = new PepImagesField(options);\n break;\n }\n case FIELD_TYPE.Email: {\n options.type = 'email';\n customField = new PepTextboxField(options);\n break;\n }\n case FIELD_TYPE.Phone: {\n options.type = 'phone';\n customField = new PepTextboxField(options);\n break;\n }\n case FIELD_TYPE.Duration: {\n options.type = 'duration';\n customField = new PepTextboxField(options);\n break;\n }\n case FIELD_TYPE.Default:\n case FIELD_TYPE.TextBox:\n case FIELD_TYPE.LimitedLengthTextBox:\n case FIELD_TYPE.TextHeader:\n case FIELD_TYPE.CalculatedString:\n case FIELD_TYPE.MapDataString: {\n customField = new PepTextboxField(options);\n break;\n }\n case FIELD_TYPE.TextArea: {\n customField = new PepTextareaField(options);\n break;\n }\n\n case FIELD_TYPE.RichTextHTML: {\n customField = new PepRichHtmlTextareaField(options);\n break;\n }\n case FIELD_TYPE.Date:\n case FIELD_TYPE.LimitedDate:\n case FIELD_TYPE.CalculatedDate:\n case FIELD_TYPE.DateAndTime: {\n options.type =\n dataField.FieldType === FIELD_TYPE.DateAndTime\n ? 'datetime'\n : 'date';\n customField = new PepDateField(options);\n break;\n }\n case FIELD_TYPE.NumberInteger:\n case FIELD_TYPE.CalculatedInt:\n case FIELD_TYPE.MapDataInt: {\n options.type = 'int';\n customField = new PepTextboxField(options);\n break;\n }\n case FIELD_TYPE.Percentage: {\n options.type = 'percentage';\n customField = new PepTextboxField(options);\n break;\n }\n case FIELD_TYPE.Currency: {\n options.type = 'currency';\n customField = new PepTextboxField(options);\n break;\n }\n case FIELD_TYPE.NumberReal:\n case FIELD_TYPE.CalculatedReal:\n case FIELD_TYPE.MapDataReal:\n case FIELD_TYPE.Sum:\n case FIELD_TYPE.Totals: {\n options.type = 'real';\n customField = new PepTextboxField(options);\n break;\n }\n case FIELD_TYPE.Boolean:\n case FIELD_TYPE.CalculatedBool: {\n customField = new PepCheckboxField(options);\n break;\n }\n case FIELD_TYPE.BooleanText: {\n options.type = 'booleanText';\n customField = new PepCheckboxField(options);\n break;\n }\n case FIELD_TYPE.ComboBox:\n case FIELD_TYPE.EmptyComboBox:\n case FIELD_TYPE.MapDataDropDown: {\n // options.type = 'select';\n customField = new PepSelectField(options);\n break;\n }\n case FIELD_TYPE.MultiTickBox:\n case FIELD_TYPE.MultiTickBoxToComboBox:\n case FIELD_TYPE.EmptyMultiTickBox: {\n options.type = 'multi';\n customField = new PepSelectField(options);\n break;\n }\n case FIELD_TYPE.GuidReferenceType: {\n options.type = 'reference';\n options.referenceObjectType = dataField.ReferenceObjectType;\n options.referenceObjectSubType =\n dataField.ReferenceObjectSubType;\n options.referenceObjectInternalType =\n dataField.ReferenceObjectInternalType;\n customField = new PepInternalButtonField(options);\n break;\n }\n case FIELD_TYPE.ListOfObjects: {\n options.type = 'listofobjects';\n customField = new PepInternalButtonField(options);\n break;\n }\n case FIELD_TYPE.Separator: {\n customField = new PepSeparatorField(options);\n break;\n }\n /*\n case FIELD_TYPE.Images: return that.field(value);\n */\n case FIELD_TYPE.NumberRealQuantitySelector:\n case FIELD_TYPE.NumberIntegerQuantitySelector: {\n options.type = 'qs';\n options.allowDecimal =\n dataField.FieldType ===\n FIELD_TYPE.NumberRealQuantitySelector;\n options.notificationInfo = dataField.NotificationInfo;\n\n customField = new PepQuantitySelectorField(options);\n break;\n }\n case FIELD_TYPE.Package: {\n options.type = 'packageButton';\n options.notificationInfo = dataField.NotificationInfo;\n\n customField = new PepQuantitySelectorField(options);\n break;\n }\n }\n }\n\n if (!customField) {\n options.label = controlField.ApiName + ' is not supported!!!';\n customField = new PepSeparatorField(options);\n }\n\n return customField;\n }\n\n getFieldFormattedValue(field: PepFieldBase): string {\n let fieldFormattedValue = field.formattedValue || field.value;\n\n // Fix for the custom check box component.\n if (field.controlType === 'checkbox') {\n fieldFormattedValue = fieldFormattedValue === 'true';\n }\n\n // Fix for the custom button component.\n if (field.controlType === 'button') {\n fieldFormattedValue =\n fieldFormattedValue === '0' ? '' : fieldFormattedValue;\n }\n\n // Fix for the custom date component.\n if (field.controlType === 'date' || field.controlType === 'datetime') {\n if(fieldFormattedValue === '' ||\n fieldFormattedValue.indexOf('1900-1-1') >= 0 ||\n fieldFormattedValue.indexOf('1900-01-01') >= 0 ||\n fieldFormattedValue.indexOf('1970-1-1') >= 0 ||\n fieldFormattedValue.indexOf('1970-01-01') >= 0\n ) {\n fieldFormattedValue = '';\n }\n }\n\n return fieldFormattedValue;\n }\n\n private toControlGroup(fields: PepFieldBase[]): FormGroup {\n const group = {};\n if (fields && fields.length > 0) {\n fields.forEach((field) => {\n if (field.groupFields && field.groupFields.length > 0) {\n const subGroup = {};\n\n field.groupFields.forEach((groupField) => {\n if (\n groupField.mandatory &&\n !field.readonly &&\n !field.disabled\n ) {\n subGroup[groupField.key] = [\n {\n value: groupField.formattedValue || '',\n disabled:\n field.readonly ||\n field.disabled ||\n groupField.disabled,\n },\n [Validators.required],\n ];\n } else {\n subGroup[groupField.key] = [\n {\n value: groupField.formattedValue || '',\n disabled:\n field.readonly ||\n field.disabled ||\n groupField.disabled,\n },\n [Validators.nullValidator],\n ];\n }\n });\n\n group[field.key] = this.fb.group(subGroup);\n } else {\n const validators = field.getValidators();\n const fieldFormattedValue = this.getFieldFormattedValue(\n field\n );\n\n group[field.key] = [\n {\n value: fieldFormattedValue || '',\n disabled: field.disabled,\n },\n validators,\n ];\n }\n });\n }\n\n return this.fb.group(group);\n }\n\n private createBaseField(uiControlField: UIControlField, dataField: any) {\n const customField: PepFieldBase = this.convertToCustomField(\n uiControlField,\n dataField,\n this.canEditObject,\n this.menuDataField,\n this.hasCampaignDataField,\n this.indicatorsDataField,\n this.objectId,\n this.parentId,\n this.searchCode\n );\n\n return customField;\n }\n\n public showFormValidationMessage(): void {\n const fields: PepFieldBase[] = this.fields;\n let emptyMandatoryFieldsMsg = '';\n let notValidFieldsMsg = '';\n\n // for (let i: number = 0; i < fields.length; i++) {\n // let field = fields[i];\n for (const field of fields) {\n const formControl = this.form && this.form.get(field.key);\n\n if (formControl) {\n // Mandatory is empty.\n if (\n field.mandatory &&\n formControl.value.toString().trim().length === 0\n ) {\n emptyMandatoryFieldsMsg +=\n '<li><small>' + field.label + '</small></li>';\n } else if (!field.disabled && !formControl.valid) {\n notValidFieldsMsg +=\n '<li><small>' + field.label + '</small></li>';\n }\n }\n }\n\n // Add the header message of the empty mandatory fields\n if (emptyMandatoryFieldsMsg.length > 0) {\n emptyMandatoryFieldsMsg =\n '<div>' +\n this.translate.instant('MESSAGES.ERROR_MANDATORY_FIELDS') +\n \"</div><ul style='padding: 0 20px;'>\" +\n emptyMandatoryFieldsMsg +\n '</ul><br/>';\n }\n\n // Add the header message of the empty mandatory fields\n if (notValidFieldsMsg.length > 0) {\n notValidFieldsMsg =\n '<div>' +\n this.translate.instant('MESSAGES.ERROR_INVALID_FIELDS') +\n \"</div><ul style='padding: 0 20px;'>\" +\n notValidFieldsMsg +\n '</ul>';\n }\n\n const title = this.translate.instant('MESSAGES.TITLE_NOTICE');\n const data = new PepDialogData({\n title,\n content: emptyMandatoryFieldsMsg + notValidFieldsMsg,\n });\n this.dialogService.openDefaultDialog(data);\n }\n\n ngOnInit(): void {\n const themeVars = this.customizationService.getThemeVariables();\n // convert rem to pixel\n const RemToPixel = 16;\n this.formGutterSize =\n this.customizationService.getNumberThemeVariable(\n themeVars,\n PepCustomizationService.FORM_SPACEING_KEY\n ) * RemToPixel;\n this.cardGutterSize =\n this.customizationService.getNumberThemeVariable(\n themeVars,\n PepCustomizationService.CARD_SPACEING_KEY\n ) * RemToPixel;\n }\n\n ngDoCheck(): void {\n const changes = this.differ.diff(this.data); // check for changes\n if (changes) {\n this.updateForm();\n this.checkForChanges = new Date();\n }\n }\n\n ngOnChanges(changes): void {\n // if (changes.data && changes.data.currentValue) {\n // // Load changes\n // if (!this.shouldReloadForm && changes.data.previousValue) {\n // this.data = changes.data.currentValue;\n // this.updateForm();\n // } else {\n // this._shouldReloadForm = false;\n // this.initForm();\n // }\n // }\n // if (this.shouldReloadForm || !changes?.data?.previousValue) {\n // this._shouldReloadForm = false;\n // this.initForm();\n // this.checkForChanges = new Date();\n // }\n }\n\n ngOnDestroy(): void {\n //\n }\n\n getUiControlFields(): Array<UIControlField> {\n return this.layout ? this.layout.ControlFields : [];\n }\n\n initFieldsStructure(fields: PepFieldBase[], maxRow: number): void {\n const themeVars = this.customizationService.getThemeVariables();\n\n // Set form row height.\n if (this.layoutType === 'card') {\n const cardFieldHeight = this.customizationService.getNumberThemeVariable(\n themeVars,\n PepCustomizationService.CARD_FIELD_HEIGHT_KEY\n );\n this.rowHeight = cardFieldHeight;\n } else {\n const rowFieldHeight = this.customizationService.getNumberThemeVariable(\n themeVars,\n PepCustomizationService.FORM_FIELD_HEIGHT_KEY\n );\n const rowFieldTitleHeight = this.customizationService.getNumberThemeVariable(\n themeVars,\n PepCustomizationService.FORM_FIELD_TITLE_HEIGHT_KEY\n );\n this.rowHeight = rowFieldHeight + rowFieldTitleHeight;\n }\n\n // Create the fields structure (the fields must be sorted!!!).\n if (fields.length > 0) {\n // Init the layout.\n if (\n // this.layoutType === 'form' ||\n this.layoutType === 'table'\n ) {\n this.fields = fields;\n this._fieldsSubject.next(fields);\n\n this.rows = [];\n\n for (let i = 0; i <= maxRow; i++) {\n this.rows[i] = [];\n }\n\n // for (let i = 0; i < fields.length; i++) {\n // const field = fields[i]\n for (const field of fields) {\n this.rows[field.row].push(field);\n }\n } else {\n const doesfieldExistIn: boolean[][] = new Array(maxRow);\n\n for (let i = 0; i < doesfieldExistIn.length; i++) {\n doesfieldExistIn[i] = new Array(this.columns);\n\n for (let j = 0; j < doesfieldExistIn[i].length; j++) {\n doesfieldExistIn[i][j] = false;\n }\n }\n\n // Run in squere (row - colspan, col - rowspan) and put true where it should.\n // for (let index = 0; index < fields.length; index++) {\n // const currentField = fields[index];\n for (const currentField of fields) {\n if (currentField.rowSpan > 1) {\n for (\n let row: number = currentField.row;\n row < currentField.row + currentField.rowSpan;\n row++\n ) {\n if (currentField.colSpan > 1) {\n for (\n let col: number = currentField.col;\n col <\n currentField.col + currentField.colSpan;\n col++\n ) {\n if (\n doesfieldExistIn.length > row &&\n doesfieldExistIn[0].length > col\n ) {\n doesfieldExistIn[row][col] = true;\n }\n }\n } else {\n if (\n doesfieldExistIn.length > row &&\n doesfieldExistIn[0].length >\n currentField.col\n ) {\n doesfieldExistIn[row][\n currentField.col\n ] = true;\n }\n }\n }\n } else if (currentField.colSpan > 1) {\n for (\n let col: number = currentField.col;\n col < currentField.col + currentField.colSpan;\n col++\n ) {\n if (\n doesfieldExistIn.length > currentField.row &&\n doesfieldExistIn[0].length > col\n ) {\n doesfieldExistIn[currentField.row][col] = true;\n }\n }\n } else {\n if (\n doesfieldExistIn.length > currentField.row &&\n doesfieldExistIn[0].length > currentField.col\n ) {\n doesfieldExistIn[currentField.row][\n currentField.col\n ] = true;\n }\n }\n }\n\n // Create empty fields where doesfieldExistIn is false (For the md-grid-list UI Component).\n for (let i = 0; i < doesfieldExistIn.length; i++) {\n for (let j = 0; j < doesfieldExistIn[i].length; j++) {\n if (!doesfieldExistIn[i][j]) {\n // Create empty field and add it to the fields list.\n fields.push(\n new PepPlaceholderField({\n key: i + '_' + j,\n label: '',\n placeholder: '',\n readonly: false,\n disabled: false,\n hidden: false,\n mandatory: false,\n value: '',\n formattedValue: '',\n row: i,\n rowSpan: 1,\n col: j,\n colSpan: 1,\n order: 1,\n })\n );\n }\n }\n }\n\n // Sort the fields again.\n this.fields = fields.sort((f1, f2) =>\n f1.row > f2.row\n ? 1\n : f1.row < f2.row\n ? -1\n : f1.col > f2.col\n ? 1\n : f1.col < f2.col\n ? -1\n : 0\n );\n this._fieldsSubject.next(fields);\n }\n }\n }\n\n setForm(isForUpdate = false): void {\n let allFieldsAreReadOnly = true;\n\n if (!isForUpdate) {\n const fields = [];\n for (const currentField of this.fields) {\n // Add all fields except 'internalPage' (for children).\n if (currentField.controlType !== 'internalPage') {\n fields.push(currentField);\n }\n\n if (!currentField.readonly) {\n allFieldsAreReadOnly = false;\n }\n }\n\n this.form = this.toControlGroup(fields);\n } else {\n // Update form values if changed by calculated fields.\n for (let i = 0; i < this.fields.length; i++) {\n let currentField = this.fields[i];\n\n if (currentField.controlType === 'internalCarusel') {\n // Hack to override (update) the field.\n const uiControlField = this.getUiControlFields().find(cf => cf.ApiName === currentField.key);\n const dataField = this.data.Fields.find(df => df.ApiName === currentField.key);\n currentField = this.createBaseField(uiControlField, dataField);\n this._fieldsSubject.value[i] = currentField;\n } else if (currentField.controlType !== 'internalPage') {\n if (\n currentField.groupFields &&\n currentField.groupFields.length > 0\n ) {\n // for (let j = 0; j < currentField.groupFields.length; j++) {\n // let currentGroupField = currentField.groupFields[j];\n for (const currentGroupField of currentField.groupFields) {\n const fieldFormattedValue = this.getFieldFormattedValue(\n currentGroupField\n );\n this.customizationService.updateFormField(\n this.form,\n currentGroupField,\n fieldFormattedValue,\n currentField\n );\n }\n } else {\n const fieldFormattedValue = this.getFieldFormattedValue(\n currentField\n );\n // this.form.controls[currentField.key].setValue(fieldFormattedValue);\n this.customizationService.updateFormField(\n this.form,\n currentField,\n fieldFormattedValue\n );\n }\n }\n\n if (!currentField.readonly) {\n allFieldsAreReadOnly = false;\n }\n }\n }\n\n let isFormValid = this.form?.valid;\n\n // Change validation to true if all fields are read only.\n if (!isFormValid && allFieldsAreReadOnly) {\n isFormValid = true;\n }\n\n this.onFormValidationChanged(isFormValid);\n\n // Set it to false to enable all fields.\n if (this.isInternal && this.isLocked) {\n this.isLocked = false;\n }\n }\n\n initForm(): void {\n if (this.data && this.data.Fields) {\n const fields: PepFieldBase[] = this.convertCustomFields(\n this.getUiControlFields(),\n this.data.Fields\n );\n\n const maxRow = Math.max(\n ...fields.map((f) => {\n return f.row + f.rowSpan;\n })\n );\n this.columns = Math.max(\n ...fields.map((f) => {\n return f.col + f.colSpan;\n })\n );\n\n this.initFieldsStructure(fields, maxRow);\n this.setForm();\n }\n }\n\n private updateField(\n customField: PepFieldBase,\n updatedField: ObjectsDataRowCell\n ): void {\n const options: any = {\n disabled: !updatedField.Enabled || !this.canEditObject,\n readonly: !updatedField.Enabled || !this.canEditObject,\n visible: updatedField.Visible,\n value: updatedField.Value,\n additionalValue: updatedField.AdditionalValue,\n formattedValue: updatedField.FormattedValue,\n textColor: updatedField.TextColor,\n digitsNumberAfterDecimalPoint: updatedField.DigitsNumberAfterDecimalPoint\n };\n\n if (customField instanceof PepQuantitySelectorField) {\n const notificationInfo = updatedField.NotificationInfo;\n options.notificationInfo = notificationInfo;\n\n // Change type if it's change (only for allowDecimal).\n let allowDecimal = false;\n if (updatedField.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n updatedField.FieldType === FIELD_TYPE.NumberReal ||\n updatedField.FieldType === FIELD_TYPE.NumberRealForMatrix\n ) {\n allowDecimal = true;\n }\n\n options.allowDecimal = allowDecimal;\n\n } else if (customField instanceof PepSelectField) {\n options.options = this.convertOptionalValues(\n updatedField.OptionalValues\n );\n\n if (!options.options || options.options.length === 0) {\n options.options.push({\n key: options.value,\n value: options.formattedValue,\n });\n }\n } else if (customField instanceof PepInternalCaruselField) {\n options.pageInfo = updatedField.UIPageInfo;\n }\n\n customField.update(options);\n }\n\n updateForm(): void {\n if (this.data && this.data.Fields) {\n for (const currentField of this.data.Fields) {\n const customField = this.fields.filter(\n (f) => f.key === currentField.ApiName\n )[0];\n // Update all fields except 'internalPage' type (for children).\n if (customField && customField.controlType !== 'internalPage') {\n this.updateField(customField, currentField);\n\n // Update the group fields.\n if (\n customField.controlType === 'address' &&\n currentField.GroupFields\n ) {\n // for (let j = 0; j < currentField.GroupFields.length; j++) {\n // let currentGroupField = currentField.GroupFields[j];\n for (const currentGroupField of currentField.GroupFields) {\n currentGroupField.Enabled = !currentField.Enabled\n ? false\n : currentGroupField.Enabled;\n\n const customGroupField = customField.groupFields.filter(\n (f) => f.key === currentGroupField.ApiName\n )[0];\n this.updateField(\n customGroupField,\n currentGroupField\n );\n }\n }\n }\n }\n\n this.setForm(true);\n }\n }\n\n public ReloadForm(): void {\n this._shouldReloadForm = true;\n }\n\n // onSubmit() {\n // if (this.form.valid) {\n // this.payLoad = JSON.stringify(this.form.value);\n // //this.submitted.emit(this.form.value);\n // }\n // }\n\n private getFormControlById(key: string): AbstractControl | null {\n let formControl = null;\n\n this.fields.forEach((field) => {\n if (field.key === key) {\n formControl = this.form.get(field.key);\n return;\n } else if (field.groupFields && field.groupFields.length > 0) {\n field.groupFields.forEach((groupField) => {\n if (groupField.key === key) {\n formControl = this.form.get(\n field.key + '.' + groupField.key\n );\n return;\n }\n });\n }\n });\n\n return formControl;\n }\n\n private setSpecialFields(\n controlFields: Array<any>,\n dataFields: Array<any>\n ): void {\n // let cf;\n // for (let index = 0; index < controlFields.length; index++) {\n // cf = controlFields[index];\n for (const cf of controlFields) {\n if (cf.ApiName === 'ObjectMenu') {\n this.menuField = cf;\n } else if (cf.ApiName === 'ItemHasActiveCampaign') {\n this.hasCampaignField = cf;\n } else if (cf.ApiName === 'ItemIndicatorsWithoutCampaign') {\n this.indicatorsField = cf;\n }\n }\n\n // let df;\n // for (let index = 0; index < dataFields.length; index++) {\n // df = dataFields[index];\n for (const df of dataFields) {\n if (df.ApiName === 'ObjectMenu') {\n this.menuDataField = df;\n } else if (df.ApiName === 'ItemHasActiveCampaign') {\n this.hasCampaignDataField = df;\n } else if (df.ApiName === 'ItemIndicatorsWithoutCampaign') {\n this.indicatorsDataField = df;\n }\n }\n\n if (this.menuField && this.menuDataField) {\n this.menuDataField.Layout = this.menuField.Layout;\n }\n\n if (this.hasCampaignField && this.hasCampaignDataField) {\n this.hasCampaignDataField.Layout = this.hasCampaignField.Layout;\n }\n\n if (this.indicatorsField && this.indicatorsDataField) {\n this.indicatorsDataField.Layout = this.indicatorsField.Layout;\n }\n\n // Check if menu is floating on other field.\n // for (let index = 0; index < controlFields.length; index++) {\n // cf = controlFields[index];\n for (const cf of controlFields) {\n if (this.menuField && cf.ApiName !== 'ObjectMenu') {\n this.hasMenuFloatingOnOtherField = this.doesFieldHavaFloatingField(\n cf,\n this.menuField\n );\n\n if (this.hasMenuFloatingOnOtherField) {\n break;\n }\n }\n }\n }\n\n convertCustomFields(\n controlFields: Array<any>,\n dataFields: Array<any>\n ): PepFieldBase[] {\n if (this.layoutType !== 'table') {\n this.setSpecialFields(controlFields, dataFields);\n } else {\n // HACK: convert to center alignment if table view & special fields)\n controlFields.forEach((field, index) => {\n if (\n field.ApiName === 'UnitsQuantity' ||\n field.ApiName === 'QuantitySelector' ||\n field.ApiName === 'ObjectMenu' ||\n field.FieldType === FIELD_TYPE.Image ||\n field.FieldType === FIELD_TYPE.ImageURL ||\n field.FieldType === FIELD_TYPE.Indicators ||\n field.FieldType === FIELD_TYPE.Boolean ||\n field.FieldType === FIELD_TYPE.CalculatedBool ||\n field.FieldType === FIELD_TYPE.Signature ||\n field.FieldType ===\n FIELD_TYPE.NumberIntegerQuantitySelector ||\n field.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n field.FieldType === FIELD_TYPE.Package ||\n field.FieldType === FIELD_TYPE.NumberIntegerForMatrix ||\n field.FieldType === FIELD_TYPE.NumberRealForMatrix\n ) {\n field.Layout.XAlignment = X_ALIGNMENT_TYPE.Center;\n } else {\n // HACK: align the rest of the fields by the culture.\n // field.Layout.XAlignment = this.layoutService.isRtl() ? X_ALIGNMENT_TYPE.Right : X_ALIGNMENT_TYPE.Left;\n }\n });\n }\n\n const fields: PepFieldBase[] = [];\n\n controlFields.forEach((field, index) => {\n const dataField = dataFields.filter(\n (df) => df.ApiName === field.ApiName\n )[0];\n\n if (!dataField) {\n return;\n }\n\n // If current view is not table view and those fields are special.\n if (\n this.layoutType !== 'table' &&\n ((this.hasMenuFloatingOnOtherField &&\n this.menuField &&\n this.menuField.ApiName === field.ApiName) ||\n (this.indicatorsField &&\n this.indicatorsField.ApiName === field.ApiName) ||\n (this.hasCampaignField &&\n this.hasCampaignField.ApiName === field.ApiName))\n ) {\n return;\n }\n\n // Set type to link\n if (index === 0 && this.firstFieldAsLink) {\n dataField.FieldType = FIELD_TYPE.InternalLink;\n // dataField.Value = this.getInternalLinkHref();\n }\n\n if (field.ApiName === 'ObjectMenu') {\n dataField.Enabled = true;\n // HACK : Until \"Enabled\" returns from the server, we set PepMenu to be\n // Disabled in cart on regular items and not campign items.\n }\n const customField: PepFieldBase = this.createBaseField(field, dataField);\n fields.push(customField);\n });\n\n return fields.sort((f1, f2) =>\n f1.row > f2.row\n ? 1\n : f1.row < f2.row\n ? -1\n : f1.col > f2.col\n ? 1\n : f1.col < f2.col\n ? -1\n : 0\n );\n }\n\n private onFormValidationChanged(formValidationChange: any): void {\n this.formValidationChange.emit(formValidationChange);\n }\n\n onValueChanged(event: IPepFieldValueChangeEvent): void {\n this.onFormValidationChanged(this.form.valid);\n\n const formControl = this.getFormControlById(event.key);\n\n const isValid = formControl ? formControl.valid : true;\n // const isValid = true;\n \n // If isValid || event.value === '' for init the field if the user want.\n if (isValid || event.value === '') {\n // Set it to false to disable all fields.\n if (this.isInternal && this.layoutType === 'form') {\n this.isLocked = true;\n }\n\n // Update the current field value.\n const currentField = this.fields.find((f) => f.key === event.key);\n if (currentField) {\n currentField.formattedValue = currentField.value = event.value;\n }\n\n this.valueChange.emit({\n id: this.data.UID.toString(),\n uiObjectKey: this.data.Key,\n key: event.key,\n value: event.value,\n controlType: event.controlType,\n });\n }\n }\n\n onClick(fieldClickEvent: IPepFieldClickEvent): void {\n const clickedUiControlField = this.data.Fields.filter(\n (f) => f.ApiName === fieldClickEvent.key\n )[0];\n const idType = this.data.Type ? this.data.Type.toString() : '';\n\n if (clickedUiControlField) {\n this.fieldClick.emit({\n id: this.data.UID.toString(),\n uiObjectKey: this.data.Key,\n key: fieldClickEvent.key,\n idType,\n which: fieldClickEvent.eventWhich,\n value: fieldClickEvent.value,\n controlType: fieldClickEvent.controlType,\n fieldType: clickedUiControlField.FieldType,\n otherData: fieldClickEvent.otherData,\n });\n } else {\n // For other api names (like enter children etc).\n this.fieldClick.emit({\n id: this.data.UID.toString(),\n uiObjectKey: this.data.Key,\n key: fieldClickEvent.key,\n idType,\n which: fieldClickEvent.eventWhich,\n value: fieldClickEvent.value,\n controlType: fieldClickEvent.controlType,\n otherData: fieldClickEvent.otherData,\n });\n }\n }\n\n // This event is for handle the internal page events.\n onInternalFormFieldClicked(internalFormFieldClick: any): void {\n this.internalFormFieldClick.emit(internalFormFieldClick);\n }\n\n // This event is for handle the internal page events.\n onInternalFormFieldChanged(internalFormFieldChange: any): void {\n this.internalFormFieldChange.emit(internalFormFieldChange);\n }\n\n // This event is for handle the related items change events.\n onFormValueChanged(event: IPepFormFieldValueChangeEvent): void {\n // this.valueChange.emit(event);\n }\n\n // This event is for handle the related items change events.\n onFormFieldClick(event: IPepFormFieldClickEvent): void {\n this.fieldClick.emit(event);\n }\n}\n","<fieldset *ngIf=\"form\" [formGroup]=\"form\" [disabled]=\"isLocked\" class=\"pep-form\"\n [ngStyle]=\"{ 'background-color': layoutType == 'card' && data?.BackgroundColor }\">\n <!-- New Form -->\n <mat-grid-list *ngIf=\"layoutType == 'form'\" [cols]=\"columns\" [rowHeight]=\"rowHeight + 'rem'\"\n [gutterSize]=\"formGutterSize\">\n <mat-grid-tile *ngFor=\"let field of fields$ | async\" [rowspan]=\"field.rowSpan\" [colspan]=\"field.colSpan\">\n <pep-field-generator *ngIf=\"field.controlType != 'placeholder'\" [form]=\"form\" [layoutType]=\"layoutType\"\n [checkForChanges]=\"checkForChanges\" [uid]=\"data?.UID\" [field]=\"field\" [showTitle]=\"showTitle\"\n (valueChange)=\"onValueChanged($event)\" (elementClick)=\"onClick($event)\"\n (internalFormFieldClick)=\"onInternalFormFieldClicked($event)\"\n (internalFormFieldChange)=\"onInternalFormFieldChanged($event)\"\n (formValueChange)=\"onFormValueChanged($event)\" (formFieldClick)=\"onFormFieldClick($event)\"\n >\n </pep-field-generator>\n <!-- (formValidationChange)=\"onFormValidationChanged($event)\" -->\n </mat-grid-tile>\n </mat-grid-list>\n\n <!-- Thumbnails -->\n <mat-grid-list *ngIf=\"layoutType == 'card'\" [cols]=\"columns\" [rowHeight]=\"rowHeight + 'rem'\"\n [gutterSize]=\"cardGutterSize\" class=\"card-spacing\">\n <mat-grid-tile *ngFor=\"let field of fields$ | async\" [rowspan]=\"field.rowSpan\" [colspan]=\"field.colSpan\"\n [ngStyle]=\"{ overflow: field.type == 'qs' ? 'unset' : 'hidden' }\">\n <pep-field-generator *ngIf=\"field.controlType != 'placeholder'\" [form]=\"form\" [layoutType]=\"layoutType\"\n [ngClass]=\"{ 'lock-events': lockEvents }\" [isActive]=\"isActive\" [checkForChanges]=\"checkForChanges\"\n [uid]=\"data?.UID\" [field]=\"field\" [showTitle]=\"showTitle\" (valueChange)=\"onValueChanged($event)\"\n (elementClick)=\"onClick($event)\" (internalFormFieldClick)=\"onInternalFormFieldClicked($event)\"\n (internalFormFieldChange)=\"onInternalFormFieldChanged($event)\"\n (formValueChange)=\"onFormValueChanged($event)\" (formFieldClick)=\"onFormFieldClick($event)\">\n </pep-field-generator>\n </mat-grid-tile>\n </mat-grid-list>\n\n <ng-container *ngIf=\"layoutType == 'table'\">\n <ng-container *ngIf=\"isReport; then reportBlock; else notReportBlock\"></ng-container>\n <ng-template #reportBlock>\n <ng-container *ngTemplateOutlet=\"report\"></ng-container>\n </ng-template>\n <ng-template #notReportBlock>\n <div *ngFor=\"let field of fields$ | async; let j = index\" class=\"pull-left flip table-cell \"\n [ngClass]=\"['text-align-' + field.xAlignment]\" style=\"height: 100%\"\n [ngStyle]=\"{ width: (layout?.ControlFields)[j]?.calcColumnWidthString}\">\n <pep-field-generator *ngIf=\"field.controlType != 'placeholder'\" [checkForChanges]=\"checkForChanges\"\n [uid]=\"data?.UID\" [field]=\"field\" [form]=\"form\" [layoutType]=\"layoutType\" [showTitle]=\"false\"\n (elementClick)=\"onClick($event)\" (valueChange)=\"onValueChanged($event)\"\n (formValueChange)=\"onFormValueChanged($event)\" (formFieldClick)=\"onFormFieldClick($event)\"\n [isActive]=\"isActive\">\n </pep-field-generator>\n </div>\n </ng-template>\n </ng-container>\n\n <!------- For testing ------------\n {{ form.value | json }}\n {{ form.valid }}\n ---------------------------------->\n</fieldset>\n\n<ng-template #report>\n <div *ngFor=\"let field of fields$ | async; let j = index\" class=\"pull-left flip pep-report-fields\"\n [ngStyle]=\"{ width: (layout?.ControlFields)[j]?.calcColumnWidthString }\"\n [ngClass]=\"['text-align-' + field.xAlignment]\">\n <ng-container [ngSwitch]=\"field.controlType\">\n <pep-image *ngSwitchCase=\"'image'\" [uid]=\"data?.UID\" [form]=\"form\" [key]=\"field.key\"\n [src]=\"field.formattedValue\" [srcLarge]=\"field.value\" [options]=\"field.options\" [label]=\"field.label\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\" [layoutType]=\"layoutType\"\n (elementClick)=\"onClick($event)\">\n </pep-image>\n\n <pep-signature *ngSwitchCase=\"'signature'\" [form]=\"form\" [key]=\"field.key\" [src]=\"field.value\"\n [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\"\n [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n [layoutType]=\"layoutType\">\n </pep-signature>\n\n <pep-checkbox *ngSwitchCase=\"'checkbox'\" [form]=\"form\" [key]=\"field.key\"\n [value]=\"(field.value?.toString() | lowercase) == 'true' || field.value == '1' ? true : false\" [label]=\"field.label\"\n [type]=\"field.type\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\"\n [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n [additionalValue]=\"field.additionalValue\" [layoutType]=\"layoutType\">\n </pep-checkbox>\n\n <pep-date *ngSwitchCase=\"'date'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [label]=\"field.label\" [type]=\"field.type\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n [minValue]=\"field.minValue\" [maxValue]=\"field.maxValue\" [layoutType]=\"layoutType\">\n </pep-date>\n\n <pep-internal-button *ngSwitchCase=\"'button'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [formattedValue]=\"field.formattedValue\" [label]=\"field.label\" [type]=\"field.type\"\n [disabled]=\"field.disabled\" [readonly]=\"field.readonly\" [xAlignment]=\"field.xAlignment\"\n [layoutType]=\"layoutType\" (elementClick)=\"onClick($event)\">\n </pep-internal-button>\n\n <pep-textarea *ngSwitchCase=\"'textarea'\" [form]=\"form\" [key]=\"field.key\" [value]=\"field.value\"\n [label]=\"field.label\" [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\"\n [readonly]=\"field.readonly\" [maxFieldCharacters]=\"field.maxFieldCharacters\"\n [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n [layoutType]=\"layoutType\">\n </pep-textarea>\n\n <pep-quantity-selector *ngSwitchCase=\"'qs'\" [id]=\"field.key\" [form]=\"form\" [key]=\"field.key\"\n [value]=\"field.value\" [label]=\"field.label\" [type]=\"field.type\"\n [mandatory]=\"field.mandatory\" [disabled]=\"field.disabled\" [readonly]=\"field.readonly\"\n [textColor]=\"field.textColor\" [xAlignment]=\"field.xAlignment\" [rowSpan]=\"field.rowSpan\"\n [layoutType]=\"layoutType\" (valueChange)=\"onValueChanged($event)\" (elementClick)=\"onClick($event)\">\n </pep-quantity-selector>\n\n <ng-container *ngSwitchDefault>\n <ng-container *ngIf=\"field.formattedValue?.length > 0; then notEmptyBlock; else emptyBlock\">\n </ng-container>\n <ng-template #notEmptyBlock>\n <ng-container\n *ngIf=\"field.controlType === 'attachment' || field.type === 'link'; then linkBlock; else notLinkBlock\">\n </ng-container>\n <ng-template #linkBlock>\n <a [id]=\"field.key\" class=\"color-link body-sm pep-report-input readonly {{field.value?.length > 0 ? '' : 'disable'}}\"\n *ngIf=\"field.formattedValue != null\" title=\"{{ field.formattedValue }}\" target=\"_blank\"\n href=\"{{ field.value }}\">{{ field.formattedValue }}</a>\n </ng-template>\n <ng-template #notLinkBlock>\n <span [id]=\"field.key\" class=\"body-sm pep-report-input readonly\"\n title=\"{{ field.formattedValue }}\" [ngStyle]=\"{ color: field.textColor }\">{{\n field.formattedValue }}</span>\n </ng-template>\n </ng-template>\n <ng-template #emptyBlock>\n <span> </span>\n </ng-template>\n </ng-container>\n </ng-container>\n </div>\n</ng-template>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormBuilder, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\n\nimport { SignaturePadModule } from 'ngx-signaturepad';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport {\n PepIconModule,\n PepIconRegistry,\n pepIconSystemEdit,\n pepIconSystemMenu,\n pepIconNumberPlus,\n pepIconSystemBin,\n pepIconIndicatorDotPlaceholder,\n} from '@pepperi-addons/ngx-lib/icon';\n\nimport { PepDialogModule } from '@pepperi-addons/ngx-lib/dialog';\n\nimport { PepAddressModule } from '@pepperi-addons/ngx-lib/address';\nimport { PepAttachmentModule } from '@pepperi-addons/ngx-lib/attachment';\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\nimport { PepCarouselModule } from '@pepperi-addons/ngx-lib/carousel';\nimport { PepCheckboxModule } from '@pepperi-addons/ngx-lib/checkbox';\nimport { PepDateModule } from '@pepperi-addons/ngx-lib/date';\nimport { PepImageModule } from '@pepperi-addons/ngx-lib/image';\nimport { PepImagesFilmstripModule } from '@pepperi-addons/ngx-lib/images-filmstrip';\nimport { PepQuantitySelectorModule } from '@pepperi-addons/ngx-lib/quantity-selector';\nimport { PepRichHtmlTextareaModule } from '@pepperi-addons/ngx-lib/rich-html-textarea';\nimport { PepSelectModule } from '@pepperi-addons/ngx-lib/select';\nimport { PepSelectPanelModule } from '@pepperi-addons/ngx-lib/select-panel';\nimport { PepSeparatorModule } from '@pepperi-addons/ngx-lib/separator';\nimport { PepSignatureModule } from '@pepperi-addons/ngx-lib/signature';\nimport { PepTextareaModule } from '@pepperi-addons/ngx-lib/textarea';\nimport { PepTextboxModule } from '@pepperi-addons/ngx-lib/textbox';\nimport { PepLinkModule } from '@pepperi-addons/ngx-lib/link';\nimport { PepFieldTitleModule } from '@pepperi-addons/ngx-lib/field-title';\nimport { PepGroupButtonsModule } from '@pepperi-addons/ngx-lib/group-buttons';\n\nconst pepComponentsModules = [\n PepAddressModule,\n PepAttachmentModule,\n PepButtonModule,\n PepCarouselModule,\n PepCheckboxModule,\n PepDateModule,\n PepImageModule,\n PepImagesFilmstripModule,\n PepQuantitySelectorModule,\n PepRichHtmlTextareaModule,\n PepSelectModule,\n PepSelectPanelModule,\n PepSeparatorModule,\n PepSignatureModule,\n PepTextareaModule,\n PepTextboxModule,\n PepLinkModule\n];\n\nimport { PepFormComponent } from './form.component';\nimport { PepInternalFormComponent } from './internal-form.component';\nimport { PepFieldGeneratorComponent } from './field-generator.component';\nimport { PepInternalFieldGeneratorComponent } from './internal-field-generator.component';\nimport { PepIndicatorsComponent } from './indicators.component';\nimport { PepInternalButtonComponent } from './internal-button.component';\nimport { PepInternalListComponent } from './internal-list.component';\nimport { PepInternalMenuComponent } from './internal-menu.component';\nimport { PepInternalPageComponent } from './internal-page.component';\nimport { PepInternalCaruselComponent } from './internal-carusel.component';\n\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n // Material modules,\n MatCommonModule,\n MatFormFieldModule,\n MatButtonModule,\n MatGridListModule,\n MatIconModule,\n MatMenuModule,\n // External modules\n SignaturePadModule,\n // ngx-lib modules\n PepNgxLibModule,\n PepDialogModule,\n PepIconModule,\n pepComponentsModules,\n PepFieldTitleModule,\n PepGroupButtonsModule,\n ],\n exports: [PepFormComponent],\n declarations: [\n PepFormComponent,\n PepInternalFormComponent,\n PepFieldGeneratorComponent,\n PepInternalFieldGeneratorComponent,\n PepIndicatorsComponent,\n PepInternalButtonComponent,\n PepInternalListComponent,\n PepInternalMenuComponent,\n PepInternalPageComponent,\n PepInternalCaruselComponent\n ],\n providers: [\n FormBuilder\n ]\n})\nexport class PepFormModule {\n constructor(private pepIconRegistry: PepIconRegistry) {\n this.pepIconRegistry.registerIcons([\n pepIconSystemEdit,\n pepIconSystemMenu,\n pepIconNumberPlus,\n pepIconSystemBin,\n pepIconIndicatorDotPlaceholder,\n ]);\n }\n}\n","/*\n * Public API Surface of ngx-lib/form\n */\nexport * from './form.module';\nexport * from './form.model';\nexport * from './form.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i5","i6","i9","i3","i4","i7","i8","i17.PepIndicatorsComponent","i18.PepInternalButtonComponent","i19.PepInternalMenuComponent","i10","i11","i12","i13.PepInternalFieldGeneratorComponent","i14.PepInternalButtonComponent","i3.PepInternalFormComponent","i2.PepInternalPageService","i9.PepInternalListComponent","i2.PepInternalCaruselService","i6.PepInternalFormComponent","i20.PepInternalPageComponent","i21.PepInternalCaruselComponent","i13.PepFieldGeneratorComponent"],"mappings":"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"}
|