{"version":3,"file":"lean-angular-visual-lib.mjs","sources":["../../../projects/lean-angular-visual-lib/src/lib/lean-angular-visual-lib.service.ts","../../../projects/lean-angular-visual-lib/src/lib/lean-angular-visual-lib.component.ts","../../../projects/lean-angular-visual-lib/src/lib/components/lean-card/lean-card.component.ts","../../../projects/lean-angular-visual-lib/src/lib/components/lean-card/lean-card.component.html","../../../projects/lean-angular-visual-lib/src/lib/components/lean-date/lean-date.component.ts","../../../projects/lean-angular-visual-lib/src/lib/components/lean-date/lean-date.component.html","../../../projects/lean-angular-visual-lib/src/lib/models/lean-e-a-f.ts","../../../projects/lean-angular-visual-lib/src/lib/services/lean-utils-service.ts","../../../projects/lean-angular-visual-lib/src/lib/components/lean-field/lean-field.component.ts","../../../projects/lean-angular-visual-lib/src/lib/components/lean-field/lean-field.component.html","../../../projects/lean-angular-visual-lib/src/lib/models/value-accessor-base.ts","../../../projects/lean-angular-visual-lib/src/lib/components/lean-input/lean-input.component.ts","../../../projects/lean-angular-visual-lib/src/lib/components/lean-input/lean-input.component.html","../../../projects/lean-angular-visual-lib/src/lib/components/lean-page/lean-page.component.ts","../../../projects/lean-angular-visual-lib/src/lib/components/lean-page/lean-page.component.html","../../../projects/lean-angular-visual-lib/src/lib/components/lean-postit/lean-postit.component.ts","../../../projects/lean-angular-visual-lib/src/lib/components/lean-postit/lean-postit.component.html","../../../projects/lean-angular-visual-lib/src/lib/components/lean-postit-kpi/lean-postit-kpi.component.ts","../../../projects/lean-angular-visual-lib/src/lib/components/lean-postit-kpi/lean-postit-kpi.component.html","../../../projects/lean-angular-visual-lib/src/lib/components/lean-data-table/lean-data-table.component.ts","../../../projects/lean-angular-visual-lib/src/lib/components/lean-data-table/lean-data-table.component.html","../../../projects/lean-angular-visual-lib/src/lib/components/lean-tree/lean-tree.component.ts","../../../projects/lean-angular-visual-lib/src/lib/components/lean-tree/lean-tree.component.html","../../../projects/lean-angular-visual-lib/src/lib/components/lean-widget/lean-widget.component.ts","../../../projects/lean-angular-visual-lib/src/lib/components/lean-widget/lean-widget.component.html","../../../projects/lean-angular-visual-lib/src/lib/components/lean-menu-item/lean-menu-item.component.ts","../../../projects/lean-angular-visual-lib/src/lib/components/lean-menu-item/lean-menu-item.component.html","../../../projects/lean-angular-visual-lib/src/lib/components/lean-menu/lean-menu.component.ts","../../../projects/lean-angular-visual-lib/src/lib/components/lean-menu/lean-menu.component.html","../../../projects/lean-angular-visual-lib/src/lib/components/lean-input-modal/lean-input-modal.component.ts","../../../projects/lean-angular-visual-lib/src/lib/components/lean-input-modal/lean-input-modal.component.html","../../../projects/lean-angular-visual-lib/src/lib/components/lean-lov-modal/lean-lov-modal.component.ts","../../../projects/lean-angular-visual-lib/src/lib/components/lean-lov-modal/lean-lov-modal.component.html","../../../projects/lean-angular-visual-lib/src/lib/components/lean-table/lean-table.component.ts","../../../projects/lean-angular-visual-lib/src/lib/components/lean-table/lean-table.component.html","../../../projects/lean-angular-visual-lib/src/lib/lean-angular-visual-lib.module.ts","../../../projects/lean-angular-visual-lib/src/lib/models/lean-base.entity.ts","../../../projects/lean-angular-visual-lib/src/lib/models/lean-field-model.ts","../../../projects/lean-angular-visual-lib/src/lib/models/lean-menu.ts","../../../projects/lean-angular-visual-lib/src/lean-angular-visual-lib.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class LeanAngularVisualLibService {\n\n  constructor() { }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n  selector: 'lib-lean-angular-visual-lib',\n  template: `\n    <p>\n      lean-angular-visual-lib works!\n    </p>\n  `,\n  styles: [\n  ]\n})\nexport class LeanAngularVisualLibComponent implements OnInit {\n\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n\n}\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\n\n@Component({\n    selector: 'lean-card',\n    templateUrl: './lean-card.component.html',\n    styleUrls: ['./lean-card.component.scss']\n})\nexport class LeanCardComponent implements OnInit {\n\n_fitContentMode = true;\n@Input('fitContentMode') \n    get fitContentMode(): boolean {\n    return this._fitContentMode;\n    }\n    set fitContentMode(value: boolean) {\n    this._fitContentMode = \"\" + value !== \"false\";\n    }\n\n_shrinkMode = false;\n@Input('shrinkMode') \n    get shrinkMode(): boolean {\n    return this._shrinkMode;\n    }\n    set shrinkMode(value: boolean) {\n    this._shrinkMode = \"\" + value !== \"false\";\n    }\n\n_allowShrink = false;\n@Input('allowShrink') \n    get allowShrink(): boolean {\n    return this._allowShrink;\n    }\n    set allowShrink(value: boolean) {\n    this._allowShrink = \"\" + value !== \"false\";\n    }    \n\n_showHeader = false;\n@Input('showHeader') \n    get showHeader(): boolean {\n    return this._showHeader;\n    }\n    set showHeader(value: boolean) {\n    this._showHeader = \"\" + value !== \"false\";\n    }    \n\n\n    @Output() onSubmit   = new EventEmitter<any>();\n    @Output() onClose    = new EventEmitter<any>();\n    @Output() onExpand   = new EventEmitter<any>();\n\n    @Input() width     : string;\n    @Input() minHeight : string;\n    \n    @Input() borderTopColor : string;\n    @Input() headerBackgroundColor : string;\n    @Input() titleColor : string;\n    \n    \n\n    @Input() submitLabel     : string = 'Fermer';\n\n    @Input() actions = [];\n    @Input() title = undefined;\n    @Input() header = undefined;\n    \n    @Input() badge = undefined;\n    @Input() showFooterWhen      : string  = \"always\"; // never, onOver \n\n\n    showCardActions : boolean = true;\n\n    close(){\n        this.onClose.emit(null);\n    }\n\n    ngOnInit() {\n        if (this.showFooterWhen == 'always')   this.showCardActions = true;\n        if (this.showFooterWhen == 'never')    this.showCardActions = false;\n        if (this.showFooterWhen == 'onOver')   this.showCardActions = false;\n    }   \n\n    shrink(b : boolean){\n        this.shrinkMode = b;\n        this.onExpand.emit(! b);\n    }\n\n    toggleShrink(){\n        if (! this._allowShrink) return;\n        this.shrink(! this.shrinkMode)\n    }\n    mouseover(){\n        if (this.showFooterWhen == 'onOver')   this.showCardActions = true;\n    } \n\n    mouseleave(){\n        if (this.showFooterWhen == 'onOver')   this.showCardActions = false;\n    }\n\n}\n\n","<div class=\"card\"\n[style.width] = \"width ? width : 'auto'\" \n[style.minHeight] = \"minHeight ? minHeight : 'auto'\" \nstyle=\"margin-bottom: 15px; border: transparent;\"\n (mouseover)= \"mouseover()\" (mouseleave)= \"mouseleave()\"  >\n    <div *ngIf=\"header\" \n        (click)=\"toggleShrink()\" \n        [style.background-color]=\"borderTopColor ? borderTopColor : 'transparent' \" class=\"d-flex justify-content-between w-100\">\n        <div class=\"d-flex\">\n            <img style=\" margin: 13px 0 0 10px; width: 15px; height: 15px; cursor: pointer;\" src=\"assets/icons/close.png\" (click)=\"close()\" *ngIf=\"(onClose.observed)\">\n            <span  style=\"font-size: 14px; font-weight: 500; padding: 10px;\" [style.color]=\"titleColor\">{{header}}</span>\n        </div>\n        <div *ngIf=\"(_allowShrink)\"\n            style=\"text-align: center; background-color: white; border-radius: 50%; margin: 7px; width: 30px; height: 30px;\">\n            <img style=\"width: 15px\" [src]=\"_shrinkMode?'assets/icons/expand.png':'assets/icons/shrink.png'\">  \n        </div>\n     </div> \n    <div class=\"card-header bg-white d-flex justify-content-between\" *ngIf=\"(title !== undefined) || _showHeader\">\n        <h6 *ngIf=\"title\" class=\"card-title\"><span>{{title}}</span></h6>\n        <div *ngIf=\"badge !== undefined\">\n            <span [innerHtml]=\"badge\"></span>            \n        </div>\n\n        <div *ngIf=\"_showHeader\" style=\"width: 100%;\">\n            <ng-content select=\"[lean-card-header]\"></ng-content>\n        </div>\n\n        <div>\n            <button *ngIf=\"(onClose.observed) && (! header)\" class=\"btn btn-primary ripple light saphir-btn\" (click)=\"close()\" >\n                {{submitLabel}}\n            </button>\n            <img *ngIf=\"(_allowShrink) && (! _shrinkMode)\" (click)=\"shrink(true)\" style=\"margin-left: 20px; width: 10px\" src=\"assets/icons/shrink.png\">\n            <img *ngIf=\"(_allowShrink) && (_shrinkMode)\" (click)=\"shrink(false)\" style=\"margin-left: 20px; width: 10px\" src=\"assets/icons/expand.png\">\n        </div>\n    </div>\n    <div *ngIf=\"(! _shrinkMode)\">\n            <div class=\"card-body\">\n                <ng-content></ng-content>\n            </div>\n            <div *ngIf=\"(showCardActions) &&  (! _shrinkMode)\" class=\"card-footer\" >\n                <div class=\"footer-action\">\n                    <ng-content select=\"[lean-card-actions]\"></ng-content>\n                </div>\n            </div>\n    </div>\n</div>\n\n","import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core';\n\n@Component({\n  selector: 'lean-date',\n  templateUrl: './lean-date.component.html',\n  styleUrls: ['./lean-date.component.scss'],\n})\n\n\nexport class LeanDateComponent implements OnInit {\n\n  @Input() date! : Date;\n  @Output() onChange  = new EventEmitter<Date>();\n  \n\n  day!   : number;\n  month! : number;\n  year!  : number;\n  error : boolean = false;\n\n  constructor() { }\n\n  ngOnInit() {\n    if (this.date) {\n      this.month= this.date.getMonth() + 1; //months from 1-12\n      this.day  = this.date.getDate();\n      this.year = this.date.getFullYear();\n    }\n  }\n\n  setDate(){\n    this.error = false;\n    if(!this.day || !this.month||  !this.year) {\n      this.error = true;\n      return;\n    }\n\n    if(this.day < 0 || this.day > 31)       { this.day = 0; return;}\n    if(this.month < 0 || this.month > 12)   { this.month = 0; return;}\n    if(this.year < 0)                       { this.year = 0; return;}\n    this.date = new Date(this.year, this.month-1, this.day)\n\n    let month= this.date.getMonth() + 1; //months from 1-12\n    let day  = this.date.getDate();\n    let year = this.date.getFullYear();\n\n    if(this.day!==day || this.month!==month ||  this.year!==year ) {\n      this.error = true;\n      return;\n    }\n    this.onChange.emit(this.date);\n  }\n}\n","<div style=\"width: 200px;\">\n    <div class=\"d-flex\" >\n      <input class=\"day-input\" (ngModel)=\"day\"   type=\"number\"  (ionChange)=\"setDate()\" style=\"text-align: center; max-width: 30px\">     <div style=\"margin-top: 6px\">-</div>\n      <input class=\"day-input\" (ngModel)=\"month\" type=\"number\"  (ionChange)=\"setDate()\" style=\"text-align: center; max-width: 30px\">     <div style=\"margin-top: 6px\">-</div>\n      <input class=\"day-input\" (ngModel)=\"year\"  type=\"number\"  (ionChange)=\"setDate()\" style=\"text-align: center; max-width: 45px\">     <img *ngIf=\"error\" src=\"assets/icons/error.png\">\n    </div>\n  </div>\n","import { LeanFieldModel } from \"./lean-field-model\";\n\n\nexport class EAF {\n    entity  : any;\n    field   : LeanFieldModel; \n\n    constructor(entity : any, field : LeanFieldModel){\n        this.entity = entity;\n        this.field   = field;\n    }\n}\n\n","import { Injectable } from '@angular/core';\nimport { DatePipe } from '@angular/common';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ToastrService } from 'ngx-toastr';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class LeanUtilsService {\n\n\n  showStockInPurchasePacks  : boolean = true;\n  serialNumberlength        : number = 0;\n  barCodelength             : number = 0;\n\n  moduleMenu            = \"Nothing\"\n  sideBarMenu           = [];\n  contexts              = new Map();\n\n  constructor(\n    protected translateService  : TranslateService,\n    protected toastr            : ToastrService) { }\n\n\n    \n  translate(term : string): string{\n    if (!term) return '';\n    return this.translateService.instant(term);\n  }\n  \n  success(){\n    let m = this.translate('successful_operation');\n    if (m == 'successful_operation') m = 'Opération effectuée avec succès';\n    this.toastr.info(m);\n  }\n\n  info(m : string){\n    m = this.translate(m);\n    this.toastr.info(m);\n  }\n  warning(m : string){\n    m = this.translate(m);\n    this.toastr.warning(m);\n  }\n\n  error(m : string){\n    m = this.translate(m);\n    this.toastr.error(m);\n  }\n\n  printPdf2(pdfString : string) {\n   // window.open(encodeURI(pdfString), '_blank'); \n   // window.open(pdfString);\n    let iframe = \"<iframe width='100%' height='100%' src='\" + pdfString + \"'></iframe>\"\n    let w = window.open();\n    if (! w) throw Error(\"window.open() returns null !!!\");\n    w.document.open();\n    w.document.write(iframe);\n    w.document.close();\n  }\n\n  printPdf(pdf : string) {\n    const pdfBlob = this.dataURItoBlob(pdf);\n    const fileURL = URL.createObjectURL(pdfBlob);\n    window.open(fileURL, '_blank');\n  }\n\n  getBase64(file): Promise<any> {\n    return new Promise((resolve, reject) => {\n        const reader = new FileReader();\n        reader.readAsDataURL(file);\n        reader.onload = () => resolve(reader.result);\n        reader.onerror = error => reject(error);\n    });\n  }\n  \n  put(key: string, data: any): Promise<boolean> {\n    this.contexts.set(key, data);\n    return Promise.resolve(this.contexts.get(key));\n  }\n   get(key: string): Promise<any> {\n    const data = this.contexts.get(key);\n    if (data !== null && data !== undefined) {\n      return Promise.resolve(data);\n    } else {\n      return Promise.resolve(null);\n    }\n  }\n   clearAll() {\n    this.contexts.clear();\n  }\n\n   timePipe(value: any, ...args: any[]) {\n    const datePipe = new DatePipe('en-US');\n    value = datePipe.transform(value, 'HH:mm');\n    return value;\n  }\n\n   dateTimePipe(value: any, ...args: any[]) {\n    const datePipe = new DatePipe('en-US');\n    value = datePipe.transform(value, 'dd-MM-yyyy HH:mm');\n    return value;\n  }\n    \n\n  longToDatePipe(value: any, ...args: any[]) {\n    let result = \"---\";\n    try {\n      const datePipe = new DatePipe('en-US');\n    //  result = datePipe.transform(new Date(value), 'dd-MM-yyyy');\n    } catch(error){\n\n    }\n    return result;\n  }\n\n  datePipe(value: any, ...args: any[]) {\n    let result = \"---\";\n    try {\n      const datePipe = new DatePipe('en-US');\n    //  result = datePipe.transform(value, 'dd-MM-yyyy');\n    } catch(error){\n\n    }\n    return result;\n  }\n\n  datePipeddMM(value: any, ...args: any[]) {\n    let result = \"---\";\n    try {\n      const datePipe = new DatePipe('en-US');\n  //    result = datePipe.transform(value, 'dd-MM');\n    } catch(error){\n\n    }\n    return result;\n  }\n  datePipeDD(value: any, ...args: any[]) {\n    let result = \"---\";\n    try {\n      const datePipe = new DatePipe('en-US');\n  //    result = datePipe.transform(value, 'dd');\n    } catch(error){\n\n    }\n    return result;\n  }\n  public booleanPipe(value: any, ...args: any[]) {\n    if (!value) {\n      return '-';\n    } else {\n      return value;\n    }\n  }\n  \n  dataURItoBlob(dataURI : string) {\n    const byteString = window.atob(dataURI);\n    const arrayBuffer = new ArrayBuffer(byteString.length);\n    const int8Array = new Uint8Array(arrayBuffer);\n    for (let i = 0; i < byteString.length; i++) {\n      int8Array[i] = byteString.charCodeAt(i);\n    }\n    const blob = new Blob([int8Array], { type: 'application/pdf' });    \n    return blob;\n }\n\n  getField(fieldName  : string, columns : any[]) : any{\n    if ((columns == undefined) || (columns.length == 0)){\n      return  { code: fieldName, name: fieldName, readOnly: false };\n    } else {\n    let res = columns.find(x => x.code == fieldName);\n    if (!res) console.log(\"fieldName not found in getField function :\" + fieldName);\n    return res;\n    }\n  }\n\n  isBlank(v : string) : boolean{\n    if (v == null)      return true;\n    if (v == undefined) return true;\n    if (v.trim() == \"\")        return true;\n    return false;\n  }\n\n  round(p : number, decimals : number){\n    if (p == 0) return undefined;\n    if (! decimals) decimals = 0;\n    let pw = Math.pow(10, decimals);\n    p = p * pw;\n    p = Math.round(p);\n    p = p / pw;\n    return p;\n  }\n\n  zeroToNull(p : number){\n    if (p == 0) return undefined;\n    return p;\n  }\n\n  nullToZero(p : number){\n    if (! p) return 0;\n    return p;\n  }\n  nullToEmpty(rowValue: string) : string{\n    if (rowValue == null) return '';\n    return rowValue;\n  }\n\n  checkPhoneNumberFormat(phone : string) : boolean {\n    if (!phone) return false;\n    if (phone.trim()==\"\") return false;\n    let c = phone.substring(0,1);\n    if ((c != '+') && (c!='0')) return false;\n    if (c == '+') phone = phone.substring(1);\n    if (! Number(phone)) return false;\n    if (phone.length < 9) return false;\n    return true;\n  }\n\n   formatNumber(input: number): any {\n    if(input == 0 || typeof input === 'undefined' || isNaN(input)){\n      return '0,00'\n    }\n    let result: string = input.toLocaleString('fr-FR' , {minimumFractionDigits: 2});\n    return result;\n  }\n\n  resetTime(date : Date){\n    date.setHours(0);\n    date.setMinutes(0);\n    date.setSeconds(0);\n    date.setMilliseconds(0);\n  }\n\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { EAF } from '../../models/lean-e-a-f';\nimport { LeanUtilsService } from '../../services/lean-utils-service';\nimport { LeanFieldModel } from '../../models/lean-field-model';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n\n@Component({\n  selector: 'lean-field',\n  templateUrl: './lean-field.component.html',\n  styleUrls: ['./lean-field.component.scss']\n})\nexport class LeanFieldComponent implements OnInit  {\n\n  @Input() eAf            : EAF;\n  @Input() forceEditMode  : boolean = false;\n  @Input() noNavigation   : boolean = false;\n  @Input() readOnly       : boolean = false;\n  @Input() grid           : boolean = false;\n  //-------------------------------------------------------------------------------------------\n  \n  \n//-------------------------------------------------------------------------------------------\n  @Output() onDataChanged   : EventEmitter<any> = new EventEmitter();  \n  @Output() onKeyup         : EventEmitter<any> = new EventEmitter();  \n  @Output() onAction        : EventEmitter<any> = new EventEmitter();  \n  @Output() onUpload        : EventEmitter<any> = new EventEmitter(); \n  @Output() onDownload      : EventEmitter<any> = new EventEmitter();   \n  @Output() onProcessForeignKey: EventEmitter<any> = new EventEmitter();   \n//-------------------------------------------------------------------------------------------\nconstructor(\n  protected leanUtilsService  : LeanUtilsService,\n  protected sanitizer         : DomSanitizer) {\n\n}\n\nngOnInit(): void {\n      // console.log(\"ngOnInit : start\");\n      // this.retreiveDateValue(this.eAf);\n      // console.log(this.eAf);\n      // console.log(\"ngOnInit :  xend\");\n}\n\ngetClass() : string {\n  let res = ''\n  if (this.grid) {\n    res = this.isReadonly()? 'lean-grid-field': 'lean-grid-field-input'\n  } else {\n    res = this.isReadonly()? 'lean-form-field': 'lean-form-field-input'\n  }\n  return res;\n}\n\nisReadonly() : boolean{\n  if (this.readOnly) return true;\n  if (this.eAf.field.readOnly) return true;\n  if (this.eAf.field.insertOnly && !this.eAf.entity.inserted) return true;\n  if (this.eAf.entity.deleted) return true;\n  return (!this.forceEditMode) && (!this.eAf.entity.updated) && (!this.eAf.entity.inserted);\n}\n\n//-------------------------------------------------------------------------------------------\ngetValue() : any{\n return this.getItemValue(this.eAf)\n}\n\n//-------------------------------------------------------------------------------------------\ngetName() : string{\n  return this.leanUtilsService.translate(this.eAf.field.name);\n }\n \n\n//-------------------------------------------------------------------------------------------\n// isLeaf() : boolean{\n//   return (this.eAf.field.code.indexOf(\".\") < 0) && (this.eAf.field.type != 'Entity');\n// }\n//-------------------------------------------------------------------------------------------\n\n\n//-------------------------------------------------------------------------------------------\nprocessForeignKey(){\n  this.onProcessForeignKey.emit();\n}\n\n//-------------------------------------------------------------------------------------------\nsetToNulll(){\n  this.eAf.entity[this.eAf.field.code] = null;\n}\n\n\n//-------------------------------------------------------------------------------------------\nblur(){\n  this.setToNulll();\n  this.onDataChanged.emit(null);\n}\n\n//-------------------------------------------------------------------------------------------\nprocessSelectValue(e : any){\n  this.change(e.item);\n}\n\n//-------------------------------------------------------------------------------------------\nchange(e : any){\n  if (this.eAf.field.bindKey)  {\n    this.eAf.entity[this.eAf.field.code] = e[this.eAf.field.bindKey];\n  } else {\n     this.setValue(this.eAf, e); \n    // if ((this.eAf.field.type == 'date') || (this.eAf.field.type == 'datetime')) {\n    //      this.setValue(this.eAf, this.dateValue); \n    // } else {\n    //     this.setValue(this.eAf, e); \n    // }\n  }\n  this.onDataChanged.emit(e);\n}\n\n//-------------------------------------------------------------------------------------------\ninjectedStyles = new Set<string>();\ninjectCssOnce(css: string) {\n  if (this.injectedStyles.has(css)) return;\n\n  const style = document.createElement('style');\n  style.textContent = css;\n  document.head.appendChild(style);\n  this.injectedStyles.add(css);\n}\n\n//-------------------------------------------------------------------------------------------\ngetItemValue(eAf : EAF){\n  \n  let entity  : any = eAf.entity; \n  let field   : LeanFieldModel = eAf.field;\n\n  let code = field.code;\n  if (field.pipe) {\n    if (typeof field.pipe.transform === 'function') {\n      return field.pipe.transform(eAf);\n    }\n    try {\n      const func = new Function('value', `return (${field.pipe})(value);`);\n      const result = func(eAf);\n\n      if (result && result.html && result.css) {\n        this.injectCssOnce(result.css);\n        return this.sanitizer.bypassSecurityTrustHtml(result.html);\n      }\n\n      if (typeof result === 'string') {\n        return this.sanitizer.bypassSecurityTrustHtml(result);\n      }\n\n      return result;\n    } catch (err) {\n      console.warn('Error in dynamic pipe :', err);\n    }\n  }\n\n  let i = code.indexOf(\".\")\n  if (i<0)  {\n    let result = entity[code];\n    if (result == null) return null;\n    //if ( (field.type == 'date') || (field.type == 'datetime') ) return this.dateValue;\n    \n    if ( (field.type == 'fk') || ((field.lov) && (eAf.field.bindLabel)) ) {\n      let bindLabel = eAf.field.bindLabel;\n      if (! bindLabel) {\n        let formField = eAf.field['formField'] // used in webCrafter\n        if (formField) bindLabel = formField.appEntityAttribute.referencedEntityKeyCode; //'designation';\n      }\n      try {\n        if (eAf.field.bindKey) {\n          let lovItem = field.lov.find((v : any) => v[eAf.field.bindKey] == result);\n          if (!lovItem) { \n            return result\n          } else {\n            return lovItem[bindLabel];\n          }\n        } else {\n          return this.getBindLabelValue(result, bindLabel);\n        }\n      } catch(error){\n        console.log(\"Exception in getItemValue function, code : \" + code + \",     error : \"+ error);\n        return null;\n      }   \n    } else {\n      return result;\n    } \n  }\n\n  let prefix = code.substring(0, i);\n  let suffix = code.substring(i+1);\n  let col = {...field};\n  col.code = suffix;\n  if (! entity[prefix]) return null;\n\n  let eAf2 = new EAF(entity[prefix], col);\n\n  return this.getItemValue(eAf2);\n}\n\ngetBindLabelValue(e : any, fieldCode : string){\n  if (! fieldCode) throw new Error(\"fieldCode is null\");\n  let index = fieldCode.indexOf(\".\");\n  if (index == -1) return e[fieldCode];\n  let prefix = fieldCode.substring(0, index);\n  let suffix = fieldCode.substring(index+1);\n  return this.getBindLabelValue(e[prefix], suffix);\n}\n\n   \n// //---------------------------------------------------------------------------------------\n// @ViewChild('uploadFileButton',  { static: false }) uploadFileButton: ElementRef;\n// findFiletoUpload(){\n//   let inputElement: HTMLElement = this.uploadFileButton.nativeElement as HTMLElement;\n//   inputElement.click();\n// }\nuploadFile(input : any) {\n  if (! input) return;\n    let files: FileList = input.files ? input.files : input.srcElement.files;\n    let file = files[0];\n    this.leanUtilsService.getBase64(file).then( result => {\n      this.onUpload.emit({documentName : file.name, documentContent :result});\n    })\n}\n\nuploadImage(input : any) {\n  if (! input) return;\n    let files: FileList = input.files ? input.files : input.srcElement.files;\n    let file = files[0];\n    this.leanUtilsService.getBase64(file).then( result => {\n      this.change(result);\n    })\n}\n\ngetWhidth() : string{\n  if (this.grid) return \"100%\";\n  let width : string = \"20em\";\n  if (this.eAf.field.width) width = this.eAf.field.width + \"em\";\n  return width;\n}\n//---------------------------------------------------------------------------------------\ndownloadFile() {\n  this.onDownload.emit();\n}\n\n\n//-------------------------------------------------------------------------------------------\n// dateValue : Date;\n// retreiveDateValue(eAf : EAF){\n  \n//   let entity  : any = eAf.entity; \n//   let field   : LeanFieldModel = eAf.field;\n  \n//   //------------------------\n//   if (field.pipe) return;\n\n//   //------------------------\n//   let code = field.code;\n//   let i = code.indexOf(\".\")\n//   if (i<0) {\n//     let result = entity[code];\n//     if (result == null) return;\n//     if ( (field.type != 'date') && (field.type != 'datetime') ) return;\n//     if (result instanceof Date) {\n//       this.dateValue = result;\n//     } else {\n//       this.dateValue = new Date(result);\n//     }\n//     return;\n//   }\n\n//   let prefix = code.substring(0, i);\n//   let suffix = code.substring(i+1);\n//   let col = {...field};\n//   col.code = suffix;\n//   if (! entity[prefix]) return null;\n\n//   let eAf2 = new EAF(entity[prefix], col);\n//   return this.retreiveDateValue(eAf2);\n// }\n\nsetValue(eAf : EAF, v: any) {\n\n  //------------------------\n  let code = eAf.field.code;\n  let i = code.indexOf(\".\")\n\n  if (i<0) {\n    eAf.entity[code] = v; \n    return;\n  }\n\n  let prefix = code.substring(0, i);\n  let suffix = code.substring(i+1);\n  let col = {...eAf.field};\n  col.code = suffix;\n  let eAf2 = new EAF(this.eAf.entity[prefix], col);\n\n  return this.setValue(eAf2, v);\n}\n\n}\n","<!--<div *ngIf=\"eAf.field\" [ngClass]=\"getClass()\" [style.width]=\"!grid?width:''\">--> <!-- It's very important to not fix with in case of grid -->\n<div *ngIf=\"eAf.field\" [ngClass]=\"getClass()\" [style.width]=\"getWhidth()\">\n    <div *ngIf= \"!grid\" class=\"d-flex justify-content-between\">\n        <div class=\"label\">{{getName()}}</div>\n        <img *ngIf=\"eAf.field.required\" src=\"assets/icons/star.png\" style=\"width: 14px;height: 14px;\">\n    </div>\n\n    <ng-container *ngIf=\"eAf.field.format == 'html'\">\n        <div class=\"d-flex justify-content-between\">\n            <div class=\"d-flex justify-content-between\" [innerHtml]=\"getValue()\"></div> \n            <img *ngIf=\"onAction.observed\" style=\"width: 16px; height: 16px; cursor: pointer;\" src=\"assets/icons/search.png\" (click)=\"onAction.emit(null)\">\n        </div>\n    </ng-container>\n\n    <ng-container *ngIf=\"eAf.field.type == 'image'\">\n        <input  style=\"width: 100%;\" #uploadImageButton style=\"visibility:hidden; height: 1px; width: 1px;\" type=\"file\" (change)=\"uploadImage($event)\">\n        <img style=\"width: auto; height: auto; max-width: 20em; max-height: 20em; \" [src]=\"getValue()?getValue():'assets/image/load-image.png'\" (click)=\"isReadonly()?null:uploadImageButton.click()\">\n    </ng-container>\n    \n    <ng-container *ngIf=\"eAf.field.format != 'html' && eAf.field.type != 'image' \">\n\n        <!-- <ng-container *ngIf=\"isLeaf()\"> -->\n            <ng-container *ngIf=\"! eAf.field.lov\">\n                <ng-container *ngIf=\"eAf.field.type != 'date' && eAf.field.type != 'datetime' && eAf.field.type != 'boolean' && eAf.field.type != 'document' && eAf.field.type != 'image' && eAf.field.type != 'fk'\">\n                    <div class=\"d-flex justify-content-between\">\n                        <div class=\"d-flex\" style=\"width: 100%;\" >\n                            <img *ngIf=\"icon\" [src]=\"'assets/icons/'+icon\">\n                            <input *ngIf=\"!isReadonly()\" style=\"width: 100%;\" [type]=\"eAf.field.type\"  [(ngModel)]=\"eAf.entity[eAf.field.code]\"  (ngModelChange)=\"change($event)\">\n                            <div *ngIf=\"isReadonly()\"\n                                [class.stroke]=\"eAf.entity.deleted\"\n                                [ngStyle]=\"{'text-align' : (eAf.field.type == 'number')?'end':'start', 'width': '100%'}\">\n                                {{getValue()}}\n                                <span *ngIf=\"eAf.field.unit\" style=\"margin: 0 2px; color: lightgray;\"> {{eAf.field.unit}} </span>\n                            </div>\n                        </div>\n                        <img *ngIf=\"onAction.observed\" style=\"width: 16px; height: 16px; cursor: pointer;\" src=\"assets/icons/search.png\" (click)=\"onAction.emit(null)\">\n                    </div>              \n                </ng-container>\n            \n                <ng-container *ngIf=\"eAf.field.type == 'document'\">\n                    <div class=\"d-flex justify-content-between\" style=\"width: 100%;\" >\n                        <div style=\"width: 100%; white-space: nowrap; overflow: auto; text-overflow: ellipsis; padding-bottom: 6px;\">{{getValue()}}</div> \n                        <input  style=\"width: 100%;\" #uploadFileButton style=\"visibility:hidden; height: 1px; width: 1px;\" type=\"file\" (change)=\"uploadFile($event)\">\n                        <div class=\"d-flex\">\n                            <img *ngIf=\"!isReadonly()\" src=\"assets/icons/upload.png\" (click)=\"uploadFileButton.click()\" class=\"lean-file-load\">\n                            <img src=\"assets/icons/download.png\" class=\"lean-file-load\" (click)=\"downloadFile()\"> \n                        </div>\n                    </div>\n                </ng-container>\n\n                <ng-container *ngIf=\"eAf.field.type == 'fk'\">\n                    <div class=\"d-flex justify-content-between\">\n                        <div style=\"min-width: 10px;\">\n                            {{getValue()}}\n                        </div>\n                        <div class=\"d-flex\" style=\" margin-top: 4px\">\n                            <img  style=\"width: 12px; height: 12px; cursor: pointer\"                     src=\"assets/icons/unchecked.png\"    (click)=\"setToNulll()\"          *ngIf=\"!isReadonly()\">\n                            <img  style=\"width: 12px; height: 12px; cursor: pointer;  margin-left: 8px;\" src=\"assets/icons/search.png\"       (click)=\"processForeignKey()\"   *ngIf=\"!noNavigation\">\n                        </div>\n                    </div>        \n                </ng-container>\n\n                <ng-container *ngIf=\"eAf.field.type == 'boolean'\">\n                    <input *ngIf=\"!isReadonly()\"  style=\"width: 100%;\" type=\"checkbox\"  [(ngModel)]=\"eAf.entity[eAf.field.code]\"  (ngModelChange)=\"change($event)\">  \n                    <div   *ngIf=\" isReadonly()\"><img style=\"width: 12px;\" [src]=\"getValue()?'assets/icons/checked.png':'assets/icons/unchecked.png'\"></div>             \n                </ng-container>\n\n\n                <ng-container *ngIf=\"eAf.field.type == 'date'\">\n                    <input *ngIf=\"! isReadonly()\"  style=\"width: 100%;\" [(ngModel)]=\"eAf.entity[eAf.field.code]\" (ngModelChange)=\"change($event)\"  bsDatepicker [bsConfig]=\"{ dateInputFormat: 'DD-MM-YYYY', showWeekNumbers:false, containerClass: 'theme-dark-blue'  }\">     \n                    <div   *ngIf=\"  isReadonly()\" [class.stroke]=\"eAf.entity.deleted\">{{getValue() | date : 'dd-MMM-yy'}}</div>             \n                </ng-container>\n\n                <ng-container *ngIf=\"eAf.field.type == 'datetime'\">\n                    <input *ngIf=\"! isReadonly()\"  style=\"width: 100%;\" [(ngModel)]=\"eAf.entity[eAf.field.code]\" (ngModelChange)=\"change($event)\"  bsDatepicker [bsConfig]=\"{ dateInputFormat: 'DD-MM-YYYY', showWeekNumbers:false, containerClass: 'theme-dark-blue'  }\">\n                    <div   *ngIf=\"  isReadonly()\" [class.stroke]=\"eAf.entity.deleted\">{{getValue() | date : 'dd-MMM-yy HH:mm'}}</div>\n                </ng-container>\n\n            </ng-container>\n\n            <ng-container *ngIf=\"eAf.field.lov\">\n                <div *ngIf=\"isReadonly()\" [class.stroke]=\"eAf.entity.deleted\">{{getValue()}} </div>    \n                <ng-container  *ngIf=\"!isReadonly()\">\n                    <input style=\"width: 100%;\" \n                        placeholder            = \"...\"  \n                        ngModel                = \"{{getValue()}}\"  \n                        [typeahead]            = \"eAf.field.lov\" \n                        [typeaheadOptionField] = \"eAf.field.bindLabel\" \n                        typeaheadMinLength     = 0 \n                        (typeaheadOnBlur)      = \"blur()\"\n                        (typeaheadOnSelect)    = \"processSelectValue($event)\">                 \n                    </ng-container>\n            </ng-container>\n        <!-- </ng-container> -->\n<!--         \n        <ng-container *ngIf=\"(! isLeaf())\">\n            <ng-container *ngIf=\"eAf.field\">\n                <div *ngIf=\" isReadonly()  || (! eAf.field.lov)\">\n                    {{getValue()}} \n                    <span *ngIf=\"eAf.field.unit\" style=\"margin: 0 2px; color: lightgray;\"> {{eAf.field.unit}} </span>\n                </div>                            \n                <ng-container  *ngIf=\"(!isReadonly()) && (eAf.field.lov)\">\n                    <input  style=\"width: 100%;\"  \n                    ngModel                 = \"{{getValue()}}\" placeholder=\"...\"  \n                    [typeahead]             = \"eAf.field.lov\"  \n                    [typeaheadOptionField]  = \"eAf.field.bindLabel\" \n                    typeaheadMinLength      = 0 \n                    (typeaheadOnSelect)     = \"processSelectValue($event)\">                  \n                </ng-container>\n            </ng-container>\n            <ng-container *ngIf=\"! eAf.field\">\n                <div>{{getValue()}}</div> \n            </ng-container>  \n        </ng-container> -->\n\n    </ng-container>\n</div> \n\n\n","import { ControlValueAccessor } from \"@angular/forms\";\nimport { DatePipe } from \"@angular/common\";\n\n\nexport class ValueAccessorBase<E> implements ControlValueAccessor {\n\n    private _value: E;\n   // protected initialValue : any;\n    private _changed = new Array<(value: E) => void>();\n    private _touched = new Array<() => void>();\n\n\n    protected pipe    : DatePipe = new DatePipe('en-US');\n\n\n    public formatDate(date : Date){\n        return this.pipe.transform(date, 'dd-MM-yyyy   hh:mm');\n    }\n  \n\n    public get value(): E {\n        return this._value;\n    }\n\n    public set value(value: E) {\n        if (this._value !== value) {\n            this._value = value;\n            this._changed.forEach(f => f(value));\n        }\n    }\n\n    public touch() {\n        this._touched.forEach(f => f());\n    }\n\n    public writeValue(value: E) {\n        if (!this._value || value !== this._value){\n            this._value = value;\n        }\n    }\n\n    public registerOnChange(fn: (value: E) => void) {\n        this._changed.push(fn);\n    }\n\n    public registerOnTouched(fn: () => void) {\n        this._touched.push(fn);\n    }\n\n}\n\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ValueAccessorBase } from '../../models/value-accessor-base';\nimport { LeanUtilsService } from '../../services/lean-utils-service';\n\n\n@Component({\n  selector: 'lean-input',\n  templateUrl: './lean-input.component.html',\n  styleUrls: ['./lean-input.component.scss'],\n  providers: [{\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: LeanInputComponent,\n    multi: true,\n  }],\n})\nexport class LeanInputComponent  extends ValueAccessorBase<string> implements OnInit  {\n\n  //-------------------------------------------------------------------------------------------\n  @Input() label        : string;\n  @Input() type         : string = \"text\";\n  @Input() lov          : any[];\n  @Input() bindLabel    : string;  \n  @Input() placeholder  : string = \"\";\n  @Input() width        : string = \"20em\";\n  @Input() grid         : boolean = false;\n  @Input() icon         : string; \n  @Input() actionIcon   : string = \"assets/icons/add-new.png\"; \n  //-------------------------------------------------------------------------------------------\n\n  //-------------------------------------------------------------------------------------------\n  @Output() onDataChanged : EventEmitter<any> = new EventEmitter();  \n  @Output() onAction      : EventEmitter<any> = new EventEmitter();  \n  //-------------------------------------------------------------------------------------------\n\n//-------------------------------------------------------------------------------------------\n  constructor(\n    protected leanUtilsService: LeanUtilsService) {\n    super();\n  }\n\n//-------------------------------------------------------------------------------------------\nngOnInit(): void {\n  }\n\n\n\n//-------------------------------------------------------------------------------------------\ngetValueFromLov(){\n  let bindLabel = this.bindLabel;\n  if (!bindLabel) bindLabel = \"designation\";\n  let result = null;\n  if (this.value) result = this.value[bindLabel];\n  return result;\n}\n\n\n//-------------------------------------------------------------------------------------------\nblur(){\n  //this.eAf.entity[this.eAf.field.code] = null;\n  this.value = null;\n  this.onDataChanged.emit(null);\n}\n\n\n//-------------------------------------------------------------------------------------------\ngetWhidth() : string{\n  if (this.grid) return \"100%\";\n  let width : string = \"20em\";\n  if (this.width) width = this.width + \"em\";\n  return width;\n}\n\n//-------------------------------------------------------------------------------------------\nchange(e : any){\n  this.onDataChanged.emit(e);\n}\n//-------------------------------------------------------------------------------------------\n\n\n//-------------------------------------------------------------------------------------------\nprocess(e : any){\n  this.value = e.item;\n  this.onDataChanged.emit(e.item);\n}\n\n//-------------------------------------------------------------------------------------------\ngetClass() : string {\n  let res = 'lean-form-field-input'\n  return res;\n}\n\n//-------------------------------------------------------------------------------------------\ngetLabel() : string {\n  return this.leanUtilsService.translate(this.label);\n}\n\n}\n\n","<div [ngClass]=\"getClass()\" [style.width]=\"getWhidth()\"> \n    <div class=\"label\">{{getLabel()}}</div>\n    <div class=\"d-flex justify-content-between\">\n        <div class=\"d-flex\"  style=\"width: 100%;\">\n            <img   *ngIf=\"icon\" [src]=\"'assets/icons/'+icon\">\n            <ng-container  *ngIf=\"!lov\">\n                <input  style=\"width: 100%;\" *ngIf=\"type != 'date' && type != 'boolean'\"    [type]=\"type\"       [(ngModel)]=\"value\" (ngModelChange)=\"change($event)\" [placeholder]=\"placeholder\" >  \n                <input *ngIf=\"type == 'boolean'\"                     type=\"checkbox\"        [(ngModel)]=\"value\" (ngModelChange)=\"change($event)\">\n                <input *ngIf=\"type == 'date'\"                                               [(ngModel)]=\"value\" (ngModelChange)=\"change($event)\" bsDatepicker [bsConfig]=\"{ dateInputFormat: 'DD-MM-YYYY', showWeekNumbers:false, containerClass: 'theme-dark-blue'  }\">      \n            </ng-container>\n            <ng-container  *ngIf=\"lov\">\n                <input  style=\"width: 100%;\" \n                        placeholder             = \"...\"\n                        ngModel                = \"{{getValueFromLov()}}\"  \n                        [typeahead]             = \"lov\"  \n                        [typeaheadOptionField]  = \"bindLabel\" \n                        typeaheadMinLength      = 0 \n                        (typeaheadOnBlur)       = \"blur()\"\n                        (typeaheadOnSelect)     = \"process($event)\">                \n            </ng-container>\n        </div>\n        <img  *ngIf=\"lov\"  src=\"assets/icons/expand.png\" style=\"width: 12px; height: 12px;\">  \n        <img *ngIf=\"onAction.observed\" style=\"width: 16px; height: 16px; cursor: pointer;\" [src]=\"actionIcon\" (click)=\"onAction.emit(null)\">\n    </div>   \n</div> ","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { LeanUtilsService } from '../../services/lean-utils-service';\n\n@Component({\n  selector: 'lean-page',\n  templateUrl: './lean-page.component.html',\n  styleUrls: ['./lean-page.component.scss']\n})\n\n\nexport class LeanPageComponent implements OnInit {\n\n  @ViewChild('ldf_filter',    {static : false})   ldf_filter : any;\n\n  @Input() title      : string;\n  @Input() hideAddNew : boolean = false;\n  @Input() hideClose  : boolean = false;\n\n  @Output() onLoadData  = new EventEmitter<any>();\n  @Output() onAddNew    = new EventEmitter<any>();\n  @Output() onClose     = new EventEmitter<boolean>();\n\n  filterShown     : boolean = false;\n  constructor(\n      protected leanUtilsService : LeanUtilsService\n  ) { }\n\n  ngOnInit(): void {\n  }\n\n  loadData(){\n    if (! this.filterShown) {\n      this.showFilter();\n      return;\n    } \n    this.hideFilter();\n    this.onLoadData.emit();\n  }\n\n  hideFilter(){\n    this.filterShown = false;\n    this.ldf_filter.nativeElement.style.display = 'none';\n  }\n  \n  showFilter() {\n    this.ldf_filter.nativeElement.style.display = 'block';\n    this.filterShown = true;\n  }\n  addNew(){\n    this.onAddNew.emit(null);\n  }\n  \n  close(){\n    this.onClose.emit(null);\n  }\n\n  getFilterLabel() : string{\n    if (this.filterShown) return this.leanUtilsService.translate('global.laodData');\n    return this.leanUtilsService.translate('global.filterData');\n  }\n\n  translate(term : string): string{\n    return this.leanUtilsService.translate(term);\n  }\n\n}\n","<div class=\"lean-page\">\n    <div class=\"d-flex lean-page-header\">\n        <img *ngIf=\"! hideClose\" class=\"lean-page-close-icon\" src=\"assets/icons/close.png\" (click)=\"close()\">\n        <div class=\"lean-page-title\">{{title}}</div>\n        <div class=\"w-100\">\n            <div class=\"center-v center-h\">\n                <ng-content select=\"[specific-labels]\"></ng-content>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"d-flex lean-page-actions\"> \n        <div *ngIf=\"onLoadData.observed\">\n            <div class=\"lean-button-action\" (click)=\"loadData()\">\n                <img src=\"assets/icons/search.png\">\n                <button>\n                    {{getFilterLabel()}}\n                </button>\n            </div>\n            <div #ldf_filter class=\"button-dropdown-content\" style=\"padding: 1em;\">\n                <img style=\"width: 15px; height: 15px; margin: 6px 4px; cursor: pointer;\" src=\"assets/icons/close.png\" (click)=\"hideFilter()\">\n                <ng-content select=\"[data_filter]\"></ng-content>\n            </div>\n        </div>\n        <div *ngIf=\"! hideAddNew && onAddNew.observed\" class=\"lean-button-action\" (click)=\"addNew()\">\n            <img src=\"assets/icons/add-new.png\">\n            <button>{{translate('global.addNew')}}</button>\n        </div>\n        <ng-content select=\"[specific-actions]\"></ng-content>\n    </div>\n\n    <div style=\"display: flex; flex-grow: 1; overflow: scroll;\">\n        <ng-content></ng-content>\n    </div>\n</div>\n\n\n\n\n\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n  selector: 'lean-postit',\n  templateUrl: './lean-postit.component.html',\n  styleUrls: ['./lean-postit.component.scss']\n})\n\n\nexport class LeanPostitComponent implements OnInit {\n\n  @Input() title          : string = \"Kpi\"; \n  @Input() color          : string = \"darkorange\"\n\n  @Input() width          : string = '200';\n  @Input() minWidth       : string = '200';\n \n\n  constructor() {\n  }\n\n\n  ngOnInit() {\n\n  }\n\n\n\n}\n","<div style='min-width:180px; padding-left: 2px;'>\n        <div class=\"post-it-top\">\n            <ng-content></ng-content>\n        </div>\n        <div [style.background]=\"color\" class=\"post-it-bottom\">\n                    {{title}}\n        </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n  selector: 'lean-postit-kpi',\n  templateUrl: './lean-postit-kpi.component.html',\n  styleUrls: ['./lean-postit-kpi.component.scss']\n})\n\n\nexport class LeanPostitKpiComponent implements OnInit {\n\n  @Input() title          : string = \"Kpi\";\n  @Input() value          : number;\n  @Input() value10        : number;\n  @Input() value11        : string;\n  @Input() value20        : number;\n  @Input() value21        : string;\n  @Input() value30        : number;\n  @Input() value31        : string;\n  @Input() value40        : string;\n  @Input() value41        : string;\n  @Input() unit           : string = \"\";\n  @Input() value1Label    : string;\n  @Input() value2Label    : string;\n  @Input() value3Label    : string;\n  @Input() value4Label    : string;\n  @Input() status         : number;\n\n\n @Input() color           : string = \"darkorange\";   \n @Input() valuesFontSize\t: number = 16;\t\n @Input() valuesColor\t    : string = \"lightgray\";   \n @Input() valuesFontWeight: string = \"bold\"\n @Input() labelFontSize\t  : number = 8;\t\n @Input() labelFontWeight\t: string = \"regular\";\n  \n  constructor() {\n  }\n\n\n  ngOnInit() {\n\n  }\n\n\n\n}\n","\n<lean-postit [style.color]=\"color\"  title={{title}} color={{color}}>\n      \n      <div style=\"width: 100%; text-align: right; min-height: 25px; height: 25px; margin-top: -25px;\">\n            <img *ngIf=\"status == 1\" style=\"width: 15px\" src=\"assets/images/icons/checked.png\">\n            <img *ngIf=\"status == -1\" style=\"width: 15px\" src=\"assets/images/icons/rejected.png\">\n      </div>\n\n\n      <div  *ngIf=\" value10 || value20 || value30\"  style=\"padding: 0px; display: flex; justify-content: space-between;\">\n            <div *ngIf=\"value10 != null\" style=\"text-align: center; padding: 0px;\">\n                  <div>\n                        <div *ngIf=\"value10     != null\"          [style.color]=\"valuesColor\" [style.font-size.px]=\"valuesFontSize\" [style.font-weight]=\"valuesFontWeight\" > {{ value10 | number:'1.0':'en-US' }}</div>\n                        <div *ngIf=\"value11     != null\"          [style.color]=\"valuesColor\" [style.font-size.px]=\"valuesFontSize\" [style.font-weight]=\"valuesFontWeight\"> {{value11}}</div>\n                        <div *ngIf=\"value1Label != null\"          style=\"color:lightgray\"   [style.font-size.px]=\"labelFontSize\" [style.font-weight]=\"labelFontWeight\">  {{value1Label}}</div>\n                   </div>\n            </div>\n            <div *ngIf=\"value20 != null\" style=\"text-align: center; padding: 0px\">\n                  <div>     \n                        <div *ngIf=\"value20     != null\"         [style.color]=\"valuesColor\" [style.font-size.px]=\"valuesFontSize\" [style.font-weight]=\"valuesFontWeight\"> {{ value20 | number:'1.0':'en-US' }}</div>\n                        <div *ngIf=\"value21     != null\"         [style.color]=\"valuesColor\" [style.font-size.px]=\"valuesFontSize\" [style.font-weight]=\"valuesFontWeight\"> {{value21}}</div>\n                        <div *ngIf=\"value2Label != null\"         style=\"color:lightgray\"   [style.font-size.px]=\"labelFontSize\" [style.font-weight]=\"labelFontWeight\">  {{value2Label}}</div>\n                  </div>\n            </div>   \n            <div *ngIf=\"value30 != null\" style=\"text-align: center; padding: 0px\">\n                  <div>     \n                        <div *ngIf=\"value30      != null\"        [style.color]=\"valuesColor\" [style.font-size.px]=\"valuesFontSize\" [style.font-weight]=\"valuesFontWeight\"> {{value30}}</div>\n                        <div *ngIf=\"value31      != null\"        [style.color]=\"valuesColor\" [style.font-size.px]=\"valuesFontSize\" [style.font-weight]=\"valuesFontWeight\"> {{value31}}</div>\n                        <div *ngIf=\"value3Label  != null\"        style=\"color:lightgray\"   [style.font-size.px]=\"labelFontSize\" [style.font-weight]=\"labelFontWeight\">  {{value3Label}}</div>\n                  </div>\n            </div>\n            <div *ngIf=\"value40 != null\" style=\"text-align: center; padding: 0px\">\n                  <div>     \n                        <div *ngIf=\"value40      != null\"       [style.color]=\"valuesColor\" [style.font-size.px]=\"valuesFontSize\" [style.font-weight]=\"valuesFontWeight\"> {{value40}}</div>\n                        <div *ngIf=\"value41      != null\"       [style.color]=\"valuesColor\" [style.font-size.px]=\"valuesFontSize\" [style.font-weight]=\"valuesFontWeight\"> {{value41}}</div>\n                        <div *ngIf=\"value4Label  != null\"       style=\"color:lightgray\"   [style.font-size.px]=\"labelFontSize\" [style.font-weight]=\"labelFontWeight\">  {{value4Label}}</div>\n                  </div>\n            </div>                                                \n      </div>\n \n\n\n      <span *ngIf=\"unit != '%'\" [style.color]=\"color\" style=\"font-size: 25px; font-weight: bold\">  {{ value | number:'1.0':'en-US' }}  {{unit}}</span>\n \n      <ngx-gauge *ngIf=\"unit == '%'\" style=\"margin-top: -30px;\"\n            type     = \"arch\" \n            form     = \"round\" \n            thick    = 9\n            size     = 100\n            [foregroundColor] = \"color\"\n            backgroundColor = \"rgba(0, 0, 0, 0.1)\"\n            [value]  = \"value\" \n            [append] = \"unit\">\n      </ngx-gauge>\n      \n\n</lean-postit>\n\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { LeanFieldModel } from '../../models/lean-field-model';\nimport { LeanBaseEntity } from '../../models/lean-base.entity';\nimport { EAF } from '../../models/lean-e-a-f';\n\n@Component({\n  selector: 'lean-data-table',\n  templateUrl: './lean-data-table.component.html',\n  styleUrls: ['./lean-data-table.component.scss']\n})\nexport class LeanDataTableComponent implements OnInit {\n\n  @Input() title                : string;\n  @Input() fields               : LeanFieldModel[];  \n  @Input() rows                 : LeanBaseEntity[]  = [];\n  @Input() columnMode           : string  = 'force'; \n  @Input() enableRowAdd         : boolean = false;\n  @Input() enableRowEdit        : boolean = false;  // editRowByRow\n  @Input() enableRowsEdit       : boolean = false;  // editAllRows\n  @Input() readOnly             : boolean = false;\n  @Input() pageSize             : number = 20;\n  @Input() buttons              : {label : string, type : string, rank : number, iconFileName : string, icon : string}[];\n  @Input() gridOnly             : boolean = false;\n\n  @Input() totalRowCount        : number;\n  @Input() serverPageNumber     : number;\n  @Input() serverPageCount      : number;\n  @Output() onNextPage          = new EventEmitter<any>();\n  @Output() onPreviousPage      = new EventEmitter<any>();\n  \n  @Output() onSelect            = new EventEmitter<any>();\n  @Output() onSort              = new EventEmitter<string>();\n  @Output() onAddNew            = new EventEmitter<LeanBaseEntity>();\n  @Output() onSave              = new EventEmitter<LeanBaseEntity>();\n  @Output() onRowDataChanged    = new EventEmitter();  \n  @Output() onProcessForeignKey = new EventEmitter();  \n  @Output() onButtonClicked     = new EventEmitter<{code : string, row :  any}>();\n\n  currentPpage              : number = 1;\n\n  constructor() { }\n\n  \n  //---------------------------------------------------------------------------------------------------------\n  ngOnInit(): void {\n  }\n\n  \n  //---------------------------------------------------------------------------------------------------------\n  rowDataChanged(entity, field){\n    let eaf : EAF = new EAF(entity, field);\n    this.onRowDataChanged.emit(eaf);\n  }\n\n  //---------------------------------------------------------------------------------------------------------\n  processForeignKey(entity, field){\n    let eaf : EAF = new EAF(entity, field);\n    this.onProcessForeignKey.emit(eaf);\n  }\n\n\n  //---------------------------------------------------------------------------------------------------------\n  selectRow(field: LeanFieldModel, row : any){\n      this.onSelect.emit({field: field, row : row});\n  }\n\n  buttonClicked(code : string, row : any){\n    this.onButtonClicked.emit({code : code, row : row});\n  }\n\n  //---------------------------------------------------------------------------------------------------------\n  addNew(){\n    this.onAddNew.emit(null);\n  }\n\n\n  //---------------------------------------------------------------------------------------------------------\n  getEAF2(row :  LeanBaseEntity, field : LeanFieldModel) : any{ \n   // let statusRank = this.statusRank;\n   // if (statusRank == null) statusRank = 0;\n   // field.required  = (field.mandatoryProgessLevel != null) && (field.mandatoryProgessLevel <= statusRank);\n   // field.readOnly  = (field.freezeProgessLevel    != null) && (field.freezeProgessLevel    <= statusRank);\n    \n    return {\"entity\" : row, \"field\" : field};\n  }\n\n  // getFieldStyle(field : Field)  {\n  //   let width = 10;\n  //   if (field.width) length = field.width;\n  //   let styles = {\n  //       'width': width + 'em',\n  // //      'margin' : '0 4px'\n  //     };\n  //     return styles;\n  // }\n\n  //---------------------------------------------------------------------------------------------------------\n  getWhidth(field : LeanFieldModel) : string{\n    let width : string = \"20em\";\n    if (field.width) width = field.width + \"em\";\n    return width;\n  }\n  \n\n  //---------------------------------------------------------------------------------------------------------\n  getRowsCount() : number{\n    if (this.totalRowCount != null) return this.totalRowCount;\n    if (this.rows) return this.rows.length;\n    return 0;\n  }\n\n\n  //---------------------------------------------------------------------------------------------------------\n  getHeaderClass(field : LeanFieldModel) : string{\n    if (this.fields.indexOf(field) == 0) return \"ls-table-header-first\";\n    return \"ls-table-header\";\n  }\n\n  hoverLine : number = -1;\n\n//---------------------------------------------------------------------------------------------------------\ngetBackground(i : number){\n    let bg = \"transparent\";\n    if ( i== this.hoverLine) bg = \"#f6f8fb\";\n    return bg;\n  }\n\n\n//---------------------------------------------------------------------------------------------------------\ngetFieldHeaderStyle(field : LeanFieldModel)  {\n    let width = 10;\n    if (field.width) length = field.width;\n    let styles = {\n      'width': width + 'em',\n //      'width': (width + 4) + 'em',\n      };\n      return styles;\n  }\n\n\n//---------------------------------------------------------------------------------------------------------\ntoBeSaved(row : LeanBaseEntity) : boolean {\n    return row.updated || row.inserted || row.deleted;\n  }\n\n//---------------------------------------------------------------------------------------------------------\nedit(entity : LeanBaseEntity) {\n    entity._original  = { ...entity };\n    entity.updated    = true;\n  }\n\n//---------------------------------------------------------------------------------------------------------\ncancelChanges(entity : LeanBaseEntity) {\n    if (entity.deleted) {\n      entity.deleted = false;\n      return;\n    }\n    \n    this.rows[this.rows.indexOf(entity)] = entity._original;\n    entity.updated = false;\n    this.rows = [...this.rows];\n  }\n\n//---------------------------------------------------------------------------------------------------------\nsave(entity : LeanBaseEntity){\n    this.onSave.emit(entity);\n  }\n\n//---------------------------------------------------------------------------------------------------------\n  nextPage(){\n    this.onNextPage.emit(null);\n  }\n\n//---------------------------------------------------------------------------------------------------------\n  previousPage(){\n    this.onPreviousPage.emit(null);\n  }\n  \n}\n","<div class=\"lean-bloc\" style=\"overflow-x: scroll; height:100%\">\n    <div class=\"ls-table-title\">{{title}}</div>\n    <div class=\"ls-table-body\">\n        <div class=\"d-flex ls-table-header\">\n            <div *ngFor=\"let field of fields\" [style.width]=\"getWhidth(field)\"  >  \n                {{field.name}}\n            </div>\n            <div class=\"ls-table-header-last\" [style.minWidth.px]=\"enableRowEdit?50:16\"></div>\n        </div>\n        <div style=\"overflow-y: scroll; max-height:calc(100vh - 25em);\">\n            <div *ngFor=\"let row of rows; let i = index\">\n                <div class=\"d-flex ls-table-row\" \n                    [style.cursor]      = \"enableRowEdit?'':'pointer'\" \n                    [style.background]  = \"getBackground(i)\" \n                    (mouseenter)        = \"hoverLine=i\"\n                    (mouseleave)        = \"hoverLine=-1\">\n                    <div *ngFor=\"let field of fields\" (click)=\"selectRow(field, row)\"\n                        class=\"ls-table-col\" [style.width]=\"getWhidth(field)\">  \n                            <lean-field\n                                grid                  = \"true\" \n                                [eAf]                 = \"getEAF2(row, field)\" \n                                [forceEditMode]       = \"enableRowsEdit\"\n                                [readOnly]            = \"readOnly\"\n                                [noNavigation]        = \"! gridOnly\"\n                                (onDataChanged)       = \"rowDataChanged(row, field)\"\n                                (onProcessForeignKey) = \"processForeignKey(row, field)\">\n                            </lean-field> \n                    </div>\n                    <ng-container *ngIf=\"enableRowEdit\">\n                        <ng-container *ngIf=\"(! toBeSaved(row))\">\n                            <img (click)=\"edit(row)\"           class=\"ls-icon\" src=\"assets/icons/edit.png\">\n                            <img (click)=\"row.deleted = true\" class=\"ls-icon\" src=\"assets/icons/trash.png\">\n                        </ng-container>\n                        <ng-container *ngIf=\"(toBeSaved(row))\">\n                            <img (click)=\"save(row)\"           class=\"ls-icon\" src=\"assets/icons/save.png\">\n                            <img *ngIf=\"(! row.inserted ||  row.deleted)\" (click)=\"cancelChanges(row)\"  class=\"ls-icon\" src=\"assets/icons/recycle.png\">\n                            <img *ngIf=\"(  row.inserted && !row.deleted)\" (click)=\"row.deleted = true\"  class=\"ls-icon\" src=\"assets/icons/trash.png\">\n                        </ng-container>\n                    </ng-container>\n                    <ng-container *ngIf=\"enableRowsEdit\">\n                        <img *ngIf=\"(  row.deleted)\"   (click)=\"row.deleted = false\" class=\"ls-icon\" src=\"assets/icons/recycle.png\">\n                        <img *ngIf=\"(! row.deleted)\"   (click)=\"row.deleted = true\" class=\"ls-icon\" src=\"assets/icons/trash.png\">\n                    </ng-container>\n                    \n                    <ng-container *ngIf=\"buttons\">\n                        <img *ngFor=\"let btn of buttons\" (click)=\"buttonClicked(btn.code, row)\" class=\"ls-icon\" [src]=\"'assets/icons/'+btn.iconFileName\">\n                    </ng-container>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"d-flex justify-content-between w-100 ls-table-footer\">\n            <div class=\"d-flex page-rows\"  style=\"min-width: 2px;\" >\n                <div class=\"page-rows-label\">{{'global.lines' |  translate}} </div>\n                <div class=\"page-rows-count\"> <span>{{getRowsCount()}}</span></div>\n            </div>\n\n            <div class=\"d-flex\" *ngIf=\"serverPageCount\">\n                <div class=\"page-ctrl-previous\" (click)=\"previousPage()\"><span>&lt;</span></div>\n                <div class=\"page-ctrl-body\">{{serverPageNumber + 1}} | {{serverPageCount}}</div>\n                <div class=\"page-ctrl-next\" (click)=\"nextPage()\"><span>&gt;</span></div>\n            </div>\n            <div>\n                <img src=\"assets/icons/add-new.png\" class=\"ls-icon\" style=\"margin: 0.4em 1em 0.2em 0;\" (click)=\"addNew()\" *ngIf=\"onAddNew.observed && enableRowAdd\">\n            </div>\n\n        </div>\n    </div>\n</div>\n\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\n\n@Component({\n  selector: 'lean-tree',\n  templateUrl: './lean-tree.component.html',\n  styleUrls: ['./lean-tree.component.scss']\n})\n\nexport class LeanTreeComponent implements OnInit {\n\n  @Input() node                : any;\n  @Input() labelFieldName!     : string;\n  @Input() labelFieldCode!     : string;\n  @Input() chieldrenFieldName! : string;\n  @Input() level!              : number;\n\n  @Output() onClick       = new EventEmitter<any>();  \n  @Output() onDoubleClick = new EventEmitter<any>();  \n  @Output() onExpand      = new EventEmitter<any>();  \n\n  expanded:boolean = false;\n  \n  constructor() { }\n\n  ngOnInit() {\n    this.levelPadding();\n  }\n\n  levelPadding(){\n    let level = this.level;\n    level++\n    return \"\"+level*10+\"px\";\n  }\n\n  toggleExpanded(){\n    this.expanded = ! this.expanded;\n    this.onExpand.emit(this.node);\n  }\n  \n  expand(node : any){\n    this.onExpand.emit(node);\n  }\n\n  click(child : any){\n    this.onClick.emit(child);\n  }\n  doubleClick(child : any){\n    this.onDoubleClick.emit(child);\n  }\n\n  clickCurrent(){\n    this.onClick.emit(this.node);\n  }\n\n  doubleClickCurrent(){\n    this.onDoubleClick.emit(this.node);\n  }\n\n}\n","<div *ngIf=\"node\" class=\"tree-item\" [ngClass]=\"{'node-selected' : node.selected}\" [ngStyle]=\"{'text-indent' : levelPadding()}\"> \n    <div class=\"d-flex text-color\">\n        <img style=\"width: 16px; height: 16px; cursor: default;\"            *ngIf=\"!expanded && (node[chieldrenFieldName] == null || node[chieldrenFieldName].length > 0)\" src=\"assets/icons/folder-closed.png\" (click)=\"toggleExpanded()\" (click)=\"$event.stopPropagation()\">\n        <img style=\"width: 16px; height: 16px; cursor: default;\"            *ngIf=\" expanded && (node[chieldrenFieldName] == null || node[chieldrenFieldName].length!> 0)\" src=\"assets/icons/folder-opened.png\" (click)=\"toggleExpanded()\" (click)=\"$event.stopPropagation()\">\n        <img style=\"width: 16px; height: 16px; cursor: none; opacity: 40%;\" *ngIf=\" node[chieldrenFieldName] != null && node[chieldrenFieldName].length == 0\" src=\"assets/icons/block.png\">\n\n\n        \n\n        <div style=\"margin-left: .5rem;\" [ngClass]=\"{'selected-text' : node.selected}\" (click)=\"clickCurrent()\" (dblclick)=\"doubleClickCurrent()\">\n           <span *ngIf=\"labelFieldCode\">{{node[labelFieldCode]}} : </span> <span>{{node[labelFieldName]}}</span>\n        </div>\n    </div>\n</div>\n\n\n<ng-container *ngIf=\"node && node[chieldrenFieldName] && node[chieldrenFieldName].length!=0 && expanded\">\n    <div *ngFor=\"let child of node[chieldrenFieldName]\" >\n            <lean-tree [node]=\"child\" \n                        [labelFieldName]    = \"labelFieldName\"\n                        [labelFieldCode]    = \"labelFieldCode\"\n                        [chieldrenFieldName]= \"chieldrenFieldName\"\n                        [level]             = \"level+1\"\n                        (onExpand)          = \"expand($event)\"\n                        (onClick)           = \"click($event)\"\n                        (onDoubleClick)     = \"doubleClick($event)\"\n                        >\n            </lean-tree>    \n    </div>\n</ng-container>   \n\n\n\n\n<!-- <ng-container *ngIf=\"node\">\n    expanded = {{expanded}}\n    node[chieldrenFieldName] = {{node[chieldrenFieldName] | json}}\n</ng-container> -->\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { LeanUtilsService } from '../../services/lean-utils-service';\nimport { LeanBaseEntity } from '../../models/lean-base.entity';\n\n@Component({\n  selector: 'lean-widget',\n  templateUrl: './lean-widget.component.html',\n  styleUrls: ['./lean-widget.component.scss']\n})\nexport class LeanWidgetComponent implements OnInit {\n\n  @Input() title      : string;\n  @Input() hideClose  : boolean = false;\n  @Input() hideEdit   : boolean = false;\n  @Input() hideDelete : boolean = false;\n\n  @Input() entity     : LeanBaseEntity;\n\n  @Output() onValidate  = new EventEmitter<any>();\n  @Output() onEdit      = new EventEmitter<boolean>();\n  @Output() onDelete    = new EventEmitter<boolean>();\n  @Output() onClose     = new EventEmitter<any>();\n\n\n  constructor(\n    protected leanUtilsService : LeanUtilsService) {\n\n     }\n\n  ngOnInit(): void {\n  }\n\n  close(){\n    if (this.isEditMode()){\n      this.leanUtilsService.error('errors.cant_leave_while_edit');\n      return;\n    }\n    this.onClose.emit(null);\n  }\n  edit(){\n    this.onEdit.emit(true);\n  } \n  cancel(){\n    this.onEdit.emit(false);\n  }\n  validate(){\n    this.onValidate.emit();\n  }\n  delete(){\n    this.onDelete.emit(false);\n }\n  isEditMode() : boolean{\n    return this.entity.updated || this.entity.inserted; \n  }\n\n  translate(term : string): string{\n    return this.leanUtilsService.translate(term);\n  }\n}\n","<div class=\"lean-page\">\n    <div class=\"d-flex justify-content-between lean-page-header\">\n        <div class=\"d-flex\">\n            <img *ngIf=\"! hideClose\" style=\"width: 15px; height: 15px; margin-top: 3px; cursor: pointer;\" src=\"assets/icons/close.png\" (click)=\"close()\">\n            <div class=\"lean-page-title\">{{title}}</div>\n        </div>\n        <div class=\"w-100\">\n            <div class=\"center-v center-h\">\n                <ng-content select=\"[specific-labels]\"></ng-content>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"d-flex lean-widget-actions\"> \n        <ng-container *ngIf=\"isEditMode()\">\n            <div class=\"lean-button-action\" (click)=\"cancel()\">\n                <img src=\"assets/icons/rejected.png\">\n                <button>{{translate('global.cancel')}}</button>\n            </div>\n            <div class=\"lean-button-action\" (click)=\"validate()\">\n                <img src=\"assets/icons/checked.png\">\n                <button>{{translate('global.validate')}}</button>\n            </div>\n        </ng-container>\n        <ng-container *ngIf=\"! isEditMode()\">\n            <div  *ngIf=\"!hideEdit && onEdit.observed\" class=\"lean-button-action\" (click)=\"edit()\">\n                <img src=\"assets/icons/edit.png\">\n                <button>{{translate('global.change')}}</button>\n            </div>\n            <div  *ngIf=\"!hideDelete && onDelete.observed\" class=\"lean-button-action\" (click)=\"delete()\">\n                <img src=\"assets/icons/trash.png\">\n                <button>{{translate('global.delete')}}</button>\n            </div>\n            <ng-content select=\"[specific-actions]\"></ng-content>\n        </ng-container>\n    </div>\n    <div style=\"flex-grow: 1; overflow: scroll;\">\n        <ng-content></ng-content>\n    </div>\n\n</div>\n\n\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Menu } from '../../models/lean-menu';\n\n\n\n\n@Component({\n  selector: 'lean-menu-item',\n  templateUrl: './lean-menu-item.component.html',\n  styleUrls: ['./lean-menu-item.component.scss']\n})\nexport class LeanMenuItemComponent implements OnInit {\n\n  @Input() menu    : Menu;\n\n  @Output() onClicked     = new EventEmitter<Menu>();\n  \n  constructor(\n    protected translateService : TranslateService) {\n  }\n\n  ngOnInit() {\n  }\n\n\n  process(menu : Menu){\n    menu.expanded=!menu.expanded;\n    if (menu.route) this.onClicked.emit(menu);\n  }\n\n  getName(menu : Menu) : string{\n    if (menu.name) return menu.name;\n    return this.translateService.instant(menu.code+\".name\");\n  } \n\n}\n","<div *ngIf=\"menu.isVisible\" (click)=\"process(menu)\" class=\"menu-item d-flex justify-content-between\">\n  <div class=\"d-flex\" >\n    <div> <img class=\"menu-item-icon\" [src]=\"menu.icon\"></div>\n    <div>{{getName(menu)}}</div> \n  </div>\n  <ng-container *ngIf=\"menu.subMenus && menu.subMenus.length > 0\">\n    <div *ngIf=\"!menu.expanded\">+</div> \n    <div *ngIf=\"menu.expanded\">-</div>  \n  </ng-container>      \n</div>\n\n<div *ngIf=\"menu.expanded && menu.subMenus\">\n    <div *ngFor=\"let subMenu of menu.subMenus\" style=\"margin-left: 1em;\">\n      <lean-menu-item (onClicked)=\"process($event)\" [menu]=\"subMenu\"></lean-menu-item>             \n    </div>\n</div>\n\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Menu } from '../../models/lean-menu';\n\n\n\n@Component({\n  selector: 'lean-menu',\n  templateUrl: './lean-menu.component.html',\n  styleUrls: ['./lean-menu.component.scss']\n})\nexport class LeanMenuComponent implements OnInit {\n\n  @Input() width          : number = 15;\n  @Input() menu           : Menu;\n\n  @Output() onClicked     = new EventEmitter<Menu>();\n  \n  constructor(\n    protected translateService : TranslateService) {\n  }\n\n  ngOnInit() {\n    this.setVisible(this.menu);\n  }\n  setVisible(menu: Menu) {\n    menu.isVisible = true;\n    if (menu.subMenus && menu.subMenus.length > 0) {\n      for (let subMenu of menu.subMenus) {\n        this.setVisible(subMenu);\n      }\n    }\n  }\n  \n  process(menu : Menu){\n    this.onClicked.emit(menu);\n  }\n  \n  translate(item : string) : string{\n    if (!item) return '';\n    return this.translateService.instant(item);\n  } \n\n  //--------------------------------------------------------------------------------------------------------\nupdateFilter(event : any) {\n  let val = event.target.value.toLowerCase();\n  if (!val) val = \"\"; \n  this.processMenu(this.menu, val);\n}\n\nprocessMenu(menu : Menu, val : string) : boolean{\n  if (! menu.subMenus || menu.subMenus.length == 0) {\n    let isVisible = (val == \"\" || menu.name.toUpperCase().indexOf(val.toUpperCase()) !== -1);\n    menu.expanded = (isVisible && val != \"\")\n    menu.isVisible= isVisible;\n    return menu.isVisible;\n  }\n\n  let isVisible = false;\n  for (let subMenu of menu.subMenus) {\n    if (this.processMenu(subMenu, val)) isVisible = true;\n  }\n  menu.expanded = (isVisible && val != \"\")\n  menu.isVisible = isVisible;\n  return menu.isVisible;\n}\n\n}","<div [style.width.em]=\"width\">\n  <div class=\"lean-menu\">\n    <div class =\"menu-header\">\n      <div class=\"menu-title\">        \n        {{translate(menu.name)}}\n      </div>\n      <div class=\"menu-sub-title\">\n        {{translate(menu.desciption)}}\n      </div>\n    </div>\n\n    <lean-input icon=\"search.png\" style=\"font-size: 14px;\"  style=\"font-size: 14px;\"  placeholder=\"Filtre ...\" (keyup)=\"updateFilter($event)\"></lean-input>\n    \n    <div *ngFor=\"let subMenu of menu.subMenus\">\n      <lean-menu-item \n        [menu]      = \"subMenu\"\n        (onClicked) = \"process($event)\">\n      </lean-menu-item>\n      <hr>\n    </div>\n\n  </div>\n</div>\n","import { Component, OnInit, Input } from '@angular/core';\nimport { BsModalRef } from'ngx-bootstrap/modal';\nimport { ToastrService } from 'ngx-toastr';\n\n\n@Component({\n    selector: 'lean-input-modal',\n    templateUrl: './lean-input-modal.component.html',\n    styleUrls: ['./lean-input-modal.component.scss']\n})\nexport class LeanInputModal implements OnInit {\n\n    @Input() title         : string;\n    @Input() message       : string;\n    @Input() dataMandatory : boolean = true;\n    @Input() noDataToEnter : boolean = false;\n    @Input() enteredMessage: string;\n    ok                     : boolean = false;\n\n    constructor(\n      protected toastr    : ToastrService,\n        public bsModalRef : BsModalRef) {\n    }\n\n    ngOnInit() {}\n\n    showValidate() : boolean {\n      if (! this.dataMandatory)  return true;\n      if (! this.enteredMessage) return false;\n      if (! this.enteredMessage.trim()) return false;\n      return true;\n    }\n    showCancel(){\n       return (! this.noDataToEnter);\n    }\n\n    validate() {\n      this.ok = true;\n      this.bsModalRef.hide();\n    }\n\n    cancel() {\n      this.ok = false;\n      this.bsModalRef.hide();\n    }\n}\n","<lean-card \n[allowShrink]       = \"false\"\nheader              = \"{{title}}\"\ntitleColor          = \"darkgray\"\nborderTopColor      = \"#f2f2f2\"\n(onClose)           = \"cancel()\">\n\n<div style=\"color: #2179d6; text-align: center; white-space: pre-wrap;\">{{message}}</div>\n\n<textarea *ngIf=\"! noDataToEnter\" style=\"margin: 2em 0;\" [(ngModel)] = \"enteredMessage\" cols=\"40\" rows=\"5\"></textarea>\n\n<hr>\n\n<div class=\"d-flex justify-content-between w-100\">\n    <div class=\"lean-button-action\" (click)=\"cancel()\">\n        <img src=\"assets/icons/rejected.png\">\n        <button>{{'global.cancel' | translate}}</button>\n    </div>\n\n    <div class=\"lean-button-action\" (click)=\"validate()\" *ngIf=\"showValidate()\">\n        <img src=\"assets/icons/checked.png\">\n        <button>{{'global.confirm' | translate}}</button>\n    </div>\n</div>\n\n\n</lean-card>\n\n\n","import { Component, OnInit, Input } from '@angular/core';\nimport { BsModalRef } from'ngx-bootstrap/modal';\nimport { ToastrService } from 'ngx-toastr';\n\n\n@Component({\n    selector: 'lean-lov-modal',\n    templateUrl: './lean-lov-modal.component.html',\n    styleUrls: ['./lean-lov-modal.component.scss']\n})\nexport class LeanLovModal implements OnInit {\n\n    @Input() title    : string;\n    @Input() message  : string;\n    @Input() multiple : boolean = false;\n \n\n    choices  : any[]=[];\n    @Input() set loc(_loc: string[]) {\n      if (_loc !== null && _loc !== undefined) {\n        for (let c of _loc) {\n          let choice = {value : c, selected : false};\n          this.choices.push(choice);\n        }\n        this.originals = this.choices;\n      }\n    }\n\n\n    index             : number;\n    indexes           : number[]=[];\n\n    constructor(\n      protected toastr    : ToastrService,\n        public bsModalRef : BsModalRef) {\n    }\n\n    ngOnInit() {\n\n    }\n\n\n  //-------------------------------------------------------------------------------------------------------- \n  originals       : any[]=[];\n  updateFilter(event : any) {\n    const val = event.target.value.toLowerCase();\n    const temp = this.originals.filter(function(choice : any) {\n      return choice.value.toLowerCase().indexOf(val) !== -1 ||  !val;\n    });\n    this.choices = temp;\n  }\n\n\n  select(choice : any) {\n    this.index = this.originals.indexOf(choice);\n    if (! this.multiple) {\n      this.bsModalRef.hide();\n    } else {\n      if (! choice.selected) {\n        choice.selected = true;\n        this.indexes.push(this.index);\n      } else {\n        choice.selected = false;\n        let tmp = [];\n        for (let i of this.indexes) if (i !=  this.index ) tmp.push(i);\n        this.indexes = tmp;\n      }\n    }\n  }\n\n  validate(){\n    this.bsModalRef.hide();\n  }\n\n  cancel() {\n    this.index    = null;\n    this.indexes  = null;\n    this.bsModalRef.hide();\n  }\n}\n","<lean-card \n    [allowShrink]       = \"false\"\n    header              = \"{{title}}\"\n    titleColor          = \"darkgray\"\n    borderTopColor      = \"#f2f2f2\"\n    (onClose)           = \"cancel()\">\n\n    <div class=\"d-flex justify-content-between\">\n        <lean-input icon=\"search.png\"  placeholder=\"Filtre ...\" (keyup)=\"updateFilter($event)\"></lean-input>\n        <button  *ngIf=\"multiple\"  class=\"btn btn-primary\" style=\"font-size: 12px; height: fit-content; margin-top: 0.5em;\" (click)=\"validate()\">\n            <img class=\"lean-btn-icon\" src=\"assets/icons/submit.png\">\n            {{'global.validate' | translate}}\n        </button>\n    </div>\n\n\n    <div style=\"display: flex; flex-wrap: wrap\">\n        <ng-container *ngFor=\"let choice of choices\">\n            <div (click)=\"select(choice)\" [ngClass]=\"choice.selected?'choice-selected':'choice'\"> {{choice.value}}</div>\n        </ng-container>\n    </div>\n\n</lean-card>\n\n\n","import { Component, ComponentFactoryResolver, EventEmitter, Injector, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { DatatableComponent } from '@swimlane/ngx-datatable';\nimport { LeanBaseEntity } from '../../models/lean-base.entity';\nimport { LeanFieldModel } from '../../models/lean-field-model';\n\n\n@Component({\n  selector: 'lean-table',\n  templateUrl: './lean-table.component.html',\n  styleUrls: ['./lean-table.component.scss']\n})\nexport class LeanTableComponent implements OnInit {\n\n  @Input() title            : string;\n  @Input() columns          : any[];  \n  @Input() rows             : LeanBaseEntity[]  = [];\n  @Input() columnMode       : string        ='force'; \n  @Input() pageSize         : number        = 10;\n  @Input() footerHeight     : number        = 50;\n  @Input() rowHeight        = '40';\n  @Input() enableRowAdd     : boolean       = false;\n  @Input() enableRowEdit    : boolean       = false;  // editRowByRow\n  @Input() enableRowsEdit   : boolean       = false;  // editAllRows\n  @Input() readOnly         : boolean       = false;\n  //@Input() statusRank       : number;\n  \n\n\n  @Output() onSelect        = new EventEmitter<LeanBaseEntity>();\n  @Output() onSort          = new EventEmitter<string>();\n  @Output() onAddNew        = new EventEmitter<LeanBaseEntity>();\n  @Output() onSave          = new EventEmitter<LeanBaseEntity>();\n  @Output() onRowDataChanged= new EventEmitter<{ eaf : {entity : LeanBaseEntity, field : LeanFieldModel}, data : any}>();\n  @Output() onProcessForeignKey = new EventEmitter();  \n\n\n\n  rowDataChanged(row : LeanBaseEntity, column : LeanFieldModel, data : any){\n    this.onRowDataChanged.emit({ eaf : {entity : row, field : column}, data : data });\n  }\n  \n  processForeignKey(row : LeanBaseEntity, field : LeanFieldModel){\n    this.onProcessForeignKey.emit({entity : row, field : field});\n  }\n\n  @Input() enableExport     : boolean       = false;\n  @Input() totalRowCount    : number = -1;\n  @Input() serverPageNumber : number;\n  @Input() serverPageCount  : number;\n  @Output() onNextPage      = new EventEmitter<any>();\n\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n\n  selectRow(event :  any){\n    if (event.selected) {\n      this.onSelect.emit(event.selected[0]);\n    }\n  }\n\n  sort(event){\n    this.onSort.emit(event.column.code);\n  }\n\n  addNew(){\n    this.goToLastPage();\n    this.onAddNew.emit(null);\n  }\n\n  editable(row : LeanBaseEntity) : boolean {\n    return row.updated || row.inserted;\n  }\n\n  edit(entity : LeanBaseEntity) {\n    entity._original  = { ...entity };\n    entity.updated    = true;\n  }\n  cancelChanges(entity : LeanBaseEntity) {\n    this.rows[this.rows.indexOf(entity)] = entity._original;\n    entity.updated = false;\n    this.rows = [...this.rows];\n  }\n  save(entity : LeanBaseEntity){\n    this.onSave.emit(entity);\n  }\n  \n  //------------------------------------------------------------------------\n  //[eAf]=\"{entity : row, field : column}\" \n\n  getEAF2(row :  LeanBaseEntity, field : LeanFieldModel) : any{ \n    // let statusRank = this.statusRank;\n    // if (statusRank == null) statusRank = 0;\n    // field.required  = (field.mandatoryProgessLevel != null) && (field.mandatoryProgessLevel <= statusRank);\n    // field.readOnly  = (field.freezeProgessLevel    != null) && (field.freezeProgessLevel    <= statusRank);\n    return {\"entity\" : row, \"field\" : field};\n  }\n\n  @ViewChild('table', {static: false}) table: DatatableComponent;\n  @ViewChild('pager', {static: false}) pager;\n  goToLastPage(){\n    if (this.pager) {\n      this.table.offset=Math.ceil(this.pager._count/this.pager._size)-1;\n    }\n  }\n\n //---------------------------------------------------------------------------------------------\n\n exportAsCSV(){\n // this.exportAsCSV2(this.table, this.componentFactoryResolver, this.injector)\n}\n\nexportAsCSV2(dataTable: DatatableComponent, resolver: ComponentFactoryResolver, injector: Injector) {\n    // const columns: TableColumn[] = dataTable.columns || dataTable._internalColumns;\n    // const headers =\n    //     columns\n    //         .map((column: TableColumn) => column.name)\n    //         .filter((e) => e);  // remove column without name (i.e. falsy value)\n\n    // const rows: any[] = dataTable.rows.map((row) => {\n    //     let r = {};\n\n    //     columns.forEach((column) => {\n    //         if (!column.name) { return; }   // ignore column without name\n\n    //         var prop\n    //         var propValue;\n    //         if (column.prop) {\n    //             prop = column.prop.toString();\n    //             propValue = this.getNestedPropertyValue(row, prop);\n    //         }\n\n    //         if (column.cellTemplate) {\n    //             r[column.name] = this.getRenderedTemplateText(column.cellTemplate, propValue, row, resolver, injector);\n    //         } else {\n    //           let value = propValue;\n    //           if (typeof propValue === 'boolean') {\n    //             value = propValue ? 'Yes' : 'No';\n    //           } \n    //           let xx= column as any;\n    //           if (xx.type == \"datetime\"){\n    //             value =  this.datePipe.transform(propValue, 'dd/MM/yyyy HH:mm');\n    //           }\n    //           if (xx.type == \"date\"){\n    //             value =  this.datePipe.transform(propValue, 'dd/MM/yyyy');\n    //           }\n\n    //           r[column.name] = value;\n    //    //         r[column.name] = (typeof propValue === 'boolean') ? (propValue ? 'Yes' : 'No') : propValue;\n    //         }\n    //     });\n\n    //     return r;\n    // });\n\n    // const options = {\n    //     fieldSeparator: ',',\n    //     quoteStrings: '\"',\n    //     decimalseparator: '.',\n    //     showLabels: true,\n    //     headers: headers,\n    //     showTitle: false,\n    //     title: 'Lean Data Export',\n    //     useBom: true\n    // };\n\n    // return new Angular5Csv(rows, 'LeanDataExport', options);\n}\n//---------------------------------------------------------------------------------------------\n\n\n}\n","<div class=\"lean-table-header\">{{title}}</div>\n<ngx-datatable  style=\"text-align: center;\" #table\n    class           = \"material\" \n    [rows]          = \"rows\" \n    [columns]       = \"columns\" \n    [columnMode]    = \"columnMode\" \n    (select)        = \"selectRow($event)\" \n    [selectionType] = \"'single'\"\n    [headerHeight]  = \"50\" \n    [rowHeight]     = \"rowHeight\" \n    [footerHeight]  = \"footerHeight\" \n    [limit]         = \"pageSize\"\n    (sort)          = \"sort($event)\">\n   \n    <ng-container *ngFor=\"let column of columns\">\n        <ngx-datatable-column name=\"{{column.name}}\" [flexGrow]=\"column.flexGrow?column.flexGrow:2\" [sortable]=\"'true'\">\n            <ng-template let-row=\"row\" ngx-datatable-cell-template>\n                   <lean-field \n                            grid                  = \"true\" \n                            [eAf]                 = \"getEAF2(row, column)\" \n                            [forceEditMode]       = \"enableRowsEdit\"\n                            [readOnly]            = \"readOnly\"\n                            (onDataChanged)       = \"rowDataChanged(row, column, $event)\"\n                            (onProcessForeignKey) = \"processForeignKey(row, column)\">\n                    </lean-field>\n            </ng-template>\n        </ngx-datatable-column>\n    </ng-container>\n    <ngx-datatable-column *ngIf=\"enableRowEdit || enableRowsEdit\" name=\"Actions\" sortable=\"false\" #table maxWidth=\"150\"> \n            <ng-template let-row=\"row\" ngx-datatable-cell-template >\n                    <ng-container *ngIf=\"enableRowEdit\">\n                        <img *ngIf=\"(! editable(row)) && ( ! row.deleted)\"      (click)=\"edit(row)\"           style=\"width: 15px; height: 15px; margin-left: 5px;\" src=\"assets/icons/edit.png\">\n                        <img *ngIf=\"(! editable(row)) && ( ! row.deleted)\"      (click)=\"row.deleted = true\"  style=\"width: 15px; height: 15px; margin-left: 5px;\" src=\"assets/icons/trash.png\">\n                        <img *ngIf=\"(  editable(row))\"                          (click)=\"save(row)\"           style=\"width: 15px; height: 15px; margin-left: 5px;\" src=\"assets/icons/save.png\">\n                        <img *ngIf=\"(  editable(row))\"                          (click)=\"cancelChanges(row)\"  style=\"width: 15px; height: 15px; margin-left: 5px;\" src=\"assets/icons/recycle.png\">\n                        <img *ngIf=\"(  row.deleted)\"                            (click)=\"save(row)\"           style=\"width: 15px; height: 15px; margin-left: 5px;\" src=\"assets/icons/trash-red.png\">\n                        <img *ngIf=\"(  row.deleted)\"                            (click)=\"row.deleted = false\" style=\"width: 15px; height: 15px; margin-left: 5px;\" src=\"assets/icons/recycle.png\">\n                    </ng-container>\n\n                    <ng-container *ngIf=\"(enableRowsEdit) \">\n                         <img *ngIf=\"(! row.deleted)\"                           (click)=\"row.deleted = true\"  style=\"width: 15px; height: 15px; margin-left: 5px;\" src=\"assets/icons/trash.png\">\n                         <img *ngIf=\"  row.deleted\"                             (click)=\"row.deleted = false\" style=\"width: 15px; height: 15px; margin-left: 5px;\" src=\"assets/icons/recycle.png\">\n                    </ng-container>\n\n                 <!--   <ng-container *ngIf=\"!(editRowByRow) && !(editAllRows) \"> -->\n                        <img  *ngIf=\"action1Icon\"                                   (click)=\"action1(row)\"  style=\"width: 15px; height: 15px; margin-left: 5px;\" [src]=\"action1Icon\">\n                        <img  *ngIf=\"action2Icon\"                                   (click)=\"action2(row)\"  style=\"width: 15px; height: 15px; margin-left: 5px;\" [src]=\"action2Icon\">\n                        <img  *ngIf=\"action3Icon\"                                   (click)=\"action3(row)\"  style=\"width: 15px; height: 15px; margin-left: 5px;\" [src]=\"action3Icon\">\n                        <img  *ngIf=\"action4Icon\"                                   (click)=\"action4(row)\"  style=\"width: 15px; height: 15px; margin-left: 5px;\" [src]=\"action4Icon\">\n                        <img  *ngIf=\"action5Icon\"                                   (click)=\"action5(row)\"  style=\"width: 15px; height: 15px; margin-left: 5px;\" [src]=\"action5Icon\">\n                 <!--    </ng-container>    -->\n                   \n                 </ng-template>\n    </ngx-datatable-column>\n\n\n    <ngx-datatable-footer>\n        <ng-template \n          ngx-datatable-footer-template\n          let-rowCount      = \"rowCount\"\n          let-pageSize      = \"pageSize\"\n          let-selectedCount = \"selectedCount\"\n          let-curPage       = \"curPage\"\n          let-offset        = \"offset\"\n          let-isVisible     = \"isVisible\">\n\n          <div style=\"display: flex; justify-content: flex-end; width : 100%; \">\n\n              <div style=\"padding-right: 10px;\">\n                  <button  *ngIf=\"enableExport\"  class=\"btn btn-primary saphir-btn\" style=\"font-size: 12px;\" (click)=\"exportAsCSV()\">\n                      <img class=\"lean-btn-icon\" src=\"assets/icons/submit.png\">\n                      Export des données\n                  </button>\n\n                  <!--onNew.observers.length > 0-->\n                  <button  *ngIf=\"onAddNew.observed && enableRowAdd\"  class=\"btn btn-primary saphir-btn\" style=\"font-size: 12px;\" (click)=\"addNew()\">\n                      {{'global.addNew' | translate}}\n                  </button>\n              </div>\n\n              <span *ngIf=\"serverPageNumber != undefined\" style=\"margin-right: 20px;\"> \n                  <div class=\"info-results\">\n                      <span style=\"margin-right: 20px;\"> \n                          <span>{{'global.pages' |  translate}} : {{serverPageNumber + 1}}  / {{serverPageCount}}</span>\n                      </span>\n\n                      <span>{{'global.lines' |  translate}} : </span>\n                      <span *ngIf=\"rows\">{{rows.length}}</span>\n                      <span *ngIf=\"totalRowCount !=-1\"> / {{totalRowCount}} </span>\n                  </div>\n              </span>\n\n              <ul *ngIf=\" (serverPageNumber != undefined)\"class=\"pagination\">\n                  <li>\n                     <div class=\"page-link\" (click)=\"previousPage()\"><span>&lt;</span></div>\n                 </li>\n                 <li>\n                     <div class=\"page-link\" (click)=\"nextPage()\"><span>&gt;</span></div>\n                 </li>\n             </ul>\n              \n\n           <span *ngIf=\" (serverPageNumber == undefined) && rows\" style=\"margin:10px;\">{{'global.lines' |  translate}} : {{rows.length}}</span>\n            <datatable-pager #pager *ngIf=\"serverPageNumber == undefined\" \n                style                = \"max-width: 35%;\"\n                [pagerLeftArrowIcon] = \"'datatable-icon-left'\"\n                [pagerRightArrowIcon]= \"'datatable-icon-right'\"\n                [pagerPreviousIcon]  = \"'datatable-icon-prev'\"\n                [pagerNextIcon]      = \"'datatable-icon-skip'\"\n                [page]               = \"curPage\"\n                [size]               = \"pageSize\"\n                [count]              = \"rowCount\"\n                [hidden]             = \"!((rowCount / pageSize) > 1)\"\n                (change)             = \"table.onFooterPage($event)\">\n            </datatable-pager>\n\n          </div>\n        </ng-template>\n      </ngx-datatable-footer>\n\n</ngx-datatable>\n\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { LeanCardComponent } from './components/lean-card/lean-card.component';\nimport { LeanDateComponent } from './components/lean-date/lean-date.component';\nimport { LeanFieldComponent } from './components/lean-field/lean-field.component';\nimport { LeanInputComponent } from './components/lean-input/lean-input.component';\nimport { LeanPageComponent } from './components/lean-page/lean-page.component';\nimport { LeanPostitKpiComponent } from './components/lean-postit-kpi/lean-postit-kpi.component';\nimport { LeanPostitComponent } from './components/lean-postit/lean-postit.component';\nimport { LeanDataTableComponent } from './components/lean-data-table/lean-data-table.component';\nimport { LeanTreeComponent } from './components/lean-tree/lean-tree.component';\nimport { LeanWidgetComponent } from './components/lean-widget/lean-widget.component';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\nimport { TypeaheadModule } from 'ngx-bootstrap/typeahead';\nimport { LeanMenuComponent } from './components/lean-menu/lean-menu.component';\nimport { LeanInputModal } from './components/lean-input-modal/lean-input-modal.component';\nimport { LeanLovModal } from './components/lean-lov-modal/lean-lov-modal.component';\nimport { NgxDatatableModule } from '@swimlane/ngx-datatable';\nimport { LeanTableComponent } from './components/lean-table/lean-table.component';\nimport { LeanMenuItemComponent } from './components/lean-menu-item/lean-menu-item.component';\n@NgModule({\n  declarations: [\n    LeanFieldComponent,\n    LeanInputComponent,\n    LeanCardComponent,\n    LeanMenuComponent,\n    LeanMenuItemComponent,\n    LeanDateComponent,\n    LeanPageComponent,\n    LeanPostitComponent,\n    LeanPostitKpiComponent,\n    LeanDataTableComponent,\n    LeanTableComponent,\n    LeanTreeComponent,\n    LeanWidgetComponent,\n    LeanInputModal,\n    LeanLovModal\n  ],\n  imports: [\n    CommonModule,\n    FormsModule,\n    NgxDatatableModule,\n    BsDatepickerModule.forRoot(),\n    TypeaheadModule.forRoot(),\n    TranslateModule.forRoot(),\n  ],\n  exports: [\n    LeanFieldComponent,\n    LeanInputComponent,\n    LeanCardComponent,\n    LeanMenuComponent,\n    LeanMenuItemComponent,\n    LeanDateComponent,\n    LeanPageComponent,\n    LeanPostitComponent,\n    LeanPostitKpiComponent,\n    LeanDataTableComponent,\n    LeanTableComponent,\n    LeanTreeComponent,\n    LeanWidgetComponent,\n    LeanInputModal,\n    LeanLovModal,\n  ],\n  entryComponents:[\n    LeanInputModal,\n    LeanLovModal,\n  ]\n})\nexport class LeanAngularVisualLibModule { \n  constructor( \n    protected translate : TranslateService\n  ){\n    translate.setDefaultLang('fr');\n    translate.use('fr');\n  }\n}\n","export  class LeanBaseEntity {\n\n\ninserted        : boolean = false;\nupdated         : boolean = false;\ndeleted         : boolean = false;\n\n//edit      : boolean = false;\nexpand          : boolean = false;\nselected        : boolean = false;\nreadOnly        : boolean = false;\n\n_original    : any;\n\n}\n\n\n/*\n\nprotected static getDate(d: any): Date {\n    if (d == null) {\n        return null;\n    }\n    return new Date(d);\n}\n\n*/","import { LeanBaseEntity as LeanBaseEntity } from \"./lean-base.entity\";\r\n\r\n\r\nexport class LeanFieldModel extends LeanBaseEntity {\r\n  id                    : number;\r\n  code                  : string;\r\n  prop                  : string;\r\n  name                  : string;\r\n  type                  : string;\r\n  rank                  : number;\r\n  bindLabel             : string;        \r\n  bindKey               : string;  \r\n  noNavigation          : boolean = false;\r\n  //mandatoryProgessLevel : number;\r\n  //freezeProgessLevel    : number;\r\n  insertOnly            : boolean = false;\r\n  required              : boolean = false;\r\n  pipe                  : any;\r\n  lov                   : any[];\r\n\r\n  width                 : number;\r\n  flexGrow              : number\r\n  format                : string;\r\n  unit                  : string;\r\n\r\n\r\n  constructor(prop? : string, name? : string, type? : string, width? : number) {\r\n    super();\r\n    this.prop = prop\r\n    this.name = name?name:prop;\r\n    this.type = type?type:\"text\";\r\n    this.width = width;\r\n  }\r\n\r\n}","\r\nexport class Menu {\r\n\r\n  id            : number;\r\n  code          : string;\r\n  name          : string;\r\n  desciption    : string;\r\n\r\n  app           : any;\r\n  parent        : Menu;\r\n\tformCategory  : any;\r\n\ticonFileName  : string;\r\n\ticon          : string;\r\n  rank          : number;\r\n  subMenus      : Menu[];\r\n  form          : any;\r\n \r\n  expanded      : boolean;\r\n  route         : string;\r\n\r\n  // Transient\r\n  isVisible     : boolean;\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1","i1.LeanUtilsService","i3","i4","i5","i2.LeanPostitComponent","i2.LeanFieldComponent","i3.LeanInputComponent","i4.LeanMenuItemComponent","i5.LeanCardComponent","i6","i4.LeanInputComponent","i3.LeanFieldComponent"],"mappings":"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"}