@pepperi-addons/ngx-lib 0.2.40 → 0.2.44
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/address/address.component.d.ts +3 -0
- package/address/pepperi-addons-ngx-lib-address.metadata.json +1 -1
- package/attachment/attachment.component.d.ts +3 -0
- package/attachment/pepperi-addons-ngx-lib-attachment.metadata.json +1 -1
- package/bundles/pepperi-addons-ngx-lib-address.umd.js +18 -0
- package/bundles/pepperi-addons-ngx-lib-address.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-attachment.umd.js +18 -0
- package/bundles/pepperi-addons-ngx-lib-attachment.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-button.umd.js +3 -3
- package/bundles/pepperi-addons-ngx-lib-button.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-checkbox.umd.js +1 -1
- package/bundles/pepperi-addons-ngx-lib-color.umd.js +27 -11
- package/bundles/pepperi-addons-ngx-lib-color.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-dialog.umd.js +1 -1
- package/bundles/pepperi-addons-ngx-lib-dialog.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-field-title.umd.js +3 -1
- package/bundles/pepperi-addons-ngx-lib-field-title.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-form.umd.js +1 -1
- package/bundles/pepperi-addons-ngx-lib-form.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-separator.umd.js +19 -1
- package/bundles/pepperi-addons-ngx-lib-separator.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-signature.umd.js +18 -0
- package/bundles/pepperi-addons-ngx-lib-signature.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-slider.umd.js +136 -0
- package/bundles/pepperi-addons-ngx-lib-slider.umd.js.map +1 -0
- package/checkbox/pepperi-addons-ngx-lib-checkbox.metadata.json +1 -1
- package/color/color-picker.component.d.ts +9 -3
- package/color/color-picker.component.theme.scss +2 -10
- package/color/pepperi-addons-ngx-lib-color.metadata.json +1 -1
- package/esm2015/address/address.component.js +15 -1
- package/esm2015/attachment/attachment.component.js +15 -1
- package/esm2015/button/button.component.js +4 -4
- package/esm2015/checkbox/checkbox.component.js +1 -1
- package/esm2015/color/color-picker.component.js +49 -8
- package/esm2015/color/color.module.js +3 -1
- package/esm2015/dialog/dialog.service.js +2 -2
- package/esm2015/field-title/field-title.component.js +4 -2
- package/esm2015/form/field-generator.component.js +2 -2
- package/esm2015/separator/separator.component.js +16 -2
- package/esm2015/signature/signature.component.js +15 -1
- package/esm2015/slider/pepperi-addons-ngx-lib-slider.js +5 -0
- package/esm2015/slider/public-api.js +6 -0
- package/esm2015/slider/slider.component.js +87 -0
- package/esm2015/slider/slider.module.js +25 -0
- package/fesm2015/pepperi-addons-ngx-lib-address.js +14 -0
- package/fesm2015/pepperi-addons-ngx-lib-address.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-attachment.js +14 -0
- package/fesm2015/pepperi-addons-ngx-lib-attachment.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-button.js +3 -3
- package/fesm2015/pepperi-addons-ngx-lib-button.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-checkbox.js +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-color.js +50 -7
- package/fesm2015/pepperi-addons-ngx-lib-color.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-dialog.js +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-dialog.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-field-title.js +3 -1
- package/fesm2015/pepperi-addons-ngx-lib-field-title.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-form.js +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-form.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-separator.js +15 -1
- package/fesm2015/pepperi-addons-ngx-lib-separator.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-signature.js +14 -0
- package/fesm2015/pepperi-addons-ngx-lib-signature.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-slider.js +120 -0
- package/fesm2015/pepperi-addons-ngx-lib-slider.js.map +1 -0
- package/field-title/field-title.component.d.ts +1 -0
- package/field-title/pepperi-addons-ngx-lib-field-title.metadata.json +1 -1
- package/form/pepperi-addons-ngx-lib-form.metadata.json +1 -1
- package/package.json +1 -1
- package/separator/pepperi-addons-ngx-lib-separator.metadata.json +1 -1
- package/separator/separator.component.d.ts +3 -0
- package/signature/pepperi-addons-ngx-lib-signature.metadata.json +1 -1
- package/signature/signature.component.d.ts +3 -0
- package/slider/package.json +11 -0
- package/slider/pepperi-addons-ngx-lib-slider.d.ts +4 -0
- package/slider/pepperi-addons-ngx-lib-slider.metadata.json +1 -0
- package/slider/public-api.d.ts +2 -0
- package/slider/slider.component.d.ts +34 -0
- package/slider/slider.component.theme.scss +65 -0
- package/slider/slider.module.d.ts +2 -0
- package/theming.scss +3 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pepperi-addons-ngx-lib-form.js","sources":["../../../projects/ngx-lib/form/form.component.ts","../../../projects/ngx-lib/form/field-generator.component.ts","../../../projects/ngx-lib/form/indicators.component.ts","../../../projects/ngx-lib/form/internal-button.component.ts","../../../projects/ngx-lib/form/internal-list.component.ts","../../../projects/ngx-lib/form/internal-menu.component.ts","../../../projects/ngx-lib/form/internal-page.service.ts","../../../projects/ngx-lib/form/internal-page.component.ts","../../../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 {\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 PepInternalButtonField,\n PepAttachmentField,\n PepSignatureField,\n PepImageField,\n PepImagesField,\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';\n\nexport interface IPepFormFieldValueChangeEvent {\n id: string;\n key: string;\n value: string;\n controlType?: string;\n}\nexport interface IPepFormFieldClickEvent {\n id: string;\n key: string;\n value: any;\n controlType: string;\n fieldType?: FIELD_TYPE;\n idType?: string;\n which?: any;\n editable?: boolean;\n otherData?: any;\n}\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() 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\n get data(): ObjectsDataRow {\n return this._data;\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 @Output() childClick: EventEmitter<any> = new EventEmitter<any>();\n @Output() childChange: EventEmitter<any> = new EventEmitter<any>();\n @Output()\n fieldClick: EventEmitter<IPepFormFieldClickEvent> = new EventEmitter<IPepFormFieldClickEvent>();\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 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 };\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.Link: {\n options.type = 'link';\n customField = new PepTextboxField(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;\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 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 // if (this.valueChange) {\n // this.valueChange.unsubscribe();\n // }\n // if (this.formValidationChange) {\n // this.formValidationChange.unsubscribe();\n // }\n // if (this.childClick) {\n // this.childClick.unsubscribe();\n // }\n // if (this.childChange) {\n // this.childChange.unsubscribe();\n // }\n // if (this.fieldClick) {\n // this.fieldClick.unsubscribe();\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.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 }\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' type (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 (const currentField of this.fields) {\n 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 this.isLocked = false;\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 };\n\n if (customField instanceof PepQuantitySelectorField) {\n const notificationInfo = updatedField.NotificationInfo;\n options.notificationInfo = notificationInfo;\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 }\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 // const matrixFields = controlFields.filter((cf) =>\n // this.isMatrixField(cf.ApiName)\n // ).length;\n // let matrixAlreadyPlaced = false;\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 } else if (\n dataField.Value.length > 0 &&\n (field.FieldType === FIELD_TYPE.ReferenceType ||\n field.FieldType === FIELD_TYPE.GuidReferenceType)\n ) {\n // const transactionUrl =\n // this.data.MainAction === '2'\n // ? 'transactions/scope_items/'\n // : 'transactions/cart/';\n // dataField.Value = transactionUrl + dataField.Value;\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.convertToCustomField(\n field,\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 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 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.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 key: event.key,\n value: event.value,\n controlType: event.controlType,\n });\n }\n }\n\n onChildClicked(childClick: any): void {\n this.childClick.emit(childClick);\n }\n\n onChildChanged(childChange: any): void {\n this.childChange.emit(childChange);\n }\n\n onFormValidationChanged(formValidationChange: any): void {\n this.formValidationChange.emit(formValidationChange);\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 if (\n clickedUiControlField.FieldType === FIELD_TYPE.GuidReferenceType\n ) {\n this.fieldClick.emit({\n id: this.data.UID.toString(),\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 if (\n clickedUiControlField.FieldType === FIELD_TYPE.ListOfObjects\n ) {\n this.fieldClick.emit({\n id: this.data.UID.toString(),\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 this.fieldClick.emit({\n id: this.data.UID.toString(),\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 }\n } else {\n // For other api names (like enter children etc).\n this.fieldClick.emit({\n id: this.data.UID.toString(),\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 // getInternalLinkHref(): string {\n // let hrefStr = '';\n // const uid = this.data.UID;\n // const transactionUrl =\n // this.data.MainAction === '2'\n // ? 'transactions/scope_items/'\n // : 'transactions/cart/';\n // // let isBuyer = sessionStorage.getItem('userRole') == 'Buyer' ? true : false;\n\n // if (this.listType === 'all_activities') {\n // hrefStr =\n // this.data.Type === 0\n // ? transactionUrl + uid\n // : 'activities/details/' + uid;\n // } else if (this.listType === 'accounts') {\n // hrefStr = 'accounts/home_page/' + uid;\n // }\n\n // return hrefStr;\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';\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 @Input() field: any;\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() childChange: EventEmitter<any> = new EventEmitter<any>();\n @Output()\n formValidationChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output()\n elementClick: EventEmitter<IPepFieldClickEvent> = new EventEmitter<IPepFieldClickEvent>();\n @Output() childClick: EventEmitter<any> = new EventEmitter<any>();\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 onChildChanged(childChange: any): void {\n this.childChange.emit(childChange);\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 onChildClick(childClick: any): void {\n this.childClick.emit(childClick);\n }\n\n ngOnChanges(changes: any): void {\n // debugger;\n // For testing.\n // this.field.disabled = this.field.readonly = false;\n }\n}\n","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'],\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","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","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.component';\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 const selectionCheckBoxWidth = 0;\n\n const rowHeight = 40; // the table row height (2.5rem * 16font-size).\n const style = window.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.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","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","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 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, FormBuilder } 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.component';\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 @Output() childChange: EventEmitter<any> = new EventEmitter<any>();\n @Output()\n childClick: 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 protected fb: FormBuilder,\n private dialogService: PepDialogService,\n private internalPageService: PepInternalPageService,\n public customizationService: PepCustomizationService,\n private elementRef: ElementRef,\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 buffer = [];\n\n // if (this.childData.Rows) {\n // // for (let i = 0; i < this.childData.Rows.length; i++) {\n // for (const childDataRow of this.childData.Rows) {\n // const osd = new ObjectSingleData(\n // this.uiControl,\n // childDataRow\n // );\n // osd.IsEditable = true;\n // buffer.push(osd);\n // }\n // }\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 // private getItemClass(): string {\n // let res = '';\n\n // if (!this.isTableView()) {\n // res = 'line-view';\n // }\n\n // return res;\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 // check if view type changed\n // if (this.currentViewType.Key != viewTypeKey) {\n\n // window.scroll(0, 0); //or document.body.scrollTop = 0; or document.querySelector('body').scrollTo(0,0)\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 // minWidth: '50vw',\n // maxWidth: '90vw',\n // maxHeight: '90vh',\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.childChange) {\n // this.childChange.unsubscribe();\n // }\n\n // if (this.childClick) {\n // this.childClick.unsubscribe();\n // }\n\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.childChange.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.childClick.emit(fieldClickEvent);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { 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 { 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 { 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';\n\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 PepCheckboxModule,\n PepDateModule,\n PepImageModule,\n PepImagesFilmstripModule,\n PepQuantitySelectorModule,\n PepRichHtmlTextareaModule,\n PepSelectModule,\n PepSeparatorModule,\n PepSignatureModule,\n PepTextareaModule,\n PepTextboxModule,\n];\n\nimport { PepFormComponent } from './form.component';\nimport { PepFieldGeneratorComponent } from './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';\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 PepFieldGeneratorComponent,\n PepIndicatorsComponent,\n PepInternalButtonComponent,\n PepInternalListComponent,\n PepInternalMenuComponent,\n PepInternalPageComponent,\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.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {PepFieldGeneratorComponent as ɵa} from './field-generator.component';\nexport {PepIndicatorsComponent as ɵb} from './indicators.component';\nexport {PepInternalButtonComponent as ɵc} from './internal-button.component';\nexport {PepInternalListComponent as ɵd} from './internal-list.component';\nexport {PepInternalMenuComponent as ɵe} from './internal-menu.component';\nexport {PepInternalPageComponent as ɵf} from './internal-page.component';\nexport {PepInternalPageService as ɵg} from './internal-page.service';"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pepperi-addons-ngx-lib-form.js","sources":["../../../projects/ngx-lib/form/form.component.ts","../../../projects/ngx-lib/form/field-generator.component.ts","../../../projects/ngx-lib/form/indicators.component.ts","../../../projects/ngx-lib/form/internal-button.component.ts","../../../projects/ngx-lib/form/internal-list.component.ts","../../../projects/ngx-lib/form/internal-menu.component.ts","../../../projects/ngx-lib/form/internal-page.service.ts","../../../projects/ngx-lib/form/internal-page.component.ts","../../../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 {\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 PepInternalButtonField,\n PepAttachmentField,\n PepSignatureField,\n PepImageField,\n PepImagesField,\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';\n\nexport interface IPepFormFieldValueChangeEvent {\n id: string;\n key: string;\n value: string;\n controlType?: string;\n}\nexport interface IPepFormFieldClickEvent {\n id: string;\n key: string;\n value: any;\n controlType: string;\n fieldType?: FIELD_TYPE;\n idType?: string;\n which?: any;\n editable?: boolean;\n otherData?: any;\n}\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() 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\n get data(): ObjectsDataRow {\n return this._data;\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 @Output() childClick: EventEmitter<any> = new EventEmitter<any>();\n @Output() childChange: EventEmitter<any> = new EventEmitter<any>();\n @Output()\n fieldClick: EventEmitter<IPepFormFieldClickEvent> = new EventEmitter<IPepFormFieldClickEvent>();\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 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 };\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.Link: {\n options.type = 'link';\n customField = new PepTextboxField(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;\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 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 // if (this.valueChange) {\n // this.valueChange.unsubscribe();\n // }\n // if (this.formValidationChange) {\n // this.formValidationChange.unsubscribe();\n // }\n // if (this.childClick) {\n // this.childClick.unsubscribe();\n // }\n // if (this.childChange) {\n // this.childChange.unsubscribe();\n // }\n // if (this.fieldClick) {\n // this.fieldClick.unsubscribe();\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.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 }\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' type (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 (const currentField of this.fields) {\n 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 this.isLocked = false;\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 };\n\n if (customField instanceof PepQuantitySelectorField) {\n const notificationInfo = updatedField.NotificationInfo;\n options.notificationInfo = notificationInfo;\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 }\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 // const matrixFields = controlFields.filter((cf) =>\n // this.isMatrixField(cf.ApiName)\n // ).length;\n // let matrixAlreadyPlaced = false;\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 } else if (\n dataField.Value.length > 0 &&\n (field.FieldType === FIELD_TYPE.ReferenceType ||\n field.FieldType === FIELD_TYPE.GuidReferenceType)\n ) {\n // const transactionUrl =\n // this.data.MainAction === '2'\n // ? 'transactions/scope_items/'\n // : 'transactions/cart/';\n // dataField.Value = transactionUrl + dataField.Value;\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.convertToCustomField(\n field,\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 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 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.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 key: event.key,\n value: event.value,\n controlType: event.controlType,\n });\n }\n }\n\n onChildClicked(childClick: any): void {\n this.childClick.emit(childClick);\n }\n\n onChildChanged(childChange: any): void {\n this.childChange.emit(childChange);\n }\n\n onFormValidationChanged(formValidationChange: any): void {\n this.formValidationChange.emit(formValidationChange);\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 if (\n clickedUiControlField.FieldType === FIELD_TYPE.GuidReferenceType\n ) {\n this.fieldClick.emit({\n id: this.data.UID.toString(),\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 if (\n clickedUiControlField.FieldType === FIELD_TYPE.ListOfObjects\n ) {\n this.fieldClick.emit({\n id: this.data.UID.toString(),\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 this.fieldClick.emit({\n id: this.data.UID.toString(),\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 }\n } else {\n // For other api names (like enter children etc).\n this.fieldClick.emit({\n id: this.data.UID.toString(),\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 // getInternalLinkHref(): string {\n // let hrefStr = '';\n // const uid = this.data.UID;\n // const transactionUrl =\n // this.data.MainAction === '2'\n // ? 'transactions/scope_items/'\n // : 'transactions/cart/';\n // // let isBuyer = sessionStorage.getItem('userRole') == 'Buyer' ? true : false;\n\n // if (this.listType === 'all_activities') {\n // hrefStr =\n // this.data.Type === 0\n // ? transactionUrl + uid\n // : 'activities/details/' + uid;\n // } else if (this.listType === 'accounts') {\n // hrefStr = 'accounts/home_page/' + uid;\n // }\n\n // return hrefStr;\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';\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 @Input() field: any;\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() childChange: EventEmitter<any> = new EventEmitter<any>();\n @Output()\n formValidationChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output()\n elementClick: EventEmitter<IPepFieldClickEvent> = new EventEmitter<IPepFieldClickEvent>();\n @Output() childClick: EventEmitter<any> = new EventEmitter<any>();\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 onChildChanged(childChange: any): void {\n this.childChange.emit(childChange);\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 onChildClick(childClick: any): void {\n this.childClick.emit(childClick);\n }\n\n ngOnChanges(changes: any): void {\n // debugger;\n // For testing.\n // this.field.disabled = this.field.readonly = false;\n }\n}\n","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'],\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","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","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.component';\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 const selectionCheckBoxWidth = 0;\n\n const rowHeight = 40; // the table row height (2.5rem * 16font-size).\n const style = window.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.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","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","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 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, FormBuilder } 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.component';\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 @Output() childChange: EventEmitter<any> = new EventEmitter<any>();\n @Output()\n childClick: 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 protected fb: FormBuilder,\n private dialogService: PepDialogService,\n private internalPageService: PepInternalPageService,\n public customizationService: PepCustomizationService,\n private elementRef: ElementRef,\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 buffer = [];\n\n // if (this.childData.Rows) {\n // // for (let i = 0; i < this.childData.Rows.length; i++) {\n // for (const childDataRow of this.childData.Rows) {\n // const osd = new ObjectSingleData(\n // this.uiControl,\n // childDataRow\n // );\n // osd.IsEditable = true;\n // buffer.push(osd);\n // }\n // }\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 // private getItemClass(): string {\n // let res = '';\n\n // if (!this.isTableView()) {\n // res = 'line-view';\n // }\n\n // return res;\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 // check if view type changed\n // if (this.currentViewType.Key != viewTypeKey) {\n\n // window.scroll(0, 0); //or document.body.scrollTop = 0; or document.querySelector('body').scrollTo(0,0)\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 // minWidth: '50vw',\n // maxWidth: '90vw',\n // maxHeight: '90vh',\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.childChange) {\n // this.childChange.unsubscribe();\n // }\n\n // if (this.childClick) {\n // this.childClick.unsubscribe();\n // }\n\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.childChange.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.childClick.emit(fieldClickEvent);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { 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 { 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 { 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';\n\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 PepCheckboxModule,\n PepDateModule,\n PepImageModule,\n PepImagesFilmstripModule,\n PepQuantitySelectorModule,\n PepRichHtmlTextareaModule,\n PepSelectModule,\n PepSeparatorModule,\n PepSignatureModule,\n PepTextareaModule,\n PepTextboxModule,\n];\n\nimport { PepFormComponent } from './form.component';\nimport { PepFieldGeneratorComponent } from './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';\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 PepFieldGeneratorComponent,\n PepIndicatorsComponent,\n PepInternalButtonComponent,\n PepInternalListComponent,\n PepInternalMenuComponent,\n PepInternalPageComponent,\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.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {PepFieldGeneratorComponent as ɵa} from './field-generator.component';\nexport {PepIndicatorsComponent as ɵb} from './indicators.component';\nexport {PepInternalButtonComponent as ɵc} from './internal-button.component';\nexport {PepInternalListComponent as ɵd} from './internal-list.component';\nexport {PepInternalMenuComponent as ɵe} from './internal-menu.component';\nexport {PepInternalPageComponent as ɵf} from './internal-page.component';\nexport {PepInternalPageService as ɵg} from './internal-page.service';"],"names":[],"mappings":"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"}
|