{"version":3,"file":"goteti-forms.mjs","sources":["../../../projects/goteti-forms/src/lib/directives/listener.directive.ts","../../../projects/goteti-forms/src/lib/directives/permission.directive.ts","../../../projects/goteti-forms/src/lib/directives/debounce.directive.ts","../../../projects/goteti-forms/src/lib/pipes/filter.pipe.ts","../../../projects/goteti-forms/src/lib/pipes/highlight.pipe.ts","../../../projects/goteti-forms/src/lib/directives/set-focus.directive.ts","../../../projects/goteti-forms/src/lib/util.ts","../../../projects/goteti-forms/src/lib/pipes/ipolate.pipe.ts","../../../projects/goteti-forms/src/lib/directives/atbr.directive.ts","../../../projects/goteti-forms/src/lib/pipes/object.keys.ts","../../../projects/goteti-forms/src/lib/pipes/fun.pipe.ts","../../../projects/goteti-forms/src/lib/directives/oninit.directive.ts","../../../projects/goteti-forms/src/lib/goteti-elements.service.ts","../../../projects/goteti-forms/src/lib/directives/eref.directive.ts","../../../projects/goteti-forms/src/lib/goteti-form-hub.service.ts","../../../projects/goteti-forms/src/lib/directives/loadElement.directive.ts","../../../projects/goteti-forms/src/lib/components/gt-loop-elements/gt-loop-elements.component.ts","../../../projects/goteti-forms/src/lib/components/gt-loop-elements/gt-loop-elements.component.html","../../../projects/goteti-forms/src/lib/directives/gtFocusBlur.directive.ts","../../../projects/goteti-forms/src/lib/components/gt-mat-wrap/gt-mat-wrap.component.ts","../../../projects/goteti-forms/src/lib/components/gt-mat-wrap/gt-mat-wrap.component.html","../../../projects/goteti-forms/src/lib/directives/gtDetectFocus.directive.ts","../../../projects/goteti-forms/src/lib/components/gt-default-templates/gt-default-templates.component.ts","../../../projects/goteti-forms/src/lib/components/gt-default-templates/gt-default-templates.component.html","../../../projects/goteti-forms/src/lib/components/gtoption/gtoption.component.ts","../../../projects/goteti-forms/src/lib/components/gtoption/gtoption.component.html","../../../projects/goteti-forms/src/lib/components/gt-datalist/gt-datalist.component.ts","../../../projects/goteti-forms/src/lib/components/gt-datalist/gt-datalist.component.html","../../../projects/goteti-forms/src/lib/all.components.ts","../../../projects/goteti-forms/src/lib/goteti-forms.module.ts","../../../projects/goteti-forms/src/lib/form-builders/form-map.ts","../../../projects/goteti-forms/src/lib/http/requests.ts","../../../projects/goteti-forms/src/public-api.ts","../../../projects/goteti-forms/src/goteti-forms.ts"],"sourcesContent":["import { Directive, HostListener, Input, Renderer2, ElementRef, SimpleChanges, Output, OnInit, OnDestroy, OnChanges } from '@angular/core';\r\nimport { EventEmitter } from '@angular/core';\r\nimport { fromEvent, interval, concat } from 'rxjs';\r\nimport { map, mergeAll } from 'rxjs/operators';\r\n\r\n@Directive({\r\n  selector: '[listener]'\r\n})\r\nexport class ListenerDirective implements OnInit, OnDestroy, OnChanges{\r\n  @Input() listener: any = {};\r\n  @Input() disable: any;\r\n  @Input() args: any;\r\n  @Output() fire = new EventEmitter();\r\n  ListOfEvents: Array<any> = [];\r\n  defaultEvents = ['change','input'];\r\n  objchanges: any;\r\n\r\n  constructor(private renderer: Renderer2,\r\n    private ele: ElementRef){}\r\n  \r\n  objectChanges(){\r\n    // this.objchanges = mergeAll(\r\n    //   Rx.Observable.ofArrayChanges(a),\r\n    //   rx.Observable.from(a).flatMap(function(item) {\r\n    //     return rx.Observable.ofObjectChanges(item);\r\n    //   })\r\n    // );\r\n  }\r\n    \r\n  ngOnInit(){\r\n    this.generate();\r\n  } \r\n  \r\n  ngOnChanges(){\r\n\r\n  }\r\n\r\n  generate(){\r\n    let eventsList: Array<any> = this.listener ? Object.keys(this.listener) : [];\r\n    this.defaultEvents.forEach(d => {\r\n      if (!eventsList.includes(d)){\r\n        eventsList.push(d);\r\n      }\r\n    });\r\n    eventsList.forEach(k => {\r\n      return this.ListOfEvents.push(this.renderer.listen(this.ele.nativeElement, k, this.send.bind(this, k)));\r\n    });\r\n  }\r\n\r\n  send(k: any, event: any) {    \r\n    //console.log(k, event && event.target && event.target.value)\r\n    if (!this.disable){\r\n      if(this.listener && (typeof this.listener[k]) == 'function'){\r\n        this.listener[k](k, event, this.args);\r\n      }      \r\n      let type = event.type;\r\n      if (type =='change' || type =='input'){\r\n        this.fire.emit(event);\r\n      }      \r\n    };\r\n  }\r\n\r\n  ngOnDestroy(){\r\n    this.ListOfEvents.forEach(k => {\r\n      if(this.ListOfEvents && (typeof this.ListOfEvents[k]) == 'function'){\r\n        this.ListOfEvents[k]();\r\n      }\r\n    });\r\n\r\n    // this.objectChanges.unsubscribe();\r\n  }\r\n}\r\n\r\n\r\n\r\n\r\n","import { Directive, Input, TemplateRef, ViewContainerRef, OnChanges, Renderer2, ElementRef, HostBinding, HostListener, SimpleChange, SimpleChanges, Output, OnInit } from '@angular/core';\r\nimport { EventEmitter } from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[hide]'\r\n})\r\nexport class PermissionDirective {\r\n  private hasView = false;\r\n  constructor(private templateRef: TemplateRef<any>, \r\n    private viewContainer: ViewContainerRef) { }\r\n  @Input() set hide(condition: any){\r\n    if(!condition && !this.hasView){\r\n      this.viewContainer.createEmbeddedView(this.templateRef);\r\n      this.hasView = true;\r\n    } else if(condition && this.hasView){\r\n      this.viewContainer.clear();\r\n      this.hasView = false;\r\n    }\r\n  }  \r\n}\r\n\r\n\r\n@Directive({\r\n  selector: '[disable]'\r\n})\r\nexport class PermissionDirectiveDisable implements OnChanges, OnInit{\r\n  @Input() disable: any;\r\n  @Output() fire = new EventEmitter()\r\n  constructor(private renderer: Renderer2,\r\n    private ele: ElementRef){}\r\n  \r\n  @HostBinding('style.background-color') color?: string;\r\n  initialColor: any;\r\n  \r\n  // @HostListener('dblclick', ['$event','$event.type', '$event.target.value']) \r\n  // @HostListener('blur', ['$event','$event.type', '$event.target.value'])\r\n  // @HostListener('scroll', ['$event','$event.type', '$event.target.value'])\r\n  // @HostListener('cut', ['$event','$event.type', '$event.target.value'])\r\n  // @HostListener('copy', ['$event','$event.type', '$event.target.value'])\r\n  // @HostListener('paste', ['$event','$event.type', '$event.target.value'])\r\n  // @HostListener('keyup', ['$event','$event.type', '$event.target.value'])\r\n  // @HostListener('keypress', ['$event','$event.type', '$event.target.value'])\r\n  // @HostListener('mouseup', ['$event','$event.type', '$event.target.value'])\r\n  // @HostListener('mousedown', ['$event','$event.type', '$event.target.value'])\r\n  // @HostListener('mouseenter', ['$event','$event.type', '$event.target.value'])\r\n  // @HostListener('drag', ['$event','$event.type', '$event.target.value'])\r\n  // @HostListener('drop', ['$event','$event.type', '$event.target.value'])\r\n  // @HostListener('dragover', ['$event','$event.type', '$event.target.value'])\r\n  \r\n  @HostListener('focus', ['$event','$event.type', '$event.target.value'])\r\n  @HostListener('input', ['$event','$event.type', '$event.target.value'])\r\n  @HostListener('change', ['$event','$event.type', '$event.target.value'])\r\n  @HostListener('click', ['$event','$event.type', '$event.target.value']) \r\n  @HostListener('keydown', ['$event','$event.type', '$event.target.value'])\r\n  prevent(ev: Event, type: any, value: any){\r\n    this.setDisability(this.disable, ev)\r\n  }\r\n\r\n  ngOnInit(): void {\r\n      this.initialColor = this.color;\r\n  }\r\n\r\n  setDisability(flag: any, ev: any){\r\n    if(flag){\r\n      if (ev && ev.preventDefault && ev.stopPropagation){\r\n        ev.preventDefault();\r\n        ev.stopPropagation();\r\n      }\r\n      this.renderer.setAttribute(this.ele.nativeElement, 'disabled', 'true');\r\n      this.ele.nativeElement.style['pointer-events'] = 'none';\r\n      this.ele.nativeElement.style.cursor = 'not-allowed';\r\n      this.ele.nativeElement.style.opacity = '0.5';\r\n    } else {\r\n      this.renderer.removeAttribute(this.ele.nativeElement,'disabled');\r\n      // this.fire.emit(ev);\r\n      this.ele.nativeElement.style.cursor = 'initial';\r\n      this.ele.nativeElement.style['pointer-events'] = 'auto';\r\n      this.ele.nativeElement.style.opacity = '1';\r\n    }\r\n  }\r\n\r\n  ngOnChanges(sc: SimpleChanges){\r\n    this.setDisability(sc['disable'].currentValue, {})\r\n  }\r\n}","import { Directive, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\n@Directive({\r\n  selector: '[debounceInput]'\r\n})\r\nexport class DebounceInputDirective implements OnInit, OnDestroy {\r\n  @Input() config = {debounce: 500};\r\n  @Output() debounceInput = new EventEmitter();\r\n  private input = new Subject();\r\n  private subscription?: Subscription;\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit() {\r\n    this.subscription = this.input.pipe(\r\n      debounceTime(this.config.debounce)\r\n    ).subscribe(e => this.debounceInput.emit(e));\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.subscription && this.subscription.unsubscribe();\r\n  }\r\n\r\n  @HostListener('input', ['$event'])\r\n  inputEvent(event: any) {\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    this.input.next(event);\r\n  }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n@Pipe({\r\n\tname: 'filter',\r\n})\r\nexport class FilterPipe implements PipeTransform {\r\n\ttransform(items: any[], value: string, prop: string | null = null): any[] {\r\n\t\tif (!items) return [];\r\n\t\tif (!value) return items;\r\n\t\treturn items.filter(singleItem =>{\r\n      if(prop){\r\n        return singleItem[prop].toLowerCase().startsWith(value.toLowerCase())\r\n      } else {\r\n        return (JSON.stringify(singleItem)).toLowerCase().includes(value.toLowerCase());\r\n      }\r\n    });\r\n\t}\r\n}","import { Pipe, PipeTransform, SecurityContext } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n    name: 'highlight'\r\n})\r\n\r\nexport class HighlightSearch implements PipeTransform {\r\n    constructor(private _sanitizer: DomSanitizer){ }\r\n    transform(value: any, args: any): any {\r\n        if (!args) {return value;}\r\n        var re = new RegExp(args, 'gi'); //'gi' for case insensitive and can use 'g' if you want the search to be case sensitive.\r\n        let result = value.replace(re, \"<span class='hightlight'>$&</span>\");\r\n        return value || result;\r\n        //return this._sanitizer.sanitize(SecurityContext.HTML, this.escapeHtml(result));  \r\n    }\r\n    escapeHtml(unsafe: any) {\r\n        return unsafe.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\")\r\n                     .replace(/\"/g, \"&quot;\").replace(/'/g, \"&#039;\");\r\n      }\r\n}","import {AfterViewInit, Directive, ElementRef, Input,} from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[setFocus]'\r\n})\r\nexport class SetFocusDirective {\r\n\r\n  _setFocus?: boolean;\r\n\r\n  constructor(public element: ElementRef<HTMLElement>) {\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    // ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked.\r\n    if (this.setFocus) {\r\n      setTimeout(() => this.element.nativeElement.focus(), 0);\r\n    }\r\n  }\r\n\r\n  get setFocus(): boolean | any {\r\n      return this._setFocus;\r\n  }\r\n\r\n  @Input('setFocus')\r\n  set setFocus(value: boolean) {\r\n    this._setFocus = value;\r\n    if (this._setFocus) {\r\n      setTimeout(() => this.element.nativeElement.focus(), 0);\r\n    }\r\n  }\r\n  \r\n\r\n}\r\n","export const dotNotation = (obj: any, str: any) => {\r\n\treturn str.split('.').reduce((o: any,i: any)=>o[i] || '', obj);  \t\r\n} \r\n// export const itpolate = (obj, text) => {\r\n//     return text.match(/{([^}]+)}/g)\r\n//     .map(res => res.replace(/{|}/g , ''))\r\n//     .reduce((total, val) => {\r\n//       let regv = new RegExp(\"{\"+val+\"}\",'gi');\r\n//         return total.replace(regv, dotNotation(obj, val))\r\n//     }, text)\t\r\n// }\r\n\r\nexport const itpolate = (obj: any, text: any) => {\r\n  return text.replace(/{([^}]+)}/g, (matched: any, index: any, original: any) => {\r\n      if (index && index !== 0){\r\n        return dotNotation(obj, index)\r\n      }\r\n  });\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { itpolate } from './../util'; \r\n\r\n@Pipe({\r\n  name: 'ipolate'\r\n})\r\nexport class IpolatePipe implements PipeTransform {\r\n\r\n  transform(value: any, str: any): any {\r\n    if(str === true){\r\n      return (value ? JSON.stringify(value) : '');\r\n    } else if(typeof str == 'string' && str){\r\n      return (str && value) ? itpolate(value, str) : str;\r\n    } else {\r\n      return str;\r\n    }\r\n  }\r\n\r\n}\r\n","import { Directive, Input, OnInit, OnChanges, Renderer2, ElementRef, SimpleChanges, OnDestroy } from '@angular/core';\r\n\r\n@Directive({\r\n    selector: '[atbr]'\r\n  })\r\n  export class AtbrDirective implements OnInit, OnDestroy{\r\n  \r\n    @Input() atbr: any = {};\r\n    @Input() \r\n    set random(r: any){\r\n      this.handleAttribute();\r\n    }\r\n    constructor(private renderer: Renderer2,\r\n      private ele: ElementRef){}\r\n    \r\n  \r\n    ngOnInit(){\r\n      // try {\r\n      //   this.atbr = new Proxy(this.atbr, {\r\n      //     set: function(this: any, target: any, p: any, newValue: any, receiver: any) {\r\n      //       target[p] = newValue;\r\n      //       this.handleAttribute();\r\n      //       // _this.control.fireRandom();\r\n      //       return true;\r\n      //     }.bind(this),\r\n      //     get(target, key) {\r\n      //       return target[key];\r\n      //     }\r\n      //   });\r\n      // } catch (e) { }\r\n      this.handleAttribute();\r\n    }\r\n  \r\n    handleAttribute(){\r\n      let abr = this.atbr || {};\r\n      Object.keys(abr).forEach(k => {\r\n        // console.log(k, this.atbr[k])\r\n        if(this.atbr[k] === undefined){\r\n          this.renderer.removeAttribute(this.ele.nativeElement, k);  \r\n        } else if(this.atbr[k] === null){\r\n          this.renderer.setAttribute(this.ele.nativeElement, k, '');\r\n        } else{\r\n          this.renderer.setAttribute(this.ele.nativeElement, k, this.atbr[k]);\r\n        }\r\n      });\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        // if(this.atbr){\r\n        //     this.atbr = JSON.parse(JSON.stringify(this.atbr))\r\n        // }\r\n    }\r\n  \r\n  }","import { Pipe, PipeTransform } from '@angular/core';\r\n@Pipe({\r\n\tname: 'ObjectKeys',\r\n})\r\nexport class ObjectKeysPipe implements PipeTransform {\r\n\ttransform(items:any): any {\r\n\t\tif (items && Array.isArray(items)){\r\n            return items;\r\n        } else if (items && ['object'].includes(typeof items)){\r\n            return Object.keys(items).map(i => {\r\n                let iv = items[i];\r\n                iv['__key__'] = i;\r\n                return iv;\r\n            })\r\n        }\r\n\t}\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n@Pipe({\r\n\tname: 'gtFun',\r\n})\r\nexport class GtFunPipe implements PipeTransform {\r\n\tpublic transform(\r\n\t\ttemplateValue: any,\r\n\t\tfun: Function,\r\n\t\t...funArguments: any[]\r\n\t\t) : any {\r\n\t\tfunArguments.unshift( templateValue );\r\n\r\n\t\treturn( fun.apply( null, funArguments ) );\r\n\r\n\t}\r\n}","import { Directive, Output, OnInit, OnDestroy, EventEmitter } from '@angular/core';\r\n\r\n@Directive({\r\n    selector: '[oninit]'\r\n  })\r\n  export class GtOnInItDirective implements OnInit, OnDestroy{\r\n    @Output() oninit = new EventEmitter();\r\n    @Output() ondestroy = new EventEmitter();\r\n\r\n    ngOnInit(){\r\n      this.oninit.emit('');\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this.ondestroy.emit('');\r\n    }\r\n  \r\n  }","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class GtElementsService implements GtComponentsMeta, GtTemplatesMeta{\r\n  private allComponents: any = {};\r\n  private allTemplates: any = {};\r\n  constructor() { }\r\n  getComponent(key: string){\r\n    return this.allComponents[key] || false;\r\n  }\r\n  getAllComponents(){\r\n    return this.allComponents || false;\r\n  }\r\n  addComponent(key: string, value: any){\r\n    this.allComponents[key] = value;\r\n  }\r\n  removeComponent(key: string){\r\n    delete this.allComponents[key];\r\n  }\r\n  setComponents(list: any){\r\n    this.allComponents = list ? {...list} : {};\r\n  }\r\n\r\n  getTemplate(key: string){\r\n    return this.allTemplates[key] || false;\r\n  }\r\n  getAllTemplates(){\r\n    return this.allTemplates || false;\r\n  }\r\n  addTemplate(key: string, value: any){\r\n    this.allTemplates[key] = value;\r\n  }\r\n  removeTemplate(key: string){\r\n    delete this.allTemplates[key];\r\n  }\r\n  setTemplates(list: any){\r\n    this.allTemplates = list ? {...list} : {};\r\n  }\r\n\r\n}\r\n\r\n\r\ninterface GtComponentsMeta {\r\n  getComponent(key: string): void;\r\n  getAllComponents(): void;\r\n  addComponent(key: string, value: any): void;\r\n  removeComponent(key: string): void;\r\n  setComponents(list: any): void;\r\n}\r\n\r\ninterface GtTemplatesMeta {\r\n  getTemplate(key: string): void;\r\n  getAllTemplates(): void;\r\n  addTemplate(key: string, value: any): void;\r\n  removeTemplate(key: string): void;\r\n  setTemplates(list: any): void;\r\n}\r\n","import { AfterViewInit, Directive, Input, OnDestroy, OnInit, Optional, TemplateRef } from \"@angular/core\";\r\nimport { GtElementsService } from \"../goteti-elements.service\";\r\n\r\n@Directive({\r\n    selector: 'ng-template[gtEref]'\r\n  })\r\n  export class GtElementRefDirective implements OnInit, OnDestroy{\r\n\r\n    @Input() gtEref: string = 'NO_TEMPLATE_NAME_GTEREF';\r\n    @Input() addToService: boolean = true;\r\n    @Input() save:boolean = false;\r\n\r\n    constructor(public template: TemplateRef<any>,@Optional() private gtElementsService: GtElementsService){}\r\n\r\n  \r\n  ngOnInit(): void {\r\n      if(this.gtElementsService && this.addToService){\r\n        this.gtElementsService.addTemplate(this.gtEref, this.template);\r\n      }\r\n    }\r\n\r\n  ngOnDestroy(){\r\n    if(this.gtElementsService && !this.save){\r\n      this.gtElementsService.removeTemplate(this.gtEref);\r\n    }\r\n  }\r\n  \r\n}","import { Injectable } from '@angular/core';\r\nimport { GtsFormHub, GtsFormStatusInf } from 'goteti-js-forms';\r\n\r\n@Injectable()\r\nexport class GtFormHubService {\r\n    hub : GtsFormHub = new GtsFormHub();\r\n    init(validators: {[prop:string]: Function}, callback?: Function,formStatus?: GtsFormStatusInf){\r\n      this.hub = new GtsFormHub(validators, callback, formStatus || {checkOnDirty: true,submitted: false,checkOnSubmit: false,checkOnTouch: true});\r\n    }\r\n\r\n\r\n}","import { Directive, Input, OnInit, TemplateRef, ViewContainerRef, Injector, ElementRef, ComponentFactoryResolver, OnDestroy, Optional, AfterViewInit, Output, EventEmitter } from '@angular/core';\r\nimport { GtElementsService } from '../goteti-elements.service';\r\nimport { GtFormHubService } from '../goteti-form-hub.service';\r\nimport { GtsFormHub, GtsFormInput } from 'goteti-js-forms';\r\n\r\n@Directive({\r\n  selector: '[gtLoadElement]'\r\n})\r\nexport class GtLoadElementDirectives implements AfterViewInit, OnDestroy {\r\n  @Input() config: any;\r\n  @Input() control: any;\r\n  @Input() otherData: any;\r\n  @Input() set type(r: any) {\r\n    if (this.operationData.type != r) {\r\n      this.operationData.type = r;\r\n      this.decideTemplateOrComponent();\r\n    }\r\n  }\r\n  @Input() set component(r: any) {\r\n    if (this.operationData.component != r) {\r\n      this.operationData.component = r;\r\n      this.decideTemplateOrComponent();\r\n    }\r\n  }\r\n  @Input() set template(r: any) {\r\n    if (this.operationData.template != r) {\r\n      this.operationData.template = r;\r\n      this.decideTemplateOrComponent();\r\n    }\r\n  }\r\n\r\n  @Input() set templates(v: any) {\r\n    if (this.allTemplates != v) {\r\n      this.allTemplates = v;\r\n      this.decideTemplateOrComponent();\r\n    }\r\n  };\r\n\r\n  @Input() set hashid(v: any) {\r\n    this._hashid = v;\r\n    this.mapComponentBindings();\r\n  }\r\n\r\n  @Input() hubClass:any;\r\n  @Input() formStatus: any = {checkOnDirty: true};\r\n  @Input() validators: any = {};\r\n  @Input() set gtModel(v: any){\r\n      if(this.control){\r\n        if(v != this.control.value){\r\n          (this.control as GtsFormInput).update(v, {eventTypeName: 'setValue'});\r\n        }\r\n      } else {\r\n        this.tempModelValue = v;\r\n      }\r\n  }\r\n  @Output() gtModelChange = new EventEmitter();\r\n  @Output() set disabled(d: boolean){\r\n    if(this.control){\r\n        this.control.disabled = d;\r\n    }\r\n  }\r\n\r\n  @Output() set hidden(d: boolean){\r\n    if(this.control){\r\n        this.control.hidden = d;\r\n    }\r\n  }\r\n\r\n  @Input() set required(r: boolean){\r\n    if(r && this.control){\r\n        this.control.generateValidators([{key:'required'}]);\r\n    } else if(this.control){\r\n        delete this.control.validators.required;\r\n    }\r\n  }\r\n\r\n  @Input() set metachange(v: string){\r\n      if(this.control && v && 'validations'.includes(v)){\r\n        this.control.validators = {};\r\n        this.control.generateValidators(this.control?.config?.validations || []);\r\n        this.control.checkValidations();\r\n      }\r\n  }\r\n\r\n  _hashid: any = \"\";\r\n  tempModelValue = \"\";\r\n  allTemplates = null;\r\n  templateExists: any = null;\r\n  templateRef: any = null;\r\n  operationData = {\r\n    type: null,\r\n    template: null,\r\n    component: null\r\n  }\r\n\r\n  templateContext: any = {}\r\n  subscriptions: any = null;\r\n  constructor(\r\n    private viewContainerRef: ViewContainerRef,\r\n    private componentFactoryResolver: ComponentFactoryResolver,\r\n    private gtElementsService: GtElementsService,\r\n     @Optional() private formHubService: GtFormHubService\r\n  ) { }\r\n\r\n  ngAfterViewInit(): void {\r\n    this.preludeChecks();\r\n    this.decideTemplateOrComponent();\r\n  }\r\n\r\n  preludeChecks(){\r\n    if(!this.control){\r\n      let hub = this?.formHubService?.hub;\r\n      if(this.hubClass){\r\n        hub = new this.hubClass(this.validators || {});\r\n      }\r\n      if(!hub){\r\n          hub = new GtsFormHub();\r\n      }\r\n      // (this.validators, (con: any, type: any)=>{\r\n      //   if('update'.includes(type)){\r\n      //     this.gtModelChange.emit(con.value);\r\n      //   }\r\n      // },this.formStatus);\r\n      this.control = hub.update(this.tempModelValue, this.config) as GtsFormInput;\r\n      // console.log(this.control)\r\n      this.subscriptions = this.control.detectChanges();\r\n      this.subscriptions && this.subscriptions.onChange((v: any, type: any)=>{\r\n        if('update'.includes(type)){\r\n          this.gtModelChange.emit(v);\r\n        }\r\n      })\r\n      this.tempModelValue = \"\";\r\n    }\r\n  }\r\n\r\n  decideTemplateOrComponent() {\r\n    if (!(this.operationData.type && (this.operationData.template || this.operationData.component))) {\r\n      return;\r\n    }\r\n    if (this.operationData.type) {\r\n      switch (this.operationData.type) {\r\n        case 'template': {\r\n          if (this.operationData.template) {\r\n            this.handleTemplate();\r\n          } else {\r\n            // console.warn(`Missing template type for ${this.control?.config?.name} `)\r\n          }\r\n          break;\r\n        }\r\n        case 'component': {\r\n          if (this.operationData.component) {\r\n            this.loadComponent();\r\n          } else {\r\n            // console.warn(`Missing component type for ${this.control?.config?.name} `)\r\n          }\r\n          break;\r\n        }\r\n        default: {\r\n          // console.warn(`Missing type for ${this.control?.config?.name} `)\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  setTemplateContext() {\r\n    this.templateContext = {\r\n      $implicit: {\r\n        config: this.control?.config || this.config,\r\n        control: this.control,\r\n        formStatus: this.control?._formStatus,\r\n        otherData: this.otherData,\r\n        hashid: this._hashid\r\n      },\r\n      config: this.control?.config || this.config,\r\n      control: this.control,\r\n      formStatus: this.control?._formStatus,\r\n      otherData: this.otherData,\r\n      hashid: this._hashid\r\n    }\r\n  }\r\n\r\n  handleTemplate() {\r\n    let compKey: any = this.operationData.template;\r\n    let compFromService = this.gtElementsService && compKey && this.gtElementsService.getTemplate(compKey);\r\n    let compFromTemplates = this.allTemplates && compKey && this.allTemplates[compKey];\r\n    let componentEle: any;\r\n    if (compFromService) {\r\n      componentEle = compFromService;\r\n    } else if (compFromTemplates) {\r\n      componentEle = compFromTemplates;\r\n    }\r\n    if (this.templateExists) {\r\n      this.viewContainerRef.clear();\r\n      this.templateExists = null;\r\n      this.templateContext = null;\r\n    }\r\n\r\n    if (componentEle) {\r\n      setTimeout(() => {\r\n        if (!this.templateExists) {\r\n          this.setTemplateContext();\r\n          this.templateRef = this.viewContainerRef.createEmbeddedView(componentEle, this.templateContext);\r\n          this.templateExists = true;\r\n        }\r\n      });\r\n    }  else {\r\n      // console.warn(`${compKey} Template missing  for ${this.control?.config?.name}`);\r\n    }\r\n  }\r\n\r\n  loadComponent() {\r\n    let compKey = this.operationData.component;\r\n    let compFromService = this.gtElementsService && compKey && this.gtElementsService.getComponent(compKey);\r\n    let compFromTemplates = this.allTemplates && compKey && this.allTemplates[compKey];\r\n    let componentEle: any;\r\n    if (compFromService) {\r\n      componentEle = compFromService;\r\n    } else if (compFromTemplates) {\r\n      componentEle = compFromTemplates;\r\n    }\r\n\r\n    if (componentEle) {\r\n      if (this.templateExists) {\r\n        this.viewContainerRef.clear();\r\n        this.templateExists = null;\r\n        this.templateContext = null;\r\n        this.templateRef = null;\r\n      }\r\n      setTimeout(() => {\r\n        if (!this.templateExists) {\r\n          const componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentEle);\r\n          this.templateRef = this.viewContainerRef.createComponent(componentFactory);\r\n          this.mapComponentBindings();\r\n          this.templateExists = true;\r\n        }\r\n      })\r\n    } else {\r\n      // console.warn(`${compKey} Component missing  for ${this.control?.config?.name}`);\r\n    }\r\n  }\r\n\r\n  mapComponentBindings() {\r\n    if (this.templateRef && this.templateRef.instance) {\r\n      this.templateRef.instance.control = this.control;\r\n      this.templateRef.instance.config = this.control?.config;\r\n      this.templateRef.instance.otherData = this.otherData;\r\n      this.templateRef.instance.hashid = this._hashid;\r\n      // this.updateComponentInputs(this.config)\r\n    }\r\n    if (this.templateContext) {\r\n      this.templateContext.hashid = this._hashid;\r\n      if (this.templateContext.$implicit) {\r\n        this.templateContext.$implicit.hashid = this._hashid;\r\n      }\r\n    }\r\n  }\r\n\r\n  updateComponentInputs(config: any) {\r\n    if (this.templateRef && this.templateRef.instance) {\r\n      if (config && config.inputs) {\r\n        for (let key in config.inputs) {\r\n          this.templateRef.instance[key] = config.inputs[key];\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.viewContainerRef.clear();\r\n    this.templateExists = null;\r\n    this.templateContext = null;\r\n    this.templateRef = null;\r\n    if(this.subscriptions){\r\n        this.subscriptions.destroy && this.subscriptions.destroy();\r\n        this.subscriptions = null;\r\n    }\r\n  }\r\n\r\n\r\n\r\n\r\n}","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'gt-loop-elements',\r\n  templateUrl: './gt-loop-elements.component.html',\r\n  styleUrls: ['./gt-loop-elements.component.css']  \r\n})\r\nexport class GtLoopElementsComponent implements OnInit {\r\n@Input() control: any;\r\n@Input() otherData: any;\r\nConsole = console;\r\n  constructor() { }\r\n\r\n  ngOnInit() {\r\n  }\r\n  \r\n}\r\n","<ng-container *ngIf=\"!control.hidden\">\r\n    <ng-template \r\n        [control]=\"control\" \r\n        [config]=\"control?.config\" \r\n        [type]=\"control?.config?.type\" \r\n        [template]=\"control?.config?.template\" \r\n        [component]=\"control?.config?.component\" \r\n        [otherData]=\"otherData\"\r\n        [hashid]=\"control?.hashid\"\r\n        gtLoadElement></ng-template>\r\n    </ng-container>","import { Directive, ElementRef, EventEmitter, HostBinding, HostListener, Input, Output, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[GtFocusBlur]'\r\n})\r\nexport class GtFocusBlurDirective {\r\n  @Output() onOut = new EventEmitter<void>();\r\n  @Output() onIn = new EventEmitter<void>();\r\n  @Input() disabled = false;\r\n  // private isFocused = false;\r\n  private isWait = false;\r\n\r\n  @HostBinding('class.disabled') get isDisabled(){\r\n    return this.disabled;\r\n  }\r\n\r\n  @HostBinding('class.gtfocused') isFocused = false;\r\n\r\n  constructor(private elementRef: ElementRef, private renderer: Renderer2) {}\r\n\r\n  // Handle focus and click events\r\n   handleDocumentClick = function(this: any, event: MouseEvent) {\r\n    const element = this.elementRef.nativeElement;\r\n    if (this.isFocused && !element.contains(event.target)) {\r\n      this.isFocused = false;\r\n      this.isWait = false;\r\n      this.blurElement('clickout');\r\n    }\r\n  }.bind(this)\r\n\r\n  @HostListener('click')\r\n  handleClick() {\r\n    if(this.disabled){\r\n      return;\r\n    }\r\n    this.isWait = false;\r\n    if (!this.isFocused) {\r\n      this.isFocused = true;\r\n      this.focusElement('clickin');\r\n    }\r\n  }\r\n\r\n  @HostListener('mousedown')\r\n  handleMouseDown() {\r\n    this.isWait = true;\r\n  }\r\n\r\n  @HostListener('focusin')\r\n  handleFocusIn() {\r\n    if(this.disabled){\r\n      return;\r\n    }\r\n    if (!this.isFocused) {\r\n      this.isFocused = true;\r\n      this.focusElement('focusin');\r\n    }\r\n  }\r\n\r\n  @HostListener('focusout')\r\n  handleFocusOut() {\r\n    const element = this.elementRef.nativeElement;\r\n    setTimeout(()=>{\r\n      if(this.isWait){\r\n          this.isWait = false;\r\n      } else  if (this.isFocused && !element.contains(document.activeElement)) {\r\n        this.isFocused = false;\r\n        this.blurElement('focusout');\r\n      }\r\n    })\r\n  }\r\n\r\n  private focusElement(ftype: any) {\r\n    document.addEventListener('click', this.handleDocumentClick);\r\n    this.onIn.emit(ftype);\r\n    this.handleFocusFirstElement();\r\n    // this.renderer.setAttribute(this.elementRef.nativeElement, 'gtfocused', 'true');\r\n  }\r\n\r\n  private blurElement(ftype: any) {\r\n    document.removeEventListener('click', this.handleDocumentClick);\r\n    this.onOut.emit(ftype);\r\n    this.isWait = false;\r\n    // this.renderer.removeAttribute(this.elementRef.nativeElement, 'gtfocused');\r\n  }\r\n\r\n  handleFocusFirstElement(){\r\n    const element = this.elementRef.nativeElement;\r\n    if(!element.contains(document.activeElement)){\r\n      let item = element.querySelector('.focusit:not([disabled])');\r\n      if(item){\r\n        item.focus();\r\n      }\r\n    }\r\n  }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'gt-mat-wrap',\n  templateUrl: './gt-mat-wrap.component.html',\n  styleUrls: ['./gt-mat-wrap.component.scss'],\n  encapsulation: ViewEncapsulation.None\n})\nexport class GtMatWrapComponent {\n  @Input() floatLabel: boolean = false;\n  @Input() wrapClass: string = \"\";\n  @Input() appearance: \"standard\" | \"fill\" | \"outline\" = \"outline\";\n  @Input() hasError: boolean = false;\n  @Input() hasWarning: boolean = false;\n  @Input() disabled: boolean= false;\n  @Input() stopDefaultFocus: boolean = false;\n  @Input() bypassFocused: boolean = false;\n  @Input() focused: boolean = false;\n  @Output() focusedChange = new EventEmitter();\n  @Output() focusIn = new EventEmitter();\n  @Output() focusOut = new EventEmitter();\n\n  onFocusIn(ev: any){\n    if(!(this.disabled)){\n      if(!this.bypassFocused){\n        this.focused = true;\n      }\n      this.focusIn.emit(ev);\n    }\n  }\n\n  onFocusOut(ev: any){\n    if(!(this.disabled)){\n      if(!this.bypassFocused){\n        this.focused = false;\n      }\n      this.focusOut.emit(ev);\n    }\n  }\n\n  setFocused(flag: any){\n    this.focused = flag;\n    this.focusedChange.emit(flag);\n  }\n\n}\n","<div GtFocusBlur \n    [disabled]=\"disabled\"  \n    (onIn)=\"onFocusIn($event)\" \n    (onOut)=\"onFocusOut($event)\" \n    [ngClass]=\"wrapClass\"\n    class=\"gt-mat-input-wrap\" \n    >\n    <div   \n        class=\"gt-mat-input\" \n        [ngClass]=\"{\n            'focused': focused, \n            'floatActive': floatLabel || focused,\n            'fill': appearance == 'fill',\n            'standard': appearance == 'standard',\n            'outline': (!appearance || appearance == 'outline'),\n            'hasError': hasError,\n            'hasWarning': hasWarning,\n            'noevents': disabled\n        }\" #myDiv>\n        <div [ngClass]=\"(focused || floatLabel) ? 'floatLabel' : 'normalLabel'\">\n            <ng-content select=\".header\"></ng-content>\n        </div>\n            <ng-content select=\".data\"></ng-content>\n        <!-- {{focused}} -->\n    </div>\n    <div [ngClass]=\"{\n        'hasError': hasError,\n        'hasWarning': hasWarning\n    }\" class=\"input-footer\">\n        <ng-content select=\".footer\"></ng-content>\n    </div>\n</div>\n\n\n","import { Directive, ElementRef, EventEmitter, HostBinding, HostListener, Input, Output, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[GtDetectFocus]'\r\n})\r\nexport class GtDetectFocusDirective {\r\n\r\n  @Output() onIn = new EventEmitter();\r\n  @Output() onOut = new EventEmitter();\r\n  @HostBinding('class.gtfocused') gtFocused = false;\r\n\r\n  @Input() set disabled(flag: boolean){\r\n    this._disabled = flag;\r\n    this.handleDisable();\r\n  };\r\n\r\n  get disabled(){\r\n    return this._disabled;\r\n  }\r\n\r\n  @Input() stopDefaultFocus: boolean = false;\r\n\r\n  @Input() focused: boolean = false;\r\n  // @Input() divActiveChange = new EventEmitter();\r\n\r\n  _disabled = false;\r\n  mouseIn = false;\r\n  constructor(private el: ElementRef, private renderer: Renderer2) { }\r\n\r\n  handleDisable(){\r\n    // if(this.renderer){\r\n    //   if(this.disabled){\r\n    //     this.renderer.addClass(this.el, \"noevents\");\r\n    //   } else {\r\n    //     this.renderer.removeClass(this.el, \"noevents\");\r\n    //   }\r\n    // }\r\n  }\r\n  \r\n  @HostListener('mouseover')\r\n  onMouseIn(){  \r\n    this.mouseIn = true;\r\n  }\r\n  \r\n  @HostListener('mouseout')\r\n  onMouseOut(){  \r\n    this.mouseIn = false;\r\n  }\r\n\r\n  @HostListener('focusin')\r\n  onFocusIn(){  \r\n    this.gtFocused = true;\r\n    this.onIn.emit('focusin');\r\n  }\r\n\r\n  @HostListener('focusout')\r\n  onFocusOut(){\r\n    setTimeout(()=>{\r\n      if(!this.focusWithin){\r\n            this.gtFocused = false;\r\n            this.onOut.emit('focusout');\r\n         }\r\n      },300)\r\n  }\r\n\r\n  @HostListener('click')\r\n  onClick(){\r\n    if(!(this.focusWithin || this.disabled || this.stopDefaultFocus)){\r\n      // this.focused = true;\r\n      this.onIn.emit('click');\r\n      this.gtFocused = true;\r\n      let item = this.el.nativeElement.querySelector(\".focusit\");\r\n      let inputItem = this.el.nativeElement.querySelector(\"input\");\r\n      if(item && item.length){\r\n        item[0].focus();\r\n      } else if(item){\r\n        item.focus();\r\n      } else if(inputItem && inputItem.length){\r\n        inputItem[0].focus();\r\n      } else if(inputItem){\r\n        inputItem.focus();\r\n      } else {\r\n        console.error(\".focusit class is not found for any of the input tags of GtDetectFocus directive children.\")\r\n      }\r\n    }\r\n   \r\n  }\r\n\r\n  get focusWithin(){\r\n    return this.el.nativeElement.contains(document.activeElement);\r\n  }\r\n\r\n  // @HostListener(\"document:click\")\r\n  // documentClick(){\r\n  //   if(!this.mouseIn){\r\n  //     this.focused = false;\r\n        //this.setDivActive(false);\r\n  //     this.onOut.emit('click')\r\n  //   }\r\n  // }\r\n}\r\n\r\n\r\n","import { AfterViewInit, Component, EventEmitter, OnInit, Output } from '@angular/core';\n\n@Component({\n  selector: 'gt-default-templates',\n  templateUrl: './gt-default-templates.component.html',\n  styleUrls: ['./gt-default-templates.component.scss']\n})\nexport class GtDefaultTemplatesComponent implements AfterViewInit {\n  @Output() loaded = new EventEmitter();\n  constructor() { }\n\n  ngAfterViewInit(): void {\n    this.loaded.emit();\n  }\n}\n","<ng-template gtEref=\"Group\"  let-control=\"control\" let-config=\"config\">\n    <div *ngFor=\"let item of control.Fields\" class=\"inlinebox defaultPadding\"> \n        <gt-loop-elements [control]=\"item\"></gt-loop-elements>\n    </div>\n    <div>\n        <small *ngFor=\"let err of control?.errors | keyvalue\">\n            {{err.value}}\n        </small>\n    </div>\n</ng-template>\n\n<ng-template gtEref=\"List\"  let-control=\"control\" let-config=\"config\">\n    <div class=\"inlinebox defaultPadding\">\n        <div *ngFor=\"let item of control.Fields; let i = index;\" class=\"list-item\">\n            <div class=\"inlinebox\" width=\"90%\">\n                <gt-loop-elements [control]=\"item\"></gt-loop-elements>\n            </div>\n            <div class=\"inlinebox\" width=\"10%\" >\n                <button type=\"button\" (click)=\"control.removeFromList(i)\"> X </button>\n            </div>\n        </div>\n        <div>\n            <small *ngFor=\"let err of control?.errors | keyvalue\">\n                {{err.value}}\n            </small>\n        </div>\n        <div > &nbsp;&nbsp;\n            <button type=\"button\" (click)=\"control.addToList()\">Add</button>\n        </div>\n    </div>\n</ng-template>\n\n<ng-template gtEref=\"Input\" let-control=\"control\" let-config=\"config\">\n    <div class=\"inlinebox\">\n        <gt-mat-wrap \n            #element\n            [disabled]=\"control?.disabled\"\n            [hasError]=\"control?.errors\" \n            [hasWarning]=\"control?.warnings\" \n            [floatLabel]=\"control?.value\" \n            [appearance]=\"control?.config?.appearance || 'outline'\"\n            [stopDefaultFocus]=\"false\" \n            [bypassFocused]=\"false\"\n            >\n          <div class=\"header\">\n            <span>{{config?.label || config?.name}}<span *ngIf=\"control?.isRequired\">*</span></span>\n          </div>\n          <div class=\"data\">\n            <input class=\"focusit\"  [(ngModel)]=\"control.value\" [disabled]=\"control?.disabled\" [placeholder]=\"config?.placeholder || ''\">\n          </div>\n          <div class=\"footer\">\n             <small> {{control?.hint}}</small>\n            <small *ngFor=\"let err of control?.errors | keyvalue\" class=\"gt-block\">\n              {{err.value}}\n            </small>\n          </div>\n      </gt-mat-wrap>\n    </div>\n  </ng-template>\n\n\n","import { Component, ElementRef, HostBinding, Input, OnInit, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'gtoption',\n  templateUrl: './gtoption.component.html',\n  styleUrls: ['./gtoption.component.scss'],\n  encapsulation:ViewEncapsulation.None\n})\nexport class GtoptionComponent{\n  @Input() uid?: any;\n  @Input() ftext?: string;\n  @Input() value?: any;\n  @Input() selected?: boolean;\n  @Input() hidden: boolean = false;\n  @Input() disabled: boolean = false;\n  @Input() valueview: string = \"\";\n  hide:boolean = false;\n\n  constructor(private el: ElementRef) {\n\n  }\n\n  setValue() {\n    if (!this.disabled) {\n      this.emitValue('gtoptionUpdate', {\n        value: this.value,\n        uid: this.uid,\n        view: this.valueview || this.value,\n        selected: !this.selected,\n        gtoption: this\n      });\n    }\n  }\n\n  emitValue(name: string, data?: any) {\n    const customEvent = new CustomEvent(name, {\n      bubbles: true, // Allow the event to bubble up to parent elements\n      detail: data\n    });\n\n    // Dispatch the custom event from the child element\n    this.el.nativeElement.dispatchEvent(customEvent);\n  }\n\n  onKeyDown(event: KeyboardEvent) {\n    \n    switch (event.key) {\n      case 'ArrowDown': {\n        this.setFocusOnNextMenu(false);\n        event.preventDefault();\n        break;\n      }\n      case 'ArrowUp': {\n        this.setFocusOnNextMenu(true);\n        event.preventDefault();\n        break;\n      }\n      case 'Enter': {\n        if (this.disabled) {\n          // event.stopPropagation();\n          return;\n        }\n        this.setValue();\n        break;\n      }\n      case 'Escape': {\n        this.emitValue('focusInput');\n        break;\n      }\n    }\n  }\n\n  setFocusOnNextMenu(previous: boolean = false) {\n    let menu: any = document.activeElement;\n    if (menu) {\n      menu = menu.parentNode;\n    }\n\n      while (menu) {\n          if (previous) {\n            menu = menu.previousElementSibling;\n            if(!menu){\n              this.emitValue('focusInput');\n              break;\n            }\n          } else {\n            menu = menu.nextElementSibling;\n          }\n          if (menu) {\n            if (menu.firstChild && menu.firstChild.hasAttribute && menu.firstChild.hasAttribute('tabindex')) {\n              const ele = menu.firstChild;\n              if (ele) {\n                ele.focus();\n                break;\n              }\n            }\n          } else {\n            break;\n          }\n      }\n\n\n    // try {\n\n    //   let focusedon: any = document.activeElement;\n    //   if (previous) {\n    //     if (focusedon.parentNode.previousElementSibling) {\n    //       this.setFocusOnFirstElement(focusedon.parentNode.previousElementSibling);\n    //     } else {\n    //       this.emitValue('focusInput');\n    //     }\n    //   } else {\n    //     // focusedon.nextElementSibling && focusedon.nextElementSibling.focus();\n    //     if (focusedon.parentNode.nextElementSibling) {\n    //       this.setFocusOnFirstElement(focusedon.parentNode.nextElementSibling);\n    //     }\n    //   }\n    // } catch (e) { }\n  }\n\n\n\n  setFocusOnFirstElement(elen: any) {\n    try {\n\n      // Query for all potential focusable elements\n      const ele = elen.firstChild;\n\n      // Return the first one if found, otherwise return null\n      // let ele =  focusableElements.length > 0 ? focusableElements[0] : null;\n      if (ele) {\n        ele.focus();\n      }\n    } catch (e) {\n      this.emitValue('focusInput');\n    }\n  }\n\n\n  setFocusOnNextMenuOLD(previous: boolean = false) {\n    \n    try {\n\n      let focusedon: any = document.activeElement;\n      if (previous) {\n        if (focusedon.parentNode.previousElementSibling) {\n          this.setFocusOnFirstElement(focusedon.parentNode.previousElementSibling);\n        } else {\n          this.emitValue('focusInput');\n        }\n      } else {\n        // focusedon.nextElementSibling && focusedon.nextElementSibling.focus();\n        if (focusedon.parentNode.nextElementSibling) {\n          this.setFocusOnFirstElement(focusedon.parentNode.nextElementSibling);\n        }\n      }\n    } catch (e) { }\n  }\n}\n\n","<div *ngIf=\"!(hide || hidden)\" [ngClass]=\"{'selected' : selected, 'disabled': disabled, 'hidden': (hide || hidden)}\" (click)=\"setValue()\" [tabindex]=\"0\" (keydown)=\"onKeyDown($event)\" class=\"gtoption\">\n    <ng-content></ng-content>\n</div>","import { AfterViewInit, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, HostBinding, HostListener, Input, OnDestroy, OnInit, Output, QueryList, ViewEncapsulation } from '@angular/core';\nimport { GtoptionComponent } from '../gtoption/gtoption.component';\nimport { itpolate } from '../../util';\nimport { gtInputDebounce } from '../../form-builders/form-map';\n\n@Component({\n  selector: 'gt-datalist',\n  templateUrl: './gt-datalist.component.html',\n  styleUrls: ['./gt-datalist.component.scss'],\n  encapsulation:ViewEncapsulation.None\n})\nexport class GtDatalistComponent implements AfterViewInit, OnDestroy {\n  constructor(private elementRef: ElementRef, private cdr: ChangeDetectorRef) { }\n  @ContentChildren(GtoptionComponent) children!: QueryList<GtoptionComponent>;\n\n  @HostListener('gtoptionUpdate', ['$event'])\n  handleCustomEvent(event: CustomEvent) {\n    if(this.disabled){\n      return;\n    }\n    let selecteduid = event?.detail?.uid;\n    let selectedval = event?.detail?.value;\n    // let selectedview = event.detail?.view;\n    let isselected = event?.detail?.selected == false ? false : true;\n    let value: any = null;\n    if (this._multiple) {\n      let lv = Array.isArray(this._value) ? this._value : (this.noData(this._value) ? [] : [this._value]);\n      value = [...(lv || [])];\n      if (isselected) {\n        value.push(selectedval);\n      } else {\n        value = value.filter((f: any) => {\n          return ((typeof f == 'object') && this.uidprop) ? (f[this.uidprop] != selecteduid) : (f != selecteduid);\n      });\n      }\n    } else {\n      if (isselected) {\n        value = selectedval;\n      } else {\n        // if(this._search && this.freetext){\n        //   value = this._search;\n        // } else {\n          value = null;\n        // }\n      }\n    }\n    this._value = value;\n    this.valueChange.emit(value);\n    this.onChange.emit(event?.detail);\n    if(this.rerunOnSelect){\n      this.run();\n    }\n    event.stopPropagation();\n  }\n\n  // @HostListener('focusInput', ['$event'])\n  // onfocusInput(event: CustomEvent) {\n  //   if (this.inputref) {\n  //     this.inputref.focus();\n  //   }\n  // }\n  @HostBinding('class.gt-datalist') hostclass = true;\n  @HostBinding('class.empty') empty = false;\n  @HostBinding('class.open') \n  get isOpen(){\n    return this._open;\n  };\n\n  @Input() rerunOnSelect = false;\n  _search: string = \"\";\n  @Input() set search(s: any) {\n    this._search = s;\n    this.filterList();\n    this._open = true;\n  } \n\n  _multiple: boolean = false;\n  @Input() set multiple(v: any) {\n    this._multiple = ['', 'true', true].includes(v);\n  };\n\n  _value: any;\n  @Output() valueChange: EventEmitter<any> = new EventEmitter();\n  @Input() set value(v: any) {\n    this._value = v;\n    this.run();\n  }\n  @Output() viewChange = new EventEmitter();\n  @Output() onChange = new EventEmitter();\n\n  @Input() retext?:string=\"\";\n  @Input() uidprop?: string;\n  @Input() disabled = false;\n  // @Input() freetext = true;\n\n  @Input() set rerun(v: string){\n    this.run();\n  }\n  _open = false;\n\n  @Input() set open(o: any) {\n      this._open = !!o;\n  }\n\n  subscription: any = null;\n\n  ngAfterViewInit() {\n    this.subscription = this.children.changes.subscribe(() => {\n      setTimeout(()=>{\n        this.run();\n      })\n    });\n    setTimeout(() => {\n      this.run();\n    })\n  }\n\n\n  setInputView(txtlist: any) {\n    setTimeout(()=>{\n      this.viewChange.emit(this.noData(txtlist) ? [this._search || ''] : txtlist);\n    },100)\n  }\n\n  public setFocusOnFirstElement() {\n    if (!this.disabled) {\n      const focusableElements = this.elementRef.nativeElement.querySelectorAll(\n        'a, button, input, textarea, select, [tabindex]:not([tabindex=\"-1\"])'\n      );\n      let ele = focusableElements.length > 0 ? focusableElements[0] : null;\n      if (ele) {\n        ele.focus();\n      }\n    }\n  } \n  \n  public run() {\n    // console.log(console.trace())\n    let strlist = this.filterList();\n    if(this.noData(strlist)){\n      if(!this.noData(this._value)){ //&& (typeof this._value == 'object')\n        let vlist = Array.isArray(this._value) ? this._value : [this._value];\n        if(vlist && vlist.length){\n          strlist = vlist.map((m: any)=>{\n            if((typeof m) == 'object'){\n              return this.uidprop && this.retext ? itpolate(m,`${this.retext}`) : m; \n            } else {\n              return m;\n            }\n            \n          });\n        }\n      }\n    }\n    this.setInputView(strlist);   \n  }\n\n  filterList() {\n    let selectedview: any = [];\n      if (this.children) {\n          let selectedvalue = new Map();\n          let vlist = [];\n          if(this._value && Array.isArray(this._value)){\n            vlist = this._value;\n          }else if(!this.noData(this._value)){\n            vlist.push(this._value)\n          }\n          if (!this.noData(vlist)) {\n              selectedvalue = new Map(vlist.map((m: any) => {\n                if(typeof m =='object' && !Array.isArray(m) && this.uidprop){\n                  return [m[this.uidprop] || m, true];\n                }else {\n                 return [m, true];\n                }\n              }));\n           \n          }\n          let hasdata = false\n          this.children.forEach((child)=> {\n            if ((new RegExp(this._search,'gi')).test(`${child.ftext}`)) {\n              child.hide = false;\n              hasdata = true;\n            } else {\n              child.hide = true;\n              hasdata = hasdata || false;\n            }\n            \n            if (selectedvalue.has(child.uid)) {\n              child.selected = true;\n              selectedview.push(`${child.valueview}`);\n            } else {\n              child.selected = false;\n            }\n          })\n          this.empty = !hasdata; \n\n    }\n    return selectedview;\n\n  }\n\n  public showAll() {\n    if (!this.disabled) {\n      this._search = \"\";\n      this.filterList();\n    }\n  }\n\n  public toggle(f?: boolean) {\n    if(this.noData(f)){\n      this._open = !this._open;\n    } else {\n      this._open = !!f;\n    }\n  }\n\n  public tall(flag?:boolean) {\n    this.toggle(flag);\n    if(this._open){\n      this.showAll();\n    }\n  }\n\n  private noData(value: any) {\n    if (value === null || value === undefined || Number.isNaN(value)) {\n        return true;\n    }\n    \n    if (typeof value === 'string' && value.trim() === '') {\n        return true;\n    }\n    if (typeof value === 'boolean' || typeof value === 'number') {\n        return false; // Booleans and numbers are not considered empty if they exist\n    }\n    \n    if (typeof value === 'object') {\n        if (Array.isArray(value)) {\n            return value.length === 0; // Check if the array is empty\n        } else {\n            return Object.keys(value).length === 0; // Check if the object is empty\n        }\n    }\n\n    return false;\n}\n\n  ngOnDestroy(): void {\n    if(this.subscription && this.subscription.unsubscribe){\n      this.subscription.unsubscribe();\n    }\n  }\n}\n","<!-- <div class=\"datalist-box\" [ngClass]=\"{'open' : _open || _alwaysOpen, 'disabled': disabled}\"> -->\n    <ng-content></ng-content>    \n<!-- </div> -->\n","import { ListenerDirective } from './directives/listener.directive';\r\nimport { PermissionDirective, PermissionDirectiveDisable } from './directives/permission.directive';\r\nimport { DebounceInputDirective } from './directives/debounce.directive'; \r\nimport { FilterPipe } from './pipes/filter.pipe';\r\nimport { HighlightSearch } from './pipes/highlight.pipe';\r\nimport { SetFocusDirective } from './directives/set-focus.directive';\r\nimport { IpolatePipe } from './pipes/ipolate.pipe';\r\nimport { AtbrDirective } from  './directives/atbr.directive';\r\n// import { LibReactiveFormComponent } from './recursive-form-control/recursive-form-control.component';\r\nimport { ObjectKeysPipe } from './pipes/object.keys';\r\nimport { GtFunPipe } from './pipes/fun.pipe';\r\nimport { GtOnInItDirective } from './directives/oninit.directive';\r\nimport { GtElementRefDirective } from './directives/eref.directive';\r\nimport { GtLoadElementDirectives } from './directives/loadElement.directive';\r\nimport { GtLoopElementsComponent } from './components/gt-loop-elements/gt-loop-elements.component';\r\nimport { GtMatWrapComponent } from './components/gt-mat-wrap/gt-mat-wrap.component';\r\nimport { GtDetectFocusDirective } from './directives/gtDetectFocus.directive';\r\nimport { GtDefaultTemplatesComponent } from './components/gt-default-templates/gt-default-templates.component';\r\nimport { GtDatalistComponent } from './components/gt-datalist/gt-datalist.component';\r\nimport { GtoptionComponent } from './components/gtoption/gtoption.component';\r\nimport { GtFocusBlurDirective } from './directives/gtFocusBlur.directive';\r\n\r\nexport const allcomponents = [\r\n    ListenerDirective,\r\n    PermissionDirective,\r\n    PermissionDirectiveDisable,\r\n    DebounceInputDirective,\r\n    FilterPipe,\r\n    HighlightSearch,\r\n    SetFocusDirective,\r\n    IpolatePipe,\r\n    AtbrDirective,\r\n    ObjectKeysPipe,\r\n    GtFunPipe,\r\n    GtOnInItDirective,\r\n    GtElementRefDirective,\r\n    GtLoadElementDirectives,\r\n    GtLoopElementsComponent,\r\n    GtMatWrapComponent,\r\n    GtDetectFocusDirective,\r\n    GtDefaultTemplatesComponent,\r\n    GtDatalistComponent,\r\n    GtoptionComponent,\r\n    GtFocusBlurDirective\r\n];\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { allcomponents } from './all.components';\r\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\r\nimport { GtElementsService } from './goteti-elements.service';\r\n\r\n@NgModule({\r\n  declarations: allcomponents,\r\n  imports: [\r\n    CommonModule,\r\n    FormsModule,\r\n    ReactiveFormsModule\r\n  ],\r\n  exports: allcomponents,\r\n  providers: [GtElementsService]\r\n})\r\nexport class GotetiFormsModule {\r\n  constructor(private gGtElementsService: GtElementsService){}\r\n}\r\n","export function fireRandom(){\r\n    let random = Math.random().toString(36).replace(/[^a-z]+/g, '').toUpperCase();\r\n    return random;\r\n}\r\n\r\nexport const gtProxyWatch = function(watch: Function,o: any, key?:any, ){\r\n    return new Proxy(o[key] || o, {\r\n        set:function(target: any, prop: any, value: any){\r\n            watch(key, target, prop, value)\r\n            target[prop] = value;\r\n            return true;\r\n        },\r\n        //.bind(this),\r\n        get: function(target: any, prop: any){\r\n            return target[prop]\r\n        }\r\n        //.bind(this)\r\n    })\r\n  }\r\n\r\nexport function gtInputDebounce(delay: number=1200){\r\n    let timer: any;\r\n    return function(targetClass: any, functionName: string, descriptor?:any): any{\r\n        const source = descriptor.value;\r\n        descriptor.value = function(...args: any): Function {\r\n            clearTimeout(timer);\r\n            timer = setTimeout(()=>{\r\n                source.apply(this, args);\r\n            }, delay);\r\n            return ()=>{};\r\n        }\r\n        return descriptor;\r\n    }\r\n}","import { HttpClient, HttpParams, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class GtAjaxService {\r\n  constructor(private http: HttpClient) { }\r\n\r\n  request(config: {method:string, url: string, headers?: any, params?: any, [prop: string]: any}){\r\n      let localConfig: any = {...config};\r\n      if (localConfig.headers) {\r\n        localConfig.headers = new HttpHeaders(localConfig.headers);\r\n      }\r\n      if (localConfig.params) {\r\n        localConfig.params = new HttpParams(localConfig.params);\r\n      }\r\n      return this.http.request(localConfig.method, localConfig.url, localConfig);\r\n  }\r\n}","/*\r\n * Public API Surface of goteti-forms\r\n */\r\n\r\n// export * from './lib/goteti-forms.service';\r\n// export * from './lib/goteti-form-status.service';\r\n// export * from './lib/form-builders/custom.validations.service';\r\n// export * from './lib/goteti-forms.component';\r\nexport * from './lib/goteti-forms.module';\r\n\r\n\r\n// export * from './lib/input-field/input-field.component';\r\nexport * from './lib/directives/listener.directive';\r\nexport * from './lib/directives/permission.directive';\r\nexport * from './lib/directives/debounce.directive'; \r\n// export * from './lib/directives/tref.directive';\r\n// export * from './lib/directives/formstatus.directive';\r\n// export * from './lib/directives/loadComponent.directive';\r\n// export * from './lib/directives/loadTemplate.directive';\r\nexport * from './lib/directives/oninit.directive';\r\nexport * from './lib/directives/gtDetectFocus.directive';\r\n\r\nexport * from './lib/components/gt-mat-wrap/gt-mat-wrap.component';\r\nexport * from './lib/components/gt-default-templates/gt-default-templates.component';\r\n// export * from './lib/auto-select/auto-select.component';\r\nexport * from './lib/pipes/filter.pipe';\r\nexport * from './lib/pipes/highlight.pipe';\r\nexport * from './lib/pipes/object.keys';\r\nexport * from './lib/directives/set-focus.directive';\r\nexport * from './lib/pipes/ipolate.pipe';\r\nexport * from './lib/pipes/fun.pipe';\r\nexport * from './lib/directives/atbr.directive';\r\n// export * from './lib/recursive-form-control/recursive-form-control.component';\r\n// export * from './lib/gt-reactive-form/gt-reactive-form.component';\r\n// export * from './lib/gt-error-msg/gt-error-msg.component';\r\n// export * from './lib/goteti-forms.component';\r\nexport * from './lib/form-builders/form-map';\r\n// export * from './lib/form-builders/gt.interfaces';\r\nexport * from './lib/util';\r\n// export * from './lib/sample';\r\n// export * from './lib/input-field/input-field-configs';\r\nexport * from './lib/http/requests';\r\n\r\n\r\nexport * from './lib/directives/eref.directive';\r\nexport * from './lib/directives/loadElement.directive';\r\nexport * from './lib/components/gt-loop-elements/gt-loop-elements.component';\r\n// export * from './lib/goteti-box-elements.service';\r\nexport * from './lib/goteti-elements.service';\r\nexport * from './lib/goteti-form-hub.service';\r\n\r\nexport * from './lib/components/gt-datalist/gt-datalist.component';\r\nexport * from './lib/components/gtoption/gtoption.component';\r\n\r\nexport * from './lib/directives/gtFocusBlur.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}