UNPKG

ngx-iso-form

Version:

Angular component design Reactive Form using specific JSON. The primary use of this UI library is to design ISO 20022 forms dynamically.

1 lines 118 kB
{"version":3,"file":"ngx-iso-form.mjs","sources":["../../../projects/ngx-iso-form/src/lib/shared/services/custom-date-adapter.ts","../../../projects/ngx-iso-form/src/lib/components/controls/iso-base-control.component.ts","../../../projects/ngx-iso-form/src/lib/shared/pipe/translate.pipe.ts","../../../projects/ngx-iso-form/src/lib/shared/pipe/error.pipe.ts","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-date.component.ts","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-date.component.html","../../../projects/ngx-iso-form/src/lib/shared/components/mat-datetime/iso-datetime.ts","../../../projects/ngx-iso-form/src/lib/shared/components/mat-datetime/iso-datetime.html","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-datetime.component.ts","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-datetime.component.html","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-input.component.ts","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-input.component.html","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-checkbox.component.ts","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-checkbox.component.html","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-textarea.component.ts","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-textarea.component.html","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-select.component.ts","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-select.component.html","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-currency.component.ts","../../../projects/ngx-iso-form/src/lib/components/controls/iso-mat-currency.component.html","../../../projects/ngx-iso-form/src/lib/shared/models/component.model.ts","../../../projects/ngx-iso-form/src/lib/shared/services/control.service.ts","../../../projects/ngx-iso-form/src/lib/shared/directives/component-content.directive.ts","../../../projects/ngx-iso-form/src/lib/shared/components/dynamic/ngx-dynamic.component.ts","../../../projects/ngx-iso-form/src/lib/components/iso-control/iso-control.component.ts","../../../projects/ngx-iso-form/src/lib/components/iso-control/iso-control.component.html","../../../projects/ngx-iso-form/src/lib/ngx-iso-form.service.ts","../../../projects/ngx-iso-form/src/lib/ngx-iso-form.component.ts","../../../projects/ngx-iso-form/src/lib/ngx-iso-form.component.html","../../../projects/ngx-iso-form/src/lib/shared/pipe/general.pipe.ts","../../../projects/ngx-iso-form/src/lib/ngx-iso-form.module.ts","../../../projects/ngx-iso-form/src/lib/shared/services/component.service.ts","../../../projects/ngx-iso-form/src/lib/Models/IsoForm.ts","../../../projects/ngx-iso-form/src/public-api.ts","../../../projects/ngx-iso-form/src/ngx-iso-form.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { NativeDateAdapter, MatDateFormats } from '@angular/material/core';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n  })\r\nexport class CustomDateAdapter extends NativeDateAdapter {\r\n  public override format(date: Date, displayFormat: Object): string {\r\n    const day = this._to2digit(date.getDate());\r\n    const month = this._to2digit(date.getMonth() + 1); // Months are zero-based\r\n    const year = date.getFullYear();\r\n    return `${year}-${month}-${day}`;\r\n  }\r\n\r\n  private _to2digit(n: number) {\r\n    return ('00' + n).slice(-2);\r\n  }\r\n}\r\n\r\nexport const CUSTOM_DATE_FORMATS: MatDateFormats = {\r\n  parse: {\r\n    dateInput: 'YYYY-MM-DD',\r\n  },\r\n  display: {\r\n    dateInput: 'YYYY-MM-DD',\r\n    monthYearLabel: 'MMM YYYY',\r\n    dateA11yLabel: 'LL',\r\n    monthYearA11yLabel: 'MMMM YYYY',\r\n  },\r\n};\r\n\r\n\r\nexport const toIsoWithOffset = (date: Date = new Date()): string => {\r\n    const pad = (n: number, z = 2) => String(n).padStart(z, '0');\r\n\r\n    const year = date.getFullYear();\r\n    const month = pad(date.getMonth() + 1);\r\n    const day = pad(date.getDate());\r\n\r\n    const hours = pad(date.getHours());\r\n    const minutes = pad(date.getMinutes());\r\n    const seconds = pad(date.getSeconds());\r\n    const millis = pad(date.getMilliseconds(), 3);\r\n\r\n    const offsetMin = -date.getTimezoneOffset();\r\n    const sign = offsetMin >= 0 ? '+' : '-';\r\n\r\n    const offsetH = pad(Math.floor(Math.abs(offsetMin) / 60));\r\n    const offsetM = pad(Math.abs(offsetMin) % 60);\r\n\r\n    return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}.${millis}${sign}${offsetH}:${offsetM}`;\r\n  };\r\n\r\n  export const toIso20022Z = (date: Date = new Date()): string => {\r\n    const now = new Date();\r\n\r\n    const year = now.getUTCFullYear();\r\n    const month = String(now.getUTCMonth() + 1).padStart(2, '0');\r\n    const day = String(now.getUTCDate()).padStart(2, '0');\r\n\r\n    const hours = String(now.getUTCHours()).padStart(2, '0');\r\n    const minutes = String(now.getUTCMinutes()).padStart(2, '0');\r\n    const seconds = String(now.getUTCSeconds()).padStart(2, '0');\r\n\r\n    return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}Z`;\r\n  };\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  Input,\r\n  OnInit,\r\n} from '@angular/core';\r\nimport { IControlModel } from '../../Models/Control';\r\nimport { FormControl } from '@angular/forms';\r\nimport { toIsoWithOffset } from '../../shared/services/custom-date-adapter';\r\n\r\n@Component({\r\n  selector: 'iso-base',\r\n  template: '',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: false,\r\n})\r\nexport class IsoBaseControlComponent implements OnInit {\r\n  ngOnInit(): void {\r\n    if (this.control.defaultValue) {\r\n      this.formControl.setValue(this.control.defaultValue);\r\n    }\r\n    if (this.control.dataType === 'datetime' && !this.formControl.value) {\r\n      const dateValue = toIsoWithOffset(new Date());\r\n      this.formControl.setValue(dateValue);\r\n    }\r\n  }\r\n\r\n  @Input() control: IControlModel;\r\n  @Input() formControl: FormControl;\r\n\r\n  getKeys(errors: any) {\r\n    if (errors) {\r\n      return Object.keys(errors);\r\n    }\r\n    return [];\r\n  }\r\n\r\n  \r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Pipe({\r\n    name: 'trans',\r\n    pure: false,\r\n    standalone: false\r\n})\r\nexport class IsoTranslatePipe implements PipeTransform {\r\n\r\n    constructor(private translateService: TranslateService) {\r\n\r\n    }\r\n\r\n    transform(value: string, id: string, defaultValue: string): string {\r\n        let key = `iso.${value}`;\r\n        let tran = this.translateService.instant(key);\r\n        if (tran === key) {\r\n            key = `iso.${id}`;\r\n            tran = this.translateService.instant(key);\r\n            if (tran === key) {\r\n                return defaultValue;\r\n            }\r\n        }\r\n        if(tran.label)\r\n        {\r\n            return tran.label;\r\n        }\r\n        return defaultValue;\r\n    }\r\n\r\n}","import { Inject, Pipe, PipeTransform } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Pipe({\r\n    name: 'error',\r\n    pure: false,\r\n    standalone: false\r\n})\r\nexport class IsoErrorPipe implements PipeTransform {\r\n\r\n    constructor(private translateService: TranslateService) {\r\n\r\n    }\r\n\r\n    transform(value: string, id: string,errorKey:string, defaultValue: string): string {\r\n        let key = `iso.${value}`;\r\n        let tran = this.translateService.instant(key);\r\n        if (tran === key) {\r\n            key = `iso.${id}`;\r\n            tran = this.translateService.instant(key);\r\n            if (tran === key) {\r\n                return defaultValue;\r\n            }\r\n        }\r\n        if(tran.error && tran.error[errorKey])\r\n        {\r\n            return tran.error[errorKey];\r\n        }\r\n        return defaultValue;\r\n    }\r\n\r\n}","import { Component, Input } from '@angular/core';\r\nimport { IControlModel } from '../../Models/Control';\r\nimport { FormControl } from '@angular/forms';\r\nimport { IsoBaseControlComponent } from './iso-base-control.component';\r\n\r\n@Component({\r\n    selector: 'iso-mat-date',\r\n    templateUrl: './iso-mat-date.component.html',\r\n    standalone: false\r\n})\r\n\r\nexport class IsoMatDate extends IsoBaseControlComponent {\r\n    \r\n}","<mat-form-field class=\"form-control form-control-m\">\r\n  <mat-label>{{ control.name | trans: control.id : control.name }}</mat-label>\r\n  <input matInput [matDatepicker]=\"picker\" [formControl]=\"formControl\">\r\n  <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n  <mat-datepicker #picker></mat-datepicker>\r\n  <ng-container *ngFor=\"let item of getKeys(formControl.errors)\">\r\n    <div *ngIf=\"formControl.errors?.[item] && formControl.dirty\" class=\"iso-mat-error\">\r\n      {{ control.name | error: control.id : item : item + \" validation failed\" }}\r\n    </div>\r\n  </ng-container>\r\n</mat-form-field>","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { Component, ElementRef, EventEmitter, forwardRef, Input, Output, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { toIsoWithOffset } from '../../services/custom-date-adapter';\r\n\r\n@Component({\r\n  selector: 'iso-datetime',\r\n  templateUrl: './iso-datetime.html',\r\n  styleUrls: ['./iso-datetime.scss'],\r\n  standalone: false,\r\n  providers: [{\r\n    provide: NG_VALUE_ACCESSOR,\r\n    useExisting: forwardRef(() => IsoDateTime),\r\n    multi: true\r\n  }]\r\n})\r\nexport class IsoDateTime  implements ControlValueAccessor {\r\n  @ViewChild('trigger', { static: true }) trigger!: ElementRef;\r\n  @ViewChild('panel') panel!: any;\r\n  @Input() name: string = '';\r\n  @Input() formControl: FormControl\r\n  @Output() datetimeChange = new EventEmitter<string>();\r\n\r\n  date: Date | null = null;\r\n  hour = '00';\r\n  minute = '00';\r\n\r\n  hours = Array.from({ length: 24 }, (_, i) => i.toString().padStart(2, '0'));\r\n  minutes = Array.from({ length: 60 }, (_, i) => i.toString().padStart(2, '0'));\r\n\r\n  private overlayRef?: OverlayRef;\r\n  private onChange = (_: any) => {};\r\n  private onTouched = () => {};\r\n  constructor(\r\n    private overlay: Overlay,\r\n    private vcr: ViewContainerRef\r\n  ) {}\r\n  writeValue(value: string | null): void {\r\n    if (!value) return;\r\n    const d = new Date(value);\r\n    this.date = d;\r\n    this.hour = d.getHours().toString().padStart(2,'0');\r\n    this.minute = d.getMinutes().toString().padStart(2,'0');\r\n  }\r\n  registerOnChange(fn: any): void { this.onChange = fn; }\r\n  registerOnTouched(fn: any): void { this.onTouched = fn; }\r\n\r\n  setDisabledState(isDisabled: boolean): void {\r\n    // optional: handle disable\r\n  }\r\n\r\n  ngOnInit() {\r\n    if (this.formControl.value) {\r\n      debugger;\r\n      const d = new Date(this.formControl.value);\r\n      this.date = d;\r\n      this.hour = d.getHours().toString().padStart(2, '0');\r\n      this.minute = d.getMinutes().toString().padStart(2, '0');\r\n    }\r\n  }\r\n\r\n  open() {\r\n    if (this.overlayRef) return;\r\n\r\n    const positionStrategy = this.overlay.position()\r\n      .flexibleConnectedTo(this.trigger)\r\n      .withPositions([{\r\n        originX: 'start',\r\n        originY: 'bottom',\r\n        overlayX: 'start',\r\n        overlayY: 'top'\r\n      }]);\r\n\r\n    this.overlayRef = this.overlay.create({\r\n      positionStrategy,\r\n      hasBackdrop: true,\r\n      backdropClass: 'cdk-overlay-transparent-backdrop'\r\n    });\r\n\r\n    this.overlayRef.backdropClick().subscribe(() => this.close());\r\n    this.overlayRef.attach(new TemplatePortal(this.panel, this.vcr));\r\n  }\r\n\r\n  close() {\r\n    this.overlayRef?.dispose();\r\n    this.overlayRef = undefined;\r\n  }\r\n\r\n  apply() {\r\n    if (!this.date) return;\r\n\r\n    const d = new Date(this.date);\r\n    d.setHours(+this.hour, +this.minute, 0, 0);\r\n    const isoDate = toIsoWithOffset(d);\r\n    this.formControl.setValue(isoDate)\r\n    this.datetimeChange.emit(isoDate);\r\n    this.close();\r\n  }\r\n}\r\n","<mat-form-field class=\"form-control form-control-m\">\r\n  <mat-label>{{name}}</mat-label>\r\n  <input matInput placeholder=\"{{ name }}\" class=\"datetime-trigger\" [formControl]=\"formControl\" readonly #trigger>\r\n  <button\r\n      matIconButton\r\n      matSuffix\r\n      (click)=\"open()\">\r\n      <mat-icon class=\"small-icon\">calendar_today</mat-icon>\r\n    </button>\r\n</mat-form-field>\r\n\r\n<ng-template #panel>\r\n  <div class=\"datetime-panel\">\r\n\r\n    <mat-calendar [(selected)]=\"date\"></mat-calendar>\r\n\r\n    <div class=\"time-row\">\r\n      <mat-form-field>\r\n        <mat-label>Hour</mat-label>\r\n        <mat-select [(value)]=\"hour\">\r\n          <mat-option *ngFor=\"let h of hours\" [value]=\"h\">{{h}}</mat-option>\r\n        </mat-select>\r\n      </mat-form-field>\r\n\r\n      <span>:</span>\r\n\r\n      <mat-form-field>\r\n        <mat-label>Minute</mat-label>\r\n        <mat-select [(value)]=\"minute\">\r\n          <mat-option *ngFor=\"let m of minutes\" [value]=\"m\">{{m}}</mat-option>\r\n        </mat-select>\r\n      </mat-form-field>\r\n    </div>\r\n\r\n    <div class=\"actions\">\r\n      <button mat-button (click)=\"close()\">Cancel</button>\r\n      <button mat-raised-button color=\"primary\" (click)=\"apply()\">Apply</button>\r\n    </div>\r\n\r\n  </div>\r\n</ng-template>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { IsoBaseControlComponent } from './iso-base-control.component';\r\n\r\n@Component({\r\n  selector: 'iso-mat-datetime',\r\n  templateUrl: './iso-mat-datetime.component.html',\r\n  standalone: false,\r\n})\r\nexport class IsoMatDateTime extends IsoBaseControlComponent {\r\n\r\n}\r\n","    <iso-datetime name=\"{{ control.name | trans: control.id : control.name }}\" [formControl]=\"formControl\"></iso-datetime>\r\n    <ng-container *ngFor=\"let item of getKeys(formControl.errors)\">\r\n        <div *ngIf=\"formControl.errors?.[item] && formControl.dirty\" class=\"iso-mat-error\">\r\n            {{ control.name | error: control.id : item : item + \" validation failed\" }}\r\n        </div>\r\n    </ng-container>","import { Component } from '@angular/core';\r\nimport { IsoBaseControlComponent } from './iso-base-control.component';\r\n\r\n@Component({\r\n  selector: 'iso-mat-input',\r\n  templateUrl: './iso-mat-input.component.html',\r\n  standalone: false,\r\n})\r\nexport class IsoMatInput extends IsoBaseControlComponent {\r\n  clickEvent(event: Event) {\r\n    this.formControl.setValue(this.generateUETR());\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n  }\r\n\r\n  private generateUETR = (): string => {\r\n    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(\r\n      /[xy]/g,\r\n      function (c) {\r\n        const r = crypto.getRandomValues(new Uint8Array(1))[0] % 16;\r\n        const v = c === 'x' ? r : (r & 0x3) | 0x8;\r\n        return v.toString(16);\r\n      }\r\n    );\r\n  };\r\n}\r\n","<mat-form-field class=\"form-control form-control-m\" appearance=\"fill\">\r\n    <mat-label>{{ control.name | trans: control.id : control.name }}</mat-label>\r\n    <input matInput placeholder=\"{{ control.name }}\" [formControl]=\"formControl\" [attr.minlength]=\"control.minLength\"\r\n        [attr.maxlength]=\"control.maxLength\">\r\n    <button matIconButton matSuffix (click)=\"clickEvent($event)\" [hidden]=\"!control.isUETR\">\r\n        <mat-icon>autorenew</mat-icon>\r\n    </button>\r\n    <ng-container *ngFor=\"let item of getKeys(formControl.errors)\">\r\n        <div *ngIf=\"formControl.errors?.[item] && formControl.dirty\" class=\"iso-mat-error\">\r\n            {{ control.name | error: control.id : item : item + \" validation failed\" }}\r\n        </div>\r\n    </ng-container>\r\n</mat-form-field>","import { Component } from '@angular/core';\r\nimport { IsoBaseControlComponent } from './iso-base-control.component';\r\n\r\n@Component({\r\n    selector: 'iso-mat-checkbox',\r\n    templateUrl: './iso-mat-checkbox.component.html',\r\n    standalone: false\r\n})\r\nexport class IsoMatCheckbox extends IsoBaseControlComponent {\r\n    \r\n}","<mat-form-field class=\"form-control form-control-m\">\r\n    <mat-checkbox [formControl]=\"formControl\">{{ control.name | trans: control.id : control.name }}</mat-checkbox>\r\n    <ng-container *ngFor=\"let item of getKeys(formControl.errors)\">\r\n        <div *ngIf=\"formControl.errors?.[item] && formControl.dirty\">\r\n            {{ control.name | error: control.id : item : item + \" validation failed\" }}\r\n        </div>\r\n    </ng-container>\r\n</mat-form-field>","\r\nimport { Component } from '@angular/core';\r\nimport { IsoBaseControlComponent } from './iso-base-control.component';\r\n\r\n@Component({\r\n    selector: 'iso-mat-textarea',\r\n    templateUrl: './iso-mat-textarea.component.html',\r\n    standalone: false\r\n})\r\n\r\nexport class IsoMatTextarea extends IsoBaseControlComponent {\r\n   \r\n}","<mat-form-field class=\"form-control form-control-full\">\r\n    <mat-label>{{ control.name | trans: control.id : control.name }}</mat-label>\r\n    <textarea matInput placeholder=\"{{control.name}}\" [formControl]=\"formControl\"></textarea>\r\n    <ng-container *ngFor=\"let item of getKeys(formControl.errors)\">\r\n        <div *ngIf=\"formControl.errors?.[item] && formControl.dirty\" class=\"iso-mat-error\">\r\n            {{ control.name | error: control.id : item : item + \" validation failed\" }}\r\n        </div>\r\n    </ng-container>\r\n</mat-form-field>","\r\nimport { Component } from '@angular/core';\r\nimport { IsoBaseControlComponent } from './iso-base-control.component';\r\n\r\n@Component({\r\n    selector: 'iso-mat-select',\r\n    templateUrl: './iso-mat-select.component.html',\r\n    standalone: false\r\n})\r\n\r\nexport class IsoMatSelect extends IsoBaseControlComponent {\r\n   \r\n}","<mat-form-field class=\"form-control form-control-m\">\r\n    <mat-label>{{ control.name | trans: control.id : control.name }}</mat-label>\r\n    <mat-select [formControl]=\"formControl\">\r\n      <mat-option *ngFor=\"let item of control.values\" [value]=\"item\">\r\n        {{item}}\r\n      </mat-option>\r\n    </mat-select>\r\n    <ng-container *ngFor=\"let item of getKeys(formControl.errors)\">\r\n      <div *ngIf=\"formControl.errors?.[item] && formControl.dirty\" class=\"iso-mat-error\">\r\n          {{ control.name | error: control.id : item : item + \" validation failed\" }}\r\n      </div>\r\n  </ng-container>\r\n  </mat-form-field>","import { Component } from '@angular/core';\r\nimport { IsoBaseControlComponent } from './iso-base-control.component';\r\n\r\n@Component({\r\n    selector: 'iso-mat-currency',\r\n    templateUrl: './iso-mat-currency.component.html',\r\n    standalone: false\r\n})\r\nexport class IsoMatCurrency extends IsoBaseControlComponent {\r\n    \r\n}","<mat-form-field class=\"form-control form-control-s\">\r\n    <mat-label>{{ control.name | trans: control.id : control.name }}</mat-label>\r\n    <input matInput placeholder=\"{{ control.name }}\" [formControl]=\"formControl\" [attr.maxlength]=\"control.maxLength\">\r\n    <ng-container *ngFor=\"let item of getKeys(formControl.errors)\">\r\n        <div *ngIf=\"formControl.errors?.[item] && formControl.dirty\" class=\"iso-mat-error\">\r\n            {{ control.name | error: control.id : item : item }}\r\n        </div>\r\n    </ng-container>\r\n</mat-form-field>","import { Type } from \"@angular/core\";\r\n\r\nexport class ComponentModel {\r\n    constructor(public component: Type<any>, public prop: any) { }\r\n}","import { FormControl } from \"@angular/forms\";\r\nimport { ComponentModel } from \"../models/component.model\";\r\nimport { SchemaElement } from \"../../Models/Schema\";\r\nimport { IsoMatCurrency, IsoMatDate, IsoMatDateTime, IsoMatInput, IsoMatSelect, IsoMatTextarea } from \"../../components\";\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n  })\r\nexport class ControlService {\r\n\r\n    public getComponentByType(controlModel: SchemaElement, formControl: FormControl): ComponentModel {\r\n        if (!controlModel.dataType) {\r\n            console.log(\"controlModel name {0}\", controlModel.name);\r\n            throw `Argument null exception dataType`;\r\n        }\r\n        switch (controlModel.dataType.toLocaleLowerCase()) {\r\n            case \"string\":\r\n            case \"decimal\":\r\n                if(controlModel.name.toLocaleLowerCase().indexOf('ccy') > -1)\r\n                {\r\n                    return new ComponentModel(IsoMatCurrency, { \"control\": controlModel, \"formControl\": formControl });\r\n                }\r\n                if (controlModel.values?.length > 0) {\r\n                    return new ComponentModel(IsoMatSelect, { \"control\": controlModel, \"formControl\": formControl });\r\n                }\r\n                if (controlModel.maxLength && parseInt(controlModel.maxLength, 10) > 50) {\r\n                    return new ComponentModel(IsoMatTextarea, { \"control\": controlModel, \"formControl\": formControl });\r\n                }\r\n                return new ComponentModel(IsoMatInput, { \"control\": controlModel, \"formControl\": formControl });\r\n            case \"date\":\r\n                return new ComponentModel(IsoMatDate, { \"control\": controlModel, \"formControl\": formControl });\r\n            case \"datetime\":\r\n                return new ComponentModel(IsoMatDateTime, { \"control\": controlModel, \"formControl\": formControl });\r\n            case \"boolean\":\r\n                controlModel.values = [\"true\", \"false\"];\r\n                return new ComponentModel(IsoMatSelect, { \"control\": controlModel, \"formControl\": formControl });\r\n            case \"any\":\r\n                return new ComponentModel(IsoMatTextarea, { \"control\": controlModel, \"formControl\": formControl });\r\n            default:\r\n                return new ComponentModel(IsoMatInput, { \"control\": controlModel, \"formControl\": formControl });\r\n        }\r\n    }\r\n}","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n    selector: '[componentContent]',\r\n    standalone: false\r\n})\r\nexport class ComponentDirective {\r\n  constructor(public viewContainerRef: ViewContainerRef) { }\r\n}","import { Component, Input, OnInit, Type, ViewChild } from '@angular/core';\r\nimport { ComponentDirective } from '../../directives/component-content.directive';\r\nimport { ComponentModel } from '../../models/component.model';\r\n\r\n@Component({\r\n    selector: 'ngx-dynamic',\r\n    template: `<div><ng-template componentContent></ng-template></div>`,\r\n    standalone: false\r\n})\r\nexport class NgxDynamicComponent implements OnInit {\r\n\r\n  @Input() componentModel: ComponentModel;\r\n  @ViewChild(ComponentDirective, { static: true }) componentContent!: ComponentDirective;\r\n  constructor() { }\r\n\r\n  ngOnInit(): void {\r\n    this.loadComponent();\r\n  }\r\n\r\n  loadComponent() {\r\n    const viewContainerRef = this.componentContent.viewContainerRef;\r\n    viewContainerRef.clear();\r\n    const componentRef = viewContainerRef.createComponent<any>(this.componentModel.component);\r\n    if (this.componentModel.prop) {\r\n      Object.assign(componentRef.instance, this.componentModel.prop);\r\n    }\r\n  }\r\n}\r\n","import { Component, Input, OnChanges, OnInit, SimpleChanges, forwardRef } from '@angular/core';\r\nimport { ControlService } from '../../shared/services/control.service';\r\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';\r\nimport { ComponentModel } from '../../shared/models/component.model';\r\nimport { SchemaElement } from '../../Models/Schema';\r\n\r\n@Component({\r\n    selector: 'ngx-iso-control',\r\n    templateUrl: './iso-control.component.html',\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            useExisting: forwardRef(() => NgxIsoControlComponent),\r\n            multi: true,\r\n        }\r\n    ],\r\n    standalone: false\r\n})\r\n\r\nexport class NgxIsoControlComponent implements OnInit, ControlValueAccessor {\r\n  @Input() formControl: FormControl;\r\n  @Input() control: SchemaElement\r\n  component: ComponentModel\r\n  constructor(private controlService: ControlService) {\r\n\r\n  }\r\n  ngOnInit(): void {\r\n    this.addValidator();\r\n    this.component = this.controlService.getComponentByType(this.control, this.formControl);\r\n  }\r\n\r\n  writeValue(obj: any): void {\r\n  }\r\n  registerOnChange(fn: any): void {\r\n  }\r\n  registerOnTouched(fn: any): void {\r\n  }\r\n  setDisabledState?(isDisabled: boolean): void {\r\n  }\r\n\r\n  private addValidator = (): void => {\r\n    try {\r\n      const minOccurs = parseInt(this.control.minOccurs, 10);\r\n      let minLength = parseInt(this.control.minLength, 10);\r\n      const maxLength = parseInt(this.control.maxLength, 10);\r\n      if (minOccurs) {\r\n        this.formControl.addValidators(Validators.required);\r\n      }\r\n      if (!Number.isNaN(minLength)) {\r\n        this.formControl.addValidators(Validators.minLength(minLength));\r\n      }\r\n      if (!Number.isNaN(maxLength)) {\r\n        this.formControl.addValidators(Validators.maxLength(maxLength));\r\n      }\r\n      if (this.control.pattern) {\r\n        this.formControl.addValidators(Validators.pattern(this.control.pattern));\r\n      }\r\n      if (this.control.fractionDigits) {\r\n        minLength = Number.isNaN(minLength) ? 0 : minLength;\r\n        const pattern = `^[\\\\d\\\\.\\\\d{0,${this.control.fractionDigits}}]{${minLength},${this.control.totalDigits}}$`\r\n      }\r\n    }\r\n    catch (e) {\r\n      console.error(e);\r\n    }\r\n  }\r\n\r\n}","<ngx-dynamic *ngIf=\"component\" [componentModel]=\"component\"></ngx-dynamic>","import { Injectable } from '@angular/core';\nimport { FormGroup, FormControl, FormArray, FormBuilder } from '@angular/forms';\nimport { SchemaModel } from './Models/Schema';\nimport { CustomDateAdapter } from './shared/services/custom-date-adapter';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class NgxIsoService {\n  public _formModel: any[] = [];\n  public excludes: string[] = [];\n  constructor(\n    private fb: FormBuilder,\n    private dateService: CustomDateAdapter\n  ) {}\n\n  public maxOccurs(maxOccurs: string): boolean {\n    return maxOccurs === 'unbounded' || parseInt(maxOccurs, 10) > 1;\n  }\n\n  public initFormModel(\n    model: any,\n    form: FormGroup | FormArray,\n    prev_key: string,\n    choiceKey: boolean = false,\n    index: number = -1\n  ): void {\n    if (typeof model === 'object') {\n      for (const key in model) {\n        const __key = !prev_key ? key : `${prev_key}_${key}`;\n        const parentNode = this.getFormModel(this._formModel[0], __key);\n\n        if (\n          !choiceKey &&\n          ((parentNode && parentNode.multi) || Array.isArray(model[key]))\n        ) {\n          if (!Array.isArray(model[key]) && parentNode && parentNode.multi) {\n            model[key] = [model[key]];\n          }\n          const item = model[key];\n          const formArray = form.get(__key) as FormArray;\n          if (formArray && formArray.length !== item.length) {\n            const newEle = structuredClone(\n              parentNode.elements[parentNode.elements.length - 1]\n            );\n            if (\n              !(\n                newEle.maxOccurs &&\n                parseInt(newEle.maxOccurs, 10) <= parentNode.elements.length\n              )\n            ) {\n              const newKeys: any = [];\n              const groupControls = this.getFormGroupControls(\n                newEle.elements,\n                newKeys,\n                parentNode.elements.length - 1\n              );\n              parentNode.elements.push(newEle);\n              formArray.push(groupControls);\n              parentNode.elements.forEach((element: SchemaModel) => {\n                if (\n                  !element.minOccurs ||\n                  parseInt(element.minOccurs, 10) === 0\n                ) {\n                  element.minOccurs = '1';\n                }\n              });\n            }\n          }\n\n          for (let i = 0; i < item.length; i++) {\n            parentNode.elements[i].expanded = true;\n            const formArray = form.get(__key);\n            const choiceKey = parentNode.elements[i].dataType === 'choice';\n            if (formArray) {\n              const frmGroup = (formArray as FormArray).at(i);\n              if (frmGroup) {\n                this.initFormModel(\n                  item[i],\n                  frmGroup as FormGroup,\n                  __key,\n                  choiceKey,\n                  i\n                );\n              }\n            }\n          }\n        } else if (typeof model[key] === 'object') {\n          let node = this.getFormModel(this._formModel[0], __key);\n          node.expanded = true;\n          if (node && (!node.minOccurs || parseInt(node.minOccurs, 10) === 0)) {\n            node.minOccurs = '1';\n          }\n          const _form = form.get(__key) as FormGroup;\n          if (_form) {\n            if (node.elements.length === 1 && node.elements[0].dataType === 'choice'){\n              node = node.elements[0];\n            }\n            if (node.dataType === 'choice') {\n              const choiceKey = Object.keys(model[key])[0];\n              const _choiceKey = `${__key}_${choiceKey}`;\n              const choiceEle = node.elements.find(\n                (item: SchemaModel) => item.id === _choiceKey\n              );\n              node.choiceKey = _choiceKey;\n              choiceEle.hidden = false;\n              choiceEle.expanded = true;\n              const newNode = structuredClone(choiceEle);\n              if (newNode.elements.length) {\n                const group = this.getFormGroupControls(\n                  newNode.elements,\n                  [],\n                  0,\n                  false\n                );\n                _form.addControl(newNode.id, group);\n              } else {\n                const control = this.getFormControl('');\n                _form.addControl(newNode.id, control);\n              }\n            }\n            this.initFormModel(model[key], _form, __key);\n          }\n        } else if (choiceKey) {\n          let node = this.getFormModel(this._formModel[0], prev_key);\n          if (node.multi) {\n            node = node.elements[index];\n          }\n          node.expanded = true;\n          if (node && (!node.minOccurs || parseInt(node.minOccurs, 10) === 0)) {\n            node.minOccurs = '1';\n          }\n          \n          const choiceEle = node.elements.find(\n            (item: SchemaModel) => item.id === __key\n          );\n          node.choiceKey = __key;\n          choiceEle.hidden = false;\n          choiceEle.expanded = true;\n          const newNode = structuredClone(choiceEle);\n          const _formCtrl = form.get(__key) as FormControl;\n          _formCtrl.setValue(model[key]);\n          \n        } else {\n          const _form = form.get(__key) as FormControl;\n          _form.setValue(model[key]);\n        }\n      }\n    } else if (Array.isArray(model)) {\n      for (let i = 0; i < model.length; i++) {\n        const frmGroup = (form as FormArray).at(i);\n        this.initFormModel(model[i], frmGroup as FormGroup, '');\n      }\n    }\n  }\n\n  public getFormGroupControls(\n    json: SchemaModel[],\n    keys: any,\n    index: number = 0,\n    choiceEle: boolean = false,\n    prev_key: string = ''\n  ): FormGroup {\n    let control: any = {};\n    let controls: any;\n    let value = {};\n\n    json.forEach((item: SchemaModel) => {\n      if (\n        (this.excludes.length > 0 && !this.excludes.includes(item.id)) ||\n        this.excludes.length == 0\n      ) {\n        if (item.id === null){\n          item.id = prev_key;\n        }\n        item.hidden = choiceEle;\n        value = item.elements;\n        const id = item.id;\n        const element = { ...item, elements: [], id };\n        if (item.elements.length > 0) {\n          let choice = item.dataType === 'choice';\n          if (choice) {\n            element.choiceKey = '';\n          }\n          if (this.maxOccurs(item.maxOccurs)) {\n            element.uniqueId = `${element.id}_${index}`;\n            keys.push({\n              id: element.id,\n              multi: true,\n              xpath: element.xpath,\n              elements: [element],\n            });\n            const data = this.getFormGroupControls(\n              item.elements,\n              element.elements,\n              index,\n              choice,\n              id\n            );\n            controls = this.fb.array([]);\n            controls.push(data);\n            control[id] = controls;\n          } else if (item.multi && !item.isFormControls) {\n            keys.push({\n              id: element.id,\n              multi: true,\n              xpath: element.xpath,\n              elements: element.elements,\n            });\n            const data = this.getFormGroupControls(\n              item.elements[item.elements.length - 1].elements,\n              element.elements,\n              index,\n              choice,\n              id\n            );\n            controls = this.fb.array([]);\n            if (!choice) {\n              controls.push(data);\n            }\n            control[id] = controls;\n          } else if (item.multi && item.isFormControls) {\n            if (item.elements.length > 1) {\n              item.elements.splice(1, item.elements.length - 1);\n            }\n            keys.push(item);\n            control[id] = this.fb.array([\n              this.getFormControl(item.value || ''),\n            ]);\n          } else {\n            keys.push(element);\n            const data = this.getFormGroupControls(\n              item.elements,\n              element.elements,\n              index,\n              choice,\n              id\n            );\n            if (!choice) {\n              control[id] = data;\n            } else {\n              control[id] = this.fb.group({});\n            }\n          }\n        } else if (this.maxOccurs(item.maxOccurs)) {\n          keys.push({\n            id: element.id,\n            multi: true,\n            xpath: element.xpath,\n            elements: [element],\n            isFormControls: true,\n          });\n          control[id] = this.fb.array([this.getFormControl(item.value)]);\n        } else if (item.isCurrency) {\n          const _amountCurrency = this.getAmountCurrency(item);\n          keys.push(element);\n          const data = this.getFormGroupControls(\n            _amountCurrency,\n            element.elements,\n            0,\n            false,\n            item.id\n          );\n          control[item.id] = data;\n        } else {\n          keys.push(element);\n          control[id] = this.getFormControl(item.value || '');\n        }\n      }\n    });\n    return new FormGroup(control);\n  }\n\n  public getFormControl(values: any): FormControl {\n    return new FormControl(values || '', {\n      updateOn: 'blur',\n    });\n  }\n\n  public sanitize = (obj: any): any => {\n    if (obj === null || obj === '') {\n      return null;\n    }\n\n    if (Array.isArray(obj)) {\n      const cleanedObj: any = [];\n      for (const index in obj) {\n        const cleanedValue = this.sanitize(obj[index]);\n        if (\n          cleanedValue !== null &&\n          cleanedValue !== '' &&\n          Object.keys(cleanedValue).length > 0 &&\n          (!Array.isArray(cleanedValue) || cleanedValue.length > 0)\n        ) {\n          cleanedObj.push(cleanedValue);\n        }\n      }\n      return cleanedObj;\n    } else if (typeof obj === 'object' && obj instanceof Date) {\n      const cleanedObj = this.dateService.format(obj, 'YYYY-MM-DD');\n      return cleanedObj;\n    } else if (typeof obj === 'object') {\n      const cleanedObj: any = {};\n\n      for (const key in obj) {\n        const cleanedValue = this.sanitize(obj[key]);\n        if (\n          cleanedValue !== null &&\n          cleanedValue !== '' &&\n          Object.keys(cleanedValue).length > 0 &&\n          (!Array.isArray(cleanedValue) || cleanedValue.length > 0)\n        ) {\n          const _keys = key.split('_');\n          const newKey = _keys[_keys.length - 1];\n          cleanedObj[newKey] = cleanedValue;\n        }\n      }\n      return cleanedObj;\n    }\n\n    return obj;\n  };\n\n  private getFormModel = (object: any, key: string): any => {\n    if (object) {\n      if (object.elements.length) {\n        if (object.id === key) {\n          return object;\n        }\n        for (let i = 0; i < object.elements.length; i++) {\n          const obj = this.getFormModel(object.elements[i], key);\n          if (obj) return obj;\n        }\n      } else {\n        if (object.id === key) {\n          return object;\n        }\n      }\n    }\n  };\n\n  private getAmountCurrency(item: SchemaModel): SchemaModel[] {\n    const elements: SchemaModel[] = [];\n    const ccy = structuredClone(item);\n    const amt = structuredClone(item);\n\n    ccy.id = `${ccy.id}_Ccy`;\n    ccy.name = 'Ccy';\n    ccy.fractionDigits = '';\n    ccy.totalDigits = '';\n    ccy.maxLength = '3';\n    ccy.xpath = `${ccy.xpath}@Ccy`;\n    ccy.isCurrency = false;\n    elements.push(ccy);\n\n    amt.id = `${amt.id}_Amt`;\n    amt.xpath = `${amt.xpath}/Amt`;\n    amt.isCurrency = false;\n    amt.pattern = '';\n    elements.push(amt);\n    return elements;\n  }\n}\n","import {\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  Input,\r\n  OnChanges,\r\n  SimpleChanges\r\n} from '@angular/core';\r\nimport {\r\n  FormGroup,\r\n  FormControl,\r\n  FormArray,\r\n  AbstractControl\r\n} from '@angular/forms';\r\n\r\nimport { SchemaModel } from './Models/Schema';\r\nimport { NgxIsoService } from './ngx-iso-form.service';\r\nimport { IsoForm } from './Models/IsoForm';\r\n\r\n@Component({\r\n    selector: 'ngx-iso-form',\r\n    templateUrl: './ngx-iso-form.component.html',\r\n    styleUrls: ['./ngx-iso-form.component.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    standalone: false\r\n})\r\nexport class NgxIsoFormComponent implements OnChanges {\r\n  @Input({ required: true }) form: IsoForm;\r\n  @Input({ required: true }) schema: SchemaModel;\r\n  @Input() excludes: string[];\r\n  protected _form: FormGroup;\r\n  private _isFormInitiate: boolean;\r\n  private _ngModel: any;\r\n\r\n  constructor(private service: NgxIsoService, private changeDetection: ChangeDetectorRef) {\r\n  }\r\n\r\n  public ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes['schema'] && changes['schema'].currentValue) {\r\n      this.initiateForm();\r\n    }\r\n    if (changes['form'] && changes['form'].currentValue) {\r\n      this.initiateFormModel();\r\n    }\r\n    if (changes['excludes'] && changes['excludes'].currentValue) {\r\n      this.service.excludes = this.excludes;      \r\n    }\r\n  }\r\n\r\n  public get model(): any {\r\n    if (this._form)\r\n      return this.service.sanitize(this._form.value);\r\n  }\r\n\r\n  protected get getFormModel(): any[] {\r\n    return this.service._formModel;\r\n  }\r\n\r\n  public get invalid(): boolean {\r\n    return this._form.invalid;\r\n  }\r\n\r\n  private initiateForm(): void {\r\n    this.service._formModel = [this.structuredClone(this.schema)];\r\n    this.service._formModel[0].elements = [];\r\n    let group: any = {};\r\n    const schemaElements =  this.schema.elements.length > 0 ? this.structuredClone(this.schema.elements) : this.schema.elements;\r\n    const formElements = this.service._formModel[0].elements.length > 0 ? this.structuredClone(this.service._formModel[0].elements) : this.service._formModel[0].elements;\r\n    group[this.schema.id] = this.service.getFormGroupControls(schemaElements, formElements);\r\n    this._form = new FormGroup(group);\r\n    if (!this._isFormInitiate) {\r\n      this.initiateFormModel();\r\n    }\r\n  }\r\n\r\n  private structuredClone(data: any): any {\r\n    let cloneData;\r\n    try {\r\n      cloneData = structuredClone(data);\r\n    } catch(e) {\r\n      cloneData = JSON.parse(JSON.stringify(data));\r\n    }\r\n    return cloneData;\r\n  }\r\n\r\n  private initiateFormModel(): void {\r\n    if (this._form) {\r\n      this._ngModel = this.form.isoFormModel;\r\n      this.form.getFormModel = () => {\r\n        return this.model;\r\n      };\r\n\r\n      \r\n      this._isFormInitiate = true;\r\n      this.service.initFormModel(this._ngModel, this._form,\"\");\r\n    }\r\n  }\r\n\r\n  protected onChoiceSelectionChange(id: string, formElement: any, node: SchemaModel): void {\r\n    node.elements.forEach((element: SchemaModel) => {\r\n      element.hidden = true;\r\n      formElement.removeControl(element.id);\r\n      if (element.id === id) {\r\n        node.choiceKey = id;\r\n        element.hidden = false;\r\n        if (element.elements.length) {\r\n         // element.elements[0].hidden = false;\r\n          const group = this.service.getFormGroupControls(element.elements, [], 0, false);\r\n          formElement.addControl(element.id, group);\r\n        } else {\r\n          const control = this.service.getFormControl('');\r\n          formElement.addControl(element.id, control);\r\n        }\r\n\r\n      }\r\n    });\r\n  }\r\n\r\n  protected maxOccurs(maxOccurs: string): boolean {\r\n    return maxOccurs !== null && maxOccurs !== undefined && this.service.maxOccurs(maxOccurs);\r\n  }\r\n\r\n  protected expand(minOccurs: string): boolean {\r\n    return minOccurs !== null && minOccurs !== undefined && parseInt(minOccurs, 10) > 0;\r\n  }\r\n\r\n  protected addSection($event: Event, node: SchemaModel, parentNode: SchemaModel, parentFormEle: FormGroup): void {\r\n    $event.stopPropagation();\r\n    const control: FormArray = parentFormEle.get(node.id) as FormArray;\r\n    if (node.maxOccurs && parseInt(node.maxOccurs, 10) <= parentNode.elements.length) {\r\n      return;\r\n    }\r\n    const newEle = this.structuredClone(parentNode.elements[0]);\r\n    const newKeys: any = [];\r\n    let groupControls;\r\n    if (newEle.dataType === 'choice'){\r\n        groupControls = this.service.getFormGroupControls([newEle], newKeys, parentNode.elements.length - 1);\r\n    }else{\r\n        groupControls = this.service.getFormGroupControls(newEle.elements, newKeys, parentNode.elements.length - 1);\r\n    }\r\n    parentNode.elements.push(newEle);\r\n    control.push(groupControls);\r\n    this.changeDetection.detectChanges();\r\n  }\r\n\r\n  protected removeSection($event: Event, parentNode: SchemaModel, parentFormEle: FormGroup, index: number): void {\r\n    $event.stopPropagation();\r\n    const control: FormArray = parentFormEle.get(parentNode.id) as FormArray;\r\n    parentNode.elements.splice(index, 1);\r\n    control.removeAt(index);\r\n    this.changeDetection.detectChanges();\r\n  }\r\n\r\n  protected addNewControl($event: Event, node: SchemaModel, parentNode: SchemaModel, parentFormEle: FormGroup): void {\r\n    $event.stopPropagation();\r\n    if (node.maxOccurs && parseInt(node.maxOccurs, 10) <= parentNode.elements.length) {\r\n      return;\r\n    }\r\n    const control: FormArray = parentFormEle.get(node.id) as FormArray;\r\n    const newControl = this.service.getFormControl('');\r\n    const newEle = this.structuredClone(parentNode.elements[parentNode.elements.length - 1]);\r\n    control.push(newControl);\r\n    parentNode.elements.push(newEle);\r\n    this.changeDetection.detectChanges();\r\n  }\r\n\r\n  protected removeNewControl($event: Event, parentNode: SchemaModel, parentFormEle: FormGroup, index: number): void {\r\n    $event.stopPropagation();\r\n    const control: FormArray = parentFormEle.get(parentNode.id) as FormArray;\r\n    parentNode.elements.splice(index, 1);\r\n    control.removeAt(index);\r\n    this.changeDetection.detectChanges();\r\n  }\r\n\r\n  protected isArray(myKey: Object | Array<any>): boolean {\r\n    if (myKey instanceof Array) {\r\n      return true;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  protected isEmpty(formElement: FormGroup): boolean {\r\n    return formElement.controls && Object.keys(formElement.controls).length === 0;\r\n  }\r\n\r\n  protected getElement(formElement: FormGroup, element: any): AbstractControl<any, any> | undefined {\r\n    if (element.hidden) {\r\n      return;\r\n    }\r\n    let _element;\r\n    if (element.multi) {\r\n      _element = element.elements[element.elements.length - 1];\r\n    } else {\r\n      _element = element;\r\n    }\r\n\r\n    let formControl = formElement.controls[_element.id];\r\n    if (!formControl) {\r\n      formControl = (formElement as any)[_element.id];\r\n      if (!formControl)\r\n        throw `FormControl not found ${_element.id}`;\r\n    }\r\n    if (formControl instanceof FormArray) {\r\n      const formGroup = formControl.controls.find((item: any) => {\r\n        if (item instanceof FormControl)\r\n          return true;\r\n        return Object.keys(item.controls).find((ctrl) => {\r\n          return ctrl.indexOf(element.id) > -1;\r\n        })\r\n      });\r\n      formGroup;\r\n    }\r\n    return formControl;\r\n  }\r\n\r\n  protected getFormGroupByIndex(formArray: FormArray, _index: number): FormGroup {\r\n    return formArray.controls[_index] as FormGroup;\r\n  }\r\n  protected getFormControl(node: SchemaModel): FormControl {\r\n    return this.service.getFormControl('');\r\n  }\r\n\r\n  protected getChoiceFormControl(choiceKey:string){\r\n    const formControl = this.service.getFormControl('');\r\n    formControl.setValue(choiceKey);\r\n    return formControl;\r\n  }\r\n}\r\n","<form *ngIf=\"_form && schema\" [formGroup]=\"_form\">\r\n  <div class=\"form-group\">\r\n    <ng-template #nodeTemplateRef let-node=\"node\" let-formElement=\"formElement\" let-_index=\"index\"\r\n      let-parentNode=\"parentNode\" let-parentFormElement=\"parentFormElement\">\r\n      <ng-container *ngIf=\"node.multi then arr else obj\"></ng-container>\r\n      <ng-template #arr>\r\n        <ng-template *ngFor=\"let model of node.elements;let i = index\" [ngTemplateOutlet]=\"nodeTemplateRef\"\r\n          [ngTemplateOutletContext]=\"{\r\n          node: model,\r\n          formElement: getFormGroupByIndex(formElement, i),\r\n          parentFormElement: parentFormElement,\r\n          parentNode: node,\r\n          index: i\r\n        }\">\r\n        </ng-template>\r\n      </ng-template>\r\n      <ng-template #obj>\r\n        <ng-container *ngIf=\"node.elements.length\">\r\n          <mat-accordion [formGroup]=\"formElement\" *ngIf=\"!node.hidden\">\r\n            <mat-expansion-panel multi [expanded]=\"expand(node.minOccurs) || node.expanded\" #expan>\r\n              <mat-expansion-panel-header>\r\n                <mat-panel-title>\r\n                  {{ node.name | trans: node.id : node.name }}\r\n                </mat-panel-title>\r\n                <mat-panel-description *ngIf=\"maxOccurs(node.maxOccurs)\">\r\n                  &nbsp;\r\n                  <button *ngIf=\"_index < 1\" mat-icon-button (click)=\"addSection($event, node,parentNode, parentFormElement)\">\r\n                    <mat-icon>add</mat-icon>\r\n                  </button>\r\n                  <button *ngIf=\"_index > 0\" mat-icon-button (click)=\"removeSection($event,parentNode,parentFormElement,_index)\">\r\n                    <mat-icon>remove</mat-icon>\r\n                  </button>\r\n                </mat-panel-description>\r\n              </mat-expansion-panel-header>\r\n              <ng-container *ngIf=\"expan.expanded\">\r\n                <mat-form-field *ngIf=\"node.dataType === 'choice'\">\r\n                  <mat-label>{{ node.name | trans: node.id : node.name }}</mat-label>\r\n                  <mat-select (selectionChange)=\"onChoiceSelectionChange($event.value,formElement, node)\" [formControl]=\"getChoiceFormControl(node.choiceKey)\">\r\n                    <mat-option *ngFor=\"let item of node.elements\" [value]=\"item.id\">\r\n                      {{item.name}}\r\n                    </mat-option>\r\n                  </mat-select>\r\n                </mat-form-field>\r\n                <ng-container *ngIf=\"!isEmpty(formElement)\">\r\n                  <ng-template *ngFor=\"let model of node.elements; let i = index\" [ngTemplateOutlet]=\"nodeTemplateRef\"\r\n                    [ngTemplateOutletContext]=\"{\r\n                      node: model,\r\n                      formElement: getElement(formElement,model),\r\n                      parentFormElement: formElement,\r\n                      index: _index\r\n                    }\">\r\n                  </ng-template>\r\n                </ng-container>\r\n                <div *ngIf=\"node.elements.length === 0\">\r\n                  <ngx-iso-control *ngIf=\"!node.hidden\" [formControl]=\"formElement\" [control]=\"node\"></ngx-iso-control>\r\n                </div>\r\n              </ng-container>\r\n            </mat-expansion-panel>\r\n          </mat-accordion>\r\n        </ng-container>\r\n        <ng-container *ngIf=\"!node.elements.length && !node.hidden\">\r\n          <div *ngIf=\"maxOccurs(node.maxOccurs)\" class=\"form-add-section\">\r\n            &nbsp;\r\n            <button *ngIf=\"_index < 1\" mat-icon-button (click)=\"addNewControl($event, node,parentNode,parentFormElement)\">\r\n              <mat-icon>add</mat-icon>\r\n            </button>\r\n            <button *ngIf=\"_index > 0\" mat-icon-button (click)=\"removeNewControl($event,parentNode,parentFormElement,_index)\">\r\n              <mat-icon>remove</mat-icon>\r\n            </button>\r\n          </div>\r\n          <ngx-iso-control [formControl]=\"formElement\" [control]=\"node\"></ngx-iso-control>\r\n        </ng-container>\r\n      </ng-template>\r\n    </ng-template>\r\n    <ng-container *ngFor=\"let model of getFormModel; let i = index\">\r\n      <ng-container *ngIf=\"isArray(model);then formArray else formObject\">\r\n      </ng-container>\r\n      <ng-template #formArray>\r\n        <ng-template *ngFor=\"let key of model;let j = index\" [ngTemplateOutlet]=\"nodeTemplateRef\"\r\n          [ngTemplateOutletContext]=\"{\r\n          node: key,\r\n          formElement: getElement(_form,key),\r\n          parentFormElement: _form,\r\n          index:j\r\n        }\">\r\n        </ng-template>\r\n      </ng-template>\r\n      <ng-template #formObject>\r\n        <ng-template [ngTemplateOutlet]=\"nodeTemplateRef\" [ngTemplateOutletContext]=\"{\r\n          node: model,\r\n          formElement: getElement(_form,model),\r\n          parentFormElement: _form,\r\n          index: i,\r\n        }\">\r\n        </ng-template>\r\n      </ng-template>\r\n    </ng-container>\r\n  </div>\r\n</form>","import { Inject, Pipe, PipeTransform } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Pipe({\r\n    name: 'general',\r\n    pure: false,\r\n    standalone: false\r\n})\r\nexport class IsoGeneralPipe implements PipeTransform {\r\n\r\n    constructor(private translateService: TranslateService) {\r\n\r\n    }\r\n\r\n    transform(value: string, id: string,generalKey:string, defaultValue: string): string {\r\n        let key = `iso.${value}`;\r\n        let tran = this.translateService.instant(key);\r\n        if (tran === key) {\r\n            key = `iso.${id.toLocaleLowerCase()}`;\r\n            tran = this.translateService.instant(key);\r\n            if (tran === key) {\r\n                return defaultValue;\r\n            }\r\n        }\r\n        if(tran.general && tran.general[generalKey])\r\n        {\r\n            return tran.general[generalKey];\r\n        }\r\n        return defaultValue;\r\n    }\r\n\r\n}","import { NgModule } from '@angular/core';\r\n\r\nimport { BrowserAnimationsModule } from \"@angular/platform-browser/animations\"\r\nimport { BrowserModule } from '@angular/platform-browser';\r\n\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { DateAdapter, MAT_DATE_FORMATS, MatNativeDateModule } from '@angular/material/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatSelectModule } from '@angular/material/select';\r\n\r\nimport {\r\n  NgxIsoControlComponent,\r\n  IsoBaseControlComponent,\r\n  IsoMatInput,\r\n  IsoMatDate,\r\n  IsoMatTextarea,\r\n  IsoMatSelect,\r\n  IsoMatCheckbox,\r\n  IsoMatDateTime,\r\n  IsoMatCurrency,\r\n} from './components';\r\n\r\nimport { NgxIsoFormComponent } from './ngx-iso-form.component';\r\n\r\nimport { ComponentDirective } from './shared/directives/component-content.directive';\r\nimport { NgxDynamicComponent } from './shared/components/dynamic/ngx-dynamic.component';\r\nimport { IsoTranslatePipe } from './shared/pipe/translate.pipe';\r\nimport { IsoErrorPipe } from './shared/pipe/error.pipe';\r\nimport { IsoGeneralPipe } from './shared/pipe/general.pipe';\r\nimport { CUSTOM_DATE_FORMATS, CustomDateAdapter } from './shared/services/custom-date-adapter';\r\nimport { IsoDateTime } from './shared/components/mat-datetime/iso-datetime';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    NgxIsoFormComponent,\r\n    NgxIsoControlComponent,\r\n    NgxDynamicComponent,\r\n    IsoBaseControlComponent,\r\n    IsoDateTime,\r\n    IsoMatInput,\r\n    IsoMatTextarea,\r\n    IsoMatDate,\r\n    IsoMatDateTime,\r\n    IsoMatSelect,\r\n    IsoMatCheckbox,\r\n    IsoMatCurrency,\r\n    ComponentDirective,\r\n    IsoTranslatePipe,\r\n    IsoErrorPipe,\r\n    IsoGeneralPipe\r\n  ],\r\n  imports: [    \r\n    CommonModule,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    MatExpansionModule,\r\n    MatFormFieldModule,\r\n    MatInputModule,\r\n    MatNativeDateModule,\r\n    MatDatepickerModule,\r\n    MatButtonModule,\r\n    MatSelectModule,\r\n    MatIconModule,\r\n  ],\r\n  providers: [\r\n    { provide: DateAdapter, useClass: CustomDateAdapter },\r\n    { provide: MAT_DATE_FORMATS, useValue: CUSTOM_DATE_FORMATS }\r\n  ],\r\n  exports: [\r\n    NgxIsoFormComponent\r\n  ]\r\n})\r\nexport class NgxIsoFormModule { }\r\n","import { ComponentRef, Injectable, ViewContainerRef } from \"@angular/core\";\r\nimport { ComponentModel } from \"../models/component.model\";\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n  })\r\nexport class ComponentService{\r\n    public getComponent<T>(viewContainerRef: ViewContainerRef,dynamicModel: ComponentModel): ComponentRef<T> {\r\n        const componentRef = viewContainerRef.createComponent<T>(dynamicModel.component);\r\n        if(dynamicModel.prop){\r\n            (componentRef.instance as any).prop = dynamicModel.prop;\r\n        }\r\n        return componentRef;\r\n    }\r\n}\r\n\r\n","import { SchemaElement } from './Schema';\r\n\r\nexport class IsoForm {\r\n  private _model: any;\r\n  private _namespace: any = {};\r\n  constructor(model: any, xmlMessage: string = '') {\r\n    if (xmlMessage) {\r\n      model = this.parseXML(\r\n        new DOMParser().parseFromString(xmlMessage, 'text/xml').childNodes[0]\r\n      );\r\n    }\r\n    this._model = model;\r\n  }\r\n  public get isoFormModel(): any {\r\n    return this._model;\r\n  }\r\n\r\n  /**\r\n   * @deprecated This method is deprecated use `#isoForm.getFormModel` instead\r\n   */\r\n  public getFormModel = (): any => {};\r\n\r\n  private parseXML(node: any) {\r\n    if (node.nodeType === Node.ELEMENT_NODE) {\r\n      const obj: Record<string, any> = {};\r\n      obj[node.nodeName] = {};\r\n\r\n      if (node.hasChildNodes()) {\r\n        for (let childNode of Array.from(node.childNodes) as any) {\r\n          const childObj = this.parseXML(childNode);\r\n          if (\r\n            typeof childObj === 'object' &&\r\n            childNode.nodeType !== Node.TEXT_NODE &&\r\n            Object.keys(childObj).length > 0\r\n          ) {\r\n            if (obj[node.nodeName][childNode.nodeName]) {\r\n              obj[node.nodeName][childNode.nodeName] = [\r\n                structuredClone(obj[node.nodeName][childNode.nodeName]),\r\n              ];\r\n              obj[node.nodeName][childNode.nodeName].push(\r\n                childObj[childNode.nodeName]\r\n              );\r\n            } else {\r\n              obj[node.nodeName][childNode.nodeName] = {};\r\n              obj[node.nodeName][childNode.nodeName] =\r\n                childObj[childNode.nodeName];\r\n            }\r\n          } else if (childObj && Object.keys(childObj).length > 0) {\r\n            obj[node.nodeName] = childObj;\r\n          }\r\n        }\r\n      }\r\n\r\n      if (node.attributes && node.attributes.length > 0) {\r\n        for (const attribute of Array.from(node.attributes) as any) {\r\n          if (attribute.nodeName === 'xmlns') {\r\n            this._namespace[node.nodeName] = attribute.nodeValue;\r\n          } else {\r\n            if (attribute.nodeName === 'Ccy') {\r\n              obj[node.nodeName] = {\r\n                Amt: node.textContent,\r\n                Ccy: attribute.nodeValue,\r\n              };\r\n            }\r\n          }\r\n        }\r\n      }\r\n\r\n      return obj;\r\n    } else if (\r\n      node.nodeType === Node.TEXT_NODE ||\r\n      node.nodeType === Node.CDATA_SECTION_NODE\r\n    ) {\r\n      return node.nodeValue.trim();\r\n    }\r\n\r\n    return {};\r\n  }\r\n}\r\n","/*\r\n * Public API Surface of ngx-iso-form\r\n */\r\n\r\nexport * from './lib/ngx-iso-form.module';\r\nexport * from './lib/ngx-iso-form.component';\r\nexport * from './lib/shared/services';\r\n\r\nexport { SchemaElement } from './lib/Models/Schema'\r\nexport * from './lib/Models/Control'\r\nexport * from './lib/Models/IsoForm'","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i6.IsoTranslatePipe","i7.IsoErrorPipe","i2","i3","i4","i5","i6","i3.IsoDateTime","i4.IsoTranslatePipe","i5.IsoErrorPipe","i7.IsoTranslatePipe","i8.IsoErrorPipe","i5.IsoTranslatePipe","i6.IsoErrorPipe","i1.ComponentDirective","i1.ControlService","i3.NgxDynamicComponent","i2.CustomDateAdapter","i1.NgxIsoService","i7","i8","i9.NgxIsoControlComponent","i10.IsoTranslatePipe"],"mappings":"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"}