!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/forms"),require("@angular/common"),require("rxjs"),require("rxjs/operators"),require("exc-core-v2"),require("exc-rest-v2"),require("@angular/cdk/drag-drop")):"function"==typeof define&&define.amd?define("exc-controls-v2",["exports","@angular/core","@angular/forms","@angular/common","rxjs","rxjs/operators","exc-core-v2","exc-rest-v2","@angular/cdk/drag-drop"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["exc-controls-v2"]={},e.ng.core,e.ng.forms,e.ng.common,e.rxjs,e.rxjs.operators,e.excCoreV2,e.excRestV2,e.ng.cdk.dragDrop)}(this,(function(e,t,n,i,o,r,a,s,l){"use strict";var c=function(){};c.ɵprov=t.ɵɵdefineInjectable({factory:function(){return new c},token:c,providedIn:"root"}),c.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],c.ctorParameters=function(){return[]};var p=function(){function e(){this.tiny=!1,this.type="text",this.valueChange=new t.EventEmitter,this.id=Math.random().toString(36).substring(2),this._value=null,this.onChange=function(){},this.onTouched=function(){}}return Object.defineProperty(e.prototype,"value",{get:function(){return this._value},set:function(e){this._value=e,this.onChange(e),this.onTouched(e)},enumerable:!1,configurable:!0}),e.prototype.registerOnChange=function(e){this.onChange=e},e.prototype.registerOnTouched=function(e){this.onTouched=e},e.prototype.setDisabledState=function(e){},e.prototype.writeValue=function(e){this._value=e},e}();p.decorators=[{type:t.Component,args:[{selector:"exg-checkbox",template:'<div [ngClass]="{\'md-check\': !tiny, \'md-check-tiny\': tiny}" >\n  <input type="checkbox" [id]="id" [(ngModel)]="value" [disabled]="disabled">\n  <label [for]="id">{{caption}}</label>\n</div>\n',providers:[{provide:n.NG_VALUE_ACCESSOR,useExisting:p,multi:!0}]}]}],p.ctorParameters=function(){return[]},p.propDecorators={tiny:[{type:t.Input}],type:[{type:t.Input}],caption:[{type:t.Input}],disabled:[{type:t.Input}],valueChange:[{type:t.Output}]};var u=function(){function e(){this.isOpen=!1,this.componentName="",this.onAction=new t.EventEmitter,this.onClose=new t.EventEmitter,this.change=new t.EventEmitter,this.initialize=new t.EventEmitter,this.update=new t.EventEmitter,this.toggled=new t.EventEmitter,this.lastToastId=null,this.forceToggleEvent=!1}return e.prototype.show=function(e,t,n){var i=this;return void 0===n&&(n=!1),this.forceToggleEvent=n,this.isOpen?o.of():(this.componentName=e,this.initialize.emit(this.componentName),this.update.emit(t),this.isOpen=!0,this.change.emit(this.isOpen),new o.Observable((function(e){i.onAction.subscribe((function(t){e.next(t),e.complete(),i.isOpen=!1,i.change.emit(i.isOpen)})),i.onClose.subscribe((function(t){e.next(void 0),e.complete(),i.isOpen=!1,i.change.emit(i.isOpen)}))})).pipe(r.take(1)))},e.prototype.action=function(e){this.onAction.emit(e)},e.prototype.close=function(){this.onClose.emit()},e.prototype.showSimple=function(e,t,n,i,o,r,a){void 0===a&&(a=!1);var s={title:e,message:t,btnOk:n,btnCancel:i,btnOkCaption:o,btnCancelCaption:r};return this.show("ExgModalSimpleComponent",s,a)},e.prototype.showAlert=function(e,t,n,i,o){var r={message:e,btnOk:t,btnCancel:n,btnOkCaption:i,btnCancelCaption:o};return this.show("ExgModalSimpleComponent",r)},e.prototype.lastToastRemove=function(e){if(this.lastToastId){var t=document.getElementById("exc-tst-"+this.lastToastId);t&&t.remove()}this.lastToastId=e},e.prototype.showToast=function(e,t,n){var i=3e3;null!=e&&(i+=1e3*Math.ceil(e.length/80)),i=Math.min(i,1e4);var o=Math.random().toString(36).substring(2);this.lastToastRemove(o);var r='<div class="'+t+' animate" id="exc-tst-'+o+'"><i class="'+n+'"></i>'+e+"</div>";document.body.insertAdjacentHTML("afterbegin",r),setTimeout((function(){var e=document.getElementById("exc-tst-"+o);e&&e.remove()}),i)},e.prototype.showToastCommit=function(e,t,n,i,o){var r=Math.random().toString(36).substring(2);this.lastToastRemove(r);var a='<div class="'+t+'" id="exc-tst-'+r+'"><i class="'+i+'"></i>'+e+'<button id="exc-tst-btn-'+r+'">'+n+"</button></div>";document.body.insertAdjacentHTML("afterbegin",a);var s=document.getElementById("exc-tst-"+r),l=document.getElementById("exc-tst-btn-"+r);if(null!==s&&null!==l){var c=function(){o&&o(),l.removeEventListener("click",c),s.remove()};l.addEventListener("click",c)}},e}();u.ɵprov=t.ɵɵdefineInjectable({factory:function(){return new u},token:u,providedIn:"root"}),u.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],u.propDecorators={change:[{type:t.Output}]};var d=function(){function e(e){this.resolver=e,this.Components=[]}return e.prototype.GetFactory=function(e){return this.resolver.resolveComponentFactory(this.Components.find((function(t){return t.name===e})))},e}();d.ɵprov=t.ɵɵdefineInjectable({factory:function(){return new d(t.ɵɵinject(t.ComponentFactoryResolver))},token:d,providedIn:"root"}),d.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],d.ctorParameters=function(){return[{type:t.ComponentFactoryResolver}]};var h=function(){function e(e,t,n){this.popUpService=e,this.injector=t,this.app=n,this.isOpen=!1,this.componentRef=null}return e.prototype.loadComponent=function(e){this.entry.clear(),this.componentRef=this.entry.createComponent(this.app.GetFactory(e),void 0,this.injector)},e.prototype.ngOnInit=function(){var e=this;this.scChange=this.popUpService.change.subscribe((function(t){e.isOpen=t,!e.isOpen&&e.componentRef&&(e.componentRef.destroy(),e.componentRef=null),e.popUpService.forceToggleEvent&&(e.popUpService.toggled.emit(),e.popUpService.forceToggleEvent=!1)})),this.scInitialize=this.popUpService.initialize.subscribe((function(t){e.loadComponent(t)})),this.scUpdate=this.popUpService.update.subscribe((function(t){e.componentRef&&(e.componentRef.instance.data=t)}))},e.prototype.ngAfterViewInit=function(){},e.prototype.ngOnDestroy=function(){this.scUpdate instanceof o.Subscription&&this.scUpdate.unsubscribe(),this.scChange instanceof o.Subscription&&this.scChange.unsubscribe(),this.scInitialize instanceof o.Subscription&&this.scInitialize.unsubscribe()},e}();h.decorators=[{type:t.Component,args:[{selector:"exg-modal",template:"<template #vc></template>\n",styles:[":host{background-color:var(--c-dark-m3);bottom:0;box-sizing:border-box;display:none;left:0;position:absolute;right:0;top:0;z-index:1000}:host>div{background-color:var(--c-neutral-400);border-radius:.25rem;box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12);max-height:calc(100vh - 4rem);max-width:calc(100vw - 4rem);overflow:auto;padding:1.5rem}:host.is-open{display:grid;place-items:center}"]}]}],h.ctorParameters=function(){return[{type:u},{type:t.Injector},{type:d}]},h.propDecorators={isOpen:[{type:t.HostBinding,args:["class.is-open"]}],entry:[{type:t.ViewChild,args:["vc",{read:t.ViewContainerRef}]}]};var g=function(){function e(e){this.popUpService=e}return e.prototype.ngOnInit=function(){},e.prototype.clickedOK=function(){this.popUpService.action(!0)},e.prototype.clickedCancel=function(){this.popUpService.action(!1)},e}();g.decorators=[{type:t.Component,args:[{selector:"exg-modal-simple",template:'<div class="modal-body">\n  <div class="layout-auto-1-auto">\n    <h5 *ngIf="data.title" class="modal-header">{{data.title}}</h5>\n    <div [ngClass]="{\'modal-alert\': !data.title,\'modal-message\': data.title}">\n      {{data.message}}\n    </div>\n    <div class="spawn-modal-actions">\n      <button class="md-btn" (click)="clickedOK()" *ngIf="data.btnOk">{{data.btnOkCaption}}</button>\n      <button class="md-btn" (click)="clickedCancel()" *ngIf="data.btnCancel">{{data.btnCancelCaption}}</button>\n    </div>\n  </div>\n</div>\n'}]}],g.ctorParameters=function(){return[{type:u}]},g.propDecorators={data:[{type:t.Input}]};var f=function(){function e(e,t){this.widgets=e,this.injector=t,this._name="",this._data={}}return Object.defineProperty(e.prototype,"name",{get:function(){return this._name},set:function(e){this.name!==e&&(this._name=e,this.setComponent())},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"data",{get:function(){return this._data},set:function(e){this._data=e,this.componentinstance&&(this.componentinstance.data=this._data)},enumerable:!1,configurable:!0}),e.prototype.ngOnInit=function(){this.setComponent()},e.prototype.setComponent=function(){var e=this;this._name.length>0&&setTimeout((function(){e.entry.clear(),e.componentinstance=e.entry.createComponent(e.widgets.GetFactory(e._name),void 0,e.injector).instance,e.componentinstance.data=e._data}),10)},e}();f.decorators=[{type:t.Component,args:[{selector:"exg-widget",template:"<template #vc></template>\n"}]}],f.ctorParameters=function(){return[{type:d},{type:t.Injector}]},f.propDecorators={entry:[{type:t.ViewChild,args:["vc",{read:t.ViewContainerRef}]}],name:[{type:t.Input}],data:[{type:t.Input}]};var m=function(){function e(){this.valueChange=new t.EventEmitter,this.id=Math.random().toString(36).substring(2),this._value=null,this.onChange=function(){},this.onTouched=function(){}}return Object.defineProperty(e.prototype,"value",{get:function(){return this._value},set:function(e){this._value=e,this.onChange(e),this.onTouched(e)},enumerable:!1,configurable:!0}),e.prototype.registerOnChange=function(e){this.onChange=e},e.prototype.registerOnTouched=function(e){this.onTouched=e},e.prototype.setDisabledState=function(e){},e.prototype.writeValue=function(e){this._value=e},e.prototype.change=function(e){this.valueChange.emit(e)},e}();m.decorators=[{type:t.Component,args:[{selector:"exg-switch",template:'<div class="md-switch">\n  <input type="checkbox" [id]="id" [(ngModel)]="value" [disabled]="disabled" >\n  <label [for]="id">{{caption}}</label>\n</div>\n',providers:[{provide:n.NG_VALUE_ACCESSOR,useExisting:m,multi:!0}]}]}],m.ctorParameters=function(){return[]},m.propDecorators={caption:[{type:t.Input}],disabled:[{type:t.Input}],valueChange:[{type:t.Output}]};var v=function(){function e(){this.type="text",this.required=!1,this.pattern="",this.min=0,this.max=2048,this.minlength=0,this.maxlength=2048,this.step=1,this.hintText="",this.isEpoch=!1,this._value=null,this.onChange=function(){},this.onTouched=function(){}}return Object.defineProperty(e.prototype,"value",{get:function(){return this._value},set:function(e){this.onChange(this.isEpoch?Date.parse(e):e),this.onTouched(this.isEpoch?Date.parse(e):e),this._value=e},enumerable:!1,configurable:!0}),e.prototype.registerOnChange=function(e){this.onChange=e},e.prototype.registerOnTouched=function(e){this.onTouched=e},e.prototype.setDisabledState=function(e){},e.prototype.writeValue=function(e){if("datetime-local"===this.type||"date"===this.type)if(this.isEpoch&&null!=e){var t=new Date(e).setMinutes(new Date(e).getMinutes()-new Date(e).getTimezoneOffset());this._value=new Date(t).toISOString().slice(0,"date"===this.type?10:19)}else this._value=e;else this._value=e},e}();v.decorators=[{type:t.Component,args:[{selector:"exg-input",template:'<div class="md-input">\n  <input [type]="type"\n         [disabled]="disabled"\n         [placeholder]="caption"\n         [(ngModel)]="value"\n         [pattern]="pattern"\n         [required]="required"\n         [min]="min"\n         [max]="max"\n         [minlength]="minlength"\n         [maxlength]="maxlength"\n         [step] ="step"\n         autocomplete="off"\n         #ctrl\n   >\n  <label [ngClass]="{\'disabled\': ctrl.disabled}">{{caption}}</label>\n  <span>{{hintText}}</span>\n</div>\n\n',providers:[{provide:n.NG_VALUE_ACCESSOR,useExisting:v,multi:!0}]}]}],v.ctorParameters=function(){return[]},v.propDecorators={type:[{type:t.Input}],caption:[{type:t.Input}],disabled:[{type:t.Input}],required:[{type:t.Input}],pattern:[{type:t.Input}],min:[{type:t.Input}],max:[{type:t.Input}],minlength:[{type:t.Input}],maxlength:[{type:t.Input}],step:[{type:t.Input}],hintText:[{type:t.Input}],isEpoch:[{type:t.Input}]};var y=function(){function e(){this.list=[],this.closed=!1,this._value=null,this.onChange=function(){},this.onTouched=function(){}}return Object.defineProperty(e.prototype,"value",{get:function(){return this._value},set:function(e){this._value=e,this.list[e]||(this._value=null),this.onChange(this._value),this.onTouched(this._value)},enumerable:!1,configurable:!0}),e.prototype.registerOnChange=function(e){this.onChange=e},e.prototype.registerOnTouched=function(e){this.onTouched=e},e.prototype.setDisabledState=function(e){},e.prototype.writeValue=function(e){this._value=e},Object.defineProperty(e.prototype,"displayValue",{get:function(){return this.listdisplay?this.list[this.value]?this.list[this.value][this.listdisplay]:null:this.list[this.value]?this.list[this.value]:null},enumerable:!1,configurable:!0}),e.prototype.displayItem=function(e){return this.listdisplay?e?e[this.listdisplay]:"-":e||"-"},e.prototype.setFocus=function(){this.list[this.value]&&this.selectInput.nativeElement.focus()},e.prototype.mouseDown=function(e){this.closed=!this.closed},e.prototype.change=function(e){this.value=e},e}();y.decorators=[{type:t.Component,args:[{selector:"exg-select",template:'<div class="md-select" [ngClass]="{\'closed\': closed}">\n  <input #selectInput type="text"\n         readonly = "readonly"\n         [placeholder] = "caption"\n         (focus) = "closed=false"\n         (mousedown) = "mouseDown($event)"\n         [ngModel] = "displayValue"\n         [disabled]="disabled"\n  >\n\n  <label>{{caption}}</label>\n  <i class="fa fa-fw fa-chevron-down"  tabindex="-1"></i>\n  <ul class="md-select-values" tabindex="-1">\n    <li *ngFor="let item of list;index as i" (focus)="change(i);" tabindex="0" [ngClass]="{\'active\': value===i}" (click)="setFocus();closed=true">{{displayItem(item)}}</li>\n  </ul>\n</div>\n',providers:[{provide:n.NG_VALUE_ACCESSOR,useExisting:y,multi:!0}]}]}],y.ctorParameters=function(){return[]},y.propDecorators={selectInput:[{type:t.ViewChild,args:["selectInput"]}],caption:[{type:t.Input}],disabled:[{type:t.Input}],list:[{type:t.Input}],listdisplay:[{type:t.Input}]};var b=function(){function e(){this.list=[],this.valueChange=new t.EventEmitter,this.id=Math.random().toString(36).substring(2)}return e.prototype.ngOnInit=function(){},e.prototype.displayItem=function(e){return this.listdisplay?e?e[this.listdisplay]:null:e||null},e.prototype.change=function(e){this.value=e,this.valueChange.emit(e)},e}();b.decorators=[{type:t.Component,args:[{selector:"exg-option",template:'<h3 *ngIf="caption && caption.length>0">{{caption}}</h3>\n<ng-container *ngFor="let item of list;index as i" >\n  <div class="md-option" tabindex="0" *ngIf="item">\n    <input type="radio" [id]= "id + \'-\' + i" [name]="id" [disabled]="disabled" [value]="i" [ngModel]="value" (ngModelChange)="change(i)" >\n    <label [for]="id + \'-\' + i">{{displayItem(item)}}</label>\n  </div>\n</ng-container>\n'}]}],b.ctorParameters=function(){return[]},b.propDecorators={disabled:[{type:t.Input}],list:[{type:t.Input}],listdisplay:[{type:t.Input}],caption:[{type:t.Input}],value:[{type:t.Input}],valueChange:[{type:t.Output}]};var x=function(){function e(){this.valueChange=new t.EventEmitter,this.id=Math.random().toString(36).substring(2)}return e.prototype.ngOnInit=function(){},e.prototype.change=function(e){this.value=e,this.valueChange.emit(e)},e}();x.decorators=[{type:t.Component,args:[{selector:"exg-opt",template:'<div class="md-option" tabindex="0">\n  <input type="radio" [id]= "id"  [name]="name" [disabled]="disabled" [value]="optValue" [checked]="value==optValue" (change)="change(optValue)" >\n  <label [for]="id">{{caption}}</label>\n</div>\n\n'}]}],x.ctorParameters=function(){return[]},x.propDecorators={disabled:[{type:t.Input}],caption:[{type:t.Input}],name:[{type:t.Input}],optValue:[{type:t.Input}],value:[{type:t.Input}],valueChange:[{type:t.Output}]};var w=function(){function e(e){this.y="0px",this.x="0px",this.visibility="hidden",this.opacity="0",this.width="min-content",this.closeAlways=!0,this.closeOnButtonOnly=!1,this.host=null,this.flip=!1,this.host=e.nativeElement}return e.prototype.open=function(e){var t=this.host.offsetWidth;this.x="min("+e.pageX+"px, calc(100vw - "+t+"px - 1rem))",this.y=e.pageY+"px",this.opacity="1",this.visibility="visible",this.flip=!0},e.prototype.openUnderLeft=function(e){var t=this.host.offsetWidth;this.x="min("+(e.pageX-e.offsetX)+"px, calc(100vw - "+t+"px - 1rem))",this.y=e.pageY-e.offsetY+e.target.clientHeight+4+"px",this.opacity="1",this.visibility="visible",this.flip=!0},e.prototype.openUnderRight=function(e){var t=e.target.getBoundingClientRect(),n=this.host.offsetWidth;this.x="max("+(e.pageX-e.offsetX+t.width-n)+"px, 1rem)",this.y=e.pageY-e.offsetY+e.target.clientHeight+4+"px",this.opacity="1",this.visibility="visible",this.flip=!0},e.prototype.openUnderCenter=function(e){var t=e.target.getBoundingClientRect(),n=this.host.offsetWidth;this.x="min(max("+(e.pageX-e.offsetX+(t.width-n)/2)+"px, 1rem),calc(100vw - "+n+"px - 1rem))",this.y=e.pageY-e.offsetY+e.target.clientHeight+4+"px",this.opacity="1",this.visibility="visible",this.flip=!0},e.prototype.openAboveCenter=function(e){var t=e.target.getBoundingClientRect(),n=this.host.getBoundingClientRect();this.x="min(max("+(e.pageX-e.offsetX+(t.width-n.width)/2)+"px, 1rem),calc(100vw - "+n.width+"px - 1rem))",this.y="max("+(e.pageY-e.offsetY-4-n.height)+"px, 1rem)",this.opacity="1",this.visibility="visible",this.flip=!0},e.prototype.close=function(){var e=this;this.opacity="0",setTimeout((function(){e.visibility="hidden"}),300)},e.prototype.onDocumentClick=function(e){if(this.flip)this.flip=!1;else{var t=this.host.getBoundingClientRect(),n=e.clientX,i=e.clientY,o=!0;(n<t.left||n>=t.right||i<t.top||i>=t.bottom)&&(o=!1),"visible"!==this.visibility||o&&!this.closeAlways||this.closeOnButtonOnly||this.close()}},e.prototype.ngOnInit=function(){},e}();w.decorators=[{type:t.Component,args:[{selector:"exg-popup",template:"<ng-content></ng-content>\n",styles:[":host{background-color:var(--c-neutral);border-radius:.5rem;box-shadow:var(--shadow-3);box-sizing:border-box;position:fixed;transition:.3s cubic-bezier(.4,0,.2,1);transition-property:opacity;z-index:200}"]}]}],w.ctorParameters=function(){return[{type:t.ElementRef}]},w.propDecorators={y:[{type:t.HostBinding,args:["style.top"]}],x:[{type:t.HostBinding,args:["style.left"]}],visibility:[{type:t.HostBinding,args:["style.visibility"]}],opacity:[{type:t.HostBinding,args:["style.opacity"]}],width:[{type:t.Input},{type:t.HostBinding,args:["style.width"]}],closeAlways:[{type:t.Input}],closeOnButtonOnly:[{type:t.Input}],onDocumentClick:[{type:t.HostListener,args:["document:click",["$event"]]}]};var C=function(){function e(){this.containerClass="grid cols-12",this.allowMultiSelection=!1,this.allowSingleSelection=!1,this.selectSource=[],this.selectSourceRows=void 0,this.selectKey=null,this.displayStateMessage="Es wurden keine Daten gefunden!",this.displayState=0,this.RowChange=new t.EventEmitter,this.ItemSelect=new t.EventEmitter,this.RowDblClick=new t.EventEmitter,this._rowSource=[],this._selectState=!1,this.clickrule={prevent:!1,timer:0},this._selectedRow=-1,this._tapped=!1}return Object.defineProperty(e.prototype,"rowSource",{get:function(){return this._rowSource},set:function(e){this._rowSource=e,this._selectState=!1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"selectedRow",{get:function(){return this._selectedRow},set:function(e){var t=this;this.clickrule.prevent=!1,this.clickrule.timer=setTimeout((function(){t.clickrule.prevent||(t._selectedRow=e,t.RowChange.emit(e))}),250)},enumerable:!1,configurable:!0}),e.prototype.onTouchStart=function(e,t){var n=this;this._tapped?(clearTimeout(this._tapped),this._tapped=!1,this.RowDblClick.emit(t)):this._tapped=setTimeout((function(){n._tapped=!1}),250)},e.prototype.onDblClick=function(e){this._tapped||(this.clickrule.prevent=!0,clearTimeout(this.clickrule.timer),this.RowDblClick.emit(e))},e.prototype.ngOnInit=function(){},e.prototype.select=function(e,t){var n=this.rowSource[e][this.selectKey];this.doSelect(n,t),this.ItemSelect.emit(this.selectSource.length)},e.prototype.selectClick=function(e,t){e.preventDefault(),e.stopPropagation(),this.select(t,!this.isSelected(t))},e.prototype.doSelect=function(e,t){var n,i=this,o=this.selectSource.indexOf(e);!0===t&&-1===o&&(this.selectSource.push(e),this.selectSourceRows&&this.selectSourceRows.push(this.rowSource.find((function(t){return t[i.selectKey]===e})))),!1===t&&o>-1&&(this.selectSource.splice(o,1),this.selectSourceRows&&(null===(n=this.selectSourceRows)||void 0===n||n.splice(o,1)))},e.prototype.isSelected=function(e){return this.selectSource.indexOf(this.rowSource[e][this.selectKey])>-1},e.prototype.selectAll=function(e){var t=this;this._selectState=e,this.rowSource.forEach((function(n){t.doSelect(n[t.selectKey],e)})),this.ItemSelect.emit(this.selectSource.length)},e}();C.decorators=[{type:t.Component,args:[{selector:"exg-data-table",template:'\n\n  <div class="grid-table">\n\n    <div class="grid-table-header" [ngClass]="{\'grid-auto-1\': allowMultiSelection}">\n      <ng-container *ngIf="allowMultiSelection">\n          \x3c!--<exg-checkbox tiny="true" (valueChange)="selectAll($event)"></exg-checkbox>--\x3e\n          <div class="selectall"><i class="md-btn-circular far fa-check-double" (click)="selectAll(!_selectState)"></i></div>\n      </ng-container>\n      <div [class]="containerClass">\n        <ng-container *ngTemplateOutlet="headerTemplate"></ng-container>\n      </div>\n    </div>\n\n    <div class="grid-table-body"  *ngIf="displayState==0">\n      <ng-container *ngFor="let row of rowSource; index as i">\n        <div class="grid-table-row grid" [ngClass]="{\'grid-auto-1\': allowMultiSelection, \'active\': selectedRow==i && allowSingleSelection}" (click)="selectedRow=i" (dblclick)="onDblClick(i)" (touchstart)="onTouchStart($event,i)">\n          <ng-container *ngIf="allowMultiSelection"><exg-checkbox tiny="true" [ngModel]="isSelected(i)" (click)="selectClick($event,i)"></exg-checkbox> </ng-container>\n          <div [class]="containerClass">\n            <ng-container *ngTemplateOutlet="rowTemplate; context: {$implicit: row}"></ng-container>\n          </div>\n        </div>\n      </ng-container>\n    </div>\n\n    <div class="content" *ngIf="displayState==1"><div class="splash loading"><div class="spinner"><div></div><div></div><div></div><div></div></div></div></div>\n    <div class="content" *ngIf="displayState==2"><div class="splash empty"><p>{{displayStateMessage}}</p></div></div>\n\n  </div>\n\n'}]}],C.ctorParameters=function(){return[]},C.propDecorators={containerClass:[{type:t.Input}],allowMultiSelection:[{type:t.Input}],allowSingleSelection:[{type:t.Input}],selectSource:[{type:t.Input}],selectSourceRows:[{type:t.Input}],selectKey:[{type:t.Input}],displayStateMessage:[{type:t.Input}],displayState:[{type:t.Input}],headerTemplate:[{type:t.ContentChild,args:["headerTemplate"]}],rowTemplate:[{type:t.ContentChild,args:["rowTemplate"]}],RowChange:[{type:t.Output}],ItemSelect:[{type:t.Output}],RowDblClick:[{type:t.Output}],rowSource:[{type:t.Input}]};
/*! *****************************************************************************
    Copyright (c) Microsoft Corporation.

    Permission to use, copy, modify, and/or distribute this software for any
    purpose with or without fee is hereby granted.

    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
    PERFORMANCE OF THIS SOFTWARE.
    ***************************************************************************** */
var S=function(e,t){return(S=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)};function I(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}S(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}Object.create;Object.create;var D=function(e){function n(){var n=e.call(this)||this;return n.pagingSource={pagingPage:0,pagingPageSize:0,pagingTotalPages:0,pagingTotalRows:0,pagingStartRow:0,pagingEndRow:0},n.pagertext="von",n.PageChange=new t.EventEmitter,n}return I(n,e),n.prototype.ngOnInit=function(){},n.prototype.onPageChange=function(e){this.pagingSource&&e>=1&&e<=this.pagingSource.pagingTotalPages&&this.PageChange.emit(e)},n.prototype.openMenu=function(e){this.menu.openAboveCenter(e)},n.prototype.getPages=function(){return this.pagingSource?new Array(this.pagingSource.pagingTotalPages):[]},n}(a.ExcTranslation);D.id="popup-"+Math.random().toString(36).substring(2),D.decorators=[{type:t.Component,args:[{selector:"exg-pager",template:'<div class="pager" style="display: grid;grid-template-columns: 1fr auto 1fr;">\n  <div class="spawn" style="margin-left: 0.75rem;">\n    <ng-container *ngTemplateOutlet="leftTemplate"></ng-container>\n  </div>\n  <div>\n    <i *ngIf="pagingSource.pagingTotalPages>1" [class.disabled]="pagingSource.pagingPage === 1" class="md-btn-circular fas fa-chevron-double-left" (click)="onPageChange(1)"></i>\n    <i *ngIf="pagingSource.pagingTotalPages>1" [class.disabled]="pagingSource.pagingPage === 1" class="md-btn-circular fas fa-chevron-left" (click)="onPageChange(pagingSource?.pagingPage-1)"></i>\n    <span (click)="openMenu($event)">{{pagingSource?.pagingStartRow}}-{{pagingSource?.pagingEndRow}} {{getResource(\'PagerTextOf\')}} {{pagingSource?.pagingTotalRows}}</span>\n    <i *ngIf="pagingSource.pagingTotalPages>1" [class.disabled]="pagingSource.pagingPage === pagingSource.pagingTotalPages" class="md-btn-circular fas fa-chevron-right" (click)="onPageChange(pagingSource?.pagingPage+1)"></i>\n    <i *ngIf="pagingSource.pagingTotalPages>1" [class.disabled]="pagingSource.pagingPage === pagingSource.pagingTotalPages" class="md-btn-circular fas fa-chevron-double-right" (click)="onPageChange(pagingSource?.pagingTotalPages)"></i>\n  </div>\n  <div class="spawn-reverse" style="margin-right: 0.75rem;">\n    <ng-container *ngTemplateOutlet="rightTemplate"></ng-container>\n  </div>\n</div>\n<exg-popup #pager_popup>\n  <ng-container *ngTemplateOutlet="popupTemplate"></ng-container>\n  <ng-container *ngIf="!popupTemplate">\n    <h3 style="text-align: center"><i class="far fa-book-open"></i></h3>\n    <div class="pane-scroll-overlay width-100 height-200">\n        <div class="pager-item" *ngFor="let i of getPages();index as x" (click)="onPageChange(x+1)">{{x+1}}</div>\n    </div>\n  </ng-container>\n</exg-popup>\n'}]}],D.ctorParameters=function(){return[]},D.propDecorators={menu:[{type:t.ViewChild,args:["pager_popup",{read:w}]}],popupTemplate:[{type:t.ContentChild,args:["popupTemplate"]}],leftTemplate:[{type:t.ContentChild,args:["leftTemplate"]}],rightTemplate:[{type:t.ContentChild,args:["rightTemplate"]}],pagingSource:[{type:t.Input}],pagertext:[{type:t.Input}],PageChange:[{type:t.Output}]};var E=function(){function e(){this.searchValue="",this.placeholder="Suche",this.Search=new t.EventEmitter}return e.prototype.ngOnInit=function(){},e.prototype.setFocus=function(){this.searchInput.nativeElement.focus()},e.prototype.resetSearch=function(){this.searchValue="",this.Search.emit(this.searchValue),this.setFocus()},e.prototype.onKeyDown=function(e){"Enter"===e.key&&this.Search.emit(this.searchValue)},e}();E.decorators=[{type:t.Component,args:[{selector:"exg-search-bar",template:'<ng-container *ngTemplateOutlet="leftTemplate"></ng-container>\n<div class="search-input-bar">\n  <input #searchInput class="search-input" type="text"  (keydown)="onKeyDown($event)" placeholder="{{placeholder}}" [(ngModel)]="searchValue"/>\n  <i class="search-left fas fa-search" tabindex="-1"></i>\n  <i class="search-reset fas fa-times" tabindex="-1" *ngIf="searchValue && searchValue != \'\'" (click)="resetSearch()"></i>\n</div>\n<ng-container *ngTemplateOutlet="rightTemplate"></ng-container>\n\n'}]}],E.ctorParameters=function(){return[]},E.propDecorators={searchInput:[{type:t.ViewChild,args:["searchInput"]}],placeholder:[{type:t.Input}],leftTemplate:[{type:t.ContentChild,args:["leftTemplate"]}],rightTemplate:[{type:t.ContentChild,args:["rightTemplate"]}],Search:[{type:t.Output}]};var k=function(){function e(){this.headerText="grid cols-12",this.allowMultiSelection=!1,this.allowSingleSelection=!1,this.selectSource=[],this.selectSourceRows=void 0,this.selectKey=null,this.displayStateMessage="Es wurden keine Daten gefunden!",this.displayState=0,this.RowChange=new t.EventEmitter,this.ItemSelect=new t.EventEmitter,this.RowDblClick=new t.EventEmitter,this._selectState=!1,this._rowSource=[],this.clickrule={prevent:!1,timer:0},this._selectedRow=-1,this._tapped=!1}return Object.defineProperty(e.prototype,"rowSource",{get:function(){return this._rowSource},set:function(e){this._rowSource=e,this._selectState=!1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"selectedRow",{get:function(){return this._selectedRow},set:function(e){var t=this;this.clickrule.prevent=!1,this.clickrule.timer=setTimeout((function(){t.clickrule.prevent||(t._selectedRow=e,t.RowChange.emit(e))}),250)},enumerable:!1,configurable:!0}),e.prototype.onTouchStart=function(e,t){var n=this;this._tapped?(clearTimeout(this._tapped),this._tapped=!1,this.RowDblClick.emit(t)):this._tapped=setTimeout((function(){n._tapped=!1}),250)},e.prototype.onDblClick=function(e){this._tapped||(this.clickrule.prevent=!0,clearTimeout(this.clickrule.timer),this.RowDblClick.emit(e))},e.prototype.ngOnInit=function(){},e.prototype.select=function(e,t){var n=this.rowSource[e][this.selectKey];this.doSelect(n,t),this.ItemSelect.emit(this.selectSource.length)},e.prototype.selectClick=function(e,t){e.preventDefault(),e.stopPropagation(),this.select(t,!this.isSelected(t))},e.prototype.doSelect=function(e,t){var n,i=this,o=this.selectSource.indexOf(e);!0===t&&-1===o&&(this.selectSource.push(e),this.selectSourceRows&&this.selectSourceRows.push(this.rowSource.find((function(t){return t[i.selectKey]===e})))),!1===t&&o>-1&&(this.selectSource.splice(o,1),this.selectSourceRows&&(null===(n=this.selectSourceRows)||void 0===n||n.splice(o,1)))},e.prototype.isSelected=function(e){return this.selectSource.indexOf(this.rowSource[e][this.selectKey])>-1},e.prototype.selectAll=function(e){var t=this;this._selectState=e,this.rowSource.forEach((function(n){t.doSelect(n[t.selectKey],e)})),this.ItemSelect.emit(this.selectSource.length)},e}();k.decorators=[{type:t.Component,args:[{selector:"exg-data-list",template:'<div class="layout-auto-1-auto" style="min-width: 375px;">\n\n  <div class="list-header grid-auto-1-auto"  *ngIf="rightTemplate || allowMultiSelection">\n    <div *ngIf="allowMultiSelection" class="selectall"><i class="md-btn-circular far fa-check-double" (click)="selectAll(!_selectState)"></i></div>\n    <div *ngIf="!allowMultiSelection"></div>\n    <div>{{headerText}}</div>\n    <div>\n      <ng-container *ngTemplateOutlet="rightTemplate"></ng-container>\n    </div>\n  </div>\n  <div *ngIf="!rightTemplate && !allowMultiSelection"></div>\n\n  <div class="content"  *ngIf="displayState==0">\n    <ng-container *ngFor="let row of rowSource; index as i">\n      <div class="list-row" [ngClass]="{\'grid-auto-1\': allowMultiSelection, \'active\': selectedRow==i && allowSingleSelection}" (click)="selectedRow=i" (dblclick)="onDblClick(i)" (touchstart)="onTouchStart($event,i)">\n        <div *ngIf="allowMultiSelection" class="list-row-select"><exg-checkbox tiny="true" [ngModel]="isSelected(i)" (click)="selectClick($event,i)"></exg-checkbox></div>\n        <div><ng-container *ngTemplateOutlet="rowTemplate; context: {$implicit: row}"></ng-container></div>\n      </div>\n    </ng-container>\n  </div>\n\n  <div class="content" *ngIf="displayState==1"><div class="splash loading"><div class="spinner"><div></div><div></div><div></div><div></div></div></div></div>\n  <div class="content" *ngIf="displayState==2"><div class="splash empty"><p>{{displayStateMessage}}</p></div></div>\n  <div [ngClass]="{\'list-footer\': bottomTemplate}">\n    <ng-container *ngTemplateOutlet="bottomTemplate"></ng-container>\n  </div>\n</div>\n\n'}]}],k.ctorParameters=function(){return[]},k.propDecorators={headerText:[{type:t.Input}],allowMultiSelection:[{type:t.Input}],allowSingleSelection:[{type:t.Input}],selectSource:[{type:t.Input}],selectSourceRows:[{type:t.Input}],selectKey:[{type:t.Input}],displayStateMessage:[{type:t.Input}],displayState:[{type:t.Input}],rightTemplate:[{type:t.ContentChild,args:["rightTemplate"]}],rowTemplate:[{type:t.ContentChild,args:["rowTemplate"]}],bottomTemplate:[{type:t.ContentChild,args:["bottomTemplate"]}],RowChange:[{type:t.Output}],ItemSelect:[{type:t.Output}],RowDblClick:[{type:t.Output}],rowSource:[{type:t.Input}]};var F=function(){function e(){this.required=!1,this.pattern="",this.minlength=0,this.maxlength=2048,this.hintText="",this._value=null,this.onChange=function(){},this.onTouched=function(){}}return Object.defineProperty(e.prototype,"value",{get:function(){return this._value},set:function(e){this._value=e,this.onChange(e),this.onTouched(e)},enumerable:!1,configurable:!0}),e.prototype.registerOnChange=function(e){this.onChange=e},e.prototype.registerOnTouched=function(e){this.onTouched=e},e.prototype.setDisabledState=function(e){},e.prototype.writeValue=function(e){this._value=e},e}();F.decorators=[{type:t.Component,args:[{selector:"exg-textarea",template:'<div class="md-textarea">\n  <textarea\n         [disabled]="disabled"\n         [(ngModel)]="value"\n         [pattern]="pattern"\n         [required]="required"\n         [minlength]="minlength"\n         [maxlength]="maxlength"\n         wrap="soft" spellcheck="true" autocomplete="off"\n  ></textarea>\n  <label>{{caption}}</label>\n  <span>{{hintText}}</span>\n</div>\n',providers:[{provide:n.NG_VALUE_ACCESSOR,useExisting:F,multi:!0}]}]}],F.ctorParameters=function(){return[]},F.propDecorators={caption:[{type:t.Input}],disabled:[{type:t.Input}],required:[{type:t.Input}],pattern:[{type:t.Input}],minlength:[{type:t.Input}],maxlength:[{type:t.Input}],hintText:[{type:t.Input}]};var T=function(){function e(){this._selectedtab=0,this.tabchange=new t.EventEmitter,this.scroll=0,this.contentscroll=0}return Object.defineProperty(e.prototype,"selectedtab",{get:function(){return this._selectedtab},set:function(e){var t=this.tabs.toArray()[e];this.onTabClick(e,t.nativeElement)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"style",{get:function(){return"transform: translate("+this.scroll+"px,0);"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"contentstyle",{get:function(){return"transform: translate("+this.contentscroll+"px,0)"},enumerable:!1,configurable:!0}),e.prototype.ngOnInit=function(){},e.prototype.onTabClick=function(e,t){e!==this._selectedtab&&(this.container.nativeElement.querySelector(".tab-content").children.length>e&&this.container.nativeElement.querySelector(".tab-content").children[e].removeAttribute("hidden"),this.container.nativeElement.querySelector(".tab-content").children.length>this._selectedtab&&this.container.nativeElement.querySelector(".tab-content").children[this._selectedtab].setAttribute("hidden",!0));var n=this.container.nativeElement.getBoundingClientRect(),i=this.headercontainer.nativeElement.scrollWidth,o=t.getBoundingClientRect().left-n.x,r=t.getBoundingClientRect().right-n.x,a=t,s=-1*i+n.width-16;r>n.width-48&&(this.scroll=-1*a.offsetLeft),o<48&&(this.scroll=-1*a.offsetLeft+n.width-a.offsetWidth-16),this.scroll<s&&(this.scroll=s),this.scroll>0&&(this.scroll=0),this._selectedtab=e,this.tabchange.emit(this._selectedtab);for(var l=this.selectedtab,c=0;c<this.container.nativeElement.querySelector(".tab-content").children.length;c++)0===this.container.nativeElement.querySelector(".tab-content").children[c].clientWidth&&l--;l<0&&(l=0),this.contentscroll=l*n.width*-1},e.prototype.onWheel=function(e){e.preventDefault();var t=this.container.nativeElement.getBoundingClientRect().width,n=-1*this.headercontainer.nativeElement.scrollWidth+t-16;this.scroll=this.scroll+e.deltaY,this.scroll<n&&(this.scroll=n),this.scroll>0&&(this.scroll=0)},e.prototype.ngAfterViewInit=function(){for(var e=0;e<this.container.nativeElement.querySelector(".tab-content").children.length;e++)e===this._selectedtab?this.container.nativeElement.querySelector(".tab-content").children[e].removeAttribute("hidden"):this.container.nativeElement.querySelector(".tab-content").children[e].setAttribute("hidden",!0)},e}();T.decorators=[{type:t.Component,args:[{selector:"exg-tab",template:'<div class="tab " #container>\n  <div class="tab-header-container" (wheel)="onWheel($event)">\n    <div class="tab-header" [style]="style" #headercontainer>\n      <button  #xyz *ngFor="let item of header;index as i" class="tab-page" (click)="onTabClick(i,xyz)" [disabled]="item.disabled">\n        <i *ngIf="item.icon_class && item.icon_class.length>0" [class]="item.icon_class"></i>{{item.caption}}\n        <span class="tab-marker" *ngIf="i==selectedtab"></span>\n      </button>\n    </div>\n  </div>\n  <div class="tab-content" [style]="contentstyle">\n    <ng-container *ngTemplateOutlet="pages"></ng-container>\n  </div>\n</div>\n'}]}],T.ctorParameters=function(){return[]},T.propDecorators={header:[{type:t.Input}],selectedtab:[{type:t.Input}],pages:[{type:t.ContentChild,args:["pages"]}],tabchange:[{type:t.Output}],container:[{type:t.ViewChild,args:["container"]}],headercontainer:[{type:t.ViewChild,args:["headercontainer"]}],tabs:[{type:t.ViewChildren,args:["xyz",{read:Element}]}]};var O=function(){function e(){this.ViewChecked=!1,this.scroll=0}return Object.defineProperty(e.prototype,"style",{get:function(){return"transform: translate("+this.scroll+"px,0);"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"maxScroll",{get:function(){if(!this.viewport||!this.scene)return 0;var e=this.viewport.nativeElement.getBoundingClientRect();return-1*this.scene.nativeElement.scrollWidth+e.width-8},enumerable:!1,configurable:!0}),e.prototype.ngOnInit=function(){var e=this;setTimeout((function(){e.ViewChecked=!0}),10)},e.prototype.setScrollLimit=function(){this.scroll<this.maxScroll&&(this.scroll=this.maxScroll),this.scroll>0&&(this.scroll=0)},e.prototype.onWheel=function(e){e.preventDefault(),this.scroll=this.scroll+e.deltaY,this.setScrollLimit()},e.prototype.moveScene=function(e){void 0===e&&(e=-1);var t=this.viewport.nativeElement.getBoundingClientRect();this.scroll=this.scroll-t.width*e,this.setScrollLimit()},e.prototype.onResize=function(){this.setScrollLimit()},e}();O.decorators=[{type:t.Component,args:[{selector:"exg-lane",template:'<div style="position: relative; overflow: visible">\n  <div class="lane-container" #container (wheel)="onWheel($event)" (window:resize)="onResize()">\n    <div class="lane-content" [style]="style" #containercontent>\n        <ng-container *ngTemplateOutlet="content"></ng-container>\n    </div>\n    <div class="lane-left-nav" *ngIf="scroll<0" (click)="moveScene(-1)"><i class="far fa-chevron-left"></i></div>\n    <div class="lane-right-nav" *ngIf="ViewChecked && scroll !== maxScroll" (click)="moveScene(1)"><i class="far fa-chevron-right"></i></div>\n  </div>\n</div>\n',styles:[""]}]}],O.ctorParameters=function(){return[]},O.propDecorators={viewport:[{type:t.ViewChild,args:["container"]}],scene:[{type:t.ViewChild,args:["containercontent"]}],content:[{type:t.ContentChild,args:["content"]}],onResize:[{type:t.HostListener,args:["window:resize",["$event"]]}]};var R=function(){function e(){this.caption="Caption",this.value=.75,this.color="#56ab2f"}return Object.defineProperty(e.prototype,"strokestyle",{get:function(){return"stroke-dashoffset: calc(333 - (333 * "+this.value+"));stroke: "+this.color+";"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"colorstyle",{get:function(){return"color: "+this.color+";"},enumerable:!1,configurable:!0}),e}();R.decorators=[{type:t.Component,args:[{selector:"exg-kpi-circle",template:'<div class="typo-ring">\n  <svg>\n    <circle cx="60" cy="60" r="53"></circle>\n    <circle cx="60" cy="60" r="53" [style]="strokestyle"></circle>\n  </svg>\n  <div class="value" [style]="colorstyle">\n    <h2>{{(value * 100).toFixed(0)}}<span>%</span></h2>\n  </div>\n  <label>{{caption}}</label>\n</div>\n\n'}]}],R.ctorParameters=function(){return[]},R.propDecorators={caption:[{type:t.Input}],value:[{type:t.Input}],color:[{type:t.Input}]};var _=function(){function e(){this.caption="Caption",this.value=.75,this.color="#56ab2f"}return Object.defineProperty(e.prototype,"strokestyle",{get:function(){return"stroke-dashoffset: calc(333 - (333 / 2 * "+this.value+"));stroke: "+this.color+";"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"colorstyle",{get:function(){return"color: "+this.color+";"},enumerable:!1,configurable:!0}),e}();_.decorators=[{type:t.Component,args:[{selector:"exg-kpi-gauge",template:'<div class="typo-gauge">\n  <svg>\n    <circle cx="60" cy="0" r="51"></circle>\n    <circle cx="60" cy="0" r="51" [style]="strokestyle"></circle>\n  </svg>\n  <div class="value" [style]="colorstyle">\n    <h2>{{(value * 100).toFixed(0)}}<span>%</span></h2>\n  </div>\n  <label>{{caption}}</label>\n</div>\n'}]}],_.ctorParameters=function(){return[]},_.propDecorators={caption:[{type:t.Input}],value:[{type:t.Input}],color:[{type:t.Input}]};var A=function(){function e(){this.caption="Caption",this.value=.75,this.color="#56ab2f"}return e.prototype.ngOnInit=function(){},Object.defineProperty(e.prototype,"barstyle",{get:function(){return"width: calc("+this.value+" * 100%); background: linear-gradient(to right, "+this.color+",  "+this.color+");"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"labelstyle",{get:function(){return this.value>.51?"color: var(--c-light-m5);":"color: var(--c-dark-m5);"},enumerable:!1,configurable:!0}),e}();A.decorators=[{type:t.Component,args:[{selector:"app-exg-kpi-progressbar",template:'<div style="display:flex;align-items: center;margin:1rem 1rem;">\n  <label style="white-space: nowrap; text-overflow: ellipsis;font-size: smaller; flex-basis: 15%">{{caption}}</label>\n  <div class="progressbar-container" style="flex-basis: 85%;">\n    <label [style]="labelstyle">{{value * 100| number : \'1.0-0\' }}%</label>\n    <div class="progressbar" [style]="barstyle"></div>\n  </div>\n</div>\n'}]}],A.ctorParameters=function(){return[]},A.propDecorators={caption:[{type:t.Input}],value:[{type:t.Input}],color:[{type:t.Input}]};var P=function(){function e(){this.list=[],this.containerclass="spawn",this.ItemClose=new t.EventEmitter,this.ItemClick=new t.EventEmitter}return e.prototype.displayItem=function(e){return this.listdisplay?e[this.listdisplay]:"-"},e.prototype.closeChip=function(e,t,n){n.preventDefault(),this.ItemClose.emit({index:t,item:e})},e.prototype.clickChip=function(e,t){this.ItemClick.emit({index:t,item:e})},e}();P.decorators=[{type:t.Component,args:[{selector:"exg-chips",template:'<div [class]="containerclass">\n  <div *ngFor="let item of list;index as i"  class="chip" tabindex="0" (click)="clickChip(item,i)">\n    {{displayItem(item)}}<i class="far fa-times chip-close" (click)="closeChip(item,i,$event)"></i>\n  </div>\n</div>\n'}]}],P.ctorParameters=function(){return[]},P.propDecorators={caption:[{type:t.Input}],disabled:[{type:t.Input}],list:[{type:t.Input}],listdisplay:[{type:t.Input}],containerclass:[{type:t.Input}],ItemClose:[{type:t.Output}],ItemClick:[{type:t.Output}]};var M=function(){function e(){this.isOpen=!1,this.componentName="",this.onAction=new t.EventEmitter,this.onClose=new t.EventEmitter,this.change=new t.EventEmitter,this.initialize=new t.EventEmitter,this.update=new t.EventEmitter,this.toggled=new t.EventEmitter,this.forceToggleEvent=!1}return e.prototype.show=function(e,t,n){var i=this;return void 0===n&&(n=!1),console.log("INIT"),console.log(e),this.forceToggleEvent=n,this.isOpen?o.of():(this.componentName=e,this.initialize.emit(this.componentName),this.update.emit(t),this.isOpen=!0,this.change.emit(this.isOpen),new o.Observable((function(e){i.onAction.subscribe((function(t){e.next(t),e.complete(),i.isOpen=!1,i.change.emit(i.isOpen)})),i.onClose.subscribe((function(t){e.next(void 0),e.complete(),i.isOpen=!1,i.change.emit(i.isOpen)}))})).pipe(r.take(1)))},e.prototype.action=function(e){this.onAction.emit(e)},e.prototype.close=function(){this.onClose.emit()},e}();M.ɵprov=t.ɵɵdefineInjectable({factory:function(){return new M},token:M,providedIn:"root"}),M.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],M.propDecorators={change:[{type:t.Output}]};var V=function(){function e(e,t,n){this.popUpService=e,this.injector=t,this.app=n,this.isOpen=!1,this.componentRef=null,this.style={}}return e.prototype.onKeydownHandler=function(e){e.preventDefault(),this.onClose()},e.prototype.loadComponent=function(e){this.entry.clear(),this.componentRef=this.entry.createComponent(this.app.GetFactory(e),void 0,this.injector)},e.prototype.ngOnInit=function(){var e=this;this.scChange=this.popUpService.change.subscribe((function(t){e.isOpen=t,!e.isOpen&&e.componentRef&&(e.componentRef.destroy(),e.componentRef=null),e.popUpService.forceToggleEvent&&(e.popUpService.toggled.emit(),e.popUpService.forceToggleEvent=!1)})),this.scInitialize=this.popUpService.initialize.subscribe((function(t){e.loadComponent(t)})),this.scUpdate=this.popUpService.update.subscribe((function(t){e.componentRef&&(e.componentRef.instance.data=t)}))},e.prototype.ngAfterViewInit=function(){},e.prototype.onClose=function(){var e=this;this.style={animation:"zoom-out 200ms ease-out"},setTimeout((function(){e.popUpService.action(!1),e.style=""}),200)},e.prototype.ngOnDestroy=function(){this.scUpdate instanceof o.Subscription&&this.scUpdate.unsubscribe(),this.scChange instanceof o.Subscription&&this.scChange.unsubscribe(),this.scInitialize instanceof o.Subscription&&this.scInitialize.unsubscribe()},e}();V.decorators=[{type:t.Component,args:[{selector:"exg-overlay",template:'<div [ngStyle]="style">\n  <button class="close__btn" (click)="onClose()"><i class="fas fa-times"></i></button>\n  <template #vc></template>\n</div>\n',styles:[':host{background-color:var(--c-dark-m2);bottom:0;box-sizing:border-box;display:none;left:0;position:absolute;right:0;top:0;z-index:999}:host>div{animation:zoom-in .3s ease-out forwards;background-color:var(--c-neutral);border-radius:.25rem;height:calc(100vh - 4rem);overflow:visible;padding:0;position:relative;transform:scale(0);width:calc(100vw - 4rem)}:host.is-open{display:grid;place-items:center}.close__btn{background-color:var(--c-red-400);border:none;border-radius:50%;color:var(--c-neutral-300);cursor:pointer;height:26px;line-height:26px;outline:none;position:absolute;right:-22px;text-align:center;top:-22px;width:26px;z-index:999}.close__btn:hover{background-color:var(--c-red-500)}.close__btn:after{bottom:-21px;content:"ESC";font-size:8px;left:5px;position:absolute}@keyframes zoom-in{0%{transform:scale(.5)}to{transform:scale(1)}}@keyframes zoom-out{0%{transform:scale(.5)}to{transform:scale(0)}}']}]}],V.ctorParameters=function(){return[{type:M},{type:t.Injector},{type:d}]},V.propDecorators={isOpen:[{type:t.HostBinding,args:["class.is-open"]}],entry:[{type:t.ViewChild,args:["vc",{read:t.ViewContainerRef}]}],onKeydownHandler:[{type:t.HostListener,args:["document:keydown.escape",["$event"]]}]};var H=function(){function e(){this.id=Math.random().toString(36).substring(2)}return e.prototype.ngOnInit=function(){},e}();H.decorators=[{type:t.Component,args:[{selector:"exg-panel",template:'<div class="expanel">\n  <input type="checkbox" [id]="id">\n  <label class="expanel-label"  [for]="id">{{caption}}<label class="typo">{{value}}</label></label>\n  <div class="expanel-content">\n\n    <ng-container *ngTemplateOutlet="content"></ng-container>\n  </div>\n</div>\n'}]}],H.ctorParameters=function(){return[]},H.propDecorators={content:[{type:t.ContentChild,args:["content"]}],caption:[{type:t.Input}],value:[{type:t.Input}]};var j=function(){function e(){this.id=Math.random().toString(36).substring(2),this.showPanel=!1}return e.prototype.ngOnInit=function(){},e.prototype.onClick=function(){this.showPanel=!this.showPanel},e}();j.decorators=[{type:t.Component,args:[{selector:"exg-sectionpanel",template:'<h6>{{caption}}<i class="far fa-chevron-down md-btn-circular" [ngClass]="{\'expand-panel-button-show-content\': showPanel}" (click)="onClick()"></i></h6>\n<div [ngClass]="{\'expand-panel-show-content\': showPanel}">\n  <ng-container *ngTemplateOutlet="content"></ng-container>\n  <div class="expand-panel-content" >\n    <ng-container *ngTemplateOutlet="hiddencontent"></ng-container>\n  </div>\n</div>\n'}]}],j.ctorParameters=function(){return[]},j.propDecorators={content:[{type:t.ContentChild,args:["content"]}],hiddencontent:[{type:t.ContentChild,args:["hiddencontent"]}],caption:[{type:t.Input}]};var U=function(e){function n(n){var i=e.call(this)||this;return i.modalService=n,i.displayState=1,i.tableDef=[],i.allowMultiSelection=!0,i.allowSingleSelection=!0,i.fixedWidth=!1,i.disableFilterHeader=!1,i.filterHeaderFullHeight=!1,i.selectSource=[],i.allowRowExpansion=!1,i.expandedArray=[],i.expandedTemplate=null,i.dynamicTableDef=!1,i.filterKey="value",i.isDistinctLoading=!1,i.distinctSearchValue="",i.filteredDistinctData=[],i._distinctData=[],i.maxDistinctRows=25,i.distinctFilterActiveModel=[],i.filterPopUpOpen=!1,i._rowSource=[],i._selectState=!1,i._expandableState=!1,i.RowChange=new t.EventEmitter,i.ItemSelect=new t.EventEmitter,i.RowDblClick=new t.EventEmitter,i.FilterActivation=new t.EventEmitter,i.loadDistinct=new t.EventEmitter,i.selectedItems=new t.EventEmitter,i.clickRule={prevent:!1,timer:0},i._selectedRow=-1,i}return I(n,e),Object.defineProperty(n.prototype,"distinctData",{get:function(){return this._distinctData},set:function(e){this._distinctData=e,this.filteredDistinctData=e,this.isDistinctLoading=!1},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"rowSource",{get:function(){return this._rowSource},set:function(e){this._rowSource=e,this._selectState=!1},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"selectedRow",{get:function(){return this._selectedRow},set:function(e){var t=this;this.clickRule.prevent=!1,this.clickRule.timer=setTimeout((function(){t.clickRule.prevent||(t._selectedRow=e,t.RowChange.emit(e))}),250)},enumerable:!1,configurable:!0}),n.prototype.onDblClick=function(e){this.clickRule.prevent=!0,clearTimeout(this.clickRule.timer),this.RowDblClick.emit(e)},n.prototype.ngOnInit=function(){var e=this;setTimeout((function(){e.rowSource&&e.rowSource.length===e.selectSource.length&&(e._selectState=!0)}),0),this.dynamicTableDef&&(this.filterKey="oldID")},n.prototype.isRowExpanded=function(e){var t=this.rowSource[e][this.selectKey];return this.expandedArray.indexOf(t)>-1},n.prototype.doRowExpansion=function(e){if(this.selectedRow=e,this.allowRowExpansion&&this.rowSource){var t=this.rowSource[e][this.selectKey],n=this.expandedArray.indexOf(t);-1===n?this.expandedArray.push(t):this.expandedArray.splice(n,1)}},n.prototype.expandAll=function(e){var t=this;this.rowSource.length===this.expandedArray.length&&(e=!1,this._expandableState=!1),this.allowRowExpansion&&this.rowSource&&this.rowSource.forEach((function(n){var i=n[t.selectKey],o=t.expandedArray.indexOf(i);!0===e&&-1===o&&t.expandedArray.push(i),!1===e&&o>-1&&t.expandedArray.splice(o,1)}))},n.prototype.select=function(e,t){var n=this.rowSource[e][this.selectKey];this.doSelect(n,t),this.selectedItems.emit([n])},n.prototype.selectClick=function(e,t){e.preventDefault(),e.stopPropagation(),this.select(t,!this.isSelected(t))},n.prototype.doSelect=function(e,t){var n=this.selectSource.indexOf(e);!0===t&&-1===n&&this.selectSource.push(e),!1===t&&n>-1&&this.selectSource.splice(n,1),this.ItemSelect.emit(this.selectSource)},n.prototype.isSelected=function(e){return this.selectSource.indexOf(this.rowSource[e][this.selectKey])>-1},n.prototype.selectAll=function(e){var t=this;this._selectState=e,this.rowSource.length===this.selectSource.length&&(e=!1,this._selectState=!1);var n=[];this.rowSource.forEach((function(i){t.doSelect(i[t.selectKey],e),n.push(i[t.selectKey])})),this.selectedItems.emit(n)},n.prototype.getNestedValue=function(e,t){var n=[];t.hasNestedValue?n=t.value.split("."):a.ExcCoreModule.Array.Add(n,t.value);var i=n.reduce((function(e,t){return e[t]}),e);return null===i?null:"object"!=typeof i||Array.isArray(i)?Array.isArray(i)?i.join(", "):i:Object.values(i).join(", ")},n.prototype.ComputeSortValue=function(e,t){var n=this,i=["","asc","desc"];e.dataSort={},t.forEach((function(t){t.sort>0&&(e.dataSort[t[n.filterKey]]=i[t.sort])}))},n.prototype.applySortValue=function(e){var t=this,n=this.tableDef.find((function(e){return e[t.filterKey]===t.currentFilterContext}));n.sort===e?n.sort=0:n.sort=e,this.ComputeSortValue(this.metaInfo,this.tableDef),this.FilterActivation.emit(this.metaInfo),this.closeFilterPopUp()},n.prototype.getCurrentSortValue=function(){var e=this;return this.currentFilterContext?this.tableDef.find((function(t){return t[e.filterKey]===e.currentFilterContext})).sort:0},n.prototype.getFixedTableDefCount=function(){return this.tableDef.filter((function(e){return!0===e.fixed&&!0===e.visible})).length>0},n.prototype.openFilter=function(e,t){this.disableFilterHeader||(this.isDistinctLoading=!0,this.distinctSearchValue="",this.currentFilterContext!==t[this.filterKey]&&(this.currentFilterContext=t[this.filterKey],this.currentFilterTableDef=t),this.loadDistinct.emit({tbl:this.distinctTableName,col:this.currentFilterContext||"",rowout:!1}),this.Filter.openUnderLeft(e),this.filterPopUpOpen=!0)},n.prototype.closeFilterPopUp=function(){this.Filter.close(),this.filterPopUpOpen=!1},n.prototype.resetFilter=function(){var e=this;this.distinctData.forEach((function(t){var n=e.currentFilterContext+t.value;e.distinctFilterActiveModel[n]&&!0===e.distinctFilterActiveModel[n]&&(e.distinctFilterActiveModel[n]=!1)})),this.distinctFilterActiveModel[this.currentFilterContext+"null"]=!1,this.applyFilter()},n.prototype.applyFilter=function(){var e=this,t=0,n=0;void 0!==this.currentFilterContext&&(this.metaInfo.dataFilter[this.currentFilterContext]=[],this.filteredDistinctData.forEach((function(t){var i=e.currentFilterContext+t.value;e.distinctFilterActiveModel[i]&&!0===e.distinctFilterActiveModel[i]&&n++})),""!==this.distinctSearchValue&&0===n&&this.selectAllCurrentFilter(!0),this.distinctData.forEach((function(n){var i=e.currentFilterContext+n.value;e.distinctFilterActiveModel[i]&&!0===e.distinctFilterActiveModel[i]&&(void 0!==e.currentFilterContext&&e.metaInfo.dataFilter[e.currentFilterContext].push(n.value),t++)})),this.distinctFilterActiveModel[this.currentFilterContext+"null"]&&(this.metaInfo.dataFilter[this.currentFilterContext].push("GROOT_LEERE"),t++),0===t&&(this.metaInfo.dataFilter[this.currentFilterContext]=void 0),this.FilterActivation.emit(this.metaInfo),this.closeFilterPopUp())},n.prototype.isFilterSet=function(e){return!!(this.metaInfo&&this.metaInfo.dataFilter&&e in this.metaInfo.dataFilter&&this.metaInfo.dataFilter[e])&&this.metaInfo.dataFilter[e].length>0},n.prototype.returnDistinctFilterEmptyCount=function(){var e,t,n=this;return this.filteredDistinctData&&this.filteredDistinctData.length>0?((null===(e=this.filteredDistinctData.find((function(e){return null===(null==e?void 0:e[n.filterKey])})))||void 0===e?void 0:e.count)||0)+((null===(t=this.filteredDistinctData.find((function(e){return""===(null==e?void 0:e[n.filterKey])})))||void 0===t?void 0:t.count)||0):0},n.prototype.selectAllCurrentFilter=function(e){var t=this,n=0;this.filteredDistinctData.forEach((function(i){n<t.maxDistinctRows&&(t.distinctFilterActiveModel[t.currentFilterContext+i.value]=e),n++}))},n.prototype.onSearch=function(e){var t=this;"Enter"===e.key&&(this.isDistinctLoading=!0,this.filteredDistinctData=[],this.currentFilterTableDef.type&&"date"===this.currentFilterTableDef.type&&this.currentFilterTableDef.dateFormat?this.distinctData.forEach((function(e){var n=i.formatDate(new Date(e.value),t.currentFilterTableDef.dateFormat,"de");(null!==e.value&&(null==n?void 0:n.includes(t.distinctSearchValue))||null===e.value)&&t.filteredDistinctData.push(e)})):this.distinctData.forEach((function(e){(null!==e.value&&""!==e.value&&(void 0!==t.currentFilterTableDef.transformValue?t.currentFilterTableDef.transformValue(e.value).toLowerCase():e.value.toLowerCase()).includes(t.distinctSearchValue.toLowerCase())||null===e.value||""===e.value)&&t.filteredDistinctData.push(e)})),this.isDistinctLoading=!1)},n.prototype.resetSearch=function(){this.distinctSearchValue="",this.filteredDistinctData=this.distinctData},n.prototype.isDateFormat=function(e){return e.type&&"date"===e.type&&e.dateFormat},n.prototype.isCurrencyFormat=function(e){return e.type&&"currency"===e.type&&e.currencyFormat},n.prototype.resetAllSorting=function(){this.tableDef.forEach((function(e){e.sort=0})),this.metaInfo.dataSort={}},n.prototype.resetAllFiltering=function(){this.distinctFilterActiveModel=[],this.metaInfo.dataFilter={}},n.prototype.resetMultiSelection=function(){this.selectSource=[]},n.prototype.resetListContext=function(){this.resetMultiSelection(),this.resetAllSorting(),this.resetAllFiltering()},n}(a.ExcTranslation);U.decorators=[{type:t.Component,args:[{selector:"exg-table",template:'<div class="content" [ngStyle]="{\'z-index\': (filterHeaderFullHeight && Filter?.visibility === \'visible\') ? 21:\'\',\n\'overflow\': (filterHeaderFullHeight && Filter?.visibility === \'visible\') ? \'hidden\':\'\'}">\n  <table class="md3-table" [ngStyle]="{\'display\': fixedWidth ? \'block\': \'\'}">\n    \x3c!-- Table Header --\x3e\n    <thead role="rowgroup">\n    <tr role="row">\n      \x3c!-- Multi selection --\x3e\n      \x3c!--[ngStyle]="{\'color\':(!m.isValid)? \'var(--c-red-400)\':\'var(--c-green-400)\'}"--\x3e\n      <span class="fixed" [ngStyle]="{\'display\':getFixedTableDefCount()? \'flex\':\'table\'}">\n        <th *ngIf="allowMultiSelection" role="columnheader" style="text-align: center; cursor:pointer"\n            class="table-selector"\n            (click)="selectAll(!_selectState)">\n          <i class="fa-regular fa-fw fa-check-double"></i>\n        </th>\n        <th *ngIf="allowRowExpansion" role="columnheader" style="text-align: center; cursor:pointer" class="table-selector"\n            (click)="expandAll(!_expandableState)">\n          <i class="fa-regular fa-fw fa-chevrons-down"></i>\n        </th>\n        \x3c!-- Fixed Header --\x3e\n        <ng-container *ngFor="let item of tableDef">\n          <th role="columnheader" *ngIf="item.fixed && item.visible" (click)="openFilter($event, item)"\n              [ngStyle]="{\'text-align\':item?.align === 1 ? \'center\': item?.align === 2 ? \'right\': \'left\',\n               \'pointer-events\': disableFilterHeader ? \'none\' : \'\'}">{{item.caption}}\n            <i class="fas"\n               [ngClass]="{\'flt\': isFilterSet(item.value), \'fa-arrow-up\': item.sort == 1,\'fa-arrow-down\': item.sort == 2}"></i>\n            <i class="far" [ngClass]="{\'fa-filter\': isFilterSet(item[filterKey])}"></i>\n          </th>\n        </ng-container>\n        </span>\n      \x3c!-- Header --\x3e\n      <ng-container *ngFor="let item of tableDef; index as j;">\n        <th role="columnheader" *ngIf="!item.fixed && item.visible" (click)="openFilter($event, item)" style="max-width: 100px; overflow: hidden; text-overflow: ellipsis;"\n            [ngStyle]="{\'text-align\':item?.align === 1 ? \'center\': item?.align === 2 ? \'right\': \'left\',\n              \'max-width\':item?.width && fixedWidth ? item.width: \'\', \'overflow\':item?.width && fixedWidth ? \'hidden\': \'\',\n              \'text-overflow\':item?.width && fixedWidth ? \'ellipsis\': \'\', \'pointer-events\': disableFilterHeader ? \'none\' : \'\'}">\n          {{item.caption}}\n          <i class="fas"\n             [ngClass]="{\'flt\': isFilterSet(item.value), \'fa-arrow-up\': item.sort == 1,\'fa-arrow-down\': item.sort == 2}"></i>\n          <i class="far" [ngClass]="{\'fa-filter\': isFilterSet(item[filterKey])}"></i>\n        </th>\n      </ng-container>\n\n      \x3c!-- Filter PopUp --\x3e\n      <ng-container *ngIf="filterHeaderFullHeight;">\n        \x3c!-- exg-popup needs static element style top to work in this context --\x3e\n        <exg-popup #Filter [closeAlways]="false" width="360" style="top: 93px;">\n          <ng-container *ngTemplateOutlet="FilterMenuTemplate"></ng-container>\n        </exg-popup>\n      </ng-container>\n\n      <ng-container *ngIf="!filterHeaderFullHeight;">\n        <exg-popup #Filter [closeAlways]="false" width="360">\n          <ng-container *ngTemplateOutlet="FilterMenuTemplate"></ng-container>\n        </exg-popup>\n      </ng-container>\n      \x3c!-- Filter Menu Template --\x3e\n      <ng-template #FilterMenuTemplate>\n        <div class="md-menu content">\n          <div class="layout-1-auto" ExgAdaptiveHeight [adaptiveHeightActive]="filterPopUpOpen"\n               [adaptiveHeightOffset]="16">\n            <div class="content">\n              <div class="layout-auto-1">\n                \x3c!-- Filter Menu Functions --\x3e\n                <div>\n                  <div class="md-menu-item-sort"\n                       [ngStyle]="{\'background-color\':(getCurrentSortValue() === 1)? \'var(--c-light-100)\':\'var(--c-ctrl-back)\'}"\n                       (click)="applySortValue(1)"><i class="fad fa-fw fa-arrow-up"></i>\n                    <ng-container\n                      *ngIf="getCurrentSortValue() === 1; else inactiveSortASC">{{getRessource(\'RemoveSortAsc\')}}</ng-container>\n                    <ng-template #inactiveSortASC>{{getRessource(\'SortAsc\')}}</ng-template>\n                  </div>\n                  <div class="md-menu-item-sort"\n                       [ngStyle]="{\'background-color\':(getCurrentSortValue() === 2)? \'var(--c-light-100)\':\'var(--c-ctrl-back)\'}"\n                       (click)="applySortValue(2)"><i class="fad fa-fw fa-arrow-down"></i>\n                    <ng-container\n                      *ngIf="getCurrentSortValue() === 2; else inactiveSortDESC">{{getRessource(\'RemoveSortDesc\')}}</ng-container>\n                    <ng-template #inactiveSortDESC>{{getRessource(\'SortDesc\')}}</ng-template>\n                  </div>\n                  <div class="border-bottom"></div>\n                  <div class="md-menu-item-sort" (click)="resetFilter()"><i class="fad fa-fw fa-filter-slash"></i>\n                    {{getRessource(\'RemoveFilter\')}}\n                  </div>\n                  <ng-container *ngIf="filteredDistinctData && filteredDistinctData.length > 1 && !isDistinctLoading">\n                    <div class="md-menu-item-sort" (click)="selectAllCurrentFilter(true)"><i\n                      class="fad fa-fw fa-list-check"></i>{{getRessource(\'SelectAll\')}}\n                    </div>\n                  </ng-container>\n                  \x3c!--<div class="md-menu-item-sort" (click)="openTestModal()"><i class="fad fa-fw fa-filter-list"></i> Textfilter hinzufügen</div>--\x3e\n                  <div class="border-bottom"></div>\n                </div>\n                \x3c!-- Distinct Data List --\x3e\n                <div class="content">\n                  <div class="layout-auto-1">\n                    <div class="search-input-bar" style="padding: 0 0.5rem;">\n                      <input class="search-input" type="text" (keydown)="onSearch($event)"\n                             placeholder="{{getRessource(\'SearchPlaceholder\')}} {{currentFilterTableDef?.caption}}"\n                             [(ngModel)]="distinctSearchValue"/>\n                      <i class="search-left fas fa-search" style="padding: 0 0.5rem;" tabindex="-1"></i>\n                      <i class="search-reset fas fa-times" style="padding: 0 0.5rem;" tabindex="-1"\n                         *ngIf="distinctSearchValue && distinctSearchValue != \'\'" (click)="resetSearch()"></i>\n                    </div>\n                    <div class="content" *ngIf="!isDistinctLoading">\n                      <ng-container *ngIf="filteredDistinctData && filteredDistinctData.length > maxDistinctRows">\n                        <div class="md-menu-item-sort" style="cursor: default; font-size: smaller; font-style: italic;">\n                          {{getRessource(\'MaxRowWarning\',\n                          {\n                            maxDistinctRows: maxDistinctRows,\n                            filteredDistinctLength: filteredDistinctData.length\n                          })}}\n                        </div>\n                      </ng-container>\n                      <ng-container *ngIf="currentFilterTableDef && currentFilterTableDef.type && currentFilterTableDef.type === \'date\'\n                       && currentFilterTableDef.dateFormat; else normalFilterType">\n                        <ng-container *ngFor="let row of filteredDistinctData; index as i">\n                          <ng-container *ngIf="row.value !== null && row.value !== \'\' && i <= (maxDistinctRows - 1)">\n                            \x3c!--<div (click)="distinctFilterActiveModel[currentFilterContext+row.value] = !distinctFilterActiveModel[currentFilterContext+row.value]"\n                                 style="padding: 0.25rem; margin: 0.75rem; cursor: pointer" class="grid-1-auto">\n                              <span>{{row.value | excDate:(currentFilterTableDef.dateFormat)}}</span>\n                              <div>\n                                <span style="margin-right: 0.75rem; margin-left: 0.75rem">{{\'(\' + row.count + \')\'}}</span>\n                                <i class="fa-regular fa-fw" [ngClass]="{\'fa-square\':!distinctFilterActiveModel[currentFilterContext+row.value],\n                              \'fa-square-check\': distinctFilterActiveModel[currentFilterContext+row.value]}"></i>\n                              </div>\n                            </div>--\x3e\n                            <exg-checkbox\n                              [caption]="row.value | excDate:(currentFilterTableDef.dateFormat) + \'(\' + row.count + \')\'"\n                              [(ngModel)]="distinctFilterActiveModel[currentFilterContext+row.value]"\n                              name="Row{{row.value}}"></exg-checkbox>\n                          </ng-container>\n                        </ng-container>\n                      </ng-container>\n                      <ng-template #normalFilterType>\n                        <ng-container *ngFor="let row of filteredDistinctData; index as i">\n                          <ng-container *ngIf="row.value !== null && row.value !== \'\' && i <= (maxDistinctRows - 1)">\n                            \x3c!--<div (click)="distinctFilterActiveModel[currentFilterContext+row.value] = !distinctFilterActiveModel[currentFilterContext+row.value]"\n                            style="padding: 0.25rem; margin: 0.75rem; cursor: pointer" class="grid-1-auto">\n                              <span>{{((currentFilterTableDef.transformValue !== undefined) ? currentFilterTableDef.transformValue(row.value): row.value)}}</span>\n                              <div>\n                                <span style="margin-right: 0.75rem; margin-left: 0.75rem">{{\'(\' + row.count + \')\'}}</span>\n                                <i class="fa-regular fa-fw" [ngClass]="{\'fa-square\':!distinctFilterActiveModel[currentFilterContext+row.value],\n                              \'fa-square-check\': distinctFilterActiveModel[currentFilterContext+row.value]}"></i>\n                              </div>\n                            </div>--\x3e\n                            <exg-checkbox\n                              [caption]="((currentFilterTableDef.transformValue !== undefined) ? currentFilterTableDef.transformValue(row.value): row.value) + \'(\' + row.count + \')\'"\n                              [(ngModel)]="distinctFilterActiveModel[currentFilterContext+row.value]"\n                              name="Row{{row.value}}"></exg-checkbox>\n                          </ng-container>\n                        </ng-container>\n                      </ng-template>\n                      <exg-checkbox *ngIf="returnDistinctFilterEmptyCount() > 0"\n                                    [caption]="getRessource(\'EmptyRow\') + \'(\' + returnDistinctFilterEmptyCount() + \')\'"\n                                    [(ngModel)]="distinctFilterActiveModel[currentFilterContext+\'null\']"\n                                    name="RowDistinctFilterEmpty"></exg-checkbox>\n                      \x3c!--<div *ngIf="returnDistinctFilterEmptyCount() > 0"\n                        (click)="distinctFilterActiveModel[currentFilterContext+\'empty\'] = !distinctFilterActiveModel[currentFilterContext+\'empty\']"\n                           style="padding: 0.25rem; margin: 0.75rem; cursor: pointer" class="grid-1-auto">\n                        <span>{{getRessource(\'EmptyRow\')}}</span>\n                        <div>\n                          <span style="margin-right: 0.75rem; margin-left: 0.75rem">{{\'(\' + returnDistinctFilterEmptyCount() + \')\'}}</span>\n                          <i class="fa-regular fa-fw" [ngClass]="{\'fa-square\':!distinctFilterActiveModel[currentFilterContext+\'empty\'],\n                              \'fa-square-check\': distinctFilterActiveModel[currentFilterContext+\'empty\']}"></i>\n                        </div>\n                      </div>--\x3e\n                    </div>\n                    \x3c!-- Distinct Data Loading --\x3e\n                    <div class="loading" style="height: 26px;" *ngIf="isDistinctLoading">\n                      <div class="spinner">\n                        <div></div>\n                        <div></div>\n                        <div></div>\n                        <div></div>\n                      </div>\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n            \x3c!-- PopUp Footer --\x3e\n            <div class="md-menu-footer">\n              <button class="md-btn" type="submit" (click)="applyFilter()">{{getRessource(\'Ok\')}}</button>\n              <button class="md-btn" type="button" (click)="closeFilterPopUp()">{{getRessource(\'Cancel\')}}</button>\n            </div>\n          </div>\n        </div>\n      </ng-template>\n\n    </tr>\n    </thead>\n\n    <tbody>\n    <ng-container *ngIf="displayState==0; else tableNoContent">\n      <ng-container *ngFor="let row of rowSource; index as i">\n        <tr role="row">\n          \x3c!-- Multi selection --\x3e\n          <span class="fixed" [ngStyle]="{\'display\':getFixedTableDefCount()? \'flex\':\'table\'}">\n            <td *ngIf="allowMultiSelection" role="cell" class="table-selector" style="text-align: center;"\n                (click)="selectClick($event,i)">\n              <i class="fa-regular fa-fw" [ngClass]="{\'fa-square\':!isSelected(i), \'fa-square-check\': isSelected(i)}"></i>\n            </td>\n            <td *ngIf="allowRowExpansion" role="cell" class="table-selector" style="text-align: center;"\n                (click)="doRowExpansion(i)">\n              <i [ngClass]="\'fa-fw far \' + (isRowExpanded(i) ? \'fa-chevron-down\' : \'fa-chevron-right\')"></i>\n            </td>\n            \x3c!-- Fixed Table Content --\x3e\n        <ng-container *ngFor="let item of tableDef; index as j;">\n          <td role="columnheader" [ngClass]="{\'rowActive\': selectedRow==i && allowSingleSelection}"\n              [attr.caption]="item.caption" (click)="selectedRow=i" (dblclick)="onDblClick(i)"\n              *ngIf="item.fixed && item.visible" [ngStyle]="{\'text-align\':item?.align === 1 ? \'center\': item?.align === 2 ? \'right\': \'left\'}">\n            <ng-container *ngIf="item.type && item.type === \'date\' && item.dateFormat; else fixedStandardType">\n              {{ getNestedValue(row, item) | excDate:(item.dateFormat) }}&nbsp;\n            </ng-container>\n            <ng-template #fixedStandardType>{{ (item.transformValue !== undefined) ? item.transformValue(getNestedValue(row, item)): getNestedValue(row, item) }}&nbsp;</ng-template>\n          </td>\n        </ng-container>\n        </span>\n          \x3c!-- Table Content --\x3e\n          <ng-container *ngFor="let item of tableDef; index as j;">\n            <td role="columnheader" [ngClass]="{\'rowActive\': selectedRow==i && allowSingleSelection}"\n                [attr.caption]="item.caption" (click)="selectedRow=i" (dblclick)="onDblClick(i)"\n                *ngIf="!item.fixed && item.visible" [ngStyle]="{\'text-align\':item?.align === 1 ? \'center\': item?.align === 2 ? \'right\': \'left\',\n                  \'max-width\':item?.width && fixedWidth ? item.width: \'\', \'overflow\':item?.width && fixedWidth ? \'hidden\': \'\',\n                  \'text-overflow\':item?.width && fixedWidth ? \'ellipsis\': \'\'}">\n              <ng-container *ngIf="isDateFormat(item)">\n                {{ getNestedValue(row, item) | excDate:(item.dateFormat) }}\n              </ng-container>\n              <ng-container *ngIf="isCurrencyFormat(item)">\n                {{ getNestedValue(row, item) | excCurrency:(item.currencyFormat) }}\n              </ng-container>\n              <ng-container *ngIf="!isDateFormat(item) && !isCurrencyFormat(item)">{{ (item.transformValue !== undefined) ? item.transformValue(getNestedValue(row, item)): getNestedValue(row, item)}}</ng-container>\n            </td>\n          </ng-container>\n        </tr>\n        \x3c!-- Expandable Rows --\x3e\n        <tr role="row" *ngIf="allowRowExpansion && isRowExpanded(i)">\n          <td style="box-shadow: inset 0 0 5px 0px rgba(0, 0, 0, 0.16);" [colSpan]="tableDef.length + 1">\n            <div *ngIf="expandedTemplate">\n              <ng-container *ngTemplateOutlet="expandedTemplate; context: { $implicit: row}"></ng-container>\n            </div>\n          </td>\n        </tr>\n      </ng-container>\n    </ng-container>\n    <ng-template #tableNoContent>\n      \x3c!-- Loading Content --\x3e\n      <tr role="row" style="height: 100%;">\n        <div *ngIf="displayState==1">\n          <div class="splash loading">\n            <div class="spinner">\n              <div></div>\n              <div></div>\n              <div></div>\n              <div></div>\n            </div>\n          </div>\n        </div>\n        <div *ngIf="displayState==2">\n          <div class="splash empty"><p>{{getRessource(\'NoDataAvailable\')}}</p></div>\n        </div>\n      </tr>\n    </ng-template>\n    </tbody>\n  </table>\n</div>\n'}]}],U.ctorParameters=function(){return[{type:u}]},U.propDecorators={displayState:[{type:t.Input}],metaInfo:[{type:t.Input}],distinctTableName:[{type:t.Input}],tableDef:[{type:t.Input}],allowMultiSelection:[{type:t.Input}],allowSingleSelection:[{type:t.Input}],fixedWidth:[{type:t.Input}],disableFilterHeader:[{type:t.Input}],filterHeaderFullHeight:[{type:t.Input}],selectSource:[{type:t.Input}],selectKey:[{type:t.Input}],allowRowExpansion:[{type:t.Input}],expandedArray:[{type:t.Input}],expandedTemplate:[{type:t.Input}],dynamicTableDef:[{type:t.Input}],distinctData:[{type:t.Input}],maxDistinctRows:[{type:t.Input}],rowSource:[{type:t.Input}],RowChange:[{type:t.Output}],ItemSelect:[{type:t.Output}],RowDblClick:[{type:t.Output}],FilterActivation:[{type:t.Output}],loadDistinct:[{type:t.Output}],selectedItems:[{type:t.Output}],Filter:[{type:t.ViewChild,args:["Filter",{read:w}]}]};var L=function(){function e(e,t){this.el=e,this.renderer=t,this._adaptiveHeightActive=!1,this._adaptiveHeightOffset=0}return Object.defineProperty(e.prototype,"adaptiveHeightActive",{get:function(){return this._adaptiveHeightActive},set:function(e){var t=this;this._adaptiveHeightActive=e,setTimeout((function(e){t.setMaxHeight()}),50)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"adaptiveHeightOffset",{get:function(){return this._adaptiveHeightOffset},set:function(e){this._adaptiveHeightOffset=e},enumerable:!1,configurable:!0}),e.prototype.onWindowResize=function(){this.adaptiveHeightActive&&this.setMaxHeight()},e.prototype.setMaxHeight=function(){if(this.adaptiveHeightActive){var e=window.innerHeight-this.el.nativeElement.getBoundingClientRect().top-this.adaptiveHeightOffset;this.renderer.setStyle(this.el.nativeElement,"max-height",e+"px")}},e}();L.decorators=[{type:t.Directive,args:[{selector:"[ExgAdaptiveHeight]"}]}],L.ctorParameters=function(){return[{type:t.ElementRef},{type:t.Renderer2}]},L.propDecorators={adaptiveHeightActive:[{type:t.Input}],adaptiveHeightOffset:[{type:t.Input}],onWindowResize:[{type:t.HostListener,args:["window:resize",[]]}]};var z=function(){function e(){}return e.prototype.prevent=function(e){if(13===e.keyCode)return e.preventDefault(),!1},e}();z.decorators=[{type:t.Directive,args:[{selector:"[exgPreventDefault]"}]}],z.ctorParameters=function(){return[]},z.propDecorators={prevent:[{type:t.HostListener,args:["keydown.enter",["$event"]]}]};var q=function(e){function n(){var n=e.call(this)||this;return n._tableDef=[],n.localStorageID="",n.canOpen=!1,n.save=new t.EventEmitter,n.resetted=new t.EventEmitter,n.doOpen=new t.EventEmitter,n.tableDefChange=new t.EventEmitter,n.dynamic=!1,n.isInit=!0,n.ogDynamicTableDef=[],n.popUpOpen=!1,n.ogTableDef=[],n}return I(n,e),Object.defineProperty(n.prototype,"tableDef",{get:function(){return this._tableDef},set:function(e){this._tableDef=e,e.length>0&&this.dynamic&&this.isInit&&(this.isInit=!1,this.ogTableDef=JSON.parse(JSON.stringify(e)),this.loadFilterConfig())},enumerable:!1,configurable:!0}),n.prototype.ngOnInit=function(){this.dynamic||(this.ogTableDef=JSON.parse(JSON.stringify(this.tableDef)),this.loadFilterConfig(),this.isInit=!1)},n.prototype.loadFilterConfig=function(){if(this.localStorageID.length>0&&localStorage[this.localStorageID]){var e=JSON.parse(localStorage[this.localStorageID]);this.rearrangeColumns(e)}},n.prototype.rearrangeColumns=function(e){var t="value",n=Array.from(this.tableDef);this.dynamic&&(t="oldID");for(var i=0;i<e.length;i++){var o=a.ExcCoreModule.Array.GetObjectIndex(n,t,e[i][t]);if(o>-1)for(var r in l.moveItemInArray(n,o,i),n[i])e[i].hasOwnProperty(r)&&(n[i][r]=e[i][r])}this.tableDefChange.emit(n)},n.prototype.openFilterConfig=function(e){this.filterConfig.openUnderLeft(e),this.popUpOpen=!0},n.prototype.saveFilterConfig=function(){this.localStorageID.length>0&&(localStorage[this.localStorageID]=JSON.stringify(this.tableDef)),this.save.emit(this.tableDef),this.closeFilterConfig()},n.prototype.resetFilterConfig=function(){var e=JSON.parse(JSON.stringify(this.ogTableDef));this.rearrangeColumns(e),this.resetted.emit(this.tableDef)},n.prototype.closeFilterConfig=function(){this.filterConfig.close(),this.popUpOpen=!1},n.prototype.dragTableDropEvent=function(e){l.moveItemInArray(this.tableDef,e.previousIndex,e.currentIndex)},n.prototype.isFilterSet=function(e){var t,n,i;return!!((null===(t=this.metaInfo)||void 0===t?void 0:t.dataFilter)&&e in(null===(n=this.metaInfo)||void 0===n?void 0:n.dataFilter)&&(null===(i=this.metaInfo)||void 0===i?void 0:i.dataFilter[e]))&&this.metaInfo.dataFilter[e].length>0},n}(a.ExcTranslation);q.decorators=[{type:t.Component,args:[{selector:"exg-table-settings",template:'<exg-popup #filterConfig [closeAlways]="false" width="360">\r\n  <form class="md-menu content">\r\n    <div class="layout-auto-1-auto" ExgAdaptiveHeight [adaptiveHeightActive]="popUpOpen" [adaptiveHeightOffset]="16">\r\n      \x3c!-- PopUp Header --\x3e\r\n      <div class="md-menu-header" style="border-bottom: 0">\r\n        <div class="grid-1-auto">\r\n          <div>{{getResource(\'HeaderTableSettings\')}}</div>\r\n          <div>\r\n            <i *ngIf="canOpen" class="search-action far fa-folder-open" (click)="doOpen.emit(tableDef)"\r\n               flow="left" [attr.tooltip]="getResource(\'TooltipOpen\')"></i>\r\n            <i class="search-action far fa-arrow-rotate-left" (click)="resetFilterConfig()"\r\n               flow="left" [attr.tooltip]="getResource(\'TooltipReset\')"></i>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      \x3c!-- Table Content --\x3e\r\n      <div class="content">\r\n        <table class="md3-table">\r\n          \x3c!-- Table Header --\x3e\r\n          <thead role="rowgroup" style="pointer-events: none;">\r\n          <tr role="row" style="border-top: 1px solid var(--c-dark-m2);">\r\n            <th #tableHeaderName role="columnheader" class="table-selector"\r\n                style="border-right: 1px solid var(--c-dark-m2);">{{getResource(\'TableHeaderName\')}}\r\n            </th>\r\n            <th #tableHeaderVisibility role="columnheader" class="table-selector"\r\n                style="text-align: center; border-right: 1px solid var(--c-dark-m2);">{{getResource(\'TableHeaderVisible\')}}\r\n            </th>\r\n            <th #tableHeaderFixed role="columnheader" class="table-selector"\r\n                style="text-align: center;">{{getResource(\'TableHeaderFixed\')}}\r\n            </th>\r\n          </tr>\r\n          </thead>\r\n          \x3c!-- Table Body --\x3e\r\n          <tbody\r\n            cdkDropList\r\n            id="table"\r\n            #todoList="cdkDropList"\r\n            [cdkDropListData]="tableDef"\r\n            (cdkDropListDropped)="dragTableDropEvent($event)">\r\n          <tr role="row" *ngFor="let def of tableDef; let i = index" cdkDrag style="cursor: pointer">\r\n            \x3c!-- Drag&Drop Preview --\x3e\r\n            <div *cdkDragPreview style="background: white; min-height: 36px; border: 1px solid var(--c-dark-m2);">\r\n              <td style="padding: 8px 16px; text-align: left; border-right: 1px solid var(--c-dark-m2);"\r\n                  [style.width.px]="tableHeaderName.offsetWidth">\r\n                <i class="fa-regular fa-fw fa-arrows-up-down"></i>{{def.caption}}\r\n                <i class="far" [ngClass]="{\'fa-filter\': isFilterSet(def.value)}"></i></td>\r\n              <td role="cell" class="table-selector"\r\n                  style="text-align: center; border-right: 1px solid var(--c-dark-m2); padding: 8px 16px;"\r\n                  [style.width.px]="tableHeaderVisibility.offsetWidth">\r\n                <i class="fa-regular fa-fw" [ngClass]="{\'fa-square\':!def.visible, \'fa-square-check\': def.visible}"></i>\r\n              </td>\r\n              <td role="cell" class="table-selector" style="text-align: center; padding: 8px 16px;"\r\n                  [style.width.px]="tableHeaderFixed.offsetWidth">\r\n                <i class="fa-regular fa-fw" [ngClass]="{\'fa-square\':!def.fixed, \'fa-square-check\': def.fixed}"></i>\r\n              </td>\r\n            </div>\r\n            \x3c!-- Table Rows --\x3e\r\n            <td role="columnheader" style="border-right: 1px solid var(--c-dark-m2); cursor: grab" cdkDragHandle>\r\n              <i class="fa-regular fa-fw fa-arrows-up-down"></i>\r\n              {{def.caption}}\r\n              <i class="far" [ngClass]="{\'fa-filter\': isFilterSet(def.value)}"></i></td>\r\n            <td role="cell" class="table-selector" style="text-align: center; border-right: 1px solid var(--c-dark-m2);"\r\n                (click)="def.visible = !def.visible">\r\n              <i class="fa-regular fa-fw" [ngClass]="{\'fa-square\':!def.visible, \'fa-square-check\': def.visible}"></i>\r\n            </td>\r\n            <td role="cell" class="table-selector" style="text-align: center;" (click)="def.fixed = !def.fixed">\r\n              <i class="fa-regular fa-fw" [ngClass]="{\'fa-square\':!def.fixed, \'fa-square-check\': def.fixed}"></i>\r\n            </td>\r\n          </tr>\r\n          </tbody>\r\n        </table>\r\n      </div>\r\n      \x3c!-- Footer --\x3e\r\n      <div class="md-menu-footer">\r\n        <button class="md-btn" type="submit" (click)="saveFilterConfig()">{{getGlobal(\'Save\')}}</button>\r\n        <button class="md-btn" type="button" (click)="closeFilterConfig()">{{getGlobal(\'Close\')}}</button>\r\n      </div>\r\n    </div>\r\n  </form>\r\n</exg-popup>\r\n'}]}],q.ctorParameters=function(){return[]},q.propDecorators={filterConfig:[{type:t.ViewChild,args:["filterConfig",{read:w}]}],tableDef:[{type:t.Input}],metaInfo:[{type:t.Input}],localStorageID:[{type:t.Input}],canOpen:[{type:t.Input}],save:[{type:t.Output}],resetted:[{type:t.Output}],doOpen:[{type:t.Output}],tableDefChange:[{type:t.Output}],dynamic:[{type:t.Input}]};var K=function(){};K.decorators=[{type:t.NgModule,args:[{declarations:[p,h,g,f,f,m,m,v,y,b,x,w,C,D,E,k,F,T,O,R,_,A,P,V,H,j,U,L,z,q],imports:[i.CommonModule,n.FormsModule,s.ExcRestModule,l.DragDropModule],exports:[p,h,g,f,m,y,b,x,v,w,C,D,E,k,F,T,O,R,_,A,P,V,H,j,U,L,z,q]}]}],e.ExcControlsModule=K,e.ExcControlsService=c,e.ExgAdaptiveHeightDirective=L,e.ExgCheckboxComponent=p,e.ExgDataListComponent=k,e.ExgDataTableComponent=C,e.ExgInputComponent=v,e.ExgKpiCircleComponent=R,e.ExgKpiGaugeComponent=_,e.ExgKpiProgressbarComponent=A,e.ExgLaneComponent=O,e.ExgModalComponent=h,e.ExgModalService=u,e.ExgModalSimpleComponent=g,e.ExgOptComponent=x,e.ExgOptionComponent=b,e.ExgOverlayComponent=V,e.ExgOverlayService=M,e.ExgPagerComponent=D,e.ExgPanelComponent=H,e.ExgPopupComponent=w,e.ExgPreventDefaultDirective=z,e.ExgSearchBarComponent=E,e.ExgSectionpanelComponent=j,e.ExgSelectComponent=y,e.ExgSwitchComponent=m,e.ExgTabComponent=T,e.ExgTableComponent=U,e.ExgTableSettingsComponent=q,e.ExgTextareaComponent=F,e.ExgWidgetComponent=f,e.ExgWidgetService=d,e.ɵa=P,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=exc-controls-v2.umd.min.js.map