@resolveio/client-lib-core 15.3.20 → 15.3.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as i0 from"@angular/core";import{Injectable,Component,Input,HostListener,ViewChild,Directive,ChangeDetectionStrategy,EventEmitter,Output,ViewChildren,Pipe,ElementRef,NgModule,ViewEncapsulation,Optional}from"@angular/core";import{BehaviorSubject,Subject,merge}from"rxjs";import*as i1$5 from"ngx-device-detector";import{DeviceDetectorService}from"ngx-device-detector";import*as i1 from"@angular/platform-browser";import*as i2 from"@angular/forms";import{UntypedFormControl,Validators,FormsModule,ReactiveFormsModule}from"@angular/forms";import*as i1$1 from"ngx-toastr";import{ToastrModule}from"ngx-toastr";import*as i1$2 from"ngx-localstorage";import{NgxLocalStorageModule}from"ngx-localstorage";import moment from"moment-timezone";import{finalize}from"rxjs/operators";import{detailedDiff}from"deep-object-diff";import moment$1 from"moment";import*as CryptoJS from"crypto-js";import*as i1$3 from"@angular/router";import{RouterModule}from"@angular/router";import*as i4 from"@angular/common/http";import{HttpClientModule}from"@angular/common/http";import*as i1$4 from"@ng-bootstrap/ng-bootstrap";import{NgbTooltipModule,NgbModule}from"@ng-bootstrap/ng-bootstrap";import*as i7 from"@angular/common";import{CommonModule}from"@angular/common";import*as i4$1 from"@ng-select/ng-select";import{NgSelectModule}from"@ng-select/ng-select";import{UserAgentApplication}from"msal";import{BrowserAnimationsModule}from"@angular/platform-browser/animations";import*as i8 from"ngx-file-drop";import{NgxFileDropModule}from"ngx-file-drop";import*as i9 from"@resolveio/client-lib-pdf-viewer";import{PdfViewerModule}from"@resolveio/client-lib-pdf-viewer";class CoreService{constructor(){this.isDevice=new BehaviorSubject(!1),this.fullScreen=new BehaviorSubject(!1),this.fsActivated=new BehaviorSubject(!1),this.hasConnected=new BehaviorSubject(!1),this.navbarModuleData=new BehaviorSubject({title:"",module:"",description:"",description_name:"",tabs:[]}),this.hasStatusMessage=new BehaviorSubject(!1),this.alertData=new BehaviorSubject({type:"",message:"",timer:0,showing:!1}),this.isInvalidSW=new BehaviorSubject(!1),this.environment=new BehaviorSubject(null),this.client=new BehaviorSubject(""),this.standardProgram=new BehaviorSubject(!1),this.navTabs=new BehaviorSubject([]),this.tourStops=new BehaviorSubject([]),this.tourStarted=new BehaviorSubject(!1),this.isDemo=new BehaviorSubject(!1),this.isLoggingOut=new BehaviorSubject(!1)}setFullScreen(t){this.fullScreen.next(t)}setFsActivated(t){this.fsActivated.next(t)}setHasConnected(t){this.hasConnected.next(t)}setNavbarModuleData(t){t.tabs=t.tabs.filter((t=>null===t.params)).concat(t.tabs.filter((t=>null!==t.params))),this.navbarModuleData.next(t)}setHasStatusMessage(t){this.hasStatusMessage.next(t)}setIsDevice(t){this.isDevice.next(t)}setIsInvalidSW(t){this.isInvalidSW.next(t)}setEnvironment(t){this.environment.next(t)}setClient(t){this.client.next(t)}setStandardProgram(t){this.standardProgram.next(t)}setNavTabs(t){this.navTabs.next(t)}setTourStops(t){this.tourStops.next(t)}setTourStarted(t){this.tourStarted.next(t)}setDemo(t){this.isDemo.next(t)}}CoreService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:CoreService,deps:[],target:i0.ɵɵFactoryTarget.Injectable}),CoreService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:CoreService,providedIn:"root"}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:CoreService,decorators:[{type:Injectable,args:[{providedIn:"root"}]}],ctorParameters:function(){return[]}});class ResizeService{get onResize$(){return this.resizeSubject.asObservable()}constructor(t){this.eventManager=t,this.resizeSubject=new Subject,this.eventManager.addGlobalEventListener("window","resize",this.onResize.bind(this))}onResize(t){this.resizeSubject.next(t.target)}}ResizeService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ResizeService,deps:[{token:i1.EventManager}],target:i0.ɵɵFactoryTarget.Injectable}),ResizeService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ResizeService}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ResizeService,decorators:[{type:Injectable}],ctorParameters:function(){return[{type:i1.EventManager}]}});class AlertService{constructor(t){this._toastr=t}clearAlert(t){t?this._toastr.clear(t):this._toastr.clear()}setAlert(t,e,n=5e3){return"success"===t?n?this._toastr.success(e,"Success",{timeOut:n}):this._toastr.success(e,"Success",{disableTimeOut:!0}):"info"===t?n?this._toastr.info(e,"Info",{timeOut:n}):this._toastr.info(e,"Info",{disableTimeOut:!0}):"warning"===t?n?this._toastr.warning(e,"Warning",{timeOut:n}):this._toastr.warning(e,"Warning",{disableTimeOut:!0}):"error"===t?n?this._toastr.error(e,"Error",{timeOut:n}):this._toastr.error(e,"Error",{disableTimeOut:!0}):"update"===t?this._toastr.warning(e,"Update",{disableTimeOut:!0}):void 0}}AlertService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AlertService,deps:[{token:i1$1.ToastrService}],target:i0.ɵɵFactoryTarget.Injectable}),AlertService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AlertService}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AlertService,decorators:[{type:Injectable}],ctorParameters:function(){return[{type:i1$1.ToastrService}]}});class SocketService{constructor(t){this._storage=t,this.debug=!1,this.reconnectInterval=1e3,this.timeoutInterval=5e3,this.timeout=null,this.readyState$=new BehaviorSubject(0),this.protocols=[],this.pingInterval=null,this.pongTimeout=null,this.pingIntervalTime=15e3,this.pongTimeoutTime=12e3,this.onopen=function(t){},this.onclose=function(t){},this.onconnecting=function(){},this.onmessage=function(t){},this.onerror=function(t){},this.onOpenHandler=t=>{clearTimeout(this.timeout),this.timeout=null,this.log(new Date,"WS","onopen",this.url),this.readyState=WebSocket.OPEN,this.readyState$.next(this.readyState),this.onopen(t),this.startPinging()},this.onCloseHandler=t=>{this.ws&&this.readyState!==WebSocket.CLOSED&&(this.timeout&&clearTimeout(this.timeout),this.timeout=null,this.ws.removeEventListener("open",this.onOpenHandler),this.ws.removeEventListener("close",this.onCloseHandler),this.ws.removeEventListener("message",this.onMessageHandler),this.ws.removeEventListener("error",this.onErrorHandler),this.ws=null,this.readyState=WebSocket.CLOSED,this.readyState$.next(this.readyState),this.log(new Date,"WS","onclose",this.url),this.onclose(t),setTimeout((()=>{this.connect()}),this.reconnectInterval),this.stopPinging())},this.onMessageHandler=t=>{if("pong"===t.data)this.log(new Date,"WS","pong received"),clearTimeout(this.pongTimeout);else if("ping"===t.data)this.log(new Date,"WS","ping received"),this.send("pong");else{let e=JSON.parse(t.data);e=this.convertUTCDateToLocalDate(e),this.onmessage(e)}},this.onErrorHandler=t=>{this.log(new Date,"WS","onerror",this,t),this.onerror(t),this.reconnect()},document.addEventListener("visibilitychange",this.handleVisibilityChange.bind(this))}openSocket(t,e){this.url=t.WS_URL,this.protocols=e,this.timezone=t.TZ_CLIENT,this.connect()}connect(){!this.ws&&this.readyState!==WebSocket.CONNECTING&&this._storage.get("accessToken")&&(this.readyState=WebSocket.CONNECTING,this.readyState$.next(this.readyState),this.timeout&&clearTimeout(this.timeout),this.ws=new WebSocket(this.url,this.protocols),this.onconnecting(),this.log(new Date,"WS","attempt-connect",this.url),this.timeout=setTimeout((()=>{this.log(new Date,"WS","connection-timeout",this.url),this.close()}),this.timeoutInterval),this.ws.onopen=this.onOpenHandler,this.ws.onclose=this.onCloseHandler,this.ws.onmessage=this.onMessageHandler,this.ws.onerror=this.onErrorHandler)}convertUTCDateToLocalDate(t){if(Array.isArray(t))return t.map((t=>this.convertUTCDateToLocalDate(t)));if("object"==typeof t&&null!==t){return Object.keys(t).forEach((e=>{t[e]=this.convertUTCDateToLocalDate(t[e])})),t}if("string"==typeof t){if(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z$/.test(t))return new Date(t)}return t}startPinging(){this.pingInterval=setInterval((()=>{this.isWebSocketActive()?(this.send("ping"),this.pongTimeout=setTimeout((()=>{this.log(new Date,"WS","pong not received, closing connection"),this.reconnect()}),this.pongTimeoutTime)):this.reconnect()}),this.pingIntervalTime)}stopPinging(){this.pingInterval&&clearInterval(this.pingInterval),this.pongTimeout&&clearTimeout(this.pongTimeout)}convertDatesToUTC(t,e=new WeakSet){"object"==typeof t&&null!==t&&(e.has(t)||(e.add(t),Object.keys(t).forEach((n=>{t[n]instanceof Date?t[n]=moment(t[n]).tz(this.timezone,!0).utc().toDate().toISOString():"object"==typeof t[n]&&null!==t[n]&&this.convertDatesToUTC(t[n],e)}))))}send(...t){return this.isWebSocketActive()?(t.forEach((t=>this.convertDatesToUTC(t))),this.ws.send(1===t.length?JSON.stringify(t[0]):JSON.stringify(t)),!0):(this.log(new Date,"WS","send error",this.readyState),this.reconnect(),!1)}close(){return!!this.ws&&(this.log(new Date,"WS","closing socket"),this.readyState=WebSocket.CLOSING,this.readyState$.next(this.readyState),this.ws.close(),!0)}reconnect(){this.log(new Date,"WS","reconnect",this.readyState),this.readyState!==WebSocket.CONNECTING&&this.close()}getBufferAmount(){return this.ws?this.ws.bufferedAmount:20480}log(...t){this.debug&&console.log(...t)}handleVisibilityChange(){"visible"===document.visibilityState&&(this.isWebSocketActive()||this.reconnect())}isWebSocketActive(){return this.ws&&this.ws.readyState===WebSocket.OPEN}}SocketService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SocketService,deps:[{token:i1$2.LocalStorageService}],target:i0.ɵɵFactoryTarget.Injectable}),SocketService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SocketService}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SocketService,decorators:[{type:Injectable}],ctorParameters:function(){return[{type:i1$2.LocalStorageService}]}});const isObject$1=t=>t instanceof Object&&"Object"===t.constructor.name;function round(t,e=0){const n=Math.pow(10,e);return Math.round(t*n+1e-6)/n}function toTitleCase(t){return t.replace(/\w\S*/g,(function(t){return t.charAt(0).toUpperCase()+t.substr(1).toLowerCase()}))}function isUpperCase(t){return/^[A-Z]*$/.test(t)}function pad(t,e){let n=t+"";for(;n.length<e;)n="0"+n;return n}function deepCopy(t){return JSON.parse(JSON.stringify(t),dateReviver)}function dateReviver(t,e){if("string"==typeof e){let t=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(e);if(t)return new Date(Date.UTC(+t[1],+t[2]-1,+t[3],+t[4],+t[5],+t[6].split(".")[0],+t[6].split(".")[1]))}return e}function b64toBlobURL(t,e,n){t=t.replace("data:application/pdf;base64,",""),e=e||"",n=n||512;let o=atob(t),r=[];for(let t=0;t<o.length;t+=n){let e=o.slice(t,t+n),i=new Array(e.length);for(let t=0;t<e.length;t++)i[t]=e.charCodeAt(t);let a=new Uint8Array(i);r.push(a)}let i=new Blob(r,{type:e});return URL.createObjectURL(i)}function blobToFile(t,e){return t.lastModifiedDate=new Date,t.name=e,t}function toDataURL(t,e){let n=new XMLHttpRequest;n.onload=function(){let t=new FileReader;t.onloadend=function(){e(t.result)},t.readAsDataURL(n.response)},n.open("GET",t),n.responseType="blob",n.send()}function deepDiffDetails(t,e){let n=deepCopy(t),o=deepCopy(e),r=detailedDiff(n,o),i="";const a=t=>t instanceof Date?moment$1(t).format("llll"):"object"==typeof t&&null!==t?(Object.keys(t).filter((t=>t.startsWith("_id")||t.startsWith("id_"))).forEach((e=>{delete t[e]})),JSON.stringify(t)):"string"==typeof t?`"${t}"`:String(t),s=(t,e)=>null===t||null===e||"object"!=typeof t||"object"!=typeof e?`from: ${a(t)} to: ${a(e)}`:Array.isArray(t)||Array.isArray(e)?((t,e)=>{let n=[];const o=Math.max(t.length,e.length);for(let r=0;r<o;r++)t[r]&&!e[r]?n.push(`Removed at index ${r}: ${a(t[r])}`):!t[r]&&e[r]?n.push(`Added at index ${r}: ${a(e[r])}`):t[r]&&e[r]&&JSON.stringify(t[r])!==JSON.stringify(e[r])&&n.push(`Changed at index ${r}: {${s(t[r],e[r])}}`);return n.join(", ")})(Array.isArray(t)?t:[],Array.isArray(e)?e:[]):Object.keys({...t,...e}).filter((t=>!t.startsWith("_id")&&!t.startsWith("id_"))).map((n=>{const o=t?t[n]:void 0,r=e?e[n]:void 0;return`${toTitleCase(n)}: ${s(o,r)}`})).join(", ");return["added","deleted","updated"].forEach((t=>{if(Object.keys(r[t]).length>0){const e=Object.keys(r[t]).filter((e=>"added"===t||("deleted"===t?!r.added[e]:!r.added[e]&&!r.deleted[e]))).filter((t=>!t.startsWith("_id")&&!t.startsWith("id_"))).map((t=>`\n${toTitleCase(t)}: ${s(n[t],o[t])}`)).join(",");i+=e?`${e}`:""}})),i}function generateCronStringFromDate(t){return t.getSeconds()+" "+t.getMinutes()+" "+t.getHours()+" "+t.getDate()+" "+(t.getMonth()+1)+" "+t.getDay()}function s2ab(t){let e=new ArrayBuffer(t.length),n=new Uint8Array(e);for(let e=0;e!==t.length;++e)n[e]=255&t.charCodeAt(e);return e}function mergeDeep(t,...e){if(!e.length)return t;const n=e.shift();if(isObject$1(t)&&isObject$1(n))for(const e in n)isObject$1(n[e])?(t[e]||Object.assign(t,{[e]:{}}),mergeDeep(t[e],n[e])):Object.assign(t,{[e]:n[e]});return mergeDeep(t,...e)}class StorageDB{constructor(t){this.storage=null,this.database=null,this.primaryKey=null,this.secretKey=null,this.sep="",t=t||{},this.storage=t.storage||window&&window.localStorage,this.database=t.database||"db",this.primaryKey=t.primaryKey||"_id",this.sep=t.sep||":",this.secretKey=t.secretKey||"",isSupported(this.storage)||(this.storage=null)}encryptData(t){const e=JSON.stringify(t);return CryptoJS.AES.encrypt(e,this.secretKey).toString()}decryptData(t){const e=CryptoJS.AES.decrypt(t,this.secretKey);try{const t=e.toString(CryptoJS.enc.Utf8);return JSON.parse(t,dateReviver)}catch(t){return null}}get(t,e){return new Collection(this,t,e)}getCollections(){let t=[];return Object.keys(this.storage).filter((t=>t.split(":").length>2)).forEach((e=>{t.some((t=>t===e.split(":")[1]))||t.push(e.split(":")[1])})),t}collection(t,e){return this.get(t,e)}}class Collection{constructor(t,e,n){this.name="",this.storage=null,this.path="",this.primaryKey="",this.cache={},this.cacheable=!1,this.db=null,n=n||{},this.name=e,this.storage=t.storage||new MockStorage,this.path=t.database+t.sep+e+t.sep,this.primaryKey=n.primaryKey||t.primaryKey,this.cache={},this.cacheable=!t.storage,this.db=t}_initCache(){let t={},e=new RegExp("^"+this.path);for(let n of Object.keys(this.storage))if(e.test(n)){const e=this.storage.getItem(n);t[n]=this.db.decryptData(e)}this.cache=t,this.cacheable=!0}_filter(t,e){e.type=e.type||"data",e.multi=e.multi||!1,this.cacheable||this._initCache();let n,o=[],r="id"===e.type;if("string"==typeof t)t=new RegExp(t);else if("function"==typeof t)n=!0;else if(!t){let t=r?Object.keys(this.cache):Object.values(this.cache);return e.multi?t:t[0]||null}for(let i of Object.keys(this.cache)){let a=this.cache[i];if(n){if(t(i,a.data)){let t=r?i:a;if(!e.multi)return t;o.push(t)}}else if(t.test(i)){let t=r?i:a;if(!e.multi)return t;o.push(t)}}return e.multi?o:null}insert(t,e,n){let o=t instanceof Array;if(o){if(0===t.length)return[]}else t=[t];let r=this.primaryKey,i=this.cacheable;for(let n of t){if(!isObject(n))throw new Error("TypeError: insert data must be an object or an object array");void 0===n[r]&&(n[r]=(new ID).toString());let t=new Date,o={offlineDate:t,offlineDateExpires:e||new Date(t.getTime()+6048e5),data:n};const a=this.db.encryptData(o);i&&(this.cache[this.path+n[r]]=o),this.storage.setItem(this.path+n[r],a)}return o?t.map((t=>t._id)):t[0]._id}find(t,e,n){let o;t=t||{},(e=e||{}).skip=e.skip||0,e.limit=e.limit,e.sort=e.sort;let r=isObject(t)?null:t instanceof Array?t:[t],i={type:e._filterType||"data",multi:!0};if(r){let t=new RegExp("^"+this.path+"("+r.join("|")+")$");o=this._filter(t,i)}else o=Object.keys(t).length?this._filter(((e,n)=>queryMatch(t,n)),i):this._filter(null,i);return n||(o=o.map((t=>t.data))),e.sort&&o.sort(((t,n)=>sortCompare(e.sort,t,n))),e.limit?o=o.slice(e.skip,e.skip+e.limit):e.skip&&(o=o.slice(e.skip)),o}findOne(t,e){let n;e=e||{};let o=isObject(t=t||{})?null:t,r=isObject(t)?Object.keys(t):[],i=!1,a=!!e.sort,s={type:e._filterType||"data",multi:!1};if(r.length&&r.includes(this.primaryKey)&&(o=t[this.primaryKey],i=!0),o){if(n=this.storage.getItem(this.path+o),n=n?this.db.decryptData(n).data:null,n&&i&&!queryMatch(t,n))return null}else r.length?a?n=this.find(t,e):(n=this._filter(((e,n)=>queryMatch(t,n)),s),Array.isArray(n)?n=n.map((t=>t.data)):n&&(n=n.data)):n=a?this.find(t,e):this._filter(null,s);return!o&&a&&n&&(n=n[0].data||null),n&&"id"===s.type&&(n=this.path+n[this.primaryKey]),n}remove(t,e){if(!t)throw new Error("remove needs a query");(e=e||{}).multi=void 0===e.multi||e.multi;let n=e.multi?"find":"findOne",o=null;o="find"===n?this[n](t,{_filterType:"id"},!0):this[n](t,{_filterType:"id"});let r=this.cacheable;if(e.multi&&!o.length||!e.multi&&!o)return 0;e.multi||(o=[o]);for(let t of o)r&&delete this.cache[t],this.storage.removeItem(t);return o.length}update(t,e,n){if(!t)throw new Error("update needs a query");if(!e||!isObject(e))throw new Error("update needs an object");(n=n||{}).multi=void 0!==n.multi&&n.multi;let o=this[n.multi?"find":"findOne"](t,{_filterType:"id"}),r=this.primaryKey,i=this.cacheable;if(n.multi&&!o.length||!n.multi&&!o)return 0;if(n.multi){if(delete e[r],!Object.keys(e).length)return 0;for(let t of o){let n=i?this.cache[t]:this.db.decryptData(this.storage.getItem(t)),o=Object.assign({},n.data,e);i&&(this.cache[t]={offlineDate:n.offlineDate,offlineDateExpires:n.offlineDateExpires,data:o});const r=this.db.encryptData({offlineDate:n.offlineDate,offlineDateExpires:n.offlineDateExpires,data:o});this.storage.setItem(t,r)}return o.length}{let t=o,n=i?this.cache[t]:this.db.decryptData(this.storage.getItem(t)),a=e[r]&&e[r]!==n.data[r],s=a?this.path+e[r]:t;if(a&&this.findOne(e[r]))throw new Error("Duplicate value '"+e[r]+"' for unique field '"+r+"'");let l=Object.assign({},n.data,e);i&&(this.cache[s]={offlineDate:n.offlineDate,offlineDateExpires:n.offlineDateExpires,data:l},a&&delete this.cache[t]);const c=this.db.encryptData({offlineDate:n.offlineDate,offlineDateExpires:n.offlineDateExpires,data:l});return this.storage.setItem(s,c),a&&this.storage.removeItem(t),l}}drop(){return this.remove({}),!0}}class ID{constructor(){}toString(){return((new Date).getTime()/1e3).toString(16).substr(-4)+Math.random().toString(16).substr(2,12)}}class MockStorage{constructor(){this.length=0,this.length=0}key(){}setItem(){}getItem(){}removeItem(){}}const isSupported=t=>{if(!(t&&t instanceof Object))return!1;try{return t.setItem("_supported","1"),t.removeItem("_supported"),!0}catch(t){return!1}},isObject=t=>t instanceof Object&&"Object"===t.constructor.name,queryMatch=(t,e)=>{if(!t||!Object.keys(t).length)return!0;for(let n of Object.keys(t)){let o=t[n];if("$or"===n&&Array.isArray(o))return o.some((t=>queryMatch(t,e)));if("$and"===n&&Array.isArray(o))return o.every((t=>queryMatch(t,e)));if("$in"===n&&Array.isArray(o))return o.includes(e);if("$nin"===n&&Array.isArray(o))return!o.includes(e);if("$exists"===n&&"boolean"==typeof o)return o?void 0!==e:void 0===e;let r=e[n];if(r||n.split(".").forEach((t=>{r=r?r[t]:e[t]})),o instanceof RegExp){if(!o.test(r))return!1}else if(isObject(o)){for(let t of Object.keys(o))if(Operator._checkExist(t)&&!Operator[t](o[t],r))return!1}else if(o!==r)return!1}return!0},sortCompare=(t,e,n,o,r)=>{o=o||0;let i=(r=r||Object.keys(t))[o];return i?e[i]===n[i]?(o++,sortCompare(t,e,n,o,r)):1===t[i]?e[i]-n[i]:-1===t[i]?n[i]-e[i]:void 0:0},ops=["$eq","$gt","$gte","$in","$lt","$lte","$ne","$nin"],isNotNumber=t=>"number"!=typeof t;class Operator{static $eq(t,e){return e===t}static $gt(t,e){if(isNotNumber(t))throw new Error("'$gt' value must be a number");return e>t}static $gte(t,e){if(isNotNumber(t))throw new Error("'$gte' value must be a number");return e>=t}static $lt(t,e){if(isNotNumber(t))throw new Error("'$lt' value must be a number");return e<t}static $lte(t,e){if(isNotNumber(t))throw new Error("'$lte' value must be a number");return e<=t}static $ne(t,e){return e!==t}static $in(t,e){if(!(t instanceof Array))throw new Error("'$in' value must be an array");return t.includes(e)}static $nin(t,e){if(!(t instanceof Array))throw new Error("'$nin' value must be an array");return!t.includes(e)}static $exists(t,e){return t?void 0!==e:void 0===e}static $regex(t,e){if(!(t instanceof RegExp))throw new Error("'$regex' value must be a RegExp");return t.test(e)}static _checkExist(t){if(["$eq","$gt","$gte","$in","$lt","$lte","$ne","$nin","$exists","$regex"].includes(t))return!0;throw new Error("unknown operator: '"+t+"'")}}class OfflineManagerService{constructor(t){this._storage=t,this.storageInitialized=new BehaviorSubject(!1),this.offlineMode=new BehaviorSubject(!0)}initStorage(t){this._offlineDB=new StorageDB({storage:window.localStorage,database:"offlineDB",primaryKey:"_id",secretKey:t}),this._offlineDB.getCollections().forEach((t=>{let e=this.find(t,{},{},!0);e.some((t=>!t))?this.dropCollection(t):e.forEach((e=>{e&&e.offlineDateExpires&&"function"==typeof e.offlineDateExpires.getTime&&Date.now()>=e.offlineDateExpires.getTime()&&this.removeDocument(t,e.data._id)}))}));let e=this._storage.get("user");if(e){if(null===this._offlineDB.decryptData(e)){const t=this._offlineDB.encryptData(e);this._storage.set("user",t)}}let n=this._storage.get("lastURL");if(n){if(null===this._offlineDB.decryptData(n)){const t=this._offlineDB.encryptData(n);this._storage.set("lastURL",t)}}let o=this._storage.get("accessToken");if(o){if(null===this._offlineDB.decryptData(o)){const t=this._offlineDB.encryptData(o);this._storage.set("accessToken",t)}}let r=this._storage.get("refreshToken");if(r){if(null===this._offlineDB.decryptData(r)){const t=this._offlineDB.encryptData(r);this._storage.set("refreshToken",t)}}this.storageInitialized.next(!0)}getStorage(){return this._offlineDB}setOffline(t){this.offlineMode.next(t)}saveUser(t){return this._storage.set("user",this._offlineDB.encryptData(t))}getUser(){return this._storage.get("user")?this._offlineDB.decryptData(this._storage.get("user")):null}removeUser(){this._storage.remove("user")}find(t,e,n={},o=!1){const r=this._offlineDB.get(t);return r?r.find(e,n,o):[]}findOne(t,e){const n=this._offlineDB.get(t);return n?n.findOne(e):null}insertDocument(t,e,n){const o=this._offlineDB.get(t);let r="";return o&&e&&(!Array.isArray(e)||e.length)&&(r=o.insert(e,n)),r}updateDocument(t,e){const n=this._offlineDB.get(t);if(n){if(n.findOne({_id:e._id}))return e.__v+=1,n.update(e._id,e),1}return 0}updateDocumentProps(t,e,n,o){const r=this._offlineDB.get(t);if(r){let t=r.findOne({_id:e});if(t)return n.forEach((e=>{t[e.prop]=e.data})),t.__v+=1,r.update({_id:e},t),1}return 0}removeDocument(t,e){const n=this._offlineDB.get(t);n&&n.remove(e)}dropCollection(t){this._offlineDB.get(t).drop()}}OfflineManagerService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:OfflineManagerService,deps:[{token:i1$2.LocalStorageService}],target:i0.ɵɵFactoryTarget.Injectable}),OfflineManagerService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:OfflineManagerService}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:OfflineManagerService,decorators:[{type:Injectable}],ctorParameters:function(){return[{type:i1$2.LocalStorageService}]}});class TokenManagerService{constructor(t,e){this._storage=t,this._offline=e}getToken(t){let e=this._storage.get(t);return e?this._offline.getStorage().decryptData(e):null}setToken(t,e){this._storage.set(t,this._offline.getStorage().encryptData(e))}removeToken(t){null!==this.getToken(t)&&this._storage.remove(t)}}TokenManagerService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:TokenManagerService,deps:[{token:i1$2.LocalStorageService},{token:OfflineManagerService}],target:i0.ɵɵFactoryTarget.Injectable}),TokenManagerService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:TokenManagerService}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:TokenManagerService,decorators:[{type:Injectable}],ctorParameters:function(){return[{type:i1$2.LocalStorageService},{type:OfflineManagerService}]}});class SocketManagerService{constructor(t,e,n,o,r){this._socket=t,this._offline=e,this._alert=n,this._router=o,this._token=r,this.messageId=0,this._cbArray=[],this._subArray=[],this._offlineUpdates=[],this._pendingMessages=[],this._sendTimeout=null,this._currentLockId="",this._connectionDelayTimeout=null,this.onerror=function(){}}getSubArray(){return this._subArray}initSocketManager(){this._socket.readyState$.subscribe((t=>{this.socketStatus=t})),this._socket.onmessage=t=>{this.handleMessage(t)},this._socket.onopen=t=>{this._connectionDelayTimeout=setTimeout((async()=>{if(this._connectionDelayTimeout=null,this._offline.setOffline(!1),this._subArray.forEach((t=>{this.send(t.messageRoute,new Date,t.messageId,"subscription","sub",t.subscription,...t.parameters)})),!await this.acquireLock("processingOfflineUpdates"))return;let t=this._offline.find("collectionOffline",{}).sort(((t,e)=>t.date.getTime()-e.date.getTime())),e=this._offline.find("methodOffline",{}).sort(((t,e)=>t.date.getTime()-e.date.getTime()));t.length||e.length?(t.forEach((t=>{let e=this.messageId++;this._offlineUpdates.push({id_offline_doc:t._id,messageId:e,type:"collectionOffline"}),t.data[2]=e,"updateDocument"===t.type?(t.data[4]="updateDocumentOffline",t.data[0]="Offline - "+t.data[0]):"updateDocumentProps"===t.type?(t.data[4]="updateDocumentPropsOffline",t.data[0]="Offline - "+t.data[0]):t.data[0]="Offline - "+t.data[0]})),e.forEach((t=>{let e=this.messageId++;this._offlineUpdates.push({id_offline_doc:t._id,messageId:e,type:"methodOffline"}),t.data[2]=e,t.data[0]="Offline - "+t.data[0]})),this.send("Offline Updates",new Date,this.messageId++,"offline",t.concat(e).sort(((t,e)=>t.date.getTime()-e.date.getTime())))):this.releaseLock("processingOfflineUpdates")}),100)},this._socket.onerror=t=>{this._connectionDelayTimeout&&clearTimeout(this._connectionDelayTimeout),console.log(new Date,"SOCKET ERROR",t),this.onerror()},this._socket.onclose=t=>{this._connectionDelayTimeout&&clearTimeout(this._connectionDelayTimeout)}}handleMessage(t){for(let e of t)this.processReceivedMessage(e)}async acquireLock(t,e=6e4,n=100){let o=Date.now(),r=this.generateUniqueId(),i=JSON.stringify({lockId:r,timestamp:o}),a=this._token.getToken(t);if(a){let{lockId:n,timestamp:r}=JSON.parse(a);if(!(o>r+e))return!1;this._token.setToken(t,i)}else this._token.setToken(t,i);await this.sleep(n);let s=this._token.getToken(t);if(s){let{lockId:t,timestamp:n}=JSON.parse(s);if(t===r&&o<=n+e)return this._currentLockId=r,!0}return!1}sleep(t){return new Promise((e=>setTimeout(e,t)))}releaseLock(t){let e=this._token.getToken(t);if(e){let{lockId:n}=JSON.parse(e);n===this._currentLockId&&this._token.removeToken(t)}}generateUniqueId(){return`${Date.now()}-${Math.random().toString(36).substr(2,9)}`}processReceivedMessage(t){let e=this._offlineUpdates.findIndex((e=>e.messageId===t.messageId));if(e>=0&&(this._offline.removeDocument(this._offlineUpdates[e].type,this._offlineUpdates[e].id_offline_doc),this._offlineUpdates.splice(e,1),this._offlineUpdates.length||this.releaseLock("processingOfflineUpdates")),"ACK"!==t.data&&"NACK"!==t.data)if(this._cbArray.map((t=>t.messageId)).includes(t.messageId)){let e=this._cbArray.findIndex((e=>e.messageId===t.messageId));e>=0&&(this._cbArray[e].cb?(this._cbArray[e].cb(t.hasError?t.data:null,t.hasError?null:t.data),this._cbArray[e].resolveFn(t.hasError?t.data:null)):t.hasError?this._cbArray[e].rejectFn(t.data):this._cbArray[e].resolveFn(t.data),this._cbArray.splice(e,1))}else if(this._subArray.map((t=>t.messageId)).includes(t.messageId)){let e=this._subArray.findIndex((e=>e.messageId===t.messageId));e>=0&&this._subArray[e].subject.next(t.data)}}openSocket(t,e){this._socket.openSocket(t,e)}closeSocket(){this._token.removeToken("accessToken"),this._socket.close()}call(t,...e){let n=null,o=null,r=new Promise(((t,e)=>{n=t,o=e})),i=this.messageId++;e[e.length-1]&&"function"==typeof e[e.length-1]?this._cbArray.push({messageId:i,cb:e.pop(),resolveFn:n,rejectFn:o,retryCnt:0}):this._cbArray.push({messageId:i,cb:null,resolveFn:n,rejectFn:o,retryCnt:0});let a=e.length;for(;(void 0===e[e.length-1]||null===e[e.length-1])&&a>0;)e.pop(),a=e.length;return this.send(this._router.url.includes("?")?this._router.url.substring(0,this._router.url.indexOf("?")):this._router.url,new Date,i,"method",t,...e),r}subscribe(t,...e){const n=deepCopy(e),o=new Subject;let r=this.messageId++;this._subArray.push({messageId:r,messageRoute:this._router.url.includes("?")?this._router.url.substring(0,this._router.url.indexOf("?")):this._router.url,subscription:t,parameters:n,subject:o});const i=o.pipe(finalize((()=>{this.unsubscribe(r,t,...n),this._subArray.splice(this._subArray.map((t=>t.messageId)).indexOf(r),1)})));return this.send(this._router.url.includes("?")?this._router.url.substring(0,this._router.url.indexOf("?")):this._router.url,new Date,r,"subscription","sub",t,...n),i}subscribeBypassRoute(t,...e){const n=deepCopy(e),o=new Subject;let r=this.messageId++;this._subArray.push({messageId:r,messageRoute:"Bypass",subscription:t,parameters:n,subject:o});const i=o.pipe(finalize((()=>{this.unsubscribe(r,t,...n),this._subArray.splice(this._subArray.map((t=>t.messageId)).indexOf(r),1)})));return this.send("Bypass",new Date,r,"subscription","sub",t,...n),i}unsubscribe(t,e,...n){this.send(this._router.url.includes("?")?this._router.url.substring(0,this._router.url.indexOf("?")):this._router.url,new Date,t,"subscription","unsub",e,...n)}send(...t){this.socketStatus===WebSocket.OPEN?(this._pendingMessages.push(t),this._sendTimeout||(this._sendTimeout=setTimeout((()=>{this._sendTimeout=null;const t=[...this._pendingMessages];this._pendingMessages=[],this._socket.send(t)}),25))):"method"===t[3]&&this.handleOfflineMethod(t)}handleOfflineMethod(t){if("insertDocument"===t[4]){if("driver-gps"===t[5])return;this._alert.setAlert("warning","This insert command has not taken place on the server yet because you are offline. It will automatically sync up next time you are online as long as you do not clear your cache!"),this._offline.insertDocument("collectionOffline",{type:"insert",data:t,date:new Date});let e=this._offline.insertDocument(t[5],t[6]),n=this._cbArray.filter((e=>e.messageId===t[2]))[0];n&&n.cb&&(n.cb(null,e),this._cbArray.splice(this._cbArray.findIndex((e=>e.messageId===t[2])),1))}else if("updateDocument"===t[4]){this._alert.setAlert("warning","This update command has not taken place on the server yet because you are offline. It will automatically sync up next time you are online as long as you do not clear your cache!"),this._offline.insertDocument("collectionOffline",{type:"updateDocument",data:t,date:new Date}),this._offline.findOne(t[5],{_id:t[6]._id})?this._offline.updateDocument(t[5],t[6]):console.log("Could not find Offline data",t[5],t[6]);let e=this._cbArray.filter((e=>e.messageId===t[2]))[0];e&&e.cb&&(e.cb(null,1),this._cbArray.splice(this._cbArray.findIndex((e=>e.messageId===t[2])),1))}else if("updateDocumentProps"===t[4]){this._alert.setAlert("warning","This update command has not taken place on the server yet because you are offline. It will automatically sync up next time you are online as long as you do not clear your cache!"),this._offline.insertDocument("collectionOffline",{type:"updateDocumentProps",data:t,date:new Date}),this._offline.findOne(t[5],{_id:t[6]})?this._offline.updateDocumentProps(t[5],t[6],t[7],t[8]):console.log("Could not find Offline data",t[5],t[6]);let e=this._cbArray.filter((e=>e.messageId===t[2]))[0];e&&e.cb&&(e.cb(null,1),this._cbArray.splice(this._cbArray.findIndex((e=>e.messageId===t[2])),1))}else if("removeDocument"===t[4]){this._alert.setAlert("warning","This remove command has not taken place on the server yet because you are offline. It will automatically sync up next time you are online as long as you do not clear your cache!"),this._offline.insertDocument("collectionOffline",{type:"removeDocument",data:t,date:new Date}),this._offline.findOne(t[5],{_id:t[6]})?this._offline.removeDocument(t[5],t[6]):console.log("Could not find Offline data",t[5],t[6]);let e=this._cbArray.filter((e=>e.messageId===t[2]))[0];e&&e.cb&&(e.cb(null,1),this._cbArray.splice(this._cbArray.findIndex((e=>e.messageId===t[2])),1))}else t[0].includes("/dashboard/driver/")&&this._offline.insertDocument("methodOffline",{type:t[4],data:t,date:new Date})}getStatus(){return this._socket.readyState$}}SocketManagerService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SocketManagerService,deps:[{token:SocketService},{token:OfflineManagerService},{token:AlertService},{token:i1$3.Router},{token:TokenManagerService}],target:i0.ɵɵFactoryTarget.Injectable}),SocketManagerService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SocketManagerService}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SocketManagerService,decorators:[{type:Injectable}],ctorParameters:function(){return[{type:SocketService},{type:OfflineManagerService},{type:AlertService},{type:i1$3.Router},{type:TokenManagerService}]}});class AccountManagerService{constructor(t,e,n,o,r,i){this._router=t,this._socket=e,this._token=n,this._http=o,this._alert=r,this._offline=i,this.user=new BehaviorSubject(null),this.initCompleted=new BehaviorSubject(!1),this.loginCompleted=new BehaviorSubject(!1),this.environment=null}initLoginManager(t){this.environment=t,this._offline.storageInitialized.subscribe((t=>{this._socket.initSocketManager();let e=this._token.getToken("refreshToken");e?(this.initLogin(e),setInterval((()=>{e=this._token.getToken("refreshToken"),this.initLogin(e)}),3e3)):this.initCompleted.next(!0)}))}initLogin(t){if(navigator.onLine)this._offline.offlineMode.getValue()&&(this._offline.setOffline(!1),this.getAccessToken(t));else if(!this._offline.offlineMode.getValue()||!this.initCompleted.getValue()){this.closeSocket(),this._offline.setOffline(!0);let t=this._offline.getUser();t&&this.user.next(t),this.initCompleted.getValue()||this.initCompleted.next(!0)}}getAccessToken(t){t&&this._http.post(this.environment.SERVER_URL+"/accessToken",{refreshToken:t}).toPromise().then((t=>{t.error?this.initCompleted.next(!0):(this._token.setToken("accessToken",t.result.token),this.user.next(t.result.user),this.openSocket(t.result.token),this.user$&&this.user$.unsubscribe(),this.user$=this._socket.subscribeBypassRoute("userWithId",t.result.user._id).subscribe((t=>{t&&(this.user.getValue()&&this.user.getValue()._id!==t._id?this._socket.call("incorrectUser",this.user.getValue(),t,this._socket.getSubArray()):(this.user.next(t),this.loginCompleted.next(!0),this.initCompleted.next(!0),this._offline.saveUser(t)))})))}),(t=>{this.initCompleted.next(!0)}))}logIn(t,e){return new Promise(((n,o)=>{this._http.post(this.environment.SERVER_URL+"/login",{username:t,password:e}).toPromise().then((t=>{t.error?(this._alert.setAlert("error",t.result),o(t.result)):(this._token.setToken("refreshToken",t.result.token),this.getAccessToken(t.result.token),n(t.result.token))}),(t=>{}))}))}logIn365(t){return new Promise(((e,n)=>{this._http.post(this.environment.SERVER_URL+"/login365",{id_token:t}).toPromise().then((t=>{t.error?(this._alert.setAlert("error",t.result),n(t.result)):(this._token.setToken("refreshToken",t.result.token),this.getAccessToken(t.result.token),e(t.result.token))}),(t=>{}))}))}resetUserPassword(t){return new Promise(((e,n)=>{this._http.post(this.environment.SERVER_URL+"/resetPassword",{username:t}).toPromise().then((t=>{e(!0)}),(t=>{}))}))}logOut(){return new Promise(((t,e)=>{this._router.navigateByUrl("/home"),setTimeout((()=>{this.user.next(null),this._token.removeToken("refreshToken"),this._offline.removeUser(),this.closeSocket(),t(!0)}),500)}))}openSocket(t){this._socket.openSocket(this.environment,[t])}closeSocket(){this._socket.closeSocket()}setUser(t){this.user.next(t)}getUser(){return this.user.getValue()}getSocketStatus(){return this._socket.getStatus()}isUserInView(t){let e=!1;if(this.isUserSuperAdmin())return!0;let n=this.user.getValue();return n&&(n.roles.groups.forEach((n=>{n.views.filter((e=>e.startsWith(t))).length&&(e=!0)})),n.roles.miscs.filter((e=>e.startsWith(t))).length&&(e=!0),n.roles.groups.filter((e=>e.name===t)).length&&(e=!0)),e}isUserSuperAdmin(){return this.user.getValue()&&this.user.getValue().roles.super_admin}isInitCompleted(){return new Promise(((t,e)=>{if(this.initCompleted.value)t(!0);else{let e=this.initCompleted.subscribe((n=>{n&&(e.unsubscribe(),t(!0))}),(()=>{}))}}))}isLoginCompleted(){return new Promise(((t,e)=>{if(this.loginCompleted.value)t(!0);else{let e=this.loginCompleted.subscribe((n=>{n&&(e.unsubscribe(),t(!0))}))}}))}}AccountManagerService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AccountManagerService,deps:[{token:i1$3.Router},{token:SocketManagerService},{token:TokenManagerService},{token:i4.HttpClient},{token:AlertService},{token:OfflineManagerService}],target:i0.ɵɵFactoryTarget.Injectable}),AccountManagerService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AccountManagerService}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AccountManagerService,decorators:[{type:Injectable}],ctorParameters:function(){return[{type:i1$3.Router},{type:SocketManagerService},{type:TokenManagerService},{type:i4.HttpClient},{type:AlertService},{type:OfflineManagerService}]}});class ValidationService{constructor(){}wholeNumbersAllowNegative(t){return""===t.value||null===t.value||/^[\-]?\d+$/.test(t.value)?null:{wholeNumbersAllowNegative:{valid:!1}}}wholeNumbersWithZero(t){return""===t.value||null===t.value||/^[0-9]*$/.test(t.value)?null:{wholeNumbersWithZero:{valid:!1}}}wholeNumbersGreaterThanZero(t){return""===t.value||null===t.value||/^[1-9]+[0-9]*$/.test(t.value)?null:{wholeNumbersGreaterThanZero:{valid:!1}}}decimalWithZero(t){return""===t.value||null===t.value||/^\d*\.?\d*$/.test(t.value)?null:{decimalWithZero:{valid:!1}}}decimalGreaterThanZero(t){return""===t.value||null===t.value||/^\s*(?=.*[1-9])\d*(?:\.\d{1,10})?\s*$/.test(t.value)?null:{decimalGreaterThanZero:{valid:!1}}}currency(t){return""===t.value||null===t.value||/^[0-9]\d*(\.\d+)?$/.test(t.value)?null:{currency:{valid:!1}}}currencyGreaterThanZero(t){return""===t.value||null===t.value||/^[0-9]\d*(\.\d+)?$/.test(t.value)&&t.value>0?null:{currency:{valid:!1}}}currencyAllowNegative(t){return""===t.value||null===t.value||/^[\-]?[0-9]\d*(\.\d+)?$/.test(t.value)?null:{currency:{valid:!1}}}phoneNumber(t){return""===t.value||null===t.value||/^1?([2-9])(\d{9})/.test(t.value)?null:{phoneNumber:{valid:!1}}}email(t){return""===t.value||null===t.value||/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(t.value)?null:{email:{valid:!1}}}matchPassword(t){let e=t.controls.password,n=t.controls.confirm_password;return e.value&&n.value?e.value===n.value?null:{matchPassword:{isValid:!1}}:null}density(t){return""===t.value||null===t.value||/^[\-]?\d*\.?\d*$/.test(t.value)?null:{density:{valid:!1}}}maxValue(t){return e=>("string"==typeof e.value?parseFloat(e.value):e.value)>t?{maxValue:{max:t}}:null}minValue(t){return e=>("string"==typeof e.value?parseFloat(e.value):e.value)<t?{minValue:{min:t}}:null}multipleOf(t){return e=>("string"==typeof e.value?parseFloat(e.value):e.value)%t!=0?{multipleOf:{value:t}}:null}minLengthArray(t){return e=>e.value&&e.value.length>=t?null:{minLengthArray:{valid:!1}}}maxLengthArray(t){return e=>e.value&&e.value.length<=t?null:{maxLengthArray:{valid:!1}}}validIPAddress(t){return""===t.value||null===t.value||/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/.test(t.value)?null:{validIPAddress:{valid:!1}}}alphaNumericWithDashes(t){return""===t.value||null===t.value||/^[a-zA-Z0-9-_]+$/.test(t.value)?null:{alphaNumericWithDashes:{valid:!1}}}}ValidationService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ValidationService,deps:[],target:i0.ɵɵFactoryTarget.Injectable}),ValidationService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ValidationService}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ValidationService,decorators:[{type:Injectable}],ctorParameters:function(){return[]}});class AwsService{constructor(t){this._socket=t}dataURItoFile(t,e){let n=atob(t.split(",")[1]),o=t.split(",")[0].split(":")[1].split(";")[0],r=new ArrayBuffer(n.length),i=new Uint8Array(r);for(let t=0;t<n.length;t++)i[t]=n.charCodeAt(t);let a=new Blob([r],{type:o});return a.lastModifiedDate=new Date,a.name=e,a}uploadFile(t,e,n,o){return new Promise(((r,i)=>{t.size?this.getBase64(t).then((a=>{this._socket.call("uploadFileAndSave",o||t.name,a,t.size,n||-1,e,!0,((t,e)=>{e?r(e):i(t)}))})):i("Invalid File")}))}getFileWithKey(t,e){this._socket.call("getFile",t,e)}getFileWithId(t,e){this._socket.call("findOne","files",{_id:t},((t,n)=>{this.getFileWithKey(n.key,e)}))}deleteFile(t,e){this._socket.call("deleteFile",t,e)}deleteFileWithId(t,e){this._socket.call("findOne","files",{_id:t},((t,n)=>{this.deleteFile(n.key,e)}))}deleteFilesWithKeys(t,e){this._socket.call("deleteFiles",t,e)}getBase64(t){return new Promise(((e,n)=>{const o=new FileReader;o.readAsDataURL(t),o.onload=()=>e(o.result),o.onerror=t=>n(t)}))}}AwsService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AwsService,deps:[{token:SocketManagerService}],target:i0.ɵɵFactoryTarget.Injectable}),AwsService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AwsService}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AwsService,decorators:[{type:Injectable}],ctorParameters:function(){return[{type:SocketManagerService}]}});class BaseComponent{constructor(t){this.providerService=t}}class ProviderService{constructor(t,e,n,o,r,i,a,s){this._app=t,this._router=e,this._socket=n,this._account=o,this._alert=r,this._vs=i,this._aws=a,this._fb=s}}ProviderService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ProviderService,deps:[{token:CoreService},{token:i1$3.Router},{token:SocketManagerService},{token:AccountManagerService},{token:AlertService},{token:ValidationService},{token:AwsService},{token:i2.FormBuilder}],target:i0.ɵɵFactoryTarget.Injectable}),ProviderService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ProviderService}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ProviderService,decorators:[{type:Injectable}],ctorParameters:function(){return[{type:CoreService},{type:i1$3.Router},{type:SocketManagerService},{type:AccountManagerService},{type:AlertService},{type:ValidationService},{type:AwsService},{type:i2.FormBuilder}]}});class DialogNotifyContent{handleKeyboardEvent(t){13===t.keyCode&&this.activeModal.close()}constructor(t){this.activeModal=t}}DialogNotifyContent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogNotifyContent,deps:[{token:i1$4.NgbActiveModal}],target:i0.ɵɵFactoryTarget.Component}),DialogNotifyContent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:DialogNotifyContent,selector:"ng-component",inputs:{title:"title",body:"body"},host:{listeners:{"document:keypress":"handleKeyboardEvent($event)"}},ngImport:i0,template:'\n\t\t<div class="modal-header">\n\t\t\t<h4 class="modal-title"><i class="fa fa-info-circle" style="color: blue; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>\n\t \t\t<button type="button" class="close" aria-label="Close" (click)="activeModal.dismiss(\'Cross click\')">\n\t\t\t\t<span aria-hidden="true">×</span>\n\t \t\t</button>\n\t\t</div>\n\t\t<div class="modal-body">\n\t \t \t<p>{{ body }}</p>\n\t\t</div>\n\t\t<div class="modal-footer">\n\t \t\t<button type="button" class="btn btn-secondary" (click)="activeModal.close(\'Close click\')">Ok</button>\n\t\t</div>\n ',isInline:!0}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogNotifyContent,decorators:[{type:Component,args:[{template:'\n\t\t<div class="modal-header">\n\t\t\t<h4 class="modal-title"><i class="fa fa-info-circle" style="color: blue; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>\n\t \t\t<button type="button" class="close" aria-label="Close" (click)="activeModal.dismiss(\'Cross click\')">\n\t\t\t\t<span aria-hidden="true">×</span>\n\t \t\t</button>\n\t\t</div>\n\t\t<div class="modal-body">\n\t \t \t<p>{{ body }}</p>\n\t\t</div>\n\t\t<div class="modal-footer">\n\t \t\t<button type="button" class="btn btn-secondary" (click)="activeModal.close(\'Close click\')">Ok</button>\n\t\t</div>\n '}]}],ctorParameters:function(){return[{type:i1$4.NgbActiveModal}]},propDecorators:{title:[{type:Input}],body:[{type:Input}],handleKeyboardEvent:[{type:HostListener,args:["document:keypress",["$event"]]}]}});class FormButtonComponent extends BaseComponent{constructor(t){super(t),this._services=t,this.disabled=!1,this.type="submit"}getTipErrors(){let t=[];if(this.form&&this.form.invalid&&"object"==typeof this.form.controls){Object.keys(this.form.controls).forEach((e=>{let n=this.form.controls[e];if(n.invalid&&(t.push(e.replace("_id","").replace("id_","").replace("_"," ").replace(/\b\S/g,(function(t){return t.toUpperCase()}))+" is invalid"),"object"==typeof n.value&&Array.isArray(n.value)&&n.controls))for(let e=0;e<n.controls.length;e++){let o=n.controls[e];if(o.controls){Object.keys(o.controls).forEach((n=>{o.controls[n].invalid&&t.push("["+e+"] -> "+n.replace("_id","").replace("id_","").replace("_"," ").replace(/\b\S/g,(function(t){return t.toUpperCase()}))+" is invalid")}))}}}))}return t}isSuperAdmin(){return!(!this._services._account.getUser()||!this._services._account.getUser().roles.super_admin)}}FormButtonComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:FormButtonComponent,deps:[{token:ProviderService}],target:i0.ɵɵFactoryTarget.Component}),FormButtonComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:FormButtonComponent,selector:"form-button",inputs:{form:"form",disabled:"disabled",type:"type"},providers:[ProviderService],viewQueries:[{propertyName:"formButton",first:!0,predicate:["formButton"],descendants:!0}],usesInheritance:!0,ngImport:i0,template:'\n\t\t<div style="position: relative; text-align: left; width: 100%">\n\t\t\t<ng-template #tipContent>\n\t\t\t\t<span style="font-weight: bold">Errors:<br></span>\n\t\t\t\t<ul>\n\t\t\t\t\t<li *ngFor="let error of getTipErrors()">{{error}}</li>\n\t\t\t\t</ul>\n\t\t\t</ng-template>\n\t\t\t<div [ngbTooltip]="(getTipErrors().length ? tipContent : \'\')" placement="top-left" #t>\n\t\t\t\t<button [type]="type" [ngClass]="[\'btn\', form && form.valid ? \'btn-success\' : \'btn-danger\']" [disabled]="!form || !form.valid || disabled" style="width: 200px" [autofocus]="true" #formButton>Submit</button>\n\t\t\t</div>\n\t\t</div>\n\t',isInline:!0,dependencies:[{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{kind:"directive",type:i1$4.NgbTooltip,selector:"[ngbTooltip]",inputs:["animation","autoClose","placement","triggers","container","disableTooltip","tooltipClass","openDelay","closeDelay","ngbTooltip"],outputs:["shown","hidden"],exportAs:["ngbTooltip"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:FormButtonComponent,decorators:[{type:Component,args:[{providers:[ProviderService],selector:"form-button",template:'\n\t\t<div style="position: relative; text-align: left; width: 100%">\n\t\t\t<ng-template #tipContent>\n\t\t\t\t<span style="font-weight: bold">Errors:<br></span>\n\t\t\t\t<ul>\n\t\t\t\t\t<li *ngFor="let error of getTipErrors()">{{error}}</li>\n\t\t\t\t</ul>\n\t\t\t</ng-template>\n\t\t\t<div [ngbTooltip]="(getTipErrors().length ? tipContent : \'\')" placement="top-left" #t>\n\t\t\t\t<button [type]="type" [ngClass]="[\'btn\', form && form.valid ? \'btn-success\' : \'btn-danger\']" [disabled]="!form || !form.valid || disabled" style="width: 200px" [autofocus]="true" #formButton>Submit</button>\n\t\t\t</div>\n\t\t</div>\n\t'}]}],ctorParameters:function(){return[{type:ProviderService}]},propDecorators:{form:[{type:Input}],disabled:[{type:Input}],type:[{type:Input}],formButton:[{type:ViewChild,args:["formButton",{static:!1}]}]}});class FocusDirective{constructor(t){this.element=t}ngOnChanges(){this.focus&&this.element.nativeElement.focus()}}FocusDirective.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:FocusDirective,deps:[{token:i0.ElementRef}],target:i0.ɵɵFactoryTarget.Directive}),FocusDirective.ɵdir=i0.ɵɵngDeclareDirective({minVersion:"14.0.0",version:"15.2.10",type:FocusDirective,selector:"[focus]",inputs:{focus:"focus"},usesOnChanges:!0,ngImport:i0}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:FocusDirective,decorators:[{type:Directive,args:[{selector:"[focus]"}]}],ctorParameters:function(){return[{type:i0.ElementRef}]},propDecorators:{focus:[{type:Input}]}});class DialogInputContent{constructor(t,e){this._activeModal=t,this._fb=e,this.title="",this.inputFields=[],this.states=["Alabama","Alaska","Arizona","Arkansas","California","Colorado","Connecticut","Delaware","Florida","Georgia","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine","Maryland","Massachusetts","Michigan","Minnesota","Mississippi","Missouri","Montana","Nebraska","Nevada","New Hampshire","New Jersey","New Mexico","New York","North Carolina","North Dakota","Ohio","Oklahoma","Oregon","Pennsylvania","Rhode Island","South Carolina","South Dakota","Tennessee","Texas","Utah","Vermont","Virginia","Washington","West Virginia","Wisconsin","Wyoming"]}ngOnInit(){this.formInput=this._fb.group({});for(let t=0;t<this.inputFields.length;t++)"datetime"!==this.inputFields[t].type?null===this.inputFields[t].validators?this.formInput.addControl(this.inputFields[t].form,new UntypedFormControl({value:this.inputFields[t].data,disabled:this.inputFields[t].disabled})):this.formInput.addControl(this.inputFields[t].form,new UntypedFormControl({value:this.inputFields[t].data,disabled:this.inputFields[t].disabled},this.inputFields[t].validators)):(null===this.inputFields[t].validators?this.formInput.addControl(this.inputFields[t].form,new UntypedFormControl({value:this.inputFields[t].data[0],disabled:this.inputFields[t].disabled})):this.formInput.addControl(this.inputFields[t].form,new UntypedFormControl({value:this.inputFields[t].data[0],disabled:this.inputFields[t].disabled},this.inputFields[t].validators)),null===this.inputFields[t].validators?this.formInput.addControl(this.inputFields[t].form+"_time",new UntypedFormControl({value:this.inputFields[t].data[1],disabled:this.inputFields[t].disabled})):this.formInput.addControl(this.inputFields[t].form+"_time",new UntypedFormControl({value:this.inputFields[t].data[1],disabled:this.inputFields[t].disabled},this.inputFields[t].validators)))}validateInput(t,e){if(t.disabled)return"";let n=!0;for(let o=0;o<t.validators.length;o++)e.controls[t.form].hasError([t.validatorErrors[o]])&&(n=!1);return n&&null!==e.controls[t.form].value?"is-valid":!t.validators.length||!t.required&&n?"":"is-invalid"}getErrorMessages(t,e){let n=[];for(let o=0;o<t.validators.length;o++)e.controls[t.form].hasError([t.validatorErrors[o]])&&n.push(t.validatorMsg[o]);return n}}DialogInputContent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogInputContent,deps:[{token:i1$4.NgbActiveModal},{token:i2.FormBuilder}],target:i0.ɵɵFactoryTarget.Component}),DialogInputContent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:DialogInputContent,selector:"ng-component",inputs:{title:"title",inputFields:"inputFields"},ngImport:i0,template:'\n\t\t<form [formGroup]="formInput" novalidate (ngSubmit)="_activeModal.close(this.formInput.controls)">\n\t\t\t<div class="modal-header">\n\t\t\t\t<h4 class="modal-title"><i class="fa fa-plus-circle" style="color: green; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>\n\t\t\t\t<button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()">\n\t\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class="modal-body">\n\t\t\t\t<div *ngFor="let inputField of inputFields; let i = index">\n\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t<label class="form-control-label">{{inputField.label}}</label>\n\t\t\t\t\t\t<em *ngIf="formInput.controls[inputField.form].hasError(\'required\') && inputField.required">- Required</em>\n\t\t\t\t\t\t<em *ngIf="!formInput.controls[inputField.form].hasError(\'required\') && formInput.controls[inputField.form].invalid">- Invalid</em>\n\t\t\t\t\t\t<div *ngIf="inputField.type !== \'date\' && inputField.type !== \'datetime\' && inputField.type !== \'state\' && inputField.type !== \'textarea\' && inputField.type !== \'number\' && inputField.type !== \'select\' && inputField.type !== \'boolean\'">\n\t\t\t\t\t\t<input [autofocus]="i === 0 ? true : false" [focus]="i === 0 ? true : false" [formControlName]="inputField.form" [ngClass]="[\'form-control\', validateInput(inputField, formInput)]" [type]="(inputField.type ? inputField.type : \'text\')">\n\t\t\t\t\t\t\t<ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">\n\t\t\t\t\t\t\t\t<div class="invalid-feedback">{{errorMsg}}</div>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngIf="inputField.type === \'select\'">\n\t\t\t\t\t\t\t<ng-select [formControlName]="inputField.form" [ngClass]="[validateInput(inputField, formInput)]" [placeholder]="inputField.placeholder">\n\t\t\t\t\t\t\t\t<ng-option *ngFor="let opt of inputField.options" [value]="opt.value" [disabled]="opt.value === \'disabled\'">{{opt.text}}</ng-option>\n\t\t\t\t\t\t\t</ng-select>\n\t\t\t\t\t\t\t<ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">\n\t\t\t\t\t\t\t\t<div class="invalid-feedback">{{errorMsg}}</div>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngIf="inputField.type === \'state\'">\n\t\t\t\t\t\t\t<select [formControlName]="inputField.form" [ngClass]="[\'form-control\', validateInput(inputField, formInput)]">\n\t\t\t\t\t\t\t\t<option value="">Select State</option>\n\t\t\t\t\t\t\t\t<option *ngFor="let state of states" [value]="state">{{state}}</option>\n\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t<ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">\n\t\t\t\t\t\t\t\t<div class="invalid-feedback">{{errorMsg}}</div>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngIf="inputField.type === \'textarea\'">\n\t\t\t\t\t\t\t<textarea rows="4" [formControlName]="inputField.form" [ngClass]="[\'form-control\', validateInput(inputField, formInput)]"></textarea>\n\t\t\t\t\t\t\t<ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">\n\t\t\t\t\t\t\t\t<div class="invalid-feedback">{{errorMsg}}</div>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngIf="inputField.type === \'number\'">\n\t\t\t\t\t\t\t<input [formControlName]="inputField.form" type="number" [ngClass]="[\'form-control\', validateInput(inputField, formInput)]">\n\t\t\t\t\t\t\t<ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">\n\t\t\t\t\t\t\t\t<div class="invalid-feedback">{{errorMsg}}</div>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngIf="inputField.type === \'date\'">\n\t\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t\t<input [formControlName]="inputField.form" placeholder="yyyy-mm-dd" ngbDatepicker [firstDayOfWeek]="7" #d="ngbDatepicker" [ngClass]="[\'form-control\', validateInput(inputField, formInput)]" (click)="d.toggle()">\n\t\t\t\t\t\t\t\t<div class="input-group-append" (click)="d.toggle()">\n\t\t\t\t\t\t\t\t\t<div class="input-group-text">\n\t\t\t\t\t\t\t\t\t\t<i class="fa fa-calendar" aria-hidden="true"></i>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngIf="inputField.type === \'datetime\'">\n\t\t\t\t\t\t\t<div class="row" style="align-items: center;">\n\t\t\t\t\t\t\t\t<div class="col-sm-8">\n\t\t\t\t\t\t\t\t\t<label class="form-control-label" style="align-items: top;">Date/Time</label>\n\t\t\t\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t\t\t\t<input [formControlName]="inputField.form" placeholder="yyyy-mm-dd" ngbDatepicker [firstDayOfWeek]="7" #d="ngbDatepicker" [ngClass]="[\'form-control\', validateInput(inputField, formInput)]" (click)="d.toggle()">\n\t\t\t\t\t\t\t\t\t\t<div class="input-group-append" (click)="d.toggle()">\n\t\t\t\t\t\t\t\t\t\t\t<div class="input-group-text">\n\t\t\t\t\t\t\t\t\t\t\t\t<i class="fa fa-calendar" aria-hidden="true"></i>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class="col-sm-4">\n\t\t\t\t\t\t\t\t\t<label class="form-control-label" style="align-items: top;"> </label>\n\t\t\t\t\t\t\t\t\t<ngb-timepicker [formControlName]="inputField.form + \'_time\'" meridian="ON" [ngClass]="[validateInput(inputField, formInput)]"></ngb-timepicker>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngIf="inputField.type === \'boolean\'" (click)="formInput.controls[inputField.form].setValue(!formInput.controls[inputField.form].value)">\n\t\t\t\t\t\t\t<i *ngIf="formInput.controls[inputField.form].value" class="fa fa-check" style="color: green; font-size: 24px;" aria-hidden="true"></i>\n\t\t\t\t\t\t\t<i *ngIf="!formInput.controls[inputField.form].value" class="fa fa-times" style="color: red; font-size: 24px;" aria-hidden="true"></i>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="modal-footer">\n\t\t\t\t<form-button [form]="formInput"></form-button>\n\t\t\t\t<button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>\n\t\t\t</div>\n\t\t</form>\n\t',isInline:!0,dependencies:[{kind:"directive",type:i2.ɵNgNoValidate,selector:"form:not([ngNoForm]):not([ngNativeValidate])"},{kind:"directive",type:i2.NgSelectOption,selector:"option",inputs:["ngValue","value"]},{kind:"directive",type:i2.ɵNgSelectMultipleOption,selector:"option",inputs:["ngValue","value"]},{kind:"directive",type:i2.DefaultValueAccessor,selector:"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]"},{kind:"directive",type:i2.NumberValueAccessor,selector:"input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]"},{kind:"directive",type:i2.SelectControlValueAccessor,selector:"select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]",inputs:["compareWith"]},{kind:"directive",type:i2.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i2.NgControlStatusGroup,selector:"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]"},{kind:"directive",type:i2.FormGroupDirective,selector:"[formGroup]",inputs:["formGroup"],outputs:["ngSubmit"],exportAs:["ngForm"]},{kind:"directive",type:i2.FormControlName,selector:"[formControlName]",inputs:["formControlName","disabled","ngModel"],outputs:["ngModelChange"]},{kind:"directive",type:i1$4.NgbInputDatepicker,selector:"input[ngbDatepicker]",inputs:["autoClose","datepickerClass","dayTemplate","dayTemplateData","displayMonths","firstDayOfWeek","footerTemplate","markDisabled","minDate","maxDate","navigation","outsideDays","placement","restoreFocus","showWeekNumbers","startDate","container","positionTarget","weekdays","disabled"],outputs:["dateSelect","navigate","closed"],exportAs:["ngbDatepicker"]},{kind:"component",type:i1$4.NgbTimepicker,selector:"ngb-timepicker",inputs:["meridian","spinners","seconds","hourStep","minuteStep","secondStep","readonlyInputs","size"]},{kind:"component",type:FormButtonComponent,selector:"form-button",inputs:["form","disabled","type"]},{kind:"component",type:i4$1.NgSelectComponent,selector:"ng-select",inputs:["bindLabel","bindValue","markFirst","placeholder","notFoundText","typeToSearchText","addTagText","loadingText","clearAllText","appearance","dropdownPosition","appendTo","loading","closeOnSelect","hideSelected","selectOnTab","openOnEnter","maxSelectedItems","groupBy","groupValue","bufferAmount","virtualScroll","selectableGroup","selectableGroupAsModel","searchFn","trackByFn","clearOnBackspace","labelForId","inputAttrs","tabIndex","readonly","searchWhileComposing","minTermLength","editableSearchTerm","keyDownFn","typeahead","multiple","addTag","searchable","clearable","isOpen","items","compareWith","clearSearchOnAdd"],outputs:["blur","focus","change","open","close","search","clear","add","remove","scroll","scrollToEnd"]},{kind:"component",type:i4$1.NgOptionComponent,selector:"ng-option",inputs:["value","disabled"]},{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"directive",type:FocusDirective,selector:"[focus]",inputs:["focus"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogInputContent,decorators:[{type:Component,args:[{template:'\n\t\t<form [formGroup]="formInput" novalidate (ngSubmit)="_activeModal.close(this.formInput.controls)">\n\t\t\t<div class="modal-header">\n\t\t\t\t<h4 class="modal-title"><i class="fa fa-plus-circle" style="color: green; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>\n\t\t\t\t<button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()">\n\t\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class="modal-body">\n\t\t\t\t<div *ngFor="let inputField of inputFields; let i = index">\n\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t<label class="form-control-label">{{inputField.label}}</label>\n\t\t\t\t\t\t<em *ngIf="formInput.controls[inputField.form].hasError(\'required\') && inputField.required">- Required</em>\n\t\t\t\t\t\t<em *ngIf="!formInput.controls[inputField.form].hasError(\'required\') && formInput.controls[inputField.form].invalid">- Invalid</em>\n\t\t\t\t\t\t<div *ngIf="inputField.type !== \'date\' && inputField.type !== \'datetime\' && inputField.type !== \'state\' && inputField.type !== \'textarea\' && inputField.type !== \'number\' && inputField.type !== \'select\' && inputField.type !== \'boolean\'">\n\t\t\t\t\t\t<input [autofocus]="i === 0 ? true : false" [focus]="i === 0 ? true : false" [formControlName]="inputField.form" [ngClass]="[\'form-control\', validateInput(inputField, formInput)]" [type]="(inputField.type ? inputField.type : \'text\')">\n\t\t\t\t\t\t\t<ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">\n\t\t\t\t\t\t\t\t<div class="invalid-feedback">{{errorMsg}}</div>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngIf="inputField.type === \'select\'">\n\t\t\t\t\t\t\t<ng-select [formControlName]="inputField.form" [ngClass]="[validateInput(inputField, formInput)]" [placeholder]="inputField.placeholder">\n\t\t\t\t\t\t\t\t<ng-option *ngFor="let opt of inputField.options" [value]="opt.value" [disabled]="opt.value === \'disabled\'">{{opt.text}}</ng-option>\n\t\t\t\t\t\t\t</ng-select>\n\t\t\t\t\t\t\t<ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">\n\t\t\t\t\t\t\t\t<div class="invalid-feedback">{{errorMsg}}</div>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngIf="inputField.type === \'state\'">\n\t\t\t\t\t\t\t<select [formControlName]="inputField.form" [ngClass]="[\'form-control\', validateInput(inputField, formInput)]">\n\t\t\t\t\t\t\t\t<option value="">Select State</option>\n\t\t\t\t\t\t\t\t<option *ngFor="let state of states" [value]="state">{{state}}</option>\n\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t<ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">\n\t\t\t\t\t\t\t\t<div class="invalid-feedback">{{errorMsg}}</div>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngIf="inputField.type === \'textarea\'">\n\t\t\t\t\t\t\t<textarea rows="4" [formControlName]="inputField.form" [ngClass]="[\'form-control\', validateInput(inputField, formInput)]"></textarea>\n\t\t\t\t\t\t\t<ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">\n\t\t\t\t\t\t\t\t<div class="invalid-feedback">{{errorMsg}}</div>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngIf="inputField.type === \'number\'">\n\t\t\t\t\t\t\t<input [formControlName]="inputField.form" type="number" [ngClass]="[\'form-control\', validateInput(inputField, formInput)]">\n\t\t\t\t\t\t\t<ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">\n\t\t\t\t\t\t\t\t<div class="invalid-feedback">{{errorMsg}}</div>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngIf="inputField.type === \'date\'">\n\t\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t\t<input [formControlName]="inputField.form" placeholder="yyyy-mm-dd" ngbDatepicker [firstDayOfWeek]="7" #d="ngbDatepicker" [ngClass]="[\'form-control\', validateInput(inputField, formInput)]" (click)="d.toggle()">\n\t\t\t\t\t\t\t\t<div class="input-group-append" (click)="d.toggle()">\n\t\t\t\t\t\t\t\t\t<div class="input-group-text">\n\t\t\t\t\t\t\t\t\t\t<i class="fa fa-calendar" aria-hidden="true"></i>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngIf="inputField.type === \'datetime\'">\n\t\t\t\t\t\t\t<div class="row" style="align-items: center;">\n\t\t\t\t\t\t\t\t<div class="col-sm-8">\n\t\t\t\t\t\t\t\t\t<label class="form-control-label" style="align-items: top;">Date/Time</label>\n\t\t\t\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t\t\t\t<input [formControlName]="inputField.form" placeholder="yyyy-mm-dd" ngbDatepicker [firstDayOfWeek]="7" #d="ngbDatepicker" [ngClass]="[\'form-control\', validateInput(inputField, formInput)]" (click)="d.toggle()">\n\t\t\t\t\t\t\t\t\t\t<div class="input-group-append" (click)="d.toggle()">\n\t\t\t\t\t\t\t\t\t\t\t<div class="input-group-text">\n\t\t\t\t\t\t\t\t\t\t\t\t<i class="fa fa-calendar" aria-hidden="true"></i>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class="col-sm-4">\n\t\t\t\t\t\t\t\t\t<label class="form-control-label" style="align-items: top;"> </label>\n\t\t\t\t\t\t\t\t\t<ngb-timepicker [formControlName]="inputField.form + \'_time\'" meridian="ON" [ngClass]="[validateInput(inputField, formInput)]"></ngb-timepicker>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngIf="inputField.type === \'boolean\'" (click)="formInput.controls[inputField.form].setValue(!formInput.controls[inputField.form].value)">\n\t\t\t\t\t\t\t<i *ngIf="formInput.controls[inputField.form].value" class="fa fa-check" style="color: green; font-size: 24px;" aria-hidden="true"></i>\n\t\t\t\t\t\t\t<i *ngIf="!formInput.controls[inputField.form].value" class="fa fa-times" style="color: red; font-size: 24px;" aria-hidden="true"></i>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="modal-footer">\n\t\t\t\t<form-button [form]="formInput"></form-button>\n\t\t\t\t<button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>\n\t\t\t</div>\n\t\t</form>\n\t'}]}],ctorParameters:function(){return[{type:i1$4.NgbActiveModal},{type:i2.FormBuilder}]},propDecorators:{title:[{type:Input}],inputFields:[{type:Input}]}});class DialogErrorContent{handleKeyboardEvent(t){13===t.keyCode&&this.activeModal.close()}constructor(t){this.activeModal=t}}DialogErrorContent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogErrorContent,deps:[{token:i1$4.NgbActiveModal}],target:i0.ɵɵFactoryTarget.Component}),DialogErrorContent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:DialogErrorContent,selector:"ng-component",inputs:{title:"title",body:"body"},host:{listeners:{"document:keypress":"handleKeyboardEvent($event)"}},ngImport:i0,template:'\n\t\t<div class="modal-header">\n\t\t\t<h4 class="modal-title"><i class="fa fa-times-circle" style="color: red; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>\n\t\t\t<button type="button" class="close" aria-label="Close" (click)="activeModal.dismiss(\'Cross click\')">\n\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t</button>\n\t\t</div>\n\t\t<div class="modal-body">\n\t\t\t<p>{{ body }}</p>\n\t\t</div>\n\t\t<div class="modal-footer">\n\t\t\t<button type="button" class="btn btn-secondary" (click)="activeModal.close(\'Close click\')">Ok</button>\n\t\t</div>\n \t',isInline:!0}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogErrorContent,decorators:[{type:Component,args:[{template:'\n\t\t<div class="modal-header">\n\t\t\t<h4 class="modal-title"><i class="fa fa-times-circle" style="color: red; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>\n\t\t\t<button type="button" class="close" aria-label="Close" (click)="activeModal.dismiss(\'Cross click\')">\n\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t</button>\n\t\t</div>\n\t\t<div class="modal-body">\n\t\t\t<p>{{ body }}</p>\n\t\t</div>\n\t\t<div class="modal-footer">\n\t\t\t<button type="button" class="btn btn-secondary" (click)="activeModal.close(\'Close click\')">Ok</button>\n\t\t</div>\n \t'}]}],ctorParameters:function(){return[{type:i1$4.NgbActiveModal}]},propDecorators:{title:[{type:Input}],body:[{type:Input}],handleKeyboardEvent:[{type:HostListener,args:["document:keypress",["$event"]]}]}});class DialogConfirmContent{handleKeyboardEvent(t){13===t.keyCode&&this.activeModal.close()}constructor(t){this.activeModal=t}}DialogConfirmContent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogConfirmContent,deps:[{token:i1$4.NgbActiveModal}],target:i0.ɵɵFactoryTarget.Component}),DialogConfirmContent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:DialogConfirmContent,selector:"ng-component",inputs:{title:"title",body:"body",html:"html"},host:{listeners:{"document:keypress":"handleKeyboardEvent($event)"}},ngImport:i0,template:'\n\t\t<div class="modal-header">\n\t\t\t<h4 class="modal-title"><i class="fa fa-question-circle" style="color: blue; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>\n\t\t\t<button type="button" class="close" aria-label="Close" (click)="activeModal.dismiss(\'Cross click\')">\n\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t</button>\n\t\t</div>\n\t\t<div class="modal-body">\n\t\t\t<p>{{ body }}</p>\n\t\t\t<div [innerHTML]="html"></div>\n\t\t</div>\n\t\t<div class="modal-footer">\n\t\t\t<button type="button" class="btn btn-success" (click)="activeModal.close()">Yes</button>\n\t\t\t<button type="button" class="btn btn-danger" (click)="activeModal.dismiss()">No</button>\n\t\t</div>\n \t',isInline:!0}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogConfirmContent,decorators:[{type:Component,args:[{template:'\n\t\t<div class="modal-header">\n\t\t\t<h4 class="modal-title"><i class="fa fa-question-circle" style="color: blue; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>\n\t\t\t<button type="button" class="close" aria-label="Close" (click)="activeModal.dismiss(\'Cross click\')">\n\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t</button>\n\t\t</div>\n\t\t<div class="modal-body">\n\t\t\t<p>{{ body }}</p>\n\t\t\t<div [innerHTML]="html"></div>\n\t\t</div>\n\t\t<div class="modal-footer">\n\t\t\t<button type="button" class="btn btn-success" (click)="activeModal.close()">Yes</button>\n\t\t\t<button type="button" class="btn btn-danger" (click)="activeModal.dismiss()">No</button>\n\t\t</div>\n \t'}]}],ctorParameters:function(){return[{type:i1$4.NgbActiveModal}]},propDecorators:{title:[{type:Input}],body:[{type:Input}],html:[{type:Input}],handleKeyboardEvent:[{type:HostListener,args:["document:keypress",["$event"]]}]}});class DialogSelectDateTimeContent{constructor(t,e){this._activeModal=t,this._fb=e,this.title="",this.showTime=!0}ngOnInit(){this.date||(this.date=new Date),this.form=this._fb.group({time:[{hour:this.date.getHours(),minute:this.date.getMinutes(),second:0},[Validators.required]],date:[{year:this.date.getFullYear(),month:this.date.getMonth()+1,day:this.date.getDate()},[Validators.required]]})}ngAfterViewInit(){setTimeout((()=>{let t=this.recursiveFindFirstElement(this.allElements.nativeElement);t?t.focus():(this.close.nativeElement.focus(),this.close.nativeElement.blur())}),100)}recursiveFindFirstElement(t){let e=null,n=t.children;for(let t=0;t<Object.keys(n).length;t++){let o=n[Object.keys(n)[t]];if(o.children&&o.children.length)e=this.recursiveFindFirstElement(o);else{if("BUTTON"===o.tagName&&o.classList.contains("close"))return null;if(!("BUTTON"!==o.tagName&&"INPUT"!==o.tagName&&"SELECT"!==o.tagName&&"TEXTAREA"!==o.tagName||o.hidden||o.disabled))return o}if(e)break}return e}submitForm(){this._activeModal.close(new Date(this.form.value.date.year,parseInt(this.form.value.date.month)-1,this.form.value.date.day,this.form.value.time.hour,this.form.value.time.minute,this.form.value.time.second,0))}}DialogSelectDateTimeContent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogSelectDateTimeContent,deps:[{token:i1$4.NgbActiveModal},{token:i2.FormBuilder}],target:i0.ɵɵFactoryTarget.Component}),DialogSelectDateTimeContent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:DialogSelectDateTimeContent,selector:"ng-component",inputs:{title:"title",date:"date",showTime:"showTime"},viewQueries:[{propertyName:"close",first:!0,predicate:["close"],descendants:!0},{propertyName:"allElements",first:!0,predicate:["allElements"],descendants:!0}],ngImport:i0,template:'\n\t \t<style>\n\t\t \ttable {\n\t\t\t\twidth: 100%;\n\t\t\t\ttable-layout: fixed;\n\t\t\t}\n\n\t\t\ttr {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\ttd {\n\t\t\t\twidth: 100%;\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t</style>\n\t\t<div #allElements>\n\t\t\t<form [formGroup]="form" novalidate (ngSubmit)="submitForm()">\n\t\t\t\t<div class="modal-header">\n\t\t\t\t\t<h4 class="modal-title"><i class="fa fa-question-circle" style="color: blue; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>\n\t\t\t\t\t<button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()" #close>\n\t\t\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-body">\n\t\t\t\t\t<table>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td style="border: none;">\n\t\t\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t\t\t<input class="form-control" placeholder="yyyy-mm-dd" name="dp" formControlName="date" ngbDatepicker [firstDayOfWeek]="7" #d="ngbDatepicker">\n\t\t\t\t\t\t\t\t\t<div class="input-group-append" (click)="d.toggle()">\n\t\t\t\t\t\t\t\t\t\t<div class="input-group-text">\n\t\t\t\t\t\t\t\t\t\t\t<i class="fa fa-calendar" aria-hidden="true"></i>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t<td *ngIf="showTime" style="border: none;">\n\t\t\t\t\t\t\t\t<div class="offset-3">\n\t\t\t\t\t\t\t\t\t<ngb-timepicker formControlName="time" meridian="ON"></ngb-timepicker>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-footer">\n\t\t\t\t\t<form-button [form]="form"></form-button>\n\t\t\t\t\t<button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>\n\t\t\t\t</div>\n\t\t\t</form>\n\t\t</div>\n\t',isInline:!0,styles:["\n\t\t \ttable {\n\t\t\t\twidth: 100%;\n\t\t\t\ttable-layout: fixed;\n\t\t\t}\n\n\t\t\ttr {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\ttd {\n\t\t\t\twidth: 100%;\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t"],dependencies:[{kind:"directive",type:i2.ɵNgNoValidate,selector:"form:not([ngNoForm]):not([ngNativeValidate])"},{kind:"directive",type:i2.DefaultValueAccessor,selector:"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]"},{kind:"directive",type:i2.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i2.NgControlStatusGroup,selector:"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]"},{kind:"directive",type:i2.FormGroupDirective,selector:"[formGroup]",inputs:["formGroup"],outputs:["ngSubmit"],exportAs:["ngForm"]},{kind:"directive",type:i2.FormControlName,selector:"[formControlName]",inputs:["formControlName","disabled","ngModel"],outputs:["ngModelChange"]},{kind:"directive",type:i1$4.NgbInputDatepicker,selector:"input[ngbDatepicker]",inputs:["autoClose","datepickerClass","dayTemplate","dayTemplateData","displayMonths","firstDayOfWeek","footerTemplate","markDisabled","minDate","maxDate","navigation","outsideDays","placement","restoreFocus","showWeekNumbers","startDate","container","positionTarget","weekdays","disabled"],outputs:["dateSelect","navigate","closed"],exportAs:["ngbDatepicker"]},{kind:"component",type:i1$4.NgbTimepicker,selector:"ngb-timepicker",inputs:["meridian","spinners","seconds","hourStep","minuteStep","secondStep","readonlyInputs","size"]},{kind:"component",type:FormButtonComponent,selector:"form-button",inputs:["form","disabled","type"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogSelectDateTimeContent,decorators:[{type:Component,args:[{template:'\n\t \t<style>\n\t\t \ttable {\n\t\t\t\twidth: 100%;\n\t\t\t\ttable-layout: fixed;\n\t\t\t}\n\n\t\t\ttr {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\ttd {\n\t\t\t\twidth: 100%;\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t</style>\n\t\t<div #allElements>\n\t\t\t<form [formGroup]="form" novalidate (ngSubmit)="submitForm()">\n\t\t\t\t<div class="modal-header">\n\t\t\t\t\t<h4 class="modal-title"><i class="fa fa-question-circle" style="color: blue; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>\n\t\t\t\t\t<button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()" #close>\n\t\t\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-body">\n\t\t\t\t\t<table>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td style="border: none;">\n\t\t\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t\t\t<input class="form-control" placeholder="yyyy-mm-dd" name="dp" formControlName="date" ngbDatepicker [firstDayOfWeek]="7" #d="ngbDatepicker">\n\t\t\t\t\t\t\t\t\t<div class="input-group-append" (click)="d.toggle()">\n\t\t\t\t\t\t\t\t\t\t<div class="input-group-text">\n\t\t\t\t\t\t\t\t\t\t\t<i class="fa fa-calendar" aria-hidden="true"></i>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t<td *ngIf="showTime" style="border: none;">\n\t\t\t\t\t\t\t\t<div class="offset-3">\n\t\t\t\t\t\t\t\t\t<ngb-timepicker formControlName="time" meridian="ON"></ngb-timepicker>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-footer">\n\t\t\t\t\t<form-button [form]="form"></form-button>\n\t\t\t\t\t<button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>\n\t\t\t\t</div>\n\t\t\t</form>\n\t\t</div>\n\t'}]}],ctorParameters:function(){return[{type:i1$4.NgbActiveModal},{type:i2.FormBuilder}]},propDecorators:{title:[{type:Input}],date:[{type:Input}],showTime:[{type:Input}],close:[{type:ViewChild,args:["close",{static:!1}]}],allElements:[{type:ViewChild,args:["allElements",{static:!1}]}]}});class DialogSelectDataLabelsContent{constructor(t,e){this._activeModal=t,this._fb=e,this.title="",this.subtitle="",this.dialogData=[]}ngOnInit(){this.getKeys()}getKeys(){let t=Object.keys(this.data),e="";t.filter((t=>"_id"!==t&&!t.startsWith("id_")&&"__v"!==t&&"createdAt"!==t&&"updatedAt"!==t)).forEach((t=>{if(e=typeof this.data[t],"object"===e)if(Array.isArray(this.data[t])){if(e="array",this.dialogData.push({label:t.replace(new RegExp("_","g")," ").replace("string","").replace(/\w\S*/g,(function(t){return t.charAt(0).toUpperCase()+t.substr(1).toLowerCase()})),data:t,selected:!0,type:e,subLabel:null,subData:null,subtype:null}),!0===this.showArraySubData){Object.keys(this.data[t][0]).filter((t=>"_id"!==t&&!t.startsWith("id_"))).forEach((n=>{this.dialogData.push({label:t.replace(new RegExp("_","g")," ").replace("string","").replace(/\w\S*/g,(function(t){return t.charAt(0).toUpperCase()+t.substr(1).toLowerCase()})),subLabel:n.replace(new RegExp("_","g")," ").replace("string","").replace(/\w\S*/g,(function(t){return t.charAt(0).toUpperCase()+t.substr(1).toLowerCase()})),data:t,type:e,subData:n,selected:!0,subtype:typeof n})}))}}else{let n=Object.keys(this.data[t]);n.length?n.filter((t=>"_id"!==t&&!t.startsWith("id_"))).forEach((n=>{this.dialogData.push({label:t.replace(new RegExp("_","g")," ").replace("string","").replace(/\w\S*/g,(function(t){return t.charAt(0).toUpperCase()+t.substr(1).toLowerCase()})),subLabel:n.replace(new RegExp("_","g")," ").replace("string","").replace(/\w\S*/g,(function(t){return t.charAt(0).toUpperCase()+t.substr(1).toLowerCase()})),data:t,subData:n,subtype:null,selected:!0,type:e})})):this.dialogData.push({label:t.replace(new RegExp("_","g")," ").replace("string","").replace(/\w\S*/g,(function(t){return t.charAt(0).toUpperCase()+t.substr(1).toLowerCase()})),data:t,selected:!0,type:e,subData:null,subLabel:null,subtype:null})}else this.dialogData.push({label:t.replace(new RegExp("_","g")," ").replace("string","").replace(/\w\S*/g,(function(t){return t.charAt(0).toUpperCase()+t.substr(1).toLowerCase()})),data:t,selected:!0,type:e,subData:null,subLabel:null,subtype:null})}))}changeSelected(t){t.selected=!t.selected,"array"===t.type&&null===t.subtype&&this.dialogData.filter((e=>e.label===t.label)).forEach((e=>{e.selected=t.selected}))}submit(){return this.dialogData}}DialogSelectDataLabelsContent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogSelectDataLabelsContent,deps:[{token:i1$4.NgbActiveModal},{token:i2.FormBuilder}],target:i0.ɵɵFactoryTarget.Component}),DialogSelectDataLabelsContent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:DialogSelectDataLabelsContent,selector:"ng-component",inputs:{title:"title",subtitle:"subtitle",data:"data",showArraySubData:"showArraySubData"},ngImport:i0,template:'\n\t\t<div class="modal-header">\n\t\t\t<h4 class="modal-title"><i class="fa fa-question-circle" style="color: blue; font-size: 0.75em" aria-hidden="true"></i> {{ title }} - {{ subtitle }}</h4>\n\t\t\t<button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()">\n\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t</button>\n\t\t</div>\n\t\t<div class="modal-body">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<div class="row">\n\t\t\t\t\t<div class="col-lg-12">\n\t\t\t\t\t\t<ng-container *ngFor="let label of dialogData">\n\t\t\t\t\t\t\t<div class="row">\n\t\t\t\t\t\t\t\t<div *ngIf="label.subtype === null && label.type !== \'object\'" style="font-size: 12px;">\n\t\t\t\t\t\t\t\t\t<input type="checkbox" [checked]="label.selected" (click)="changeSelected(label)" style="height: 20px; width: auto;"> {{ label.label }}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div *ngIf="label.subtype === null && label.type === \'object\' && label.subLabel !== null" style="font-size: 12px;">\n\t\t\t\t\t\t\t\t\t<input type="checkbox" [checked]="label.selected" (click)="changeSelected(label)" style="height: 20px; width: auto;"> {{ label.subLabel }}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div *ngIf="label.subtype === null && label.type === \'object\' && label.subLabel === null" style="font-size: 12px;">\n\t\t\t\t\t\t\t\t\t<input type="checkbox" [checked]="label.selected" (click)="changeSelected(label)" style="height: 20px; width: auto;"> {{ label.label }}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div *ngIf="label.subtype !== null" style="font-size: 12px;">\n\t\t\t\t\t\t\t\t\t <input type="checkbox" [checked]="label.selected" (click)="changeSelected(label)" style="height: 20px; width: auto;"> {{ label.subLabel }}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="modal-footer">\n\t\t\t<button type="button" class="btn btn-success" (click)="_activeModal.close(dialogData)">Submit</button>\n\t\t\t<button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>\n\t\t</div>\n\t',isInline:!0,dependencies:[{kind:"directive",type:i7.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogSelectDataLabelsContent,decorators:[{type:Component,args:[{template:'\n\t\t<div class="modal-header">\n\t\t\t<h4 class="modal-title"><i class="fa fa-question-circle" style="color: blue; font-size: 0.75em" aria-hidden="true"></i> {{ title }} - {{ subtitle }}</h4>\n\t\t\t<button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()">\n\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t</button>\n\t\t</div>\n\t\t<div class="modal-body">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<div class="row">\n\t\t\t\t\t<div class="col-lg-12">\n\t\t\t\t\t\t<ng-container *ngFor="let label of dialogData">\n\t\t\t\t\t\t\t<div class="row">\n\t\t\t\t\t\t\t\t<div *ngIf="label.subtype === null && label.type !== \'object\'" style="font-size: 12px;">\n\t\t\t\t\t\t\t\t\t<input type="checkbox" [checked]="label.selected" (click)="changeSelected(label)" style="height: 20px; width: auto;"> {{ label.label }}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div *ngIf="label.subtype === null && label.type === \'object\' && label.subLabel !== null" style="font-size: 12px;">\n\t\t\t\t\t\t\t\t\t<input type="checkbox" [checked]="label.selected" (click)="changeSelected(label)" style="height: 20px; width: auto;"> {{ label.subLabel }}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div *ngIf="label.subtype === null && label.type === \'object\' && label.subLabel === null" style="font-size: 12px;">\n\t\t\t\t\t\t\t\t\t<input type="checkbox" [checked]="label.selected" (click)="changeSelected(label)" style="height: 20px; width: auto;"> {{ label.label }}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div *ngIf="label.subtype !== null" style="font-size: 12px;">\n\t\t\t\t\t\t\t\t\t <input type="checkbox" [checked]="label.selected" (click)="changeSelected(label)" style="height: 20px; width: auto;"> {{ label.subLabel }}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="modal-footer">\n\t\t\t<button type="button" class="btn btn-success" (click)="_activeModal.close(dialogData)">Submit</button>\n\t\t\t<button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>\n\t\t</div>\n\t'}]}],ctorParameters:function(){return[{type:i1$4.NgbActiveModal},{type:i2.FormBuilder}]},propDecorators:{title:[{type:Input}],subtitle:[{type:Input}],data:[{type:Input}],showArraySubData:[{type:Input}]}});class ResponsiveButtonGroupComponent extends BaseComponent{constructor(t,e,n){super(n),this._cdRef=t,this._resizeService=e,this._services=n,this.collapseSize=900,this.windowSize=window.innerWidth,this.windowSizeSubscription=null}ngOnInit(){this.windowSizeSubscription=this._resizeService.onResize$.subscribe((t=>{t&&(this.windowSize=t.innerWidth,this._cdRef.detectChanges())}))}ngOnDestroy(){this.windowSizeSubscription.unsubscribe()}}ResponsiveButtonGroupComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ResponsiveButtonGroupComponent,deps:[{token:i0.ChangeDetectorRef},{token:ResizeService},{token:ProviderService}],target:i0.ɵɵFactoryTarget.Component}),ResponsiveButtonGroupComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:ResponsiveButtonGroupComponent,selector:"responsive-button-group",inputs:{collapseSize:"collapseSize"},providers:[ProviderService],usesInheritance:!0,ngImport:i0,template:"<style>\n\t@media screen and (min-width: 900px) {\n\t\t:host /deep/ .xsBtnGroup {\n\t\t\tdisplay: none !important;\n\t\t}\n\n\t\t:host /deep/ .lgBtnGroup {\n\t\t\tdisplay: inline-flex !important;\n\t\t}\n\n\t\t:host /deep/ .lgBtnGroup button {\n\t\t\tmargin-left: 5px !important;\n\t\t}\n\n\t\t:host /deep/ .lgBtnGroup a {\n\t\t\tmargin-left: 5px !important;\n\t\t}\n\t}\n\n\t@media screen and (max-width: 900px) {\n\n\t\t:host /deep/ .xsBtnGroup {\n\t\t\tdisplay: inherit !important;\n\t\t}\n\n\t\t:host /deep/ .xsBtnGroup button {\n\t\t\tmargin-top: 5px !important;\n\t\t\twidth: 100% !important;\n\t\t}\n\n\t\t:host /deep/ .xsBtnGroup a {\n\t\t\tmargin-top: 5px !important;\n\t\t}\n\n\t\t:host /deep/ .lgBtnGroup {\n\t\t\tdisplay: none !important;\n\t\t}\n\t}\n</style>\n\n<div [ngClass]=\"windowSize <= collapseSize ? ['btn-group-vertical', 'xsBtnGroup'] : ['btn-group', 'lgBtnGroup']\">\n\t<ng-content></ng-content>\n</div>\n",styles:["\n\t@media screen and (min-width: 900px) {\n\t\t:host /deep/ .xsBtnGroup {\n\t\t\tdisplay: none !important;\n\t\t}\n\n\t\t:host /deep/ .lgBtnGroup {\n\t\t\tdisplay: inline-flex !important;\n\t\t}\n\n\t\t:host /deep/ .lgBtnGroup button {\n\t\t\tmargin-left: 5px !important;\n\t\t}\n\n\t\t:host /deep/ .lgBtnGroup a {\n\t\t\tmargin-left: 5px !important;\n\t\t}\n\t}\n\n\t@media screen and (max-width: 900px) {\n\n\t\t:host /deep/ .xsBtnGroup {\n\t\t\tdisplay: inherit !important;\n\t\t}\n\n\t\t:host /deep/ .xsBtnGroup button {\n\t\t\tmargin-top: 5px !important;\n\t\t\twidth: 100% !important;\n\t\t}\n\n\t\t:host /deep/ .xsBtnGroup a {\n\t\t\tmargin-top: 5px !important;\n\t\t}\n\n\t\t:host /deep/ .lgBtnGroup {\n\t\t\tdisplay: none !important;\n\t\t}\n\t}\n"],dependencies:[{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ResponsiveButtonGroupComponent,decorators:[{type:Component,args:[{providers:[ProviderService],selector:"responsive-button-group",template:"<style>\n\t@media screen and (min-width: 900px) {\n\t\t:host /deep/ .xsBtnGroup {\n\t\t\tdisplay: none !important;\n\t\t}\n\n\t\t:host /deep/ .lgBtnGroup {\n\t\t\tdisplay: inline-flex !important;\n\t\t}\n\n\t\t:host /deep/ .lgBtnGroup button {\n\t\t\tmargin-left: 5px !important;\n\t\t}\n\n\t\t:host /deep/ .lgBtnGroup a {\n\t\t\tmargin-left: 5px !important;\n\t\t}\n\t}\n\n\t@media screen and (max-width: 900px) {\n\n\t\t:host /deep/ .xsBtnGroup {\n\t\t\tdisplay: inherit !important;\n\t\t}\n\n\t\t:host /deep/ .xsBtnGroup button {\n\t\t\tmargin-top: 5px !important;\n\t\t\twidth: 100% !important;\n\t\t}\n\n\t\t:host /deep/ .xsBtnGroup a {\n\t\t\tmargin-top: 5px !important;\n\t\t}\n\n\t\t:host /deep/ .lgBtnGroup {\n\t\t\tdisplay: none !important;\n\t\t}\n\t}\n</style>\n\n<div [ngClass]=\"windowSize <= collapseSize ? ['btn-group-vertical', 'xsBtnGroup'] : ['btn-group', 'lgBtnGroup']\">\n\t<ng-content></ng-content>\n</div>\n"}]}],ctorParameters:function(){return[{type:i0.ChangeDetectorRef},{type:ResizeService},{type:ProviderService}]},propDecorators:{collapseSize:[{type:Input}]}});class DialogLoginContent{constructor(t,e){this._activeModal=t,this._fb=e,this.msAllowed=!1,this.showLoginText=!0}ngOnInit(){this.form=this._fb.group({username:["",[Validators.required]],password:["",[Validators.required]],forgotPassword:[!1]})}toggleForgotPassword(){this.form.controls.forgotPassword.setValue(!this.form.controls.forgotPassword.value),this.form.controls.forgotPassword.value?(this.form.controls.password.setValue(""),this.form.controls.password.clearValidators(),this.form.controls.password.disable()):(this.form.controls.password.setValidators([Validators.required]),this.form.controls.password.enable()),this.form.controls.password.updateValueAndValidity()}close(t){this._activeModal.close({form:this.form,type:t})}}DialogLoginContent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogLoginContent,deps:[{token:i1$4.NgbActiveModal},{token:i2.FormBuilder}],target:i0.ɵɵFactoryTarget.Component}),DialogLoginContent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:DialogLoginContent,selector:"ng-component",inputs:{msAllowed:"msAllowed",showLoginText:"showLoginText"},ngImport:i0,template:'\n\t\t<style>\n\t\t\tcollapse-table {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t.navbar-light .navbar-nav .active>.nav-link, .navbar-light .navbar-nav .nav-link.active, .navbar-light .navbar-nav .nav-link.show, .navbar-light .navbar-nav .show>.nav-link {\n\t\t\t\tcolor: #0b4499;\n\t\t\t}\n\t\t\t.navbar-light .navbar-nav .nav-link {\n\t\t\t\tcolor:#333;\n\t\t\t}\n\t\t\ta.nav-link.loginreg {\n\t\t\t\tbackground-color: #0b4499;\n\t\t\t\tcolor: #fff !important;\n\t\t\t\tborder-radius: 40px;\n\t\t\t}\n\t\t\ta.nav-link.loginreg:hover {\n\t\t\t\tbackground: #1668e2;\n\t\t\t}\n\t\t\t.nav-link {\n\t\t\t\tcolor: #333333;\n\t\t\t\tfont-size: 150%\n\t\t\t}\n\t\t\t.nav-item a.nav-link.active {\n\t\t\t\tcolor: #0b4499;\n\t\t\t}\n\t\t\t.contactimg>img{\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t.log-box {\n\t\t\t\tpadding-top: 0px;\n\t\t\t\tpadding-bottom: 26px;\n\t\t\t}\n\t\t\t.loginform .form-control, .register-form .form-control {\n\t\t\t\tcolor: #000;\n\t\t\t\theight: 52px;\n\t\t\t}\n\t\t\t.loginform {\n\t\t\t\tmargin-top: 35px;\n\t\t\t}\n\t\t\t.loginform label {\n\t\t\t\tfont-size: 18px;\n\t\t\t\tfont-weight: 600;\n\t\t\t}\n\n\t\t\t.loginbtn {\n\t\t\t\tbackground: #0b4499;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 44px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\t.login365btn {\n\t\t\t\tbackground: orange;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 44px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\t.contactimg {\n\t\t\t\tposition: relative;\n\t\t\t}\n\t\t\t.login-logo {\n\t\t\t\tmargin-bottom: 20px;\n\t\t\t}\n\n\t\t\t.textbox {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 50%;\n\t\t\t\tcolor: #fff;\n\t\t\t\tpadding: 40px;\n\t\t\t\ttransform: translate(0%, -50%);\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t\t.sign-btn {\n\t\t\t\tbackground: #0b4499;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 14px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\tbutton.btn.sign-btn:hover {\n\t\t\t\tbackground: #1668e2;\n\t\t\t}\n\t\t\t\n\t\t\t.login-card {\n\t\t\t\tmargin-bottom: 20px;\n\t\t\t\tpadding: 20px;\n\t\t\t\tpadding-top: 10px;\n\t\t\t\tborder-radius: 8px;\n\t\t\t\tbox-shadow: 0 4px 8px rgba(0,0,0,0.2), 0 6px 20px rgba(0,0,0,0.19); /* Enhanced shadow */\n\t\t\t\tbackground-color: #FFFFFF;\n\t\t\t}\n\t\t\t\n\t\t\t.login-header {\n\t\t\t\tfont-size: 20px;\n\t\t\t\tfont-weight: bold;\n\t\t\t\tcolor: #333;\n\t\t\t\tmargin-bottom: 15px;\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t\t\n\t\t\t.employee-login-btn {\n\t\t\t\tbackground-color: #0078D4; /* Microsoft Blue */\n\t\t\t\tcolor: white;\n\t\t\t\tpadding: 10px 20px; /* Larger size */\n\t\t\t\tfont-size: 16px; /* Larger text */\n\t\t\t\tborder-radius: 5px; /* Rounded corners */\n\t\t\t\twidth: 100%; /* Full width */\n\t\t\t\tbox-sizing: border-box; /* Include padding and border in the element\'s width and height */\n\t\t\t}\n\t\t\t\n\t\t\t.third-party-login-btn {\n\t\t\t\tbackground-color: #28a745; /* Bootstrap success green */\n\t\t\t\tcolor: white;\n\t\t\t\tborder-radius: 5px; /* Rounded corners */\n\t\t\t\twidth: 100%; /* Full width */\n\t\t\t\tbox-sizing: border-box; /* Include padding and border in the element\'s width and height */\n\t\t\t\tmargin-top: 10px;\n\t\t\t}\n\t\t\t\n\t\t\t.third-party-login-section {\n\t\t\t\tbackground-color: #F3F4F6; /* Optional: Light grey background for contrast */\n\t\t\t\tborder-radius: 8px; /* Optional: Rounded corners for the input form */\n\t\t\t}\n\t\t\t\n\t\t\t.employee-login-section, .third-party-login-section {\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t</style>\n\t\t<form [formGroup]="form" novalidate>\n\t\t\t<div class="modal-header">\n\t\t\t\t<h4 class="modal-title"><b>Login</b></h4>\n\t\t\t\t<button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()">\n\t\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class="modal-body" *ngIf="form">\n\t\t\t\t<div class="row justify-content-md-center">\n\t\t\t\t\t<div class="col-lg-12">\n\t\t\t\t\t\t<div class="row bg-white">\n\t\t\t\t\t\t\t<div class="col-lg-6">\n\t\t\t\t\t\t\t\t<div class="contactimg">\n\t\t\t\t\t\t\t\t\t<img src="/assets/images/loginsignup/formimg.jpg" alt="images" class="img-fluid">\n\t\t\t\t\t\t\t\t\t<div class="textbox" *ngIf="showLoginText">\n\t\t\t\t\t\t\t\t\t\t<div class="login-logo"><img src="/assets/images/loginsignup/login-logo.png" alt="images"></div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="col-lg-6">\n\t\t\t\t\t\t\t\t<div class="log-box">\n\t\t\t\t\t\t\t\t\t<div class="loginform" style="margin: 0px;">\n\t\t\t\t\t\t\t\t\t\t<ng-container *ngIf="!msAllowed">\n\t\t\t\t\t\t\t\t\t\t\t<div class="login-card">\n\t\t\t\t\t\t\t\t\t\t\t\t<h3 class="login-header">Employee/Customer Login</h3>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class="third-party-login-section">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label>Username/Email</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.username.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input type="email" [ngClass]="[\'form-control\', form.controls.username.valid ? \'is-valid\' : \'is-invalid\']" formControlName="username" [autofocus]="true" [focus]="true" aria-describedby="emailHelp" placeholder="Your Username/Email" autocomplete="username">\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label>Password</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.password.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input type="password" [ngClass]="[\'form-control\', form.controls.password.enabled ? (form.controls.password.valid ? \'is-valid\' : \'is-invalid\') : \'\']" formControlName="password" placeholder="Your Password" autocomplete="current-password">\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-check text-right">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class="form-check-label"><a href="javascript:void(0)" (click)="toggleForgotPassword()"> {{!form.controls.forgotPassword.value ? \'Forgot Password?\' : \'Enter Password\'}} </a></label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<button type="submit" class="btn third-party-login-btn" (click)="close(\'ResolveIO\')">{{!form.controls.forgotPassword.value ? \'Login\' : \'Submit\'}}</button>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t\t\t<ng-container *ngIf="msAllowed">\n\t\t\t\t\t\t\t\t\t\t\t\x3c!-- Employee Login Section --\x3e\n\t\t\t\t\t\t\t\t\t\t\t<div class="login-card">\n\t\t\t\t\t\t\t\t\t\t\t\t<h3 class="login-header">Employee Login</h3>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class="employee-login-section">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<button type="submit" class="btn employee-login-btn" (click)="close(\'MS\')">Employee Login</button>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t\t\t\x3c!-- Third Party Login Section --\x3e\n\t\t\t\t\t\t\t\t\t\t\t<div class="login-card">\n\t\t\t\t\t\t\t\t\t\t\t\t<h3 class="login-header">Third Party Login</h3>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class="third-party-login-section">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label>Username/Email</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.username.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input type="email" [ngClass]="[\'form-control\', form.controls.username.valid ? \'is-valid\' : \'is-invalid\']" formControlName="username" [autofocus]="true" [focus]="true" aria-describedby="emailHelp" placeholder="Your Username/Email" autocomplete="username">\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label>Password</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.password.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input type="password" [ngClass]="[\'form-control\', form.controls.password.enabled ? (form.controls.password.valid ? \'is-valid\' : \'is-invalid\') : \'\']" formControlName="password" placeholder="Your Password" autocomplete="current-password">\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-check text-right">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class="form-check-label"><a href="javascript:void(0)" (click)="toggleForgotPassword()"> {{!form.controls.forgotPassword.value ? \'Forgot Password?\' : \'Enter Password\'}} </a></label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<button type="submit" class="btn third-party-login-btn" (click)="close(\'ResolveIO\')">{{!form.controls.forgotPassword.value ? \'Login\' : \'Submit\'}}</button>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</ng-container>\n\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="modal-footer">\n\t\t\t\t<responsive-button-group>\n\t\t\t\t\t<button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>\n\t\t\t\t</responsive-button-group>\n\t\t\t</div>\n\t\t</form>\n\t',isInline:!0,styles:["\n\t\t\tcollapse-table {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t.navbar-light .navbar-nav .active>.nav-link, .navbar-light .navbar-nav .nav-link.active, .navbar-light .navbar-nav .nav-link.show, .navbar-light .navbar-nav .show>.nav-link {\n\t\t\t\tcolor: #0b4499;\n\t\t\t}\n\t\t\t.navbar-light .navbar-nav .nav-link {\n\t\t\t\tcolor:#333;\n\t\t\t}\n\t\t\ta.nav-link.loginreg {\n\t\t\t\tbackground-color: #0b4499;\n\t\t\t\tcolor: #fff !important;\n\t\t\t\tborder-radius: 40px;\n\t\t\t}\n\t\t\ta.nav-link.loginreg:hover {\n\t\t\t\tbackground: #1668e2;\n\t\t\t}\n\t\t\t.nav-link {\n\t\t\t\tcolor: #333333;\n\t\t\t\tfont-size: 150%\n\t\t\t}\n\t\t\t.nav-item a.nav-link.active {\n\t\t\t\tcolor: #0b4499;\n\t\t\t}\n\t\t\t.contactimg>img{\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t.log-box {\n\t\t\t\tpadding-top: 0px;\n\t\t\t\tpadding-bottom: 26px;\n\t\t\t}\n\t\t\t.loginform .form-control, .register-form .form-control {\n\t\t\t\tcolor: #000;\n\t\t\t\theight: 52px;\n\t\t\t}\n\t\t\t.loginform {\n\t\t\t\tmargin-top: 35px;\n\t\t\t}\n\t\t\t.loginform label {\n\t\t\t\tfont-size: 18px;\n\t\t\t\tfont-weight: 600;\n\t\t\t}\n\n\t\t\t.loginbtn {\n\t\t\t\tbackground: #0b4499;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 44px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\t.login365btn {\n\t\t\t\tbackground: orange;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 44px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\t.contactimg {\n\t\t\t\tposition: relative;\n\t\t\t}\n\t\t\t.login-logo {\n\t\t\t\tmargin-bottom: 20px;\n\t\t\t}\n\n\t\t\t.textbox {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 50%;\n\t\t\t\tcolor: #fff;\n\t\t\t\tpadding: 40px;\n\t\t\t\ttransform: translate(0%, -50%);\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t\t.sign-btn {\n\t\t\t\tbackground: #0b4499;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 14px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\tbutton.btn.sign-btn:hover {\n\t\t\t\tbackground: #1668e2;\n\t\t\t}\n\t\t\t\n\t\t\t.login-card {\n\t\t\t\tmargin-bottom: 20px;\n\t\t\t\tpadding: 20px;\n\t\t\t\tpadding-top: 10px;\n\t\t\t\tborder-radius: 8px;\n\t\t\t\tbox-shadow: 0 4px 8px rgba(0,0,0,0.2), 0 6px 20px rgba(0,0,0,0.19); /* Enhanced shadow */\n\t\t\t\tbackground-color: #FFFFFF;\n\t\t\t}\n\t\t\t\n\t\t\t.login-header {\n\t\t\t\tfont-size: 20px;\n\t\t\t\tfont-weight: bold;\n\t\t\t\tcolor: #333;\n\t\t\t\tmargin-bottom: 15px;\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t\t\n\t\t\t.employee-login-btn {\n\t\t\t\tbackground-color: #0078D4; /* Microsoft Blue */\n\t\t\t\tcolor: white;\n\t\t\t\tpadding: 10px 20px; /* Larger size */\n\t\t\t\tfont-size: 16px; /* Larger text */\n\t\t\t\tborder-radius: 5px; /* Rounded corners */\n\t\t\t\twidth: 100%; /* Full width */\n\t\t\t\tbox-sizing: border-box; /* Include padding and border in the element's width and height */\n\t\t\t}\n\t\t\t\n\t\t\t.third-party-login-btn {\n\t\t\t\tbackground-color: #28a745; /* Bootstrap success green */\n\t\t\t\tcolor: white;\n\t\t\t\tborder-radius: 5px; /* Rounded corners */\n\t\t\t\twidth: 100%; /* Full width */\n\t\t\t\tbox-sizing: border-box; /* Include padding and border in the element's width and height */\n\t\t\t\tmargin-top: 10px;\n\t\t\t}\n\t\t\t\n\t\t\t.third-party-login-section {\n\t\t\t\tbackground-color: #F3F4F6; /* Optional: Light grey background for contrast */\n\t\t\t\tborder-radius: 8px; /* Optional: Rounded corners for the input form */\n\t\t\t}\n\t\t\t\n\t\t\t.employee-login-section, .third-party-login-section {\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t"],dependencies:[{kind:"directive",type:i2.ɵNgNoValidate,selector:"form:not([ngNoForm]):not([ngNativeValidate])"},{kind:"directive",type:i2.DefaultValueAccessor,selector:"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]"},{kind:"directive",type:i2.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i2.NgControlStatusGroup,selector:"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]"},{kind:"directive",type:i2.FormGroupDirective,selector:"[formGroup]",inputs:["formGroup"],outputs:["ngSubmit"],exportAs:["ngForm"]},{kind:"directive",type:i2.FormControlName,selector:"[formControlName]",inputs:["formControlName","disabled","ngModel"],outputs:["ngModelChange"]},{kind:"component",type:ResponsiveButtonGroupComponent,selector:"responsive-button-group",inputs:["collapseSize"]},{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"directive",type:FocusDirective,selector:"[focus]",inputs:["focus"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogLoginContent,decorators:[{type:Component,args:[{template:'\n\t\t<style>\n\t\t\tcollapse-table {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t.navbar-light .navbar-nav .active>.nav-link, .navbar-light .navbar-nav .nav-link.active, .navbar-light .navbar-nav .nav-link.show, .navbar-light .navbar-nav .show>.nav-link {\n\t\t\t\tcolor: #0b4499;\n\t\t\t}\n\t\t\t.navbar-light .navbar-nav .nav-link {\n\t\t\t\tcolor:#333;\n\t\t\t}\n\t\t\ta.nav-link.loginreg {\n\t\t\t\tbackground-color: #0b4499;\n\t\t\t\tcolor: #fff !important;\n\t\t\t\tborder-radius: 40px;\n\t\t\t}\n\t\t\ta.nav-link.loginreg:hover {\n\t\t\t\tbackground: #1668e2;\n\t\t\t}\n\t\t\t.nav-link {\n\t\t\t\tcolor: #333333;\n\t\t\t\tfont-size: 150%\n\t\t\t}\n\t\t\t.nav-item a.nav-link.active {\n\t\t\t\tcolor: #0b4499;\n\t\t\t}\n\t\t\t.contactimg>img{\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t.log-box {\n\t\t\t\tpadding-top: 0px;\n\t\t\t\tpadding-bottom: 26px;\n\t\t\t}\n\t\t\t.loginform .form-control, .register-form .form-control {\n\t\t\t\tcolor: #000;\n\t\t\t\theight: 52px;\n\t\t\t}\n\t\t\t.loginform {\n\t\t\t\tmargin-top: 35px;\n\t\t\t}\n\t\t\t.loginform label {\n\t\t\t\tfont-size: 18px;\n\t\t\t\tfont-weight: 600;\n\t\t\t}\n\n\t\t\t.loginbtn {\n\t\t\t\tbackground: #0b4499;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 44px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\t.login365btn {\n\t\t\t\tbackground: orange;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 44px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\t.contactimg {\n\t\t\t\tposition: relative;\n\t\t\t}\n\t\t\t.login-logo {\n\t\t\t\tmargin-bottom: 20px;\n\t\t\t}\n\n\t\t\t.textbox {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 50%;\n\t\t\t\tcolor: #fff;\n\t\t\t\tpadding: 40px;\n\t\t\t\ttransform: translate(0%, -50%);\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t\t.sign-btn {\n\t\t\t\tbackground: #0b4499;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 14px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\tbutton.btn.sign-btn:hover {\n\t\t\t\tbackground: #1668e2;\n\t\t\t}\n\t\t\t\n\t\t\t.login-card {\n\t\t\t\tmargin-bottom: 20px;\n\t\t\t\tpadding: 20px;\n\t\t\t\tpadding-top: 10px;\n\t\t\t\tborder-radius: 8px;\n\t\t\t\tbox-shadow: 0 4px 8px rgba(0,0,0,0.2), 0 6px 20px rgba(0,0,0,0.19); /* Enhanced shadow */\n\t\t\t\tbackground-color: #FFFFFF;\n\t\t\t}\n\t\t\t\n\t\t\t.login-header {\n\t\t\t\tfont-size: 20px;\n\t\t\t\tfont-weight: bold;\n\t\t\t\tcolor: #333;\n\t\t\t\tmargin-bottom: 15px;\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t\t\n\t\t\t.employee-login-btn {\n\t\t\t\tbackground-color: #0078D4; /* Microsoft Blue */\n\t\t\t\tcolor: white;\n\t\t\t\tpadding: 10px 20px; /* Larger size */\n\t\t\t\tfont-size: 16px; /* Larger text */\n\t\t\t\tborder-radius: 5px; /* Rounded corners */\n\t\t\t\twidth: 100%; /* Full width */\n\t\t\t\tbox-sizing: border-box; /* Include padding and border in the element\'s width and height */\n\t\t\t}\n\t\t\t\n\t\t\t.third-party-login-btn {\n\t\t\t\tbackground-color: #28a745; /* Bootstrap success green */\n\t\t\t\tcolor: white;\n\t\t\t\tborder-radius: 5px; /* Rounded corners */\n\t\t\t\twidth: 100%; /* Full width */\n\t\t\t\tbox-sizing: border-box; /* Include padding and border in the element\'s width and height */\n\t\t\t\tmargin-top: 10px;\n\t\t\t}\n\t\t\t\n\t\t\t.third-party-login-section {\n\t\t\t\tbackground-color: #F3F4F6; /* Optional: Light grey background for contrast */\n\t\t\t\tborder-radius: 8px; /* Optional: Rounded corners for the input form */\n\t\t\t}\n\t\t\t\n\t\t\t.employee-login-section, .third-party-login-section {\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t</style>\n\t\t<form [formGroup]="form" novalidate>\n\t\t\t<div class="modal-header">\n\t\t\t\t<h4 class="modal-title"><b>Login</b></h4>\n\t\t\t\t<button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()">\n\t\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class="modal-body" *ngIf="form">\n\t\t\t\t<div class="row justify-content-md-center">\n\t\t\t\t\t<div class="col-lg-12">\n\t\t\t\t\t\t<div class="row bg-white">\n\t\t\t\t\t\t\t<div class="col-lg-6">\n\t\t\t\t\t\t\t\t<div class="contactimg">\n\t\t\t\t\t\t\t\t\t<img src="/assets/images/loginsignup/formimg.jpg" alt="images" class="img-fluid">\n\t\t\t\t\t\t\t\t\t<div class="textbox" *ngIf="showLoginText">\n\t\t\t\t\t\t\t\t\t\t<div class="login-logo"><img src="/assets/images/loginsignup/login-logo.png" alt="images"></div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="col-lg-6">\n\t\t\t\t\t\t\t\t<div class="log-box">\n\t\t\t\t\t\t\t\t\t<div class="loginform" style="margin: 0px;">\n\t\t\t\t\t\t\t\t\t\t<ng-container *ngIf="!msAllowed">\n\t\t\t\t\t\t\t\t\t\t\t<div class="login-card">\n\t\t\t\t\t\t\t\t\t\t\t\t<h3 class="login-header">Employee/Customer Login</h3>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class="third-party-login-section">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label>Username/Email</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.username.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input type="email" [ngClass]="[\'form-control\', form.controls.username.valid ? \'is-valid\' : \'is-invalid\']" formControlName="username" [autofocus]="true" [focus]="true" aria-describedby="emailHelp" placeholder="Your Username/Email" autocomplete="username">\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label>Password</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.password.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input type="password" [ngClass]="[\'form-control\', form.controls.password.enabled ? (form.controls.password.valid ? \'is-valid\' : \'is-invalid\') : \'\']" formControlName="password" placeholder="Your Password" autocomplete="current-password">\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-check text-right">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class="form-check-label"><a href="javascript:void(0)" (click)="toggleForgotPassword()"> {{!form.controls.forgotPassword.value ? \'Forgot Password?\' : \'Enter Password\'}} </a></label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<button type="submit" class="btn third-party-login-btn" (click)="close(\'ResolveIO\')">{{!form.controls.forgotPassword.value ? \'Login\' : \'Submit\'}}</button>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t\t\t<ng-container *ngIf="msAllowed">\n\t\t\t\t\t\t\t\t\t\t\t\x3c!-- Employee Login Section --\x3e\n\t\t\t\t\t\t\t\t\t\t\t<div class="login-card">\n\t\t\t\t\t\t\t\t\t\t\t\t<h3 class="login-header">Employee Login</h3>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class="employee-login-section">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<button type="submit" class="btn employee-login-btn" (click)="close(\'MS\')">Employee Login</button>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t\t\t\x3c!-- Third Party Login Section --\x3e\n\t\t\t\t\t\t\t\t\t\t\t<div class="login-card">\n\t\t\t\t\t\t\t\t\t\t\t\t<h3 class="login-header">Third Party Login</h3>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class="third-party-login-section">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label>Username/Email</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.username.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input type="email" [ngClass]="[\'form-control\', form.controls.username.valid ? \'is-valid\' : \'is-invalid\']" formControlName="username" [autofocus]="true" [focus]="true" aria-describedby="emailHelp" placeholder="Your Username/Email" autocomplete="username">\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label>Password</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.password.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input type="password" [ngClass]="[\'form-control\', form.controls.password.enabled ? (form.controls.password.valid ? \'is-valid\' : \'is-invalid\') : \'\']" formControlName="password" placeholder="Your Password" autocomplete="current-password">\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-check text-right">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class="form-check-label"><a href="javascript:void(0)" (click)="toggleForgotPassword()"> {{!form.controls.forgotPassword.value ? \'Forgot Password?\' : \'Enter Password\'}} </a></label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<button type="submit" class="btn third-party-login-btn" (click)="close(\'ResolveIO\')">{{!form.controls.forgotPassword.value ? \'Login\' : \'Submit\'}}</button>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</ng-container>\n\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="modal-footer">\n\t\t\t\t<responsive-button-group>\n\t\t\t\t\t<button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>\n\t\t\t\t</responsive-button-group>\n\t\t\t</div>\n\t\t</form>\n\t'}]}],ctorParameters:function(){return[{type:i1$4.NgbActiveModal},{type:i2.FormBuilder}]},propDecorators:{msAllowed:[{type:Input}],showLoginText:[{type:Input}]}});class DialogRegisterContent{constructor(t,e){this._activeModal=t,this._fb=e}ngOnInit(){this.form=this._fb.group({username:["",[Validators.required]],name:["",[Validators.required]],phone:["",[Validators.required]],company:["",[Validators.required]],email:["",[Validators.required]]})}}DialogRegisterContent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogRegisterContent,deps:[{token:i1$4.NgbActiveModal},{token:i2.FormBuilder}],target:i0.ɵɵFactoryTarget.Component}),DialogRegisterContent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:DialogRegisterContent,selector:"ng-component",ngImport:i0,template:'\n\t\t<style>\n\t\t\tcollapse-table {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t.navbar-light .navbar-nav .active>.nav-link, .navbar-light .navbar-nav .nav-link.active, .navbar-light .navbar-nav .nav-link.show, .navbar-light .navbar-nav .show>.nav-link {\n\t\t\t\tcolor: #0b4499;\n\t\t\t}\n\t\t\t.navbar-light .navbar-nav .nav-link {\n\t\t\t\tcolor:#333;\n\t\t\t}\n\t\t\ta.nav-link.loginreg {\n\t\t\t\tbackground-color: #0b4499;\n\t\t\t\tcolor: #fff !important;\n\t\t\t\tborder-radius: 40px;\n\t\t\t}\n\t\t\ta.nav-link.loginreg:hover {\n\t\t\t\tbackground: #1668e2;\n\t\t\t}\n\t\t\t.nav-link {\n\t\t\t\tcolor: #333333;\n\t\t\t\tfont-size: 150%\n\t\t\t}\n\t\t\t.nav-item a.nav-link.active {\n\t\t\t\tcolor: #0b4499;\n\t\t\t}\n\t\t\t.contactimg>img{\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t.log-box {\n\t\t\t\tpadding-top: 26px;\n\t\t\t\tpadding-bottom: 26px;\n\t\t\t}\n\t\t\t.loginform .form-control, .register-form .form-control {\n\t\t\t\tcolor: #000;\n\t\t\t\theight: 52px;\n\t\t\t}\n\t\t\t.loginform {\n\t\t\t\tmargin-top: 35px;\n\t\t\t}\n\t\t\t.loginform label {\n\t\t\t\tfont-size: 18px;\n\t\t\t\tfont-weight: 600;\n\t\t\t}\n\n\t\t\t.loginbtn {\n\t\t\t\tbackground: #0b4499;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 44px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\t.contactimg {\n\t\t\t\tposition: relative;\n\t\t\t}\n\t\t\t.login-logo {\n\t\t\t\tmargin-bottom: 20px;\n\t\t\t}\n\n\t\t\t.textbox {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 50%;\n\t\t\t\tcolor: #fff;\n\t\t\t\tpadding: 40px;\n\t\t\t\ttransform: translate(0%, -50%);\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t\t.sign-btn {\n\t\t\t\tbackground: #0b4499;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 14px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\tbutton.btn.sign-btn:hover {\n\t\t\t\tbackground: #1668e2;\n\t\t\t}\n\t\t</style>\n\t\t<form [formGroup]="form" novalidate (ngSubmit)="_activeModal.close(form)">\n\t\t\t<div class="modal-header">\n\t\t\t\t<h4 class="modal-title"><i class="fa fa-question-circle" style="color: blue; font-size: 0.85em" aria-hidden="true"></i> Register</h4>\n\t\t\t\t<button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()">\n\t\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class="modal-body" *ngIf="form">\n\t\t\t\t<div class="row justify-content-md-center">\n\t\t\t\t\t<div class="col-lg-12">\n\t\t\t\t\t\t<div class="row bg-white">\n\t\t\t\t\t\t\t<div class="col-lg-6">\n\t\t\t\t\t\t\t\t<div class="contactimg">\n\t\t\t\t\t\t\t\t\t<img src="/assets/images/loginsignup/formimg.jpg" alt="images" class="img-fluid">\n\t\t\t\t\t\t\t\t\t<div class="textbox">\n\t\t\t\t\t\t\t\t\t\t<div class="login-logo"><img src="/assets/images/loginsignup/login-logo.png" alt="images"></div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="col-lg-6">\n\t\t\t\t\t\t\t\t<div class="log-box">\n\t\t\t\t\t\t\t\t\t<div class="register-form">\n\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t<label>User Name</label>\n\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.username.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t<input type="text" class="form-control" [ngClass]="[\'form-control\', form.controls.username.valid ? \'is-valid\' : \'is-invalid\']" formControlName="username" [autofocus]="true" [focus]="true" aria-describedby="emailHelp" placeholder="User Name">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t<label>Full Name</label>\n\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.name.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t<input type="text" class="form-control" [ngClass]="[\'form-control\', form.controls.name.valid ? \'is-valid\' : \'is-invalid\']" formControlName="name" aria-describedby="emailHelp" placeholder="Name">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t<label>Phone Number</label>\n\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.phone.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t<input type="text" class="form-control" [ngClass]="[\'form-control\', form.controls.phone.valid ? \'is-valid\' : \'is-invalid\']" formControlName="phone" placeholder="Phone Number">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t<label>Company</label>\n\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.company.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t<input type="text" class="form-control" [ngClass]="[\'form-control\', form.controls.company.valid ? \'is-valid\' : \'is-invalid\']" formControlName="company" placeholder="Company Name">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t<label>Email</label>\n\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.email.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t<input type="email" class="form-control" [ngClass]="[\'form-control\', form.controls.email.valid ? \'is-valid\' : \'is-invalid\']" formControlName="email" placeholder="Email">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<button type="submit" class="btn sign-btn">Signup</button>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="modal-footer">\n\t\t\t\t<responsive-button-group>\n\t\t\t\t\t<button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>\n\t\t\t\t</responsive-button-group>\n\t\t\t</div>\n\t\t</form>\n\t',isInline:!0,styles:["\n\t\t\tcollapse-table {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t.navbar-light .navbar-nav .active>.nav-link, .navbar-light .navbar-nav .nav-link.active, .navbar-light .navbar-nav .nav-link.show, .navbar-light .navbar-nav .show>.nav-link {\n\t\t\t\tcolor: #0b4499;\n\t\t\t}\n\t\t\t.navbar-light .navbar-nav .nav-link {\n\t\t\t\tcolor:#333;\n\t\t\t}\n\t\t\ta.nav-link.loginreg {\n\t\t\t\tbackground-color: #0b4499;\n\t\t\t\tcolor: #fff !important;\n\t\t\t\tborder-radius: 40px;\n\t\t\t}\n\t\t\ta.nav-link.loginreg:hover {\n\t\t\t\tbackground: #1668e2;\n\t\t\t}\n\t\t\t.nav-link {\n\t\t\t\tcolor: #333333;\n\t\t\t\tfont-size: 150%\n\t\t\t}\n\t\t\t.nav-item a.nav-link.active {\n\t\t\t\tcolor: #0b4499;\n\t\t\t}\n\t\t\t.contactimg>img{\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t.log-box {\n\t\t\t\tpadding-top: 26px;\n\t\t\t\tpadding-bottom: 26px;\n\t\t\t}\n\t\t\t.loginform .form-control, .register-form .form-control {\n\t\t\t\tcolor: #000;\n\t\t\t\theight: 52px;\n\t\t\t}\n\t\t\t.loginform {\n\t\t\t\tmargin-top: 35px;\n\t\t\t}\n\t\t\t.loginform label {\n\t\t\t\tfont-size: 18px;\n\t\t\t\tfont-weight: 600;\n\t\t\t}\n\n\t\t\t.loginbtn {\n\t\t\t\tbackground: #0b4499;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 44px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\t.contactimg {\n\t\t\t\tposition: relative;\n\t\t\t}\n\t\t\t.login-logo {\n\t\t\t\tmargin-bottom: 20px;\n\t\t\t}\n\n\t\t\t.textbox {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 50%;\n\t\t\t\tcolor: #fff;\n\t\t\t\tpadding: 40px;\n\t\t\t\ttransform: translate(0%, -50%);\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t\t.sign-btn {\n\t\t\t\tbackground: #0b4499;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 14px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\tbutton.btn.sign-btn:hover {\n\t\t\t\tbackground: #1668e2;\n\t\t\t}\n\t\t"],dependencies:[{kind:"directive",type:i2.ɵNgNoValidate,selector:"form:not([ngNoForm]):not([ngNativeValidate])"},{kind:"directive",type:i2.DefaultValueAccessor,selector:"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]"},{kind:"directive",type:i2.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i2.NgControlStatusGroup,selector:"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]"},{kind:"directive",type:i2.FormGroupDirective,selector:"[formGroup]",inputs:["formGroup"],outputs:["ngSubmit"],exportAs:["ngForm"]},{kind:"directive",type:i2.FormControlName,selector:"[formControlName]",inputs:["formControlName","disabled","ngModel"],outputs:["ngModelChange"]},{kind:"component",type:ResponsiveButtonGroupComponent,selector:"responsive-button-group",inputs:["collapseSize"]},{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"directive",type:FocusDirective,selector:"[focus]",inputs:["focus"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogRegisterContent,decorators:[{type:Component,args:[{template:'\n\t\t<style>\n\t\t\tcollapse-table {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t.navbar-light .navbar-nav .active>.nav-link, .navbar-light .navbar-nav .nav-link.active, .navbar-light .navbar-nav .nav-link.show, .navbar-light .navbar-nav .show>.nav-link {\n\t\t\t\tcolor: #0b4499;\n\t\t\t}\n\t\t\t.navbar-light .navbar-nav .nav-link {\n\t\t\t\tcolor:#333;\n\t\t\t}\n\t\t\ta.nav-link.loginreg {\n\t\t\t\tbackground-color: #0b4499;\n\t\t\t\tcolor: #fff !important;\n\t\t\t\tborder-radius: 40px;\n\t\t\t}\n\t\t\ta.nav-link.loginreg:hover {\n\t\t\t\tbackground: #1668e2;\n\t\t\t}\n\t\t\t.nav-link {\n\t\t\t\tcolor: #333333;\n\t\t\t\tfont-size: 150%\n\t\t\t}\n\t\t\t.nav-item a.nav-link.active {\n\t\t\t\tcolor: #0b4499;\n\t\t\t}\n\t\t\t.contactimg>img{\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t.log-box {\n\t\t\t\tpadding-top: 26px;\n\t\t\t\tpadding-bottom: 26px;\n\t\t\t}\n\t\t\t.loginform .form-control, .register-form .form-control {\n\t\t\t\tcolor: #000;\n\t\t\t\theight: 52px;\n\t\t\t}\n\t\t\t.loginform {\n\t\t\t\tmargin-top: 35px;\n\t\t\t}\n\t\t\t.loginform label {\n\t\t\t\tfont-size: 18px;\n\t\t\t\tfont-weight: 600;\n\t\t\t}\n\n\t\t\t.loginbtn {\n\t\t\t\tbackground: #0b4499;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 44px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\t.contactimg {\n\t\t\t\tposition: relative;\n\t\t\t}\n\t\t\t.login-logo {\n\t\t\t\tmargin-bottom: 20px;\n\t\t\t}\n\n\t\t\t.textbox {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 50%;\n\t\t\t\tcolor: #fff;\n\t\t\t\tpadding: 40px;\n\t\t\t\ttransform: translate(0%, -50%);\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t\t.sign-btn {\n\t\t\t\tbackground: #0b4499;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 14px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\tbutton.btn.sign-btn:hover {\n\t\t\t\tbackground: #1668e2;\n\t\t\t}\n\t\t</style>\n\t\t<form [formGroup]="form" novalidate (ngSubmit)="_activeModal.close(form)">\n\t\t\t<div class="modal-header">\n\t\t\t\t<h4 class="modal-title"><i class="fa fa-question-circle" style="color: blue; font-size: 0.85em" aria-hidden="true"></i> Register</h4>\n\t\t\t\t<button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()">\n\t\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class="modal-body" *ngIf="form">\n\t\t\t\t<div class="row justify-content-md-center">\n\t\t\t\t\t<div class="col-lg-12">\n\t\t\t\t\t\t<div class="row bg-white">\n\t\t\t\t\t\t\t<div class="col-lg-6">\n\t\t\t\t\t\t\t\t<div class="contactimg">\n\t\t\t\t\t\t\t\t\t<img src="/assets/images/loginsignup/formimg.jpg" alt="images" class="img-fluid">\n\t\t\t\t\t\t\t\t\t<div class="textbox">\n\t\t\t\t\t\t\t\t\t\t<div class="login-logo"><img src="/assets/images/loginsignup/login-logo.png" alt="images"></div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="col-lg-6">\n\t\t\t\t\t\t\t\t<div class="log-box">\n\t\t\t\t\t\t\t\t\t<div class="register-form">\n\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t<label>User Name</label>\n\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.username.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t<input type="text" class="form-control" [ngClass]="[\'form-control\', form.controls.username.valid ? \'is-valid\' : \'is-invalid\']" formControlName="username" [autofocus]="true" [focus]="true" aria-describedby="emailHelp" placeholder="User Name">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t<label>Full Name</label>\n\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.name.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t<input type="text" class="form-control" [ngClass]="[\'form-control\', form.controls.name.valid ? \'is-valid\' : \'is-invalid\']" formControlName="name" aria-describedby="emailHelp" placeholder="Name">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t<label>Phone Number</label>\n\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.phone.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t<input type="text" class="form-control" [ngClass]="[\'form-control\', form.controls.phone.valid ? \'is-valid\' : \'is-invalid\']" formControlName="phone" placeholder="Phone Number">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t<label>Company</label>\n\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.company.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t<input type="text" class="form-control" [ngClass]="[\'form-control\', form.controls.company.valid ? \'is-valid\' : \'is-invalid\']" formControlName="company" placeholder="Company Name">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t<label>Email</label>\n\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.email.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t<input type="email" class="form-control" [ngClass]="[\'form-control\', form.controls.email.valid ? \'is-valid\' : \'is-invalid\']" formControlName="email" placeholder="Email">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<button type="submit" class="btn sign-btn">Signup</button>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="modal-footer">\n\t\t\t\t<responsive-button-group>\n\t\t\t\t\t<button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>\n\t\t\t\t</responsive-button-group>\n\t\t\t</div>\n\t\t</form>\n\t'}]}],ctorParameters:function(){return[{type:i1$4.NgbActiveModal},{type:i2.FormBuilder}]}});class DialogSelectWithButtonsURLContent{constructor(t,e){this._activeModal=t,this._account=e,this.url="",this.title="Select Window Type",this.selectedType="",this.options=[{value:"same_tab",text:"Same Tab"},{value:"new_tab",text:"New Tab"},{value:"new_window",text:"New Window"}]}ngOnInit(){this._account.getUser().settings.routing_preference&&"alwaysAsk"!==this._account.getUser().settings.routing_preference&&("sameTab"===this._account.getUser().settings.routing_preference&&window.open(this.url,"_self"),"newTab"===this._account.getUser().settings.routing_preference&&window.open(this.url,"_blank"),"newWindow"===this._account.getUser().settings.routing_preference&&window.open(this.url,"_blank","toolbar=1,location=1,menubar=1"),this._activeModal.close())}ngAfterViewInit(){setTimeout((()=>{let t=this.recursiveFindFirstElement(this.allElements.nativeElement);t?t.focus():(this.close.nativeElement.focus(),this.close.nativeElement.blur())}),100)}recursiveFindFirstElement(t){let e=null,n=t.children;for(let t=0;t<Object.keys(n).length;t++){let o=n[Object.keys(n)[t]];if(o.children&&o.children.length)e=this.recursiveFindFirstElement(o);else{if("BUTTON"===o.tagName&&o.classList.contains("close"))return null;if(!("BUTTON"!==o.tagName&&"INPUT"!==o.tagName&&"SELECT"!==o.tagName&&"TEXTAREA"!==o.tagName||o.hidden||o.disabled))return o}if(e)break}return e}onSelectType(t){this.selectedType=t,this.submit()}submit(){"same_tab"===this.selectedType&&window.open(this.url,"_self"),"new_tab"===this.selectedType&&window.open(this.url,"_blank"),"new_window"===this.selectedType&&window.open(this.url,"_blank","toolbar=1,location=1,menubar=1"),this._activeModal.close()}}DialogSelectWithButtonsURLContent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogSelectWithButtonsURLContent,deps:[{token:i1$4.NgbActiveModal},{token:AccountManagerService}],target:i0.ɵɵFactoryTarget.Component}),DialogSelectWithButtonsURLContent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:DialogSelectWithButtonsURLContent,selector:"ng-component",inputs:{url:"url"},viewQueries:[{propertyName:"close",first:!0,predicate:["close"],descendants:!0},{propertyName:"allElements",first:!0,predicate:["allElements"],descendants:!0}],ngImport:i0,template:'\n\t\t<style>\n\t\t\tcollapse-table tr:hover {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\n\t\t\t.selected {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t}\n\n\t\t\tcollapse-table {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t</style>\n\t\t<div #allElements>\n\t\t\t<div class="modal-header">\n\t\t\t\t<h4 class="modal-title"><i class="fa fa-question-circle" style="color: blue; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>\n\t\t\t\t<button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()" #close>\n\t\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class="modal-body">\n\t\t\t\t<div class="row">\n\t\t\t\t\t<div class="col" *ngFor="let option of options">\n\t\t\t\t\t\t<button style="width: 100%" type="button" [ngClass]="[\'btn\', selectedType === option.value ? \'btn-success\' : \'btn-warning\']" (click)="onSelectType(option.value)">{{option.text}}</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t',isInline:!0,styles:["\n\t\t\tcollapse-table tr:hover {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\n\t\t\t.selected {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t}\n\n\t\t\tcollapse-table {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t"],dependencies:[{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogSelectWithButtonsURLContent,decorators:[{type:Component,args:[{template:'\n\t\t<style>\n\t\t\tcollapse-table tr:hover {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\n\t\t\t.selected {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t}\n\n\t\t\tcollapse-table {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t</style>\n\t\t<div #allElements>\n\t\t\t<div class="modal-header">\n\t\t\t\t<h4 class="modal-title"><i class="fa fa-question-circle" style="color: blue; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>\n\t\t\t\t<button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()" #close>\n\t\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class="modal-body">\n\t\t\t\t<div class="row">\n\t\t\t\t\t<div class="col" *ngFor="let option of options">\n\t\t\t\t\t\t<button style="width: 100%" type="button" [ngClass]="[\'btn\', selectedType === option.value ? \'btn-success\' : \'btn-warning\']" (click)="onSelectType(option.value)">{{option.text}}</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t'}]}],ctorParameters:function(){return[{type:i1$4.NgbActiveModal},{type:AccountManagerService}]},propDecorators:{url:[{type:Input}],close:[{type:ViewChild,args:["close",{static:!1}]}],allElements:[{type:ViewChild,args:["allElements",{static:!1}]}]}});class CollapseTableComponent{constructor(t,e){this._resizeService=t,this._account=e,this.headerFixed=!1,this.secondaryColor=!1,this.tertiaryColor=!1,this.windowSize=window.innerWidth,this.windowSizeSubscription=null}ngOnInit(){this.windowSizeSubscription=this._resizeService.onResize$.subscribe((t=>{this.windowSize=t.innerWidth})),this._account.getUser()&&this._account.getUser().settings&&(document.documentElement.style.setProperty("--primary-table-color",this._account.getUser().settings.table_color),document.documentElement.style.setProperty("--primary-table-font-color",this._account.getUser().settings.table_font_color),document.documentElement.style.setProperty("--font-size",this._account.getUser().settings.font_size+"px"),document.documentElement.style.setProperty("--secondary-table-color",this._account.getUser().settings.secondary_table_color),document.documentElement.style.setProperty("--secondary-table-font-color",this._account.getUser().settings.secondary_table_font_color),document.documentElement.style.setProperty("--tertiary-table-color",this._account.getUser().settings.tertiary_table_color),document.documentElement.style.setProperty("--tertiary-table-font-color",this._account.getUser().settings.tertiary_table_font_color))}ngOnDestroy(){this.windowSizeSubscription.unsubscribe()}onClick(t){}getCollapseClass(){let t=["table"];return this.secondaryColor?t.push("collapseTable-sec"):this.tertiaryColor?t.push("collapseTable-tert"):t.push("collapseTable"),t}getPrimaryColor(){return this._account.getUser()?this._account.getUser().settings.table_color:"#3b3ee3"}}CollapseTableComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:CollapseTableComponent,deps:[{token:ResizeService},{token:AccountManagerService}],target:i0.ɵɵFactoryTarget.Component}),CollapseTableComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:CollapseTableComponent,selector:"collapse-table",inputs:{collapseSize:"collapseSize",tableFixed:"tableFixed",headerFixed:"headerFixed",secondaryColor:"secondaryColor",tertiaryColor:"tertiaryColor"},ngImport:i0,template:'<style>\n ::ng-deep :root {\n --primary-table-color: #3b3ee3;\n --primary-table-font-color: white;\n --font-size: 12px;\n --secondary-table-color: #87ceeb;\n --secondary-table-font-color: #000000;\n --tertiary-table-color: #ff4500;\n --tertiary-table-font-color: #000000;\n }\n\n\t:host /deep/ .collapseTable {\n border: 1px solid #ccc;\n margin: 0;\n padding: 0;\n width: 100%;\n /*table-layout: fixed;*/ \n }\n :host /deep/ .collapseTable tr {\n border: 1px solid #ddd;\n padding: 0.35em;\n }\n :host /deep/ .collapseTable th, :host /deep/ .collapseTable td {\n padding: 0.625em;\n text-align: center;\n vertical-align: middle;\n }\n :host /deep/ .collapseTable th {\n letter-spacing: 0.1em;\n text-transform: uppercase;\n background-color: var(--primary-table-color);\n color: var(--primary-table-font-color);\n font-size: var(--font-size);\n position: sticky;\n z-index: 10;\n top: 0;\n } \n :host /deep/ .collapseTable-sec {\n border: 1px solid #ccc;\n margin: 0;\n padding: 0;\n width: 100%;\n }\n :host /deep/ .collapseTable-sec tr {\n border: 1px solid #ddd;\n padding: 0.35em;\n }\n :host /deep/ .collapseTable-sec th, :host /deep/ .collapseTable-sec td {\n padding: 0.625em;\n text-align: center;\n }\n :host /deep/ .collapseTable-sec th {\n letter-spacing: 0.1em;\n text-transform: uppercase;\n background-color: var(--secondary-table-color);\n color: var(--secondary-table-font-color);\n font-size: var(--font-size);\n position: sticky;\n z-index: 10;\n top: 0;\n } \n :host /deep/ .collapseTable-tert {\n border: 1px solid #ccc;\n margin: 0;\n padding: 0;\n width: 100%;\n }\n :host /deep/ .collapseTable-tert tr {\n border: 1px solid #ddd;\n padding: 0.35em;\n }\n :host /deep/ .collapseTable-tert th, :host /deep/ .collapseTable-tert td {\n padding: 0.625em;\n text-align: center;\n }\n :host /deep/ .collapseTable-tert th {\n letter-spacing: 0.1em;\n text-transform: uppercase;\n background-color: var(--tertiary-table-color);\n color: var(--tertiary-table-font-color);\n font-size: var(--font-size);\n position: sticky;\n z-index: 10;\n top: 0;\n }\n \n .fixed {\n table-layout: fixed;\n }\n\n :host /deep/ .headerFixed thead, :host /deep/ .headerFixed tbody tr {\n display:table;\n width:100%;\n table-layout:fixed;\n }\n\n :host /deep/ .collapseTable,\n :host /deep/ .collapseTable-sec,\n :host /deep/ .collapseTable-tert {\n box-shadow: 0 0 15px rgba(0,0,0,0.25); \n }\n \n :host /deep/ .collapseTable > thead:first-of-type > tr:first-child > th:first-child,\n :host /deep/ .collapseTable-sec > thead:first-of-type > tr:first-child > th:first-child,\n :host /deep/ .collapseTable-tert > thead:first-of-type > tr:first-child > th:first-child {\n border-top-left-radius: 10px;\n }\n\n :host /deep/ .collapseTable > thead:first-of-type > tr:first-child > th:last-child,\n :host /deep/ .collapseTable-sec > thead:first-of-type > tr:first-child > th:last-child,\n :host /deep/ .collapseTable-tert > thead:first-of-type > tr:first-child > th:last-child {\n border-top-right-radius: 10px;\n }\n\n :host /deep/ .collapseTable > tbody:last-of-type > tr:last-child > td:first-child,\n :host /deep/ .collapseTable-sec > tbody:last-of-type > tr:last-child > td:first-child,\n :host /deep/ .collapseTable-tert > tbody:last-of-type > tr:last-child > td:first-child {\n border-bottom-left-radius: 10px;\n }\n\n :host /deep/ .collapseTable > tbody:last-of-type > tr:last-child > td:last-child,\n :host /deep/ .collapseTable-sec > tbody:last-of-type > tr:last-child > td:last-child,\n :host /deep/ .collapseTable-tert > tbody:last-of-type > tr:last-child > td:last-child {\n border-bottom-right-radius: 10px;\n }\n\n .hide {\n display: none;\n }\n</style>\n\n<div class="table-responsive-xl">\n <table [ngClass]="getCollapseClass()" style="border: none" cellspacing="0" cellpadding="0">\n <ng-content></ng-content>\n </table>\n</div>',styles:["\n ::ng-deep :root {\n --primary-table-color: #3b3ee3;\n --primary-table-font-color: white;\n --font-size: 12px;\n --secondary-table-color: #87ceeb;\n --secondary-table-font-color: #000000;\n --tertiary-table-color: #ff4500;\n --tertiary-table-font-color: #000000;\n }\n\n\t:host /deep/ .collapseTable {\n border: 1px solid #ccc;\n margin: 0;\n padding: 0;\n width: 100%;\n /*table-layout: fixed;*/ \n }\n :host /deep/ .collapseTable tr {\n border: 1px solid #ddd;\n padding: 0.35em;\n }\n :host /deep/ .collapseTable th, :host /deep/ .collapseTable td {\n padding: 0.625em;\n text-align: center;\n vertical-align: middle;\n }\n :host /deep/ .collapseTable th {\n letter-spacing: 0.1em;\n text-transform: uppercase;\n background-color: var(--primary-table-color);\n color: var(--primary-table-font-color);\n font-size: var(--font-size);\n position: sticky;\n z-index: 10;\n top: 0;\n } \n :host /deep/ .collapseTable-sec {\n border: 1px solid #ccc;\n margin: 0;\n padding: 0;\n width: 100%;\n }\n :host /deep/ .collapseTable-sec tr {\n border: 1px solid #ddd;\n padding: 0.35em;\n }\n :host /deep/ .collapseTable-sec th, :host /deep/ .collapseTable-sec td {\n padding: 0.625em;\n text-align: center;\n }\n :host /deep/ .collapseTable-sec th {\n letter-spacing: 0.1em;\n text-transform: uppercase;\n background-color: var(--secondary-table-color);\n color: var(--secondary-table-font-color);\n font-size: var(--font-size);\n position: sticky;\n z-index: 10;\n top: 0;\n } \n :host /deep/ .collapseTable-tert {\n border: 1px solid #ccc;\n margin: 0;\n padding: 0;\n width: 100%;\n }\n :host /deep/ .collapseTable-tert tr {\n border: 1px solid #ddd;\n padding: 0.35em;\n }\n :host /deep/ .collapseTable-tert th, :host /deep/ .collapseTable-tert td {\n padding: 0.625em;\n text-align: center;\n }\n :host /deep/ .collapseTable-tert th {\n letter-spacing: 0.1em;\n text-transform: uppercase;\n background-color: var(--tertiary-table-color);\n color: var(--tertiary-table-font-color);\n font-size: var(--font-size);\n position: sticky;\n z-index: 10;\n top: 0;\n }\n \n .fixed {\n table-layout: fixed;\n }\n\n :host /deep/ .headerFixed thead, :host /deep/ .headerFixed tbody tr {\n display:table;\n width:100%;\n table-layout:fixed;\n }\n\n :host /deep/ .collapseTable,\n :host /deep/ .collapseTable-sec,\n :host /deep/ .collapseTable-tert {\n box-shadow: 0 0 15px rgba(0,0,0,0.25); \n }\n \n :host /deep/ .collapseTable > thead:first-of-type > tr:first-child > th:first-child,\n :host /deep/ .collapseTable-sec > thead:first-of-type > tr:first-child > th:first-child,\n :host /deep/ .collapseTable-tert > thead:first-of-type > tr:first-child > th:first-child {\n border-top-left-radius: 10px;\n }\n\n :host /deep/ .collapseTable > thead:first-of-type > tr:first-child > th:last-child,\n :host /deep/ .collapseTable-sec > thead:first-of-type > tr:first-child > th:last-child,\n :host /deep/ .collapseTable-tert > thead:first-of-type > tr:first-child > th:last-child {\n border-top-right-radius: 10px;\n }\n\n :host /deep/ .collapseTable > tbody:last-of-type > tr:last-child > td:first-child,\n :host /deep/ .collapseTable-sec > tbody:last-of-type > tr:last-child > td:first-child,\n :host /deep/ .collapseTable-tert > tbody:last-of-type > tr:last-child > td:first-child {\n border-bottom-left-radius: 10px;\n }\n\n :host /deep/ .collapseTable > tbody:last-of-type > tr:last-child > td:last-child,\n :host /deep/ .collapseTable-sec > tbody:last-of-type > tr:last-child > td:last-child,\n :host /deep/ .collapseTable-tert > tbody:last-of-type > tr:last-child > td:last-child {\n border-bottom-right-radius: 10px;\n }\n\n .hide {\n display: none;\n }\n"],dependencies:[{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:CollapseTableComponent,decorators:[{type:Component,args:[{selector:"collapse-table",template:'<style>\n ::ng-deep :root {\n --primary-table-color: #3b3ee3;\n --primary-table-font-color: white;\n --font-size: 12px;\n --secondary-table-color: #87ceeb;\n --secondary-table-font-color: #000000;\n --tertiary-table-color: #ff4500;\n --tertiary-table-font-color: #000000;\n }\n\n\t:host /deep/ .collapseTable {\n border: 1px solid #ccc;\n margin: 0;\n padding: 0;\n width: 100%;\n /*table-layout: fixed;*/ \n }\n :host /deep/ .collapseTable tr {\n border: 1px solid #ddd;\n padding: 0.35em;\n }\n :host /deep/ .collapseTable th, :host /deep/ .collapseTable td {\n padding: 0.625em;\n text-align: center;\n vertical-align: middle;\n }\n :host /deep/ .collapseTable th {\n letter-spacing: 0.1em;\n text-transform: uppercase;\n background-color: var(--primary-table-color);\n color: var(--primary-table-font-color);\n font-size: var(--font-size);\n position: sticky;\n z-index: 10;\n top: 0;\n } \n :host /deep/ .collapseTable-sec {\n border: 1px solid #ccc;\n margin: 0;\n padding: 0;\n width: 100%;\n }\n :host /deep/ .collapseTable-sec tr {\n border: 1px solid #ddd;\n padding: 0.35em;\n }\n :host /deep/ .collapseTable-sec th, :host /deep/ .collapseTable-sec td {\n padding: 0.625em;\n text-align: center;\n }\n :host /deep/ .collapseTable-sec th {\n letter-spacing: 0.1em;\n text-transform: uppercase;\n background-color: var(--secondary-table-color);\n color: var(--secondary-table-font-color);\n font-size: var(--font-size);\n position: sticky;\n z-index: 10;\n top: 0;\n } \n :host /deep/ .collapseTable-tert {\n border: 1px solid #ccc;\n margin: 0;\n padding: 0;\n width: 100%;\n }\n :host /deep/ .collapseTable-tert tr {\n border: 1px solid #ddd;\n padding: 0.35em;\n }\n :host /deep/ .collapseTable-tert th, :host /deep/ .collapseTable-tert td {\n padding: 0.625em;\n text-align: center;\n }\n :host /deep/ .collapseTable-tert th {\n letter-spacing: 0.1em;\n text-transform: uppercase;\n background-color: var(--tertiary-table-color);\n color: var(--tertiary-table-font-color);\n font-size: var(--font-size);\n position: sticky;\n z-index: 10;\n top: 0;\n }\n \n .fixed {\n table-layout: fixed;\n }\n\n :host /deep/ .headerFixed thead, :host /deep/ .headerFixed tbody tr {\n display:table;\n width:100%;\n table-layout:fixed;\n }\n\n :host /deep/ .collapseTable,\n :host /deep/ .collapseTable-sec,\n :host /deep/ .collapseTable-tert {\n box-shadow: 0 0 15px rgba(0,0,0,0.25); \n }\n \n :host /deep/ .collapseTable > thead:first-of-type > tr:first-child > th:first-child,\n :host /deep/ .collapseTable-sec > thead:first-of-type > tr:first-child > th:first-child,\n :host /deep/ .collapseTable-tert > thead:first-of-type > tr:first-child > th:first-child {\n border-top-left-radius: 10px;\n }\n\n :host /deep/ .collapseTable > thead:first-of-type > tr:first-child > th:last-child,\n :host /deep/ .collapseTable-sec > thead:first-of-type > tr:first-child > th:last-child,\n :host /deep/ .collapseTable-tert > thead:first-of-type > tr:first-child > th:last-child {\n border-top-right-radius: 10px;\n }\n\n :host /deep/ .collapseTable > tbody:last-of-type > tr:last-child > td:first-child,\n :host /deep/ .collapseTable-sec > tbody:last-of-type > tr:last-child > td:first-child,\n :host /deep/ .collapseTable-tert > tbody:last-of-type > tr:last-child > td:first-child {\n border-bottom-left-radius: 10px;\n }\n\n :host /deep/ .collapseTable > tbody:last-of-type > tr:last-child > td:last-child,\n :host /deep/ .collapseTable-sec > tbody:last-of-type > tr:last-child > td:last-child,\n :host /deep/ .collapseTable-tert > tbody:last-of-type > tr:last-child > td:last-child {\n border-bottom-right-radius: 10px;\n }\n\n .hide {\n display: none;\n }\n</style>\n\n<div class="table-responsive-xl">\n <table [ngClass]="getCollapseClass()" style="border: none" cellspacing="0" cellpadding="0">\n <ng-content></ng-content>\n </table>\n</div>'}]}],ctorParameters:function(){return[{type:ResizeService},{type:AccountManagerService}]},propDecorators:{collapseSize:[{type:Input}],tableFixed:[{type:Input}],headerFixed:[{type:Input}],secondaryColor:[{type:Input}],tertiaryColor:[{type:Input}]}});class DialogSelectArrayObjsContent{constructor(t){this._activeModal=t,this.title="",this.objects=[],this.multiple=!1,this.allowNone=!1,this.selectedIndex=null,this.selectedItem=null,this.selectedIndexes=[],this.selectedItems=[]}ngAfterViewInit(){setTimeout((()=>{let t=this.recursiveFindFirstElement(this.allElements.nativeElement);t?t.focus():(this.close.nativeElement.focus(),this.close.nativeElement.blur())}),100),this.objects.forEach(((t,e)=>{t.selected&&(this.selectedIndexes.push(e),this.selectedItems.push(t))}))}recursiveFindFirstElement(t){let e=null,n=t.children;for(let t=0;t<Object.keys(n).length;t++){let o=n[Object.keys(n)[t]];if(o.children&&o.children.length)e=this.recursiveFindFirstElement(o);else{if("BUTTON"===o.tagName&&o.classList.contains("close"))return null;if(!("BUTTON"!==o.tagName&&"INPUT"!==o.tagName&&"SELECT"!==o.tagName&&"TEXTAREA"!==o.tagName||o.hidden||o.disabled))return o}if(e)break}return e}onSelectItem(t){this.multiple?this.selectedItems.some((e=>e.value===this.objects[t].value))?(this.selectedIndexes.splice(this.selectedIndexes.indexOf(t),1),this.selectedItems.splice(this.selectedItems.map((t=>t.value)).indexOf(this.objects[t].value),1)):(this.selectedIndexes.push(t),this.selectedItems.push(this.objects[t])):this.objects[t]===this.selectedItem?(this.selectedItem=null,this.selectedIndex=null):(this.selectedItem=this.objects[t],this.selectedIndex=t)}}DialogSelectArrayObjsContent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogSelectArrayObjsContent,deps:[{token:i1$4.NgbActiveModal}],target:i0.ɵɵFactoryTarget.Component}),DialogSelectArrayObjsContent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:DialogSelectArrayObjsContent,selector:"ng-component",inputs:{title:"title",objects:"objects",multiple:"multiple",allowNone:"allowNone"},viewQueries:[{propertyName:"close",first:!0,predicate:["close"],descendants:!0},{propertyName:"allElements",first:!0,predicate:["allElements"],descendants:!0}],ngImport:i0,template:'\n\t\t<style>\n\t\t\tcollapse-table tr:hover {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\n\t\t\t.selected {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t}\n\n\t\t\tcollapse-table {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t</style>\n\t\t<div #allElements>\n\t\t\t<div class="modal-header">\n\t\t\t\t<h4 class="modal-title"><i class="fa fa-question-circle" style="color: blue; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>\n\t\t\t\t<button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()" #close>\n\t\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class="modal-body">\n\t\t\t\t<div style="height: 60vh; overflow-y: auto">\n\t\t\t\t\t<collapse-table collapseSize="900">\n\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<th>List</th>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t<tr *ngFor="let object of objects; let i = index" (click)="onSelectItem(i)" [ngClass]="{\'selected\' : i === selectedIndex || selectedIndexes.includes(i)}">\n\t\t\t\t\t\t\t\t<td>{{object.text}}</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</tbody>\n\t\t\t\t\t</collapse-table>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="modal-footer">\n\t\t\t\t<ng-container *ngIf="!allowNone">\n\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', (selectedItem || selectedItems.length) ? \'btn-success\' : \'btn-danger\']" [disabled]="!selectedItem && !selectedItems.length" (click)="_activeModal.close(selectedItem || selectedItems)">Submit</button>\n\t\t\t\t</ng-container>\n\t\t\t\t<ng-container *ngIf="allowNone">\n\t\t\t\t\t<button type="button" class="btn btn-success" (click)="_activeModal.close(selectedItem || selectedItems)">Submit</button>\n\t\t\t\t</ng-container>\n\t\t\t\t<button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>\n\t\t\t</div>\n\t\t</div>\n\t',isInline:!0,styles:["\n\t\t\tcollapse-table tr:hover {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\n\t\t\t.selected {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t}\n\n\t\t\tcollapse-table {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t"],dependencies:[{kind:"component",type:CollapseTableComponent,selector:"collapse-table",inputs:["collapseSize","tableFixed","headerFixed","secondaryColor","tertiaryColor"]},{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogSelectArrayObjsContent,decorators:[{type:Component,args:[{template:'\n\t\t<style>\n\t\t\tcollapse-table tr:hover {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\n\t\t\t.selected {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t}\n\n\t\t\tcollapse-table {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t</style>\n\t\t<div #allElements>\n\t\t\t<div class="modal-header">\n\t\t\t\t<h4 class="modal-title"><i class="fa fa-question-circle" style="color: blue; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>\n\t\t\t\t<button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()" #close>\n\t\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class="modal-body">\n\t\t\t\t<div style="height: 60vh; overflow-y: auto">\n\t\t\t\t\t<collapse-table collapseSize="900">\n\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<th>List</th>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t<tr *ngFor="let object of objects; let i = index" (click)="onSelectItem(i)" [ngClass]="{\'selected\' : i === selectedIndex || selectedIndexes.includes(i)}">\n\t\t\t\t\t\t\t\t<td>{{object.text}}</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</tbody>\n\t\t\t\t\t</collapse-table>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="modal-footer">\n\t\t\t\t<ng-container *ngIf="!allowNone">\n\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', (selectedItem || selectedItems.length) ? \'btn-success\' : \'btn-danger\']" [disabled]="!selectedItem && !selectedItems.length" (click)="_activeModal.close(selectedItem || selectedItems)">Submit</button>\n\t\t\t\t</ng-container>\n\t\t\t\t<ng-container *ngIf="allowNone">\n\t\t\t\t\t<button type="button" class="btn btn-success" (click)="_activeModal.close(selectedItem || selectedItems)">Submit</button>\n\t\t\t\t</ng-container>\n\t\t\t\t<button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>\n\t\t\t</div>\n\t\t</div>\n\t'}]}],ctorParameters:function(){return[{type:i1$4.NgbActiveModal}]},propDecorators:{title:[{type:Input}],objects:[{type:Input}],multiple:[{type:Input}],allowNone:[{type:Input}],close:[{type:ViewChild,args:["close",{static:!1}]}],allElements:[{type:ViewChild,args:["allElements",{static:!1}]}]}});class DialogSelectArrayContent{constructor(t,e){this._activeModal=t,this._cdRef=e,this.title="",this.array=[],this.selectedIndexes=[],this.method="list",this.mappedArray=[],this.selectIndexes=[]}ngOnInit(){this.mappedArray=this.array.map(((t,e)=>({value:e,text:t}))),this.selectedIndexes.forEach((t=>{this.selectIndexes.push(t)}))}ngAfterViewInit(){setTimeout((()=>{let t=this.recursiveFindFirstElement(this.allElements.nativeElement);t?t.focus():(this.close.nativeElement.focus(),this.close.nativeElement.blur())}),100)}recursiveFindFirstElement(t){let e=null,n=t.children;for(let t=0;t<Object.keys(n).length;t++){let o=n[Object.keys(n)[t]];if(o.children&&o.children.length)e=this.recursiveFindFirstElement(o);else{if("BUTTON"===o.tagName&&o.classList.contains("close"))return null;if(!("BUTTON"!==o.tagName&&"INPUT"!==o.tagName&&"SELECT"!==o.tagName&&"TEXTAREA"!==o.tagName||o.hidden||o.disabled))return o}if(e)break}return e}addDropDown(){let t=this.array.filter(((t,e)=>!this.selectedIndexes.includes(e)))[0],e=this.array.findIndex((e=>e===t));this.selectedIndexes.push(e),this.selectIndexes.push(e)}onSelectDropdown(t,e){this.onSelectItem(this.selectedIndexes[e]),this.onSelectItem(t)}availableAdd(){return!!this.array.filter(((t,e)=>!this.selectedIndexes.includes(e)))[0]}getFilteredArray(t){return this.mappedArray.filter((e=>e.value===t||!this.selectedIndexes.includes(e.value)))}isInSelectedIndex(t){return!!this.selectedIndexes.includes(t)}onSelectItem(t){this.multiple?this.selectedIndexes.includes(t)?(this.selectedIndexes.splice(this.selectedIndexes.indexOf(t),1),this.selectIndexes.splice(this.selectIndexes.indexOf(t),1)):(this.selectedIndexes.push(t),this.selectIndexes.push(t)):this.selectedIndexes.includes(t)?(this.selectedIndexes=[],this.selectIndexes=[]):(this.selectedIndexes=[t],this.selectIndexes=[t])}getArray(){let t=[];return this.selectedIndexes.forEach((e=>{t.push(this.array[e])})),t}selectAll(){this.selectedIndexes=[],this.selectIndexes=[],this.array.forEach(((t,e)=>{this.selectedIndexes.push(e),this.selectIndexes.push(e)}))}removeAll(){this.selectedIndexes=[],this.selectIndexes=[]}}DialogSelectArrayContent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogSelectArrayContent,deps:[{token:i1$4.NgbActiveModal},{token:i0.ChangeDetectorRef}],target:i0.ɵɵFactoryTarget.Component}),DialogSelectArrayContent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:DialogSelectArrayContent,selector:"ng-component",inputs:{title:"title",array:"array",multiple:"multiple",selectedIndexes:"selectedIndexes"},viewQueries:[{propertyName:"close",first:!0,predicate:["close"],descendants:!0},{propertyName:"allElements",first:!0,predicate:["allElements"],descendants:!0}],ngImport:i0,template:'\n\t\t<style>\n\t\t\tcollapse-table tr:hover {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\n\t\t\t.selected {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t}\n\n\t\t\tcollapse-table {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t</style>\n\t\t<div #allElements>\n\t\t\t<div class="modal-header">\n\t\t\t\t<h4 class="modal-title"><i class="fa fa-question-circle" style="color: blue; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>\n\t\t\t\t<button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()" #close>\n\t\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class="modal-body" style="height: 60vh;">\n\t\t\t\t<responsive-button-group>\n\t\t\t\t\t<ng-container *ngIf="multiple">\n\t\t\t\t\t\t<button type="button" class="btn btn-primary" (click)="selectAll()">Select All</button>\n\t\t\t\t\t\t<button type="button" class="btn btn-danger" (click)="removeAll()">Remove All</button>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', method === \'list\' ? \'btn-success\' : \'btn-warning\']" (click)="method = \'list\'">Use List</button>\n\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', method === \'dropdown\' ? \'btn-success\' : \'btn-warning\']" (click)="method = \'dropdown\'">Use Dropdown</button>\n\t\t\t\t</responsive-button-group>\n\t\t\t\t<div style="height: 50vh; overflow-y: auto; margin-top: 10px">\n\t\t\t\t\t<ng-container *ngIf="method === \'list\'">\n\t\t\t\t\t\t<collapse-table collapseSize="900">\n\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<th>List</th>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t<tr *ngFor="let data of array; let i = index" (click)="onSelectItem(i)" [ngClass]="{\'selected\' : isInSelectedIndex(i)}">\n\t\t\t\t\t\t\t\t\t<td>{{data}}</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t</collapse-table>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<ng-container *ngIf="method === \'dropdown\'">\n\t\t\t\t\t\t<collapse-table collapseSize="900">\n\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<th>Item</th>\n\t\t\t\t\t\t\t\t\t<th>Remove</th>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t<tr *ngFor="let item of selectIndexes; let i = index">\n\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t<ng-select placeholder="Select Item" [ngModel]="item" (change)="onSelectDropdown($event, i)">\n\t\t\t\t\t\t\t\t\t\t\t<ng-option *ngFor="let data of getFilteredArray(item)" [value]="data.value">{{data.text}}</ng-option>\n\t\t\t\t\t\t\t\t\t\t</ng-select>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t<button type="button" class="btn btn-danger" (click)="onSelectItem(item)">Remove</button>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t</collapse-table>\n\t\t\t\t\t\t<button type="button" class="btn btn-success" *ngIf="multiple || !selectIndexes.length" (click)="addDropDown()" [disabled]="!availableAdd()">Add</button>\n\t\t\t\t\t</ng-container>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="modal-footer">\n\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedIndexes.length ? \'btn-success\' : \'btn-danger\']" [disabled]="!selectedIndexes.length || this.selectedIndexes.includes(null)" (click)="_activeModal.close(this.multiple ? getArray() : array[selectedIndexes[0]])">Submit</button>\n\t\t\t\t<button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>\n\t\t\t</div>\n\t\t</div>\n\t',isInline:!0,styles:["\n\t\t\tcollapse-table tr:hover {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\n\t\t\t.selected {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t}\n\n\t\t\tcollapse-table {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t"],dependencies:[{kind:"directive",type:i2.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i2.NgModel,selector:"[ngModel]:not([formControlName]):not([formControl])",inputs:["name","disabled","ngModel","ngModelOptions"],outputs:["ngModelChange"],exportAs:["ngModel"]},{kind:"component",type:CollapseTableComponent,selector:"collapse-table",inputs:["collapseSize","tableFixed","headerFixed","secondaryColor","tertiaryColor"]},{kind:"component",type:ResponsiveButtonGroupComponent,selector:"responsive-button-group",inputs:["collapseSize"]},{kind:"component",type:i4$1.NgSelectComponent,selector:"ng-select",inputs:["bindLabel","bindValue","markFirst","placeholder","notFoundText","typeToSearchText","addTagText","loadingText","clearAllText","appearance","dropdownPosition","appendTo","loading","closeOnSelect","hideSelected","selectOnTab","openOnEnter","maxSelectedItems","groupBy","groupValue","bufferAmount","virtualScroll","selectableGroup","selectableGroupAsModel","searchFn","trackByFn","clearOnBackspace","labelForId","inputAttrs","tabIndex","readonly","searchWhileComposing","minTermLength","editableSearchTerm","keyDownFn","typeahead","multiple","addTag","searchable","clearable","isOpen","items","compareWith","clearSearchOnAdd"],outputs:["blur","focus","change","open","close","search","clear","add","remove","scroll","scrollToEnd"]},{kind:"component",type:i4$1.NgOptionComponent,selector:"ng-option",inputs:["value","disabled"]},{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]}],changeDetection:i0.ChangeDetectionStrategy.OnPush}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogSelectArrayContent,decorators:[{type:Component,args:[{template:'\n\t\t<style>\n\t\t\tcollapse-table tr:hover {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\n\t\t\t.selected {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t}\n\n\t\t\tcollapse-table {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t</style>\n\t\t<div #allElements>\n\t\t\t<div class="modal-header">\n\t\t\t\t<h4 class="modal-title"><i class="fa fa-question-circle" style="color: blue; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>\n\t\t\t\t<button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()" #close>\n\t\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class="modal-body" style="height: 60vh;">\n\t\t\t\t<responsive-button-group>\n\t\t\t\t\t<ng-container *ngIf="multiple">\n\t\t\t\t\t\t<button type="button" class="btn btn-primary" (click)="selectAll()">Select All</button>\n\t\t\t\t\t\t<button type="button" class="btn btn-danger" (click)="removeAll()">Remove All</button>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', method === \'list\' ? \'btn-success\' : \'btn-warning\']" (click)="method = \'list\'">Use List</button>\n\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', method === \'dropdown\' ? \'btn-success\' : \'btn-warning\']" (click)="method = \'dropdown\'">Use Dropdown</button>\n\t\t\t\t</responsive-button-group>\n\t\t\t\t<div style="height: 50vh; overflow-y: auto; margin-top: 10px">\n\t\t\t\t\t<ng-container *ngIf="method === \'list\'">\n\t\t\t\t\t\t<collapse-table collapseSize="900">\n\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<th>List</th>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t<tr *ngFor="let data of array; let i = index" (click)="onSelectItem(i)" [ngClass]="{\'selected\' : isInSelectedIndex(i)}">\n\t\t\t\t\t\t\t\t\t<td>{{data}}</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t</collapse-table>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<ng-container *ngIf="method === \'dropdown\'">\n\t\t\t\t\t\t<collapse-table collapseSize="900">\n\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<th>Item</th>\n\t\t\t\t\t\t\t\t\t<th>Remove</th>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t<tr *ngFor="let item of selectIndexes; let i = index">\n\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t<ng-select placeholder="Select Item" [ngModel]="item" (change)="onSelectDropdown($event, i)">\n\t\t\t\t\t\t\t\t\t\t\t<ng-option *ngFor="let data of getFilteredArray(item)" [value]="data.value">{{data.text}}</ng-option>\n\t\t\t\t\t\t\t\t\t\t</ng-select>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t<button type="button" class="btn btn-danger" (click)="onSelectItem(item)">Remove</button>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t</collapse-table>\n\t\t\t\t\t\t<button type="button" class="btn btn-success" *ngIf="multiple || !selectIndexes.length" (click)="addDropDown()" [disabled]="!availableAdd()">Add</button>\n\t\t\t\t\t</ng-container>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="modal-footer">\n\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedIndexes.length ? \'btn-success\' : \'btn-danger\']" [disabled]="!selectedIndexes.length || this.selectedIndexes.includes(null)" (click)="_activeModal.close(this.multiple ? getArray() : array[selectedIndexes[0]])">Submit</button>\n\t\t\t\t<button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>\n\t\t\t</div>\n\t\t</div>\n\t',changeDetection:ChangeDetectionStrategy.OnPush}]}],ctorParameters:function(){return[{type:i1$4.NgbActiveModal},{type:i0.ChangeDetectorRef}]},propDecorators:{title:[{type:Input}],array:[{type:Input}],multiple:[{type:Input}],selectedIndexes:[{type:Input}],close:[{type:ViewChild,args:["close",{static:!1}]}],allElements:[{type:ViewChild,args:["allElements",{static:!1}]}]}});class DialogService{constructor(t){this.modalService=t}openDialog(t,e={size:"lg",backdrop:"static"}){return this.modalService.open(t,e)}notify(t){const e=this.openDialog(DialogNotifyContent);e.componentInstance.title="Notify",e.componentInstance.body=t}input(t,e){const n=this.openDialog(DialogInputContent);return n.componentInstance.title=t,n.componentInstance.inputFields=e,n.result}error(t){const e=this.openDialog(DialogErrorContent);e.componentInstance.title="Error",e.componentInstance.body=t}confirm(t,e){const n=this.openDialog(DialogConfirmContent);return n.componentInstance.title="Confirm",n.componentInstance.body=t,n.componentInstance.html=e,n.result}selectDateTime(t,e=!0){const n=this.openDialog(DialogSelectDateTimeContent);return n.componentInstance.title="Select Date"+(e?" and Time":""),n.componentInstance.date=t,n.componentInstance.showTime=e,n.result}selectDataLabel(t,e=!0){const n=this.openDialog(DialogSelectDataLabelsContent,{size:"sm",backdrop:"static"});return n.componentInstance.title="Select Data Labels",n.componentInstance.data=t,n.componentInstance.showArraySubData=e,n.result}login(t,e=!0){const n=this.openDialog(DialogLoginContent);return n.componentInstance.msAllowed=t,n.componentInstance.showLoginText=e,n.result}register(){return this.openDialog(DialogRegisterContent).result}selectWithButtonsURL(t){const e=this.openDialog(DialogSelectWithButtonsURLContent);return e.componentInstance.url=t,e.result}selectWithArrayObjs(t,e,n=!1,o=!1){const r=this.openDialog(DialogSelectArrayObjsContent);return r.componentInstance.title=t,r.componentInstance.objects=e,r.componentInstance.multiple=n,r.componentInstance.allowNone=o,r.result}selectArray(t,e,n=!1,o=[]){const r=this.openDialog(DialogSelectArrayContent);return r.componentInstance.title=t,r.componentInstance.array=e,r.componentInstance.multiple=n,r.componentInstance.selectedIndexes=o,r.result}}DialogService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogService,deps:[{token:i1$4.NgbModal}],target:i0.ɵɵFactoryTarget.Injectable}),DialogService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogService}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogService,decorators:[{type:Injectable}],ctorParameters:function(){return[{type:i1$4.NgbModal}]}});class AuthService{constructor(t,e,n,o,r){this._ds=t,this._vs=e,this._alert=n,this._account=o,this._socket=r,this.environment=null,this.userHasPhoneNumber=!1}setupMSSingleSignOn(t){this.environment=t,"/auth365"===window.location.pathname&&window.location.hash&&window.location.hash.startsWith("#id_token=")&&(this.environment.MS_id_token=window.location.hash.replace("#","")),this.userAgentApplication=new UserAgentApplication({auth:{clientId:this.environment.MS_clientId,authority:this.environment.MS_authority,redirectUri:this.environment.MS_redirectUri,validateAuthority:!1,navigateToLoginRequestUrl:!1},framework:{isAngular:!0}})}setEnvironment(t){this.environment=t}setUserHasPhoneNumber(t){this.userHasPhoneNumber=t}registerUser(t,e=!0){return new Promise(((n,o)=>{let r=[{label:"User Name",form:"username",data:"",validators:[Validators.required],validatorErrors:["required"],validatorMsg:["Username is required"],required:!0},{label:"Full Name",form:"fullname",data:"",validators:[Validators.required],validatorErrors:["required"],validatorMsg:["Full name is required"],required:!0},{label:"Email",form:"email",data:"",validators:[Validators.required,this._vs.email],validatorErrors:["required","email"],validatorMsg:["Email is required","Email is invalid"],required:!0}];this.userHasPhoneNumber&&r.push({label:"Phone",form:"phonenumber",data:"",validators:[this._vs.phoneNumber],validatorErrors:["phoneNumber"],validatorMsg:["Phone number is invalid"],type:"text"}),this._ds.input("Register New User",r).then((r=>{let i={username:r.username.value.trim().toLowerCase(),email:r.email.value.trim().toLowerCase(),fullname:r.fullname.value.trim(),roles:{super_admin:!1,approvals:[],groups:[],notifications:[],miscs:[]},active:!0,readonly:!1,phonenumber:r.phonenumber?r.phonenumber.value:"",other:t,attempts:0,salt:"",hash:""};this._socket.call("createUserAndEmailEnrollment",i,e,((t,e)=>{t?o(t):n(e)}))}),(t=>o()))}))}editUser(t){let e=[{label:"User Name",form:"username",data:t.username,validators:[Validators.required],validatorErrors:["required"],validatorMsg:["Username is required"],required:!0},{label:"Full Name",form:"fullname",data:t.fullname,validators:[Validators.required],validatorErrors:["required"],validatorMsg:["Full name is required"],required:!0},{label:"Email",form:"email",data:t.email,validators:[Validators.required,this._vs.email],validatorErrors:["required","email"],validatorMsg:["Email is required","Email is invalid"],required:!0}];return this.userHasPhoneNumber&&e.push({label:"Phone",form:"phonenumber",data:t.phonenumber||"",validators:[this._vs.phoneNumber],validatorErrors:["phoneNumber"],validatorMsg:["Phone number is invalid"],type:"text"}),new Promise(((n,o)=>{this._ds.input("Edit User",e).then((e=>{e.phonenumber&&e.phonenumber.value?t.phonenumber=e.phonenumber.value:t.phonenumber="",t.email=e.email.value.trim(),this._socket.call("editUser",t._id,e.username.value.trim().toLowerCase(),e.fullname.value.trim(),e.email.value.trim().toLowerCase(),t.phonenumber,((r,i)=>{if(r)this._socket.call("insertErrorLog","AuthService - edituser",[t,r]),o(r);else{let t={username:e.username.value.trim(),fullname:e.fullname.value.trim(),email:e.email.value.trim()};this._alert.setAlert("success","User has been edited"),n(t)}}))}),(t=>{n(!0)}))}))}loginUser(){return new Promise(((t,e)=>{this.loginModal().then((n=>{"MS"===n.type?this.microsoftSignOn():n.form.value.forgotPassword?this._account.resetUserPassword(n.form.value.username):this._account.logIn(n.form.value.username,n.form.value.password).then((e=>{t(e)}),(t=>e("Invalid login")))}),(t=>e()))}))}microsoftSignOn(){this.userAgentApplication.loginRedirect(["user.read","mail.send"])}loginModal(){return this._ds.login(!(!this.environment||!this.environment.MS_ALLOWED),!this.environment||!this.environment.HIDE_LOGIN_TEXT)}removeUser(t){return new Promise(((e,n)=>{this._socket.call("removeDocument","users",t,((o,r)=>{o?(this._ds.error("Could not remove user"),this._socket.call("insertErrorLog","AuthService - removeUser",[t,o]),n(o)):e(!0)}))}))}}AuthService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AuthService,deps:[{token:DialogService},{token:ValidationService},{token:AlertService},{token:AccountManagerService},{token:SocketManagerService}],target:i0.ɵɵFactoryTarget.Injectable}),AuthService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AuthService}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AuthService,decorators:[{type:Injectable}],ctorParameters:function(){return[{type:DialogService},{type:ValidationService},{type:AlertService},{type:AccountManagerService},{type:SocketManagerService}]}});class AuthPermissionService{constructor(){this.modules=[]}registerModule(t){this.modules.push(t),this.modules.sort(((t,e)=>{let n=t.name,o=e.name;return n<o?-1:n>o?1:0}))}getAllModulePermissions(){return this.modules}}AuthPermissionService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AuthPermissionService,deps:[],target:i0.ɵɵFactoryTarget.Injectable}),AuthPermissionService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AuthPermissionService}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AuthPermissionService,decorators:[{type:Injectable}],ctorParameters:function(){return[]}});class ScrollDirective{constructor(){this.onScroll=new EventEmitter,this.bottomOffset=100,this.topOffset=100}scrolled(t){this.elementScrollEvent(t)}windowScrolled(t){this.windowScrollEvent(t)}windowScrollEvent(t){const e=t.target,n=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,o=n<this.topOffset,r={isReachingBottom:e.body.offsetHeight-(window.innerHeight+n)<this.bottomOffset,isReachingTop:o,originalEvent:t,isWindowEvent:!0};this.onScroll.emit(r)}elementScrollEvent(t){const e=t.target,n=e.scrollHeight-e.scrollTop,o=e.offsetHeight,r=e.scrollTop<this.topOffset,i={isReachingBottom:n-o<this.bottomOffset,isReachingTop:r,originalEvent:t,isWindowEvent:!1};this.onScroll.emit(i)}}ScrollDirective.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ScrollDirective,deps:[],target:i0.ɵɵFactoryTarget.Directive}),ScrollDirective.ɵdir=i0.ɵɵngDeclareDirective({minVersion:"14.0.0",version:"15.2.10",type:ScrollDirective,selector:"[detect-scroll]",inputs:{bottomOffset:"bottomOffset",topOffset:"topOffset"},outputs:{onScroll:"onScroll"},host:{listeners:{scroll:"scrolled($event)","window:scroll":"windowScrolled($event)"}},ngImport:i0}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ScrollDirective,decorators:[{type:Directive,args:[{selector:"[detect-scroll]"}]}],ctorParameters:function(){return[]},propDecorators:{onScroll:[{type:Output}],bottomOffset:[{type:Input}],topOffset:[{type:Input}],scrolled:[{type:HostListener,args:["scroll",["$event"]]}],windowScrolled:[{type:HostListener,args:["window:scroll",["$event"]]}]}});class NavbarMainComponent extends BaseComponent{constructor(t,e,n,o){super(t),this._services=t,this.auth=e,this._ds=n,this._app=o,this.logo="",this.navTabs=[],this.fontSize=12,this.publicProgram=!1,this.digitalSign=!1,this.user=null,this.collapseShowing=!1,this.client="",this.isResolveIO=!1,this.standardProgram=!1,this.tourStarted=!1,this.scrollRightInterval=null,this.scrollLeftInterval=null,this.isDemo=!1}ngOnInit(){this._services._account.user.subscribe((t=>{this.user=t})),this.client=this._app.client.getValue(),this.standardProgram=this._app.standardProgram.getValue(),this.tourStarted=this._services._app.tourStarted.getValue(),this.client||(this.isResolveIO=!0),this._services._app.tourStarted.subscribe((t=>{this.tourStarted=t})),this._services._app.isDemo.subscribe((t=>{this.isDemo=t}))}ngAfterViewInit(){setInterval((()=>{this.calculateDropdownsLeft()}),500),document.documentElement.style.setProperty("--font-size",this.fontSize+"px")}async logout(){this._app.isLoggingOut.next(!0),await this._services._account.logOut(),this._app.isLoggingOut.next(!1)}login(){this.auth.loginUser().then((()=>{}),(t=>{}))}hasScrolled(){return this.scrollable.nativeElement.scrollLeft<=0&&this.stopScrollRight(),this.scrollable.nativeElement.scrollLeft>0}hasMoreScroll(){return this.scrollable.nativeElement.scrollWidth<=this.scrollable.nativeElement.clientWidth+this.scrollable.nativeElement.scrollLeft&&this.stopScrollLeft(),this.scrollable.nativeElement.scrollWidth>this.scrollable.nativeElement.clientWidth+this.scrollable.nativeElement.scrollLeft}startScrollRight(){this.scrollRightInterval=setInterval((()=>{this.scrollable.nativeElement.scrollLeft-=2}),1)}stopScrollRight(){clearInterval(this.scrollRightInterval)}scrollRightOnce(){this.scrollable.nativeElement.scrollLeft-=50}startScrollLeft(){this.scrollLeftInterval=setInterval((()=>{this.scrollable.nativeElement.scrollLeft+=2}),1)}stopScrollLeft(){clearInterval(this.scrollLeftInterval)}scrollLeftOnce(){this.scrollable.nativeElement.scrollLeft+=50}calculateDropdownsLeft(){return!!(this.dropdowns&&this.dropdowns.toArray()&&this.dropdowns.toArray().length&&this.scrollable)&&(this.navTabs.filter((t=>"dropdown"===t.type)).forEach((t=>{let e=this.dropdowns.toArray().filter((e=>e.nativeElement.innerText.split("\n")[0].replace(/[^A-Za-z0-9]/g,"")===t.label.replace(/[^A-Za-z0-9]/g,"")))[0];t.left=e?Math.max(e.nativeElement.offsetLeft-this.scrollable.nativeElement.scrollLeft,this.scrollable.nativeElement.offsetLeft):0})),!0)}isInRole(t){if(!t)return!0;if(this.isSuperAdmin())return!0;if(this.user&&this.user.roles.groups)for(let e=0;e<this.user.roles.groups.length;e++){let n=this.user.roles.groups[e];for(let e=0;e<n.views.length;e++){let o=n.views[e];if(o===t||o.startsWith(t+"/"))return!0}}return!1}isSuperAdmin(){return!(!this.user||!this.user.roles)&&this.user.roles.super_admin}isInOneRole(t){if(this.isSuperAdmin())return!0;for(let e=0;e<t.length;e++){let n=t[e];if(!n)return!0;if(this._services._account.isUserInView(n))return!0}return!1}navigateTo(t){this._services._router.navigateByUrl(t)}help(){this._ds.input("What do you need help with?",[{label:"Title of Problem",form:"problem_title",data:"",validators:[Validators.required],validatorErrors:["required"],validatorMsg:["Problem title is required."],required:!0},{label:"Description of Problem",form:"problem_desc",data:"",validators:[Validators.required],validatorErrors:["required"],validatorMsg:["Problem description is required."],required:!0,type:"textarea"}]).then((t=>{this._services._socket.call("getHelpNotification",this._services._account.getUser().fullname,t.problem_title.value,t.problem_desc.value)}),(()=>{}))}isCustomer(){return!(!this._services._account.getUser().other.customers||!this._services._account.getUser().other.customers.length)}getWindowWidth(){return window.innerWidth}}NavbarMainComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:NavbarMainComponent,deps:[{token:ProviderService},{token:AuthService},{token:DialogService},{token:CoreService}],target:i0.ɵɵFactoryTarget.Component}),NavbarMainComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:NavbarMainComponent,selector:"navbar-main",inputs:{logo:"logo",navTabs:"navTabs",fontSize:"fontSize",publicProgram:"publicProgram",digitalSign:"digitalSign"},providers:[ProviderService],viewQueries:[{propertyName:"scrollable",first:!0,predicate:["scrollable"],descendants:!0,static:!0},{propertyName:"dropdowns",predicate:["dropdowns"],descendants:!0}],usesInheritance:!0,ngImport:i0,template:'<style>\n\t:root {\n --font-size: 12;\n }\n\n\t:host /deep/ * {\n\t\tfont-size: var(--font-size);\n\t}\n\n @media (max-width: 1200px) {\n .navbarMain a {\n font-size: 18px !important;\n }\n }\n @media (min-width: 1200px) {\n .scrollable-x {\n max-width: 60vw;\n overflow-x: auto;\n overflow-y: visible;\n align-items: center;\n }\n\n ::-webkit-scrollbar {\n display: none;\n }\n\n .verticalAlign {\n display: flex;\n align-items: center;\n }\n\n .dropdown {\n position: static;\n }\n }\n\n .navbar li {\n cursor: pointer;\n text-align: center;\n }\n\n .navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n color: gray;\n }\n</style>\n\n<div class="row">\n <nav class="navbar navbar-expand-xl navbar-dark bg-dark navbarMain" style="width: 100%">\n <a class="navbar-brand" href="#">\n <img [src]="logo" style="width: auto; height: 36px;" *ngIf="!isDemo">\n </a>\n <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarMainNav" aria-controls="navbarMainNav" aria-expanded="false" aria-label="Toggle navigation">\n <span class="navbar-toggler-icon"></span>\n </button>\n <div class="navbar-collapse collapse" id="navbarMainNav">\n <ul class="navbar-nav">\n <li class="nav-item" data-toggle="collapse" data-target="#navbarMainNav" *ngIf="!standardProgram && !digitalSign" [style.border-right]="getWindowWidth() > 1200 ? \'1px solid white\' : \'\'">\n <a class="nav-link" routerLink="home" [class.disabled]="tourStarted ? true : null" routerLinkActive="active">Home</a>\n </li>\n </ul>\n <div *ngIf="hasScrolled()" (mouseover)="startScrollRight()" (mouseout)="stopScrollRight()" (click)="scrollRightOnce()">\n <i class="fa fa-arrow-left" style="color: white; font-size: 20px"></i>\n </div>\n <ul [ngClass]="[\'navbar-nav\', \'scrollable-x\']" #scrollable detect-scroll (onScroll)="calculateDropdownsLeft()">\n <ng-container *ngFor="let tab of navTabs; let i = index;">\n <ng-container *ngIf="tab.type === \'link\'">\n <li class="nav-item" *ngIf="(publicProgram || user) && !digitalSign && isInRole(tab.links[0].role)" data-toggle="collapse" [tourAnchor]="tab.tourAnchor" data-target="#navbarMainNav">\n <a class="nav-link" [class.disabled]="tourStarted ? true : null" [routerLink]="tab.links[0].routerLink" routerLinkActive="active">{{tab.links[0].label}}</a>\n </li>\n </ng-container>\n <ng-container *ngIf="tab.type === \'dropdown\'">\n <li #dropdowns class="nav-item dropdown" *ngIf="(publicProgram || user) && isInOneRole(tab.roles)">\n <a class="nav-link dropdown-toggle" [class.disabled]="tourStarted ? true : null" id="navbarDropdownAsset" role="button" [tourAnchor]="tab.tourAnchor" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">\n {{tab.label}}\n </a>\n <div class="dropdown-menu bg-dark" aria-labelledby="navbarDropdownAsset" data-toggle="collapse" data-target="#navbarMainNav" [style.left.px]="tab.left || 0">\n <ng-container *ngFor="let link of tab.links">\n <a class="dropdown-item nav-link" *ngIf="(publicProgram || user) && isInRole(link.role)" [routerLink]="link.routerLink">{{link.label}}</a>\n </ng-container>\n </div>\n </li>\n </ng-container>\n </ng-container>\n </ul>\n <div *ngIf="hasMoreScroll()" (mouseover)="startScrollLeft()" (mouseout)="stopScrollLeft()" (click)="scrollLeftOnce()">\n <i class="fa fa-arrow-right" style="color: white; font-size: 20px"></i>\n </div>\n <hr />\n <ul [ngClass]="[\'navbar-nav\', getWindowWidth() > 1200 ? \'float-lg-right\' : \'\']">\n \x3c!-- <li class="nav-item" *ngIf="user" data-toggle="collapse" data-target="#navbarMainNav" [style.border-left]="getWindowWidth() > 1200 ? \'1px solid white\' : \'\'" style="height: 30px;">\n <a class="nav-link" [class.disabled]="tourStarted ? true : null" (click)="print()" style="cursor: pointer;"><i style="font-size:20px; color: white;" class="fa fa-print" aria-hidden="true"></i></a>\n </li> --\x3e\n <li class="nav-item" *ngIf="user && client" data-toggle="collapse" data-target="#navbarMainNav" style="height: 30px;" tourAnchor="supportSection">\n <a class="nav-link" [class.disabled]="tourStarted ? true : null" routerLink="support-ticket" routerLinkActive="active">Support</a>\n </li>\n <li class="nav-item" *ngIf="user && isInRole(\'super-admin\')" data-toggle="collapse" data-target="#navbarMainNav">\n <a class="nav-link" routerLink="logs" routerLinkActive="active">Logs</a>\n </li>\n <li class="nav-item" *ngIf="user && isInRole(\'super-admin\')" data-toggle="collapse" data-target="#navbarMainNav">\n <a class="nav-link" routerLink="super-admin" routerLinkActive="active">Super Admin</a>\n </li>\n </ul>\n <hr />\n <ul [ngClass]="[\'navbar-nav\', getWindowWidth() > 1200 ? \'float-lg-right\' : \'\']" *ngIf="!publicProgram">\n <li class="nav-item" *ngIf="!user" data-toggle="collapse" data-target="#navbarMainNav">\n <a class="nav-link" (click)="login()" style="cursor: pointer;" routerLinkActive="active">Login</a>\n </li>\n <li class="nav-item" *ngIf="user" tourAnchor="userSettings">\n <a class="nav-link" [class.disabled]="tourStarted ? true : null" routerLink="user-settings">Hello {{user.fullname}}!</a>\n </li>\n <li class="nav-item" *ngIf="user" style="cursor: pointer" (click)="logout()" data-toggle="collapse" data-target="#navbarMainNav">\n <a class="nav-link" [class.disabled]="tourStarted ? true : null">Logout</a>\n <li>\n </ul>\n </div>\n </nav>\n</div>',styles:["\n\t:root {\n --font-size: 12;\n }\n\n\t:host /deep/ * {\n\t\tfont-size: var(--font-size);\n\t}\n\n @media (max-width: 1200px) {\n .navbarMain a {\n font-size: 18px !important;\n }\n }\n @media (min-width: 1200px) {\n .scrollable-x {\n max-width: 60vw;\n overflow-x: auto;\n overflow-y: visible;\n align-items: center;\n }\n\n ::-webkit-scrollbar {\n display: none;\n }\n\n .verticalAlign {\n display: flex;\n align-items: center;\n }\n\n .dropdown {\n position: static;\n }\n }\n\n .navbar li {\n cursor: pointer;\n text-align: center;\n }\n\n .navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n color: gray;\n }\n"],dependencies:[{kind:"directive",type:i1$3.RouterLink,selector:"[routerLink]",inputs:["target","queryParams","fragment","queryParamsHandling","state","relativeTo","preserveFragment","skipLocationChange","replaceUrl","routerLink"]},{kind:"directive",type:i1$3.RouterLinkActive,selector:"[routerLinkActive]",inputs:["routerLinkActiveOptions","ariaCurrentWhenActive","routerLinkActive"],outputs:["isActiveChange"],exportAs:["routerLinkActive"]},{kind:"directive",type:i1$4.NgbNavbar,selector:".navbar"},{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"directive",type:ScrollDirective,selector:"[detect-scroll]",inputs:["bottomOffset","topOffset"],outputs:["onScroll"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:NavbarMainComponent,decorators:[{type:Component,args:[{selector:"navbar-main",providers:[ProviderService],template:'<style>\n\t:root {\n --font-size: 12;\n }\n\n\t:host /deep/ * {\n\t\tfont-size: var(--font-size);\n\t}\n\n @media (max-width: 1200px) {\n .navbarMain a {\n font-size: 18px !important;\n }\n }\n @media (min-width: 1200px) {\n .scrollable-x {\n max-width: 60vw;\n overflow-x: auto;\n overflow-y: visible;\n align-items: center;\n }\n\n ::-webkit-scrollbar {\n display: none;\n }\n\n .verticalAlign {\n display: flex;\n align-items: center;\n }\n\n .dropdown {\n position: static;\n }\n }\n\n .navbar li {\n cursor: pointer;\n text-align: center;\n }\n\n .navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n color: gray;\n }\n</style>\n\n<div class="row">\n <nav class="navbar navbar-expand-xl navbar-dark bg-dark navbarMain" style="width: 100%">\n <a class="navbar-brand" href="#">\n <img [src]="logo" style="width: auto; height: 36px;" *ngIf="!isDemo">\n </a>\n <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarMainNav" aria-controls="navbarMainNav" aria-expanded="false" aria-label="Toggle navigation">\n <span class="navbar-toggler-icon"></span>\n </button>\n <div class="navbar-collapse collapse" id="navbarMainNav">\n <ul class="navbar-nav">\n <li class="nav-item" data-toggle="collapse" data-target="#navbarMainNav" *ngIf="!standardProgram && !digitalSign" [style.border-right]="getWindowWidth() > 1200 ? \'1px solid white\' : \'\'">\n <a class="nav-link" routerLink="home" [class.disabled]="tourStarted ? true : null" routerLinkActive="active">Home</a>\n </li>\n </ul>\n <div *ngIf="hasScrolled()" (mouseover)="startScrollRight()" (mouseout)="stopScrollRight()" (click)="scrollRightOnce()">\n <i class="fa fa-arrow-left" style="color: white; font-size: 20px"></i>\n </div>\n <ul [ngClass]="[\'navbar-nav\', \'scrollable-x\']" #scrollable detect-scroll (onScroll)="calculateDropdownsLeft()">\n <ng-container *ngFor="let tab of navTabs; let i = index;">\n <ng-container *ngIf="tab.type === \'link\'">\n <li class="nav-item" *ngIf="(publicProgram || user) && !digitalSign && isInRole(tab.links[0].role)" data-toggle="collapse" [tourAnchor]="tab.tourAnchor" data-target="#navbarMainNav">\n <a class="nav-link" [class.disabled]="tourStarted ? true : null" [routerLink]="tab.links[0].routerLink" routerLinkActive="active">{{tab.links[0].label}}</a>\n </li>\n </ng-container>\n <ng-container *ngIf="tab.type === \'dropdown\'">\n <li #dropdowns class="nav-item dropdown" *ngIf="(publicProgram || user) && isInOneRole(tab.roles)">\n <a class="nav-link dropdown-toggle" [class.disabled]="tourStarted ? true : null" id="navbarDropdownAsset" role="button" [tourAnchor]="tab.tourAnchor" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">\n {{tab.label}}\n </a>\n <div class="dropdown-menu bg-dark" aria-labelledby="navbarDropdownAsset" data-toggle="collapse" data-target="#navbarMainNav" [style.left.px]="tab.left || 0">\n <ng-container *ngFor="let link of tab.links">\n <a class="dropdown-item nav-link" *ngIf="(publicProgram || user) && isInRole(link.role)" [routerLink]="link.routerLink">{{link.label}}</a>\n </ng-container>\n </div>\n </li>\n </ng-container>\n </ng-container>\n </ul>\n <div *ngIf="hasMoreScroll()" (mouseover)="startScrollLeft()" (mouseout)="stopScrollLeft()" (click)="scrollLeftOnce()">\n <i class="fa fa-arrow-right" style="color: white; font-size: 20px"></i>\n </div>\n <hr />\n <ul [ngClass]="[\'navbar-nav\', getWindowWidth() > 1200 ? \'float-lg-right\' : \'\']">\n \x3c!-- <li class="nav-item" *ngIf="user" data-toggle="collapse" data-target="#navbarMainNav" [style.border-left]="getWindowWidth() > 1200 ? \'1px solid white\' : \'\'" style="height: 30px;">\n <a class="nav-link" [class.disabled]="tourStarted ? true : null" (click)="print()" style="cursor: pointer;"><i style="font-size:20px; color: white;" class="fa fa-print" aria-hidden="true"></i></a>\n </li> --\x3e\n <li class="nav-item" *ngIf="user && client" data-toggle="collapse" data-target="#navbarMainNav" style="height: 30px;" tourAnchor="supportSection">\n <a class="nav-link" [class.disabled]="tourStarted ? true : null" routerLink="support-ticket" routerLinkActive="active">Support</a>\n </li>\n <li class="nav-item" *ngIf="user && isInRole(\'super-admin\')" data-toggle="collapse" data-target="#navbarMainNav">\n <a class="nav-link" routerLink="logs" routerLinkActive="active">Logs</a>\n </li>\n <li class="nav-item" *ngIf="user && isInRole(\'super-admin\')" data-toggle="collapse" data-target="#navbarMainNav">\n <a class="nav-link" routerLink="super-admin" routerLinkActive="active">Super Admin</a>\n </li>\n </ul>\n <hr />\n <ul [ngClass]="[\'navbar-nav\', getWindowWidth() > 1200 ? \'float-lg-right\' : \'\']" *ngIf="!publicProgram">\n <li class="nav-item" *ngIf="!user" data-toggle="collapse" data-target="#navbarMainNav">\n <a class="nav-link" (click)="login()" style="cursor: pointer;" routerLinkActive="active">Login</a>\n </li>\n <li class="nav-item" *ngIf="user" tourAnchor="userSettings">\n <a class="nav-link" [class.disabled]="tourStarted ? true : null" routerLink="user-settings">Hello {{user.fullname}}!</a>\n </li>\n <li class="nav-item" *ngIf="user" style="cursor: pointer" (click)="logout()" data-toggle="collapse" data-target="#navbarMainNav">\n <a class="nav-link" [class.disabled]="tourStarted ? true : null">Logout</a>\n <li>\n </ul>\n </div>\n </nav>\n</div>'}]}],ctorParameters:function(){return[{type:ProviderService},{type:AuthService},{type:DialogService},{type:CoreService}]},propDecorators:{dropdowns:[{type:ViewChildren,args:["dropdowns"]}],scrollable:[{type:ViewChild,args:["scrollable",{static:!0}]}],logo:[{type:Input,args:["logo"]}],navTabs:[{type:Input,args:["navTabs"]}],fontSize:[{type:Input,args:["fontSize"]}],publicProgram:[{type:Input,args:["publicProgram"]}],digitalSign:[{type:Input,args:["digitalSign"]}]}});class FilterEqualPipe{transform(t,e,n){return t?t.filter((t=>t[e]===n)):[]}}FilterEqualPipe.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:FilterEqualPipe,deps:[],target:i0.ɵɵFactoryTarget.Pipe}),FilterEqualPipe.ɵpipe=i0.ɵɵngDeclarePipe({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:FilterEqualPipe,name:"filterEqual",pure:!1}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:FilterEqualPipe,decorators:[{type:Pipe,args:[{name:"filterEqual",pure:!1}]}]});class FilterNotEqualPipe{transform(t,e,n){return t?t.filter((t=>t[e]!==n)):[]}}FilterNotEqualPipe.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:FilterNotEqualPipe,deps:[],target:i0.ɵɵFactoryTarget.Pipe}),FilterNotEqualPipe.ɵpipe=i0.ɵɵngDeclarePipe({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:FilterNotEqualPipe,name:"filterNotEqual"}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:FilterNotEqualPipe,decorators:[{type:Pipe,args:[{name:"filterNotEqual"}]}]});class NavbarModuleComponent extends BaseComponent{constructor(t,e){super(e),this._cdRef=t,this._services=e,this.menuData={title:"",module:null,description:null,description_name:"Description",tabs:[]},this.selectedTab=null,this.currentRoute="",this.routerEvents$=[],this.tourStarted=!1}ngOnInit(){this.tourStarted=this._services._app.tourStarted.getValue(),this.routerEvents$.push(this._services._router.events.subscribe((t=>{this._services._router.url.replace(/\/[a-f0-9]{24}$/,"").replace(/\?.+$/,"")===this.currentRoute&&this.selectedTab||this.selectTabFromRouter()}))),this.routerEvents$.push(this._services._app.navbarModuleData.subscribe((t=>{this.menuData=t,this._services._router.url.replace(/\/[a-f0-9]{24}$/,"").replace(/\?.+$/,"")===this.currentRoute&&this.selectedTab||this.selectTabFromRouter()}))),this.routerEvents$.push(this._services._app.tourStarted.subscribe((t=>{this.tourStarted=t})))}ngOnDestroy(){this.routerEvents$.forEach((t=>{t.unsubscribe()}))}selectTabFromRouter(){if(this.menuData)if("/"===this._services._router.url)this.selectedTab=this.menuData.tabs[0];else{for(this.currentRoute=this._services._router.url.replace(/\/[a-f0-9]{24}$/,"").replace(/\?.+$/,""),this.selectedTab=null;!this.selectedTab&&this.currentRoute.split("/").length>2;){for(let t=0;t<this.menuData.tabs.length;t++){let e=this.menuData.tabs[t];if(e.link===this.currentRoute){this.selectedTab=e;break}}this.currentRoute=this.currentRoute.replace(/(\/[^\/]+$)/,"")}this.selectedTab||(this.selectedTab=this.menuData.tabs[0])}}tabClass(t){return this.selectedTab&&this.selectedTab.label===t.label?"active":""}navigateTo(t){this.selectedTab!==t&&(this.selectedTab=t,null===t.params?this._services._router.navigateByUrl(t.link):this._services._router.navigateByUrl(t.link+"/"+t.params))}}NavbarModuleComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:NavbarModuleComponent,deps:[{token:i0.ChangeDetectorRef},{token:ProviderService}],target:i0.ɵɵFactoryTarget.Component}),NavbarModuleComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:NavbarModuleComponent,selector:"navbar-module",inputs:{sideNavHeight:"sideNavHeight",sideNavWidth:"sideNavWidth"},providers:[ProviderService],usesInheritance:!0,ngImport:i0,template:'<style>\n .navbarModule li {\n cursor: pointer;\n }\n .navbarModule li.active {\n border-left: 3px solid #d19b3d;\n }\n .navbarModule nav {\n width: 100%;\n }\n\n @media (min-width: 1200px) {\n .navbarModule {\n height: 95vh;\n margin-left: -10px;\n }\n\n hr {\n border-top: white 1px solid;\n }\n }\n\n @media (max-width: 1200px) {\n hr {\n display: none;\n }\n\n .navbarModule a {\n font-size: 18px !important;\n }\n }\n\n \n</style> \n\n<div style="margin-left: -15px; margin-right: -15px;">\n <nav class="navbar navbar-expand-xl navbar-dark bg-dark flex-xl-column navbarModule" [style.height]="sideNavHeight ? sideNavHeight + \'px\' : \'\'" [style.width]="sideNavWidth ? sideNavWidth : \'\'">\n <div href="#" style="color: white; font-size: 16px;">\n {{ menuData.title }}\n </div>\n <button class="navbar-toggler" type="button" aria-controls="#navbarModuleNav" data-target="#navbarModuleNav" data-toggle="collapse" aria-expanded="false" aria-label="Toggle navigation">\n <span class="navbar-toggler-icon"></span>\n </button>\n <div class="navbar-collapse collapse" id="navbarModuleNav" style="align-items:baseline; width: 100%; overflow-y: auto; overflow-x: hidden;">\n <ul class="navbar-nav" style="display: block; float: left; width: 100%;">\n <div *ngFor="let tab of (menuData.tabs | filterNotEqual : \'params\' : \'0\'); let i = index">\n <div *ngIf="tab.params !== null && menuData.tabs[i - 1] && menuData.tabs[i - 1].params === null">\n <hr>\n <div href="#" style="color: white; font-size: 16px;">\n Selected {{ menuData.module }}\n </div>\n <hr>\n <div style="color:white; margin-left: 5px; text-decoration: underline; font-size: 14px">{{menuData.description_name}}:</div>\n <div style="color:white; margin-left: 8px; font-size: 12px">{{menuData.description}}</div>\n <br />\n </div>\n <li [ngClass]="[\'nav-item\', tabClass(tab)]"data-toggle="collapse" data-target="#navbarModuleNav" [tourAnchor]="tab.tourAnchor">\n <a class="nav-link" [class.disabled]="tourStarted ? true : null" [routerLink]="[tab.params ? tab.link + \'/\' + tab.params : tab.link]" routerLinkActive="active">{{ tab.label }}</a>\n </li>\n </div>\n </ul>\n </div>\n </nav>\n</div>\n',styles:["\n .navbarModule li {\n cursor: pointer;\n }\n .navbarModule li.active {\n border-left: 3px solid #d19b3d;\n }\n .navbarModule nav {\n width: 100%;\n }\n\n @media (min-width: 1200px) {\n .navbarModule {\n height: 95vh;\n margin-left: -10px;\n }\n\n hr {\n border-top: white 1px solid;\n }\n }\n\n @media (max-width: 1200px) {\n hr {\n display: none;\n }\n\n .navbarModule a {\n font-size: 18px !important;\n }\n }\n\n \n"],dependencies:[{kind:"directive",type:i1$3.RouterLink,selector:"[routerLink]",inputs:["target","queryParams","fragment","queryParamsHandling","state","relativeTo","preserveFragment","skipLocationChange","replaceUrl","routerLink"]},{kind:"directive",type:i1$3.RouterLinkActive,selector:"[routerLinkActive]",inputs:["routerLinkActiveOptions","ariaCurrentWhenActive","routerLinkActive"],outputs:["isActiveChange"],exportAs:["routerLinkActive"]},{kind:"directive",type:i1$4.NgbNavbar,selector:".navbar"},{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"pipe",type:FilterNotEqualPipe,name:"filterNotEqual"}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:NavbarModuleComponent,decorators:[{type:Component,args:[{providers:[ProviderService],selector:"navbar-module",template:'<style>\n .navbarModule li {\n cursor: pointer;\n }\n .navbarModule li.active {\n border-left: 3px solid #d19b3d;\n }\n .navbarModule nav {\n width: 100%;\n }\n\n @media (min-width: 1200px) {\n .navbarModule {\n height: 95vh;\n margin-left: -10px;\n }\n\n hr {\n border-top: white 1px solid;\n }\n }\n\n @media (max-width: 1200px) {\n hr {\n display: none;\n }\n\n .navbarModule a {\n font-size: 18px !important;\n }\n }\n\n \n</style> \n\n<div style="margin-left: -15px; margin-right: -15px;">\n <nav class="navbar navbar-expand-xl navbar-dark bg-dark flex-xl-column navbarModule" [style.height]="sideNavHeight ? sideNavHeight + \'px\' : \'\'" [style.width]="sideNavWidth ? sideNavWidth : \'\'">\n <div href="#" style="color: white; font-size: 16px;">\n {{ menuData.title }}\n </div>\n <button class="navbar-toggler" type="button" aria-controls="#navbarModuleNav" data-target="#navbarModuleNav" data-toggle="collapse" aria-expanded="false" aria-label="Toggle navigation">\n <span class="navbar-toggler-icon"></span>\n </button>\n <div class="navbar-collapse collapse" id="navbarModuleNav" style="align-items:baseline; width: 100%; overflow-y: auto; overflow-x: hidden;">\n <ul class="navbar-nav" style="display: block; float: left; width: 100%;">\n <div *ngFor="let tab of (menuData.tabs | filterNotEqual : \'params\' : \'0\'); let i = index">\n <div *ngIf="tab.params !== null && menuData.tabs[i - 1] && menuData.tabs[i - 1].params === null">\n <hr>\n <div href="#" style="color: white; font-size: 16px;">\n Selected {{ menuData.module }}\n </div>\n <hr>\n <div style="color:white; margin-left: 5px; text-decoration: underline; font-size: 14px">{{menuData.description_name}}:</div>\n <div style="color:white; margin-left: 8px; font-size: 12px">{{menuData.description}}</div>\n <br />\n </div>\n <li [ngClass]="[\'nav-item\', tabClass(tab)]"data-toggle="collapse" data-target="#navbarModuleNav" [tourAnchor]="tab.tourAnchor">\n <a class="nav-link" [class.disabled]="tourStarted ? true : null" [routerLink]="[tab.params ? tab.link + \'/\' + tab.params : tab.link]" routerLinkActive="active">{{ tab.label }}</a>\n </li>\n </div>\n </ul>\n </div>\n </nav>\n</div>\n'}]}],ctorParameters:function(){return[{type:i0.ChangeDetectorRef},{type:ProviderService}]},propDecorators:{sideNavHeight:[{type:Input}],sideNavWidth:[{type:Input}]}});class CoreComponent extends BaseComponent{constructor(t,e,n,o,r,i,a,s){super(o),this._deviceDet=t,this._ds=e,this._resizeService=n,this._services=o,this._offline=r,this._storage=i,this._auth=a,this._aps=s,this.logo="",this.navTabs="",this.userHasPhoneNumber=!1,this.client="",this.showNavbarModule=!0,this.publicProgram=!1,this.year=(new Date).getFullYear().toString(),this.fullScreen=!1,this.windowSizeHeight=window.innerHeight,this.windowSizeWidth=window.innerWidth,this.navbarMainHeight=0,this.statusHeight=0,this.connectedHeight=0,this.isDevice=!1,this.showNavigationMenu=!1,this.swFlagAlert=null,this.isConnected=!1,this.isConnecting=!1,this.collapsableMenu=!0,this.fontSize=12,this.openedWindow=!1,this.isOffline=!1,this.foundUpdate=!1,this.orientation="portrait",this.digitalSign=!1}ngOnInit(){this._services._app.setEnvironment(this.environment),this._offline.initStorage(this.environment.OFFLINE_DB_SECRET_KEY),this._services._app.setClient(this.client),this._services._app.setNavTabs(this.navTabs),this._services._account.initLoginManager(this.environment),this.environment&&this.environment.MS_ALLOWED?this._auth.setupMSSingleSignOn(this.environment):this.environment&&this._auth.setEnvironment(this.environment),this._auth.setUserHasPhoneNumber(this.userHasPhoneNumber),this._resizeService.onResize$.subscribe((t=>{setTimeout((()=>{this.windowSizeHeight=t.innerHeight,this.windowSizeWidth=t.innerWidth}),100)})),this._services._app.fullScreen.subscribe((t=>{this.fullScreen=t})),this._services._account.user.subscribe((t=>{t&&t.settings?(this.collapsableMenu=t.settings.collapsable_menu,this.fontSize=t.settings.font_size,document.documentElement.style.setProperty("--warning-color",t.settings.warning_color),document.documentElement.style.setProperty("--warning-font-color",t.settings.warning_font_color),document.documentElement.style.setProperty("--warning-shadow-color","0 0 0 0.2rem "+hexToRGB$1(t.settings.warning_color,.5)),document.documentElement.style.setProperty("--warning-hover-color",t.settings.warning_hover_color),document.documentElement.style.setProperty("--success-color",t.settings.success_color),document.documentElement.style.setProperty("--success-font-color",t.settings.success_font_color),document.documentElement.style.setProperty("--success-shadow-color","0 0 0 0.2rem "+hexToRGB$1(t.settings.success_color,.5)),document.documentElement.style.setProperty("--success-hover-color",t.settings.success_hover_color),document.documentElement.style.setProperty("--danger-color",t.settings.danger_color),document.documentElement.style.setProperty("--danger-font-color",t.settings.danger_font_color),document.documentElement.style.setProperty("--danger-shadow-color","0 0 0 0.2rem "+hexToRGB$1(t.settings.danger_color,.5)),document.documentElement.style.setProperty("--danger-hover-color",t.settings.danger_hover_color),document.documentElement.style.setProperty("--info-color",t.settings.info_color),document.documentElement.style.setProperty("--info-font-color",t.settings.info_font_color),document.documentElement.style.setProperty("--info-shadow-color","0 0 0 0.2rem "+hexToRGB$1(t.settings.info_color,.5)),document.documentElement.style.setProperty("--info-hover-color",t.settings.info_hover_color),document.documentElement.style.setProperty("--primary-color",t.settings.primary_color),document.documentElement.style.setProperty("--primary-font-color",t.settings.primary_font_color),document.documentElement.style.setProperty("--primary-shadow-color","0 0 0 0.2rem "+hexToRGB$1(t.settings.primary_color,.5)),document.documentElement.style.setProperty("--primary-hover-color",t.settings.primary_hover_color),document.documentElement.style.setProperty("--secondary-color",t.settings.secondary_color),document.documentElement.style.setProperty("--secondary-font-color",t.settings.secondary_font_color),document.documentElement.style.setProperty("--secondary-shadow-color","0 0 0 0.2rem "+hexToRGB$1(t.settings.secondary_color,.5)),document.documentElement.style.setProperty("--secondary-hover-color",t.settings.secondary_hover_color)):!t||t.other.customers&&t.other.customers.length||t.other.id_customer||t.settings||this.openedWindow?(document.documentElement.style.setProperty("--warning-color","#ffc107"),document.documentElement.style.setProperty("--warning-font-color","#000000"),document.documentElement.style.setProperty("--warning-shadow-color","0 0 0 0.2rem rgba(222, 170, 12, 0.5)"),document.documentElement.style.setProperty("--warning-hover-color","#e0a800"),document.documentElement.style.setProperty("--success-color","#28a745"),document.documentElement.style.setProperty("--success-font-color","#ffffff"),document.documentElement.style.setProperty("--success-shadow-color","0 0 0 0.2rem rgba(72, 180, 97, 0.5)"),document.documentElement.style.setProperty("--success-hover-color","#218838"),document.documentElement.style.setProperty("--danger-color","#dc3545"),document.documentElement.style.setProperty("--danger-font-color","#ffffff"),document.documentElement.style.setProperty("--danger-shadow-color","0 0 0 0.2rem rgba(225, 83, 97, 0.5)"),document.documentElement.style.setProperty("--danger-hover-color","#c82333"),document.documentElement.style.setProperty("--info-color","#17a2b8"),document.documentElement.style.setProperty("--info-font-color","#ffffff"),document.documentElement.style.setProperty("--info-shadow-color","0 0 0 0.2rem rgba(58, 176, 195, 0.5)"),document.documentElement.style.setProperty("--info-hover-color","#138496"),document.documentElement.style.setProperty("--primary-color","#007bff"),document.documentElement.style.setProperty("--primary-font-color","#ffffff"),document.documentElement.style.setProperty("--primary-shadow-color","0 0 0 0.2rem rgba(38, 143, 255, 0.5)"),document.documentElement.style.setProperty("--primary-hover-color","#0069d9"),document.documentElement.style.setProperty("--secondary-color","#868e96"),document.documentElement.style.setProperty("--secondary-font-color","#ffffff"),document.documentElement.style.setProperty("--secondary-shadow-color","0 0 0 0.2rem rgba(130, 138, 145, 0.5)"),document.documentElement.style.setProperty("--secondary-hover-color","#5a6268"),this.fontSize=12):(this.openedWindow=!0,document.documentElement.style.setProperty("--warning-color","#ffc107"),document.documentElement.style.setProperty("--warning-font-color","#000000"),document.documentElement.style.setProperty("--warning-shadow-color","0 0 0 0.2rem rgba(222, 170, 12, 0.5)"),document.documentElement.style.setProperty("--warning-hover-color","#e0a800"),document.documentElement.style.setProperty("--success-color","#28a745"),document.documentElement.style.setProperty("--success-font-color","#ffffff"),document.documentElement.style.setProperty("--success-shadow-color","0 0 0 0.2rem rgba(72, 180, 97, 0.5)"),document.documentElement.style.setProperty("--success-hover-color","#218838"),document.documentElement.style.setProperty("--danger-color","#dc3545"),document.documentElement.style.setProperty("--danger-font-color","#ffffff"),document.documentElement.style.setProperty("--danger-shadow-color","0 0 0 0.2rem rgba(225, 83, 97, 0.5)"),document.documentElement.style.setProperty("--danger-hover-color","#c82333"),document.documentElement.style.setProperty("--info-color","#17a2b8"),document.documentElement.style.setProperty("--info-font-color","#ffffff"),document.documentElement.style.setProperty("--info-shadow-color","0 0 0 0.2rem rgba(58, 176, 195, 0.5)"),document.documentElement.style.setProperty("--info-hover-color","#138496"),document.documentElement.style.setProperty("--primary-color","#007bff"),document.documentElement.style.setProperty("--primary-font-color","#ffffff"),document.documentElement.style.setProperty("--primary-shadow-color","0 0 0 0.2rem rgba(38, 143, 255, 0.5)"),document.documentElement.style.setProperty("--primary-hover-color","#0069d9"),document.documentElement.style.setProperty("--secondary-color","#868e96"),document.documentElement.style.setProperty("--secondary-font-color","#ffffff"),document.documentElement.style.setProperty("--secondary-shadow-color","0 0 0 0.2rem rgba(130, 138, 145, 0.5)"),document.documentElement.style.setProperty("--secondary-hover-color","#5a6268"),this.fontSize=12,this._ds.notify("Hello, "+t.fullname+" it looks like there are no user settings saved for you. To adjust your user settings click your name at the top of the page next to the logout button, adjust any settings you want, then click submit to apply them."),this._services._router.navigateByUrl(this._services._router.url.split("/")[0]+"/user-settings/settings")),this.user=t})),this._deviceDet.isMobile()||this._deviceDet.isTablet()?(this._services._app.setIsDevice(!0),this.isDevice=!0):(this._services._app.setIsDevice(!1),this.isDevice=!1),this.environment.IS_PRODUCTION&&this._services._socket.subscribeBypassRoute("flagUpdateWithType","newSW").subscribe((t=>{t?(this.swFlagAlert=this._services._alert.setAlert("info","This page will reload once new version has been downloaded",0),this._services._app.setIsInvalidSW(!0),navigator.serviceWorker?navigator.serviceWorker.getRegistrations().then((t=>{t&&t.length||setTimeout((()=>{window.location.reload()}),3e3)}),(t=>{setTimeout((()=>{window.location.reload()}),3e3)})):setTimeout((()=>{window.location.reload()}),3e3)):this.swFlagAlert&&(this._services._app.setIsInvalidSW(!1),this._services._alert.clearAlert(this.swFlagAlert.toastId),this.swFlagAlert=null)})),this._offline.offlineMode.subscribe((t=>{this.isOffline=t})),this._services._account.getSocketStatus().subscribe((t=>{this.socketStatus=t,this.user?(this.socketStatus===WebSocket.OPEN?(this.isConnected=!0,this.isConnecting=!1):(this.isConnected=!1,this.socketStatus===WebSocket.CONNECTING?this.isConnecting=!0:this.isConnecting=!1),this.isConnected?this.connectedHeight=0:this.connectedHeight=40):(this.isConnected=!1,this.isConnecting=!1,this.connectedHeight=40)})),this._services._socket.subscribeBypassRoute("appstatus").subscribe((t=>{this.status=t,this._services._app.setHasStatusMessage(!!this.status),this.statusHeight=this.status?40:0})),setTimeout((()=>{this.navbarMainHeight=this.el_navBarMain.nativeElement.children[0].clientHeight}),100),setTimeout((()=>{this.navbarMainHeight=this.el_navBarMain.nativeElement.children[0].clientHeight}),1e3),setTimeout((()=>{this.navbarMainHeight=this.el_navBarMain.nativeElement.children[0].clientHeight}),5e3);let t,e=!1,n=this._storage.get("lastURL");this._services._router.events.subscribe((t=>{t.url&&t.url.startsWith("/digital-sign?")&&(this.digitalSign=!0),this.isDevice&&(n&&"/"!==n&&!e&&(""!==t.url&&"/"!==t.url||this._services._router.navigateByUrl(n)),e=!0,t.url?this._storage.set("lastURL",t.url):t.urlAfterRedirects&&this._storage.set("lastURL",t.urlAfterRedirects))})),["iPad","iPhone","iPod"].indexOf(navigator.platform)>=0&&"standalone"in window.navigator&&window.navigator.standalone&&(this.showNavigationMenu=!0),window.addEventListener("orientationchange",(()=>{-90===window.orientation&&(this.orientation="landscape"),90===window.orientation&&(this.orientation="landscape"),0===window.orientation&&(this.orientation="portrait")}),!0),document.addEventListener("focus",(function(){document.activeElement instanceof HTMLElement&&"INPUT"===document.activeElement.nodeName&&"number"===document.activeElement.type&&(t=!0,document.addEventListener("mousewheel",handleMousewheelEvent,{passive:!0}))}),!0),document.addEventListener("blur",(function(){t&&(t=!1,document.removeEventListener("mousewheel",handleMousewheelEvent))}),!0),window.addEventListener("dragover",(t=>{(t||event).preventDefault()}),!1),window.addEventListener("drop",(t=>{(t||event).preventDefault()}),!1)}getNavbarModuleHeight(){return this.el_navBarModule?this.el_navBarModule.nativeElement.children[0].clientHeight:0}onPushBackButton(){window.history.back()}onPushReloadButton(){window.location.reload()}onPushForwardButton(){window.history.forward()}openNav(){let t=document.getElementById("navSid"),e=document.getElementById("main_cont");t&&e&&("40px"===t.style.width&&"45px"===e.style.paddingLeft?(t.style.width="195px",e.style.paddingLeft="210px"):(t.style.width="40px",e.style.paddingLeft="45px"))}closeNav(){let t=document.getElementById("navSid"),e=document.getElementById("main_cont");t&&e&&(t.style.width="40px",e.style.paddingLeft="45px")}}function handleMousewheelEvent(){document.activeElement.blur()}function hexToRGB$1(t,e){let n=parseInt(t.slice(1,3),16),o=parseInt(t.slice(3,5),16),r=parseInt(t.slice(5,7),16);return e?"rgba("+n+", "+o+", "+r+", "+e+")":"rgb("+n+", "+o+", "+r+")"}CoreComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:CoreComponent,deps:[{token:i1$5.DeviceDetectorService},{token:DialogService},{token:ResizeService},{token:ProviderService},{token:OfflineManagerService},{token:i1$2.LocalStorageService},{token:AuthService},{token:AuthPermissionService}],target:i0.ɵɵFactoryTarget.Component}),CoreComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:CoreComponent,selector:"resolveio-client-lib-core",inputs:{environment:"environment",logo:"logo",navTabs:"navTabs",userHasPhoneNumber:"userHasPhoneNumber",client:"client",showNavbarModule:"showNavbarModule",publicProgram:"publicProgram"},providers:[ProviderService],viewQueries:[{propertyName:"el_navBarMain",first:!0,predicate:["navBarMain"],descendants:!0,read:ElementRef,static:!0},{propertyName:"el_navBarModule",first:!0,predicate:["navBarModule"],descendants:!0,read:ElementRef,static:!0}],usesInheritance:!0,ngImport:i0,template:'<style>\n\t:root {\n --warning-color: #ffc107;\n --warning-font-color: #000000;\n --warning-hover-color: #e0a800;\n --warning-shadow-color: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);\n --success-color: #28a745;\n --success-font-color: #ffffff;\n --success-hover-color: #218838;\n --success-shadow-color: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);\n --danger-color: #dc3545;\n --danger-font-color: #ffffff;\n --danger-hover-color: #c82333;\n --danger-shadow-color: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);\n --info-color: #17a2b8;\n --info-font-color: #ffffff;\n --info-hover-color: #138496;\n --info-shadow-color: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);\n --primary-color: #007bff;\n --primary-font-color: #ffffff;\n --primary-hover-color: #0069d9;\n --primary-shadow-color: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);\n --secondary-color: #868e96;\n --secondary-font-color: #ffffff;\n --secondary-hover-color: #5a6268;\n --secondary-shadow-color: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);\n }\n\n\t:host /deep/ .btn-warning {\n\t\tcolor: var(--warning-font-color);\n\t\tbackground-color: var(--warning-color);\n\t\tborder-color: var(--warning-color);\n\t}\n\t:host /deep/ .btn-warning:focus, .btn-warning.focus {\n\t\tbox-shadow: var(--warning-shadow-color);\n\t}\n\t:host /deep/ .btn-warning:hover {\n\t\tcolor: var(--warning-font-color);\n\t\tbackground-color: var(--warning-hover-color);\n\t\tborder-color: var(--warning-hover-color);\n\t}\n\n\t:host /deep/ .btn-success {\n\t\tcolor: var(--success-font-color);\n\t\tbackground-color: var(--success-color);\n\t\tborder-color: var(--success-color);\n\t}\n\t:host /deep/ .btn-success:focus, .btn-success.focus {\n\t\tbox-shadow: var(--success-shadow-color);\n\t}\n\t:host /deep/ .btn-success:hover {\n\t\tcolor: var(--success-font-color);\n\t\tbackground-color: var(--success-hover-color);\n\t\tborder-color: var(--success-hover-color);\n\t}\n\n\t:host /deep/ .btn-danger {\n\t\tcolor: var(--danger-font-color);\n\t\tbackground-color: var(--danger-color);\n\t\tborder-color: var(--danger-color);\n\t}\n\t:host /deep/ .btn-danger:focus, .btn-danger.focus {\n\t\tbox-shadow: var(--danger-shadow-color);\n\t}\n\t:host /deep/ .btn-danger:hover {\n\t\tcolor: var(--danger-font-color);\n\t\tbackground-color: var(--danger-hover-color);\n\t\tborder-color: var(--danger-hover-color);\n\t}\n\n\t:host /deep/ .btn-info {\n\t\tcolor: var(--info-font-color);\n\t\tbackground-color: var(--info-color);\n\t\tborder-color: var(--info-color);\n\t}\n\t:host /deep/ .btn-info:focus, .btn-info.focus {\n\t\tbox-shadow: var(--info-shadow-color);\n\t}\n\t:host /deep/ .btn-info:hover {\n\t\tcolor: var(--info-font-color);\n\t\tbackground-color: var(--info-hover-color);\n\t\tborder-color: var(--info-hover-color);\n\t}\n\n\t:host /deep/ .btn-primary {\n\t\tcolor: var(--primary-font-color);\n\t\tbackground-color: var(--primary-color);\n\t\tborder-color: var(--primary-color);\n\t}\n\t:host /deep/ .btn-primary:focus, .btn-primary.focus {\n\t\tbox-shadow: var(--primary-shadow-color);\n\t}\n\t:host /deep/ .btn-primary:hover {\n\t\tcolor: var(--primary-font-color);\n\t\tbackground-color: var(--primary-hover-color);\n\t\tborder-color: var(--primary-hover-color);\n\t}\n\n\t:host /deep/ .btn-secondary {\n\t\tcolor: var(--secondary-font-color);\n\t\tbackground-color: var(--secondary-color);\n\t\tborder-color: var(--secondary-color);\n\t}\n\t:host /deep/ .btn-secondary:focus, .btn-secondary.focus {\n\t\tbox-shadow: var(--secondary-shadow-color);\n\t}\n\t:host /deep/ .btn-secondary:hover {\n\t\tcolor: var(--secondary-font-color);\n\t\tbackground-color: var(--secondary-hover-color);\n\t\tborder-color: var(--secondary-hover-color);\n\t}\n\t\n \t@media print {\n\t \t.dontPrint * {\n\t\t \tdisplay: none !important;\n\t \t}\n\n\t\t.myDivToPrintCs {\n\t\t\tbackground-color: white;\n\t\t\theight: 100%;\n\t\t\twidth: 100%;\n\t\t\tfont-size: 12px;\n\t\t\tline-height: 12px;\n\t\t\tpage-break-after: avoid;\n\t\t\tdisplay: initial;\n\t\t}\n\n\t\t.removeOverflow {\n\t\t\toverflow-y: hidden !important; \n\t\t\theight: 100% !important;\n\t\t}\n \t}\n\n \t.hideThis {\n\t\tdisplay: none !important;\n\t}\n\n\t.navSidbar {\n\t\twidth: 0px;\n\t\tposition: fixed;\n\t\tz-index: 1;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tbackground-color: #343a40;\n\t\toverflow: hidden;\n\t\ttransition: 0.5s;\n\t\tpadding-top: 0px;\n\t}\n\n\t.navSidbar a {\n\t\tpadding: 8px 8px 8px 32px;\n\t\ttext-decoration: none;\n\t\tfont-size: 25px;\n\t\tcolor: #818181;\n\t\tdisplay: block;\n\t\ttransition: 0.3s;\n\t}\n\n\t.navSidbar a:hover {\n\t\tcolor: #f1f1f1;\n\t}\n\n\t.openbtn {\n\t\tbackground-color: #343a40;\n\t\tborder: none;\n\t\tcolor: #fff;\n\t\tpadding: 5px 20px;\n\t\tfont-size: 18px;\n\t\tright: 0;\n\t\ttop: 0px;\n\t\tposition: absolute;\n\t\tz-index: 999999;\n\t\tcursor: pointer;\n\t\tfloat: right;\n\t\theight: 100%;\n\t}\n\n\t.openbtn span {\n\t\tfont-size: 20px;\n\t\tdisplay: block;\n\t\theight: auto;\n\t\twidth: auto;\n\t\ttext-align: center;\n\t\tposition: absolute;\n\t\tleft: 50%;\n\t\ttop: 50%;\n\t\ttransform: translate(-50%, -50%) rotate(-90deg);\n\t\tmargin-top: -55px;\n\t\tletter-spacing: 30px;\n\t}\n\t#main_cont {\n\t\ttransition: padding-left .5s;\n\t}\n\n\t.sid_inr {\n\t\tpadding-left: 25px;\n\t}\n\n\t@keyframes shimmer {\n 0%, 50% {\n background-position: 120% 0;\n }\n 100% {\n background-position: -80% 0;\n }\n }\n\n .shimmer::before {\n content: "";\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background: linear-gradient(\n -75deg,\n rgba(255, 255, 255, 0) 40%, \n rgba(255, 255, 255, 0.7) 50%, \n rgba(255, 255, 255, 0) 60%\n );\n background-size: 200% 100%;\n animation: shimmer 5s linear infinite;\n animation-fill-mode: forwards;\n z-index: 11;\n }\n</style>\n<div *ngIf="isDevice">\n\t<link rel="stylesheet" type="text/css" href="/assets/css/tablet.css">\n</div>\n<div #shell>\n\t<div *ngIf="user && (!isConnected || isOffline) && !publicProgram && !digitalSign">\n\t\t<div style="height: 40px; text-align: center; vertical-align: middle; background-color: red; color: white;">\n\t\t\t<div style="padding-top: 9px; padding-bottom: 9px;" class="shimmer">*** OFFLINE MODE ***</div>\n\t\t</div>\n\t</div>\n\t<div *ngIf="!user && (!isConnected || isOffline) && !publicProgram && !digitalSign">\n\t\t<div style="height: 40px; text-align: center; vertical-align: middle; background-color: red; color: white;">\n\t\t\t<div style="padding-top: 9px; padding-bottom: 9px;" class="shimmer">*** PLEASE LOGIN ***</div>\n\t\t</div>\n\t</div>\n\t<div *ngIf="status">\n\t\t<div style="height: 40px; text-align: center; vertical-align: middle; background-color: red; color: white;">\n\t\t\t<div style="padding-top: 9px; padding-bottom: 9px;" class="shimmer">*** {{ status.message }} ***</div>\n\t\t</div>\n\t</div>\n\t<div *ngIf="fullScreen">\n\t\t<router-outlet name="jobboardfsoutlet"></router-outlet>\n\t</div>\n\t<div [ngClass]="[\'container-fluid\', fullScreen ? \'hideThis\' : \'\']" [style.font-size.px]="fontSize">\n\t\t<div class="dontPrint">\n\t\t\t<navbar-main style="width: 100%" tourAnchor="navBarMain" #navBarMain [logo]="logo" [navTabs]="navTabs" [fontSize]="fontSize" [publicProgram]="publicProgram || digitalSign" [digitalSign]="digitalSign"></navbar-main>\n\t\t</div>\n\t\t<ng-template ngbModalContainer></ng-template>\n\t\t<div class="row">\n\t\t\t<div id="navSid" *ngIf="showNavbarModule && !digitalSign" [ngClass]="[\'dontPrint\', windowSizeWidth > 1200 && collapsableMenu ? \'navSidbar\' : \'col-xl-1\']" [style.width]="windowSizeWidth > 1200 && collapsableMenu ? 40 + \'px\' : 100 + \'%\'" [style.margin-top.px]="windowSizeWidth > 1200 && collapsableMenu ? navbarMainHeight + statusHeight + connectedHeight : 0" >\n\t\t\t\t<div class="openbtn" *ngIf="windowSizeWidth > 1200 && collapsableMenu" (mouseenter)="openNav()"><span>MENU</span></div>\n\t\t\t\t<div [ngClass]="windowSizeWidth > 1200 && collapsableMenu ? \'sid_inr\' : \'\'">\n\t\t\t\t\t<navbar-module #navBarModule tourAnchor="navBarModule" [sideNavWidth]="windowSizeWidth > 1200 && collapsableMenu ? \'90%\' : \'auto\'" [sideNavHeight]="windowSizeWidth > 1200 && collapsableMenu ? windowSizeHeight - navbarMainHeight - statusHeight - connectedHeight - (showNavigationMenu ? (54 + getNavbarModuleHeight()) : 0) - ((!isDevice || (isDevice && showNavigationMenu)) ? 20 : 0) : \'\'"></navbar-module>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div [id]="windowSizeWidth > 1200 ? \'main_cont\' : \'main_cont_mobile\'" [ngClass]="[windowSizeWidth > 1200 && collapsableMenu ? \'col-xl-12\' : \'col-xl-11\']" [style.padding-left]="windowSizeWidth > 1200 && collapsableMenu && showNavbarModule ? 45 + \'px\' : null" [style.padding]="((isDevice && windowSizeWidth <= 1200) || !showNavbarModule) ? 0 + \'px\' : null" (mouseenter)="windowSizeWidth > 1200 && collapsableMenu && showNavbarModule ? closeNav() : null" style="padding-right: 5px">\n\t\t\t\t<div style="-webkit-overflow-scrolling: touch" [style.overflow-y]="(isDevice && !showNavigationMenu) ? \'initial\' : \'scroll\'" [style.height.px]="windowSizeHeight - ((isDevice && windowSizeWidth <= 1200) && !showNavigationMenu ? (getNavbarModuleHeight() > 100 ? 0 : getNavbarModuleHeight()) : 0) - navbarMainHeight - (!publicProgram && !digitalSign ? statusHeight : 0) - (!publicProgram && !digitalSign ? connectedHeight : 0) - (isDevice && showNavigationMenu ? (54 + (getNavbarModuleHeight() > 100 ? 0 : getNavbarModuleHeight())) : 0) - ((!isDevice || (isDevice && showNavigationMenu)) ? 20 : 0)" class="removeOverflow">\n\t\t\t\t\t<router-outlet></router-outlet>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div *ngIf="isDevice && showNavigationMenu" style="height: 54px; background-color: lightgray; margin-left: -15px; margin-right: -15px;" class="dontPrint">\n\t\t\t<table style="width: 100%">\n\t\t\t\t<tr>\n\t\t\t\t\t<td style="text-align: center">\n\t\t\t\t\t\t<button type="button" class="btn" style="background-color: lightgray" (click)="onPushBackButton()"><i class="fa fa-arrow-left" style="color: black; font-size: 20px"></i></button>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td style="text-align: center">\n\t\t\t\t\t\t<button type="button" class="btn" style="background-color: lightgray" (click)="onPushReloadButton()"><i class="fa fa-refresh" style="color: black; font-size: 20px"></i></button>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td style="text-align: center">\n\t\t\t\t\t\t<button type="button" class="btn" style="background-color: lightgray" (click)="onPushForwardButton()"><i class="fa fa-arrow-right" style="color: black; font-size: 20px"></i></button>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</div>\n\t\t<div *ngIf="!isDevice" style="text-align: center; height: 20px; font-style: italic; font-weight: bold; background-color: lightgray; margin-left: -15px; margin-right: -15px;">© {{year}} RESOLVEIO ALL RIGHTS RESERVED</div>\n\t</div>\n</div>\n',styles:['\n\t:root {\n --warning-color: #ffc107;\n --warning-font-color: #000000;\n --warning-hover-color: #e0a800;\n --warning-shadow-color: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);\n --success-color: #28a745;\n --success-font-color: #ffffff;\n --success-hover-color: #218838;\n --success-shadow-color: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);\n --danger-color: #dc3545;\n --danger-font-color: #ffffff;\n --danger-hover-color: #c82333;\n --danger-shadow-color: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);\n --info-color: #17a2b8;\n --info-font-color: #ffffff;\n --info-hover-color: #138496;\n --info-shadow-color: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);\n --primary-color: #007bff;\n --primary-font-color: #ffffff;\n --primary-hover-color: #0069d9;\n --primary-shadow-color: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);\n --secondary-color: #868e96;\n --secondary-font-color: #ffffff;\n --secondary-hover-color: #5a6268;\n --secondary-shadow-color: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);\n }\n\n\t:host /deep/ .btn-warning {\n\t\tcolor: var(--warning-font-color);\n\t\tbackground-color: var(--warning-color);\n\t\tborder-color: var(--warning-color);\n\t}\n\t:host /deep/ .btn-warning:focus, .btn-warning.focus {\n\t\tbox-shadow: var(--warning-shadow-color);\n\t}\n\t:host /deep/ .btn-warning:hover {\n\t\tcolor: var(--warning-font-color);\n\t\tbackground-color: var(--warning-hover-color);\n\t\tborder-color: var(--warning-hover-color);\n\t}\n\n\t:host /deep/ .btn-success {\n\t\tcolor: var(--success-font-color);\n\t\tbackground-color: var(--success-color);\n\t\tborder-color: var(--success-color);\n\t}\n\t:host /deep/ .btn-success:focus, .btn-success.focus {\n\t\tbox-shadow: var(--success-shadow-color);\n\t}\n\t:host /deep/ .btn-success:hover {\n\t\tcolor: var(--success-font-color);\n\t\tbackground-color: var(--success-hover-color);\n\t\tborder-color: var(--success-hover-color);\n\t}\n\n\t:host /deep/ .btn-danger {\n\t\tcolor: var(--danger-font-color);\n\t\tbackground-color: var(--danger-color);\n\t\tborder-color: var(--danger-color);\n\t}\n\t:host /deep/ .btn-danger:focus, .btn-danger.focus {\n\t\tbox-shadow: var(--danger-shadow-color);\n\t}\n\t:host /deep/ .btn-danger:hover {\n\t\tcolor: var(--danger-font-color);\n\t\tbackground-color: var(--danger-hover-color);\n\t\tborder-color: var(--danger-hover-color);\n\t}\n\n\t:host /deep/ .btn-info {\n\t\tcolor: var(--info-font-color);\n\t\tbackground-color: var(--info-color);\n\t\tborder-color: var(--info-color);\n\t}\n\t:host /deep/ .btn-info:focus, .btn-info.focus {\n\t\tbox-shadow: var(--info-shadow-color);\n\t}\n\t:host /deep/ .btn-info:hover {\n\t\tcolor: var(--info-font-color);\n\t\tbackground-color: var(--info-hover-color);\n\t\tborder-color: var(--info-hover-color);\n\t}\n\n\t:host /deep/ .btn-primary {\n\t\tcolor: var(--primary-font-color);\n\t\tbackground-color: var(--primary-color);\n\t\tborder-color: var(--primary-color);\n\t}\n\t:host /deep/ .btn-primary:focus, .btn-primary.focus {\n\t\tbox-shadow: var(--primary-shadow-color);\n\t}\n\t:host /deep/ .btn-primary:hover {\n\t\tcolor: var(--primary-font-color);\n\t\tbackground-color: var(--primary-hover-color);\n\t\tborder-color: var(--primary-hover-color);\n\t}\n\n\t:host /deep/ .btn-secondary {\n\t\tcolor: var(--secondary-font-color);\n\t\tbackground-color: var(--secondary-color);\n\t\tborder-color: var(--secondary-color);\n\t}\n\t:host /deep/ .btn-secondary:focus, .btn-secondary.focus {\n\t\tbox-shadow: var(--secondary-shadow-color);\n\t}\n\t:host /deep/ .btn-secondary:hover {\n\t\tcolor: var(--secondary-font-color);\n\t\tbackground-color: var(--secondary-hover-color);\n\t\tborder-color: var(--secondary-hover-color);\n\t}\n\t\n \t@media print {\n\t \t.dontPrint * {\n\t\t \tdisplay: none !important;\n\t \t}\n\n\t\t.myDivToPrintCs {\n\t\t\tbackground-color: white;\n\t\t\theight: 100%;\n\t\t\twidth: 100%;\n\t\t\tfont-size: 12px;\n\t\t\tline-height: 12px;\n\t\t\tpage-break-after: avoid;\n\t\t\tdisplay: initial;\n\t\t}\n\n\t\t.removeOverflow {\n\t\t\toverflow-y: hidden !important; \n\t\t\theight: 100% !important;\n\t\t}\n \t}\n\n \t.hideThis {\n\t\tdisplay: none !important;\n\t}\n\n\t.navSidbar {\n\t\twidth: 0px;\n\t\tposition: fixed;\n\t\tz-index: 1;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tbackground-color: #343a40;\n\t\toverflow: hidden;\n\t\ttransition: 0.5s;\n\t\tpadding-top: 0px;\n\t}\n\n\t.navSidbar a {\n\t\tpadding: 8px 8px 8px 32px;\n\t\ttext-decoration: none;\n\t\tfont-size: 25px;\n\t\tcolor: #818181;\n\t\tdisplay: block;\n\t\ttransition: 0.3s;\n\t}\n\n\t.navSidbar a:hover {\n\t\tcolor: #f1f1f1;\n\t}\n\n\t.openbtn {\n\t\tbackground-color: #343a40;\n\t\tborder: none;\n\t\tcolor: #fff;\n\t\tpadding: 5px 20px;\n\t\tfont-size: 18px;\n\t\tright: 0;\n\t\ttop: 0px;\n\t\tposition: absolute;\n\t\tz-index: 999999;\n\t\tcursor: pointer;\n\t\tfloat: right;\n\t\theight: 100%;\n\t}\n\n\t.openbtn span {\n\t\tfont-size: 20px;\n\t\tdisplay: block;\n\t\theight: auto;\n\t\twidth: auto;\n\t\ttext-align: center;\n\t\tposition: absolute;\n\t\tleft: 50%;\n\t\ttop: 50%;\n\t\ttransform: translate(-50%, -50%) rotate(-90deg);\n\t\tmargin-top: -55px;\n\t\tletter-spacing: 30px;\n\t}\n\t#main_cont {\n\t\ttransition: padding-left .5s;\n\t}\n\n\t.sid_inr {\n\t\tpadding-left: 25px;\n\t}\n\n\t@keyframes shimmer {\n 0%, 50% {\n background-position: 120% 0;\n }\n 100% {\n background-position: -80% 0;\n }\n }\n\n .shimmer::before {\n content: "";\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background: linear-gradient(\n -75deg,\n rgba(255, 255, 255, 0) 40%, \n rgba(255, 255, 255, 0.7) 50%, \n rgba(255, 255, 255, 0) 60%\n );\n background-size: 200% 100%;\n animation: shimmer 5s linear infinite;\n animation-fill-mode: forwards;\n z-index: 11;\n }\n'],dependencies:[{kind:"directive",type:i1$3.RouterOutlet,selector:"router-outlet",inputs:["name"],outputs:["activate","deactivate","attach","detach"],exportAs:["outlet"]},{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"component",type:NavbarMainComponent,selector:"navbar-main",inputs:["logo","navTabs","fontSize","publicProgram","digitalSign"]},{kind:"component",type:NavbarModuleComponent,selector:"navbar-module",inputs:["sideNavHeight","sideNavWidth"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:CoreComponent,decorators:[{type:Component,args:[{providers:[ProviderService],selector:"resolveio-client-lib-core",template:'<style>\n\t:root {\n --warning-color: #ffc107;\n --warning-font-color: #000000;\n --warning-hover-color: #e0a800;\n --warning-shadow-color: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);\n --success-color: #28a745;\n --success-font-color: #ffffff;\n --success-hover-color: #218838;\n --success-shadow-color: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);\n --danger-color: #dc3545;\n --danger-font-color: #ffffff;\n --danger-hover-color: #c82333;\n --danger-shadow-color: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);\n --info-color: #17a2b8;\n --info-font-color: #ffffff;\n --info-hover-color: #138496;\n --info-shadow-color: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);\n --primary-color: #007bff;\n --primary-font-color: #ffffff;\n --primary-hover-color: #0069d9;\n --primary-shadow-color: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);\n --secondary-color: #868e96;\n --secondary-font-color: #ffffff;\n --secondary-hover-color: #5a6268;\n --secondary-shadow-color: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);\n }\n\n\t:host /deep/ .btn-warning {\n\t\tcolor: var(--warning-font-color);\n\t\tbackground-color: var(--warning-color);\n\t\tborder-color: var(--warning-color);\n\t}\n\t:host /deep/ .btn-warning:focus, .btn-warning.focus {\n\t\tbox-shadow: var(--warning-shadow-color);\n\t}\n\t:host /deep/ .btn-warning:hover {\n\t\tcolor: var(--warning-font-color);\n\t\tbackground-color: var(--warning-hover-color);\n\t\tborder-color: var(--warning-hover-color);\n\t}\n\n\t:host /deep/ .btn-success {\n\t\tcolor: var(--success-font-color);\n\t\tbackground-color: var(--success-color);\n\t\tborder-color: var(--success-color);\n\t}\n\t:host /deep/ .btn-success:focus, .btn-success.focus {\n\t\tbox-shadow: var(--success-shadow-color);\n\t}\n\t:host /deep/ .btn-success:hover {\n\t\tcolor: var(--success-font-color);\n\t\tbackground-color: var(--success-hover-color);\n\t\tborder-color: var(--success-hover-color);\n\t}\n\n\t:host /deep/ .btn-danger {\n\t\tcolor: var(--danger-font-color);\n\t\tbackground-color: var(--danger-color);\n\t\tborder-color: var(--danger-color);\n\t}\n\t:host /deep/ .btn-danger:focus, .btn-danger.focus {\n\t\tbox-shadow: var(--danger-shadow-color);\n\t}\n\t:host /deep/ .btn-danger:hover {\n\t\tcolor: var(--danger-font-color);\n\t\tbackground-color: var(--danger-hover-color);\n\t\tborder-color: var(--danger-hover-color);\n\t}\n\n\t:host /deep/ .btn-info {\n\t\tcolor: var(--info-font-color);\n\t\tbackground-color: var(--info-color);\n\t\tborder-color: var(--info-color);\n\t}\n\t:host /deep/ .btn-info:focus, .btn-info.focus {\n\t\tbox-shadow: var(--info-shadow-color);\n\t}\n\t:host /deep/ .btn-info:hover {\n\t\tcolor: var(--info-font-color);\n\t\tbackground-color: var(--info-hover-color);\n\t\tborder-color: var(--info-hover-color);\n\t}\n\n\t:host /deep/ .btn-primary {\n\t\tcolor: var(--primary-font-color);\n\t\tbackground-color: var(--primary-color);\n\t\tborder-color: var(--primary-color);\n\t}\n\t:host /deep/ .btn-primary:focus, .btn-primary.focus {\n\t\tbox-shadow: var(--primary-shadow-color);\n\t}\n\t:host /deep/ .btn-primary:hover {\n\t\tcolor: var(--primary-font-color);\n\t\tbackground-color: var(--primary-hover-color);\n\t\tborder-color: var(--primary-hover-color);\n\t}\n\n\t:host /deep/ .btn-secondary {\n\t\tcolor: var(--secondary-font-color);\n\t\tbackground-color: var(--secondary-color);\n\t\tborder-color: var(--secondary-color);\n\t}\n\t:host /deep/ .btn-secondary:focus, .btn-secondary.focus {\n\t\tbox-shadow: var(--secondary-shadow-color);\n\t}\n\t:host /deep/ .btn-secondary:hover {\n\t\tcolor: var(--secondary-font-color);\n\t\tbackground-color: var(--secondary-hover-color);\n\t\tborder-color: var(--secondary-hover-color);\n\t}\n\t\n \t@media print {\n\t \t.dontPrint * {\n\t\t \tdisplay: none !important;\n\t \t}\n\n\t\t.myDivToPrintCs {\n\t\t\tbackground-color: white;\n\t\t\theight: 100%;\n\t\t\twidth: 100%;\n\t\t\tfont-size: 12px;\n\t\t\tline-height: 12px;\n\t\t\tpage-break-after: avoid;\n\t\t\tdisplay: initial;\n\t\t}\n\n\t\t.removeOverflow {\n\t\t\toverflow-y: hidden !important; \n\t\t\theight: 100% !important;\n\t\t}\n \t}\n\n \t.hideThis {\n\t\tdisplay: none !important;\n\t}\n\n\t.navSidbar {\n\t\twidth: 0px;\n\t\tposition: fixed;\n\t\tz-index: 1;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tbackground-color: #343a40;\n\t\toverflow: hidden;\n\t\ttransition: 0.5s;\n\t\tpadding-top: 0px;\n\t}\n\n\t.navSidbar a {\n\t\tpadding: 8px 8px 8px 32px;\n\t\ttext-decoration: none;\n\t\tfont-size: 25px;\n\t\tcolor: #818181;\n\t\tdisplay: block;\n\t\ttransition: 0.3s;\n\t}\n\n\t.navSidbar a:hover {\n\t\tcolor: #f1f1f1;\n\t}\n\n\t.openbtn {\n\t\tbackground-color: #343a40;\n\t\tborder: none;\n\t\tcolor: #fff;\n\t\tpadding: 5px 20px;\n\t\tfont-size: 18px;\n\t\tright: 0;\n\t\ttop: 0px;\n\t\tposition: absolute;\n\t\tz-index: 999999;\n\t\tcursor: pointer;\n\t\tfloat: right;\n\t\theight: 100%;\n\t}\n\n\t.openbtn span {\n\t\tfont-size: 20px;\n\t\tdisplay: block;\n\t\theight: auto;\n\t\twidth: auto;\n\t\ttext-align: center;\n\t\tposition: absolute;\n\t\tleft: 50%;\n\t\ttop: 50%;\n\t\ttransform: translate(-50%, -50%) rotate(-90deg);\n\t\tmargin-top: -55px;\n\t\tletter-spacing: 30px;\n\t}\n\t#main_cont {\n\t\ttransition: padding-left .5s;\n\t}\n\n\t.sid_inr {\n\t\tpadding-left: 25px;\n\t}\n\n\t@keyframes shimmer {\n 0%, 50% {\n background-position: 120% 0;\n }\n 100% {\n background-position: -80% 0;\n }\n }\n\n .shimmer::before {\n content: "";\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background: linear-gradient(\n -75deg,\n rgba(255, 255, 255, 0) 40%, \n rgba(255, 255, 255, 0.7) 50%, \n rgba(255, 255, 255, 0) 60%\n );\n background-size: 200% 100%;\n animation: shimmer 5s linear infinite;\n animation-fill-mode: forwards;\n z-index: 11;\n }\n</style>\n<div *ngIf="isDevice">\n\t<link rel="stylesheet" type="text/css" href="/assets/css/tablet.css">\n</div>\n<div #shell>\n\t<div *ngIf="user && (!isConnected || isOffline) && !publicProgram && !digitalSign">\n\t\t<div style="height: 40px; text-align: center; vertical-align: middle; background-color: red; color: white;">\n\t\t\t<div style="padding-top: 9px; padding-bottom: 9px;" class="shimmer">*** OFFLINE MODE ***</div>\n\t\t</div>\n\t</div>\n\t<div *ngIf="!user && (!isConnected || isOffline) && !publicProgram && !digitalSign">\n\t\t<div style="height: 40px; text-align: center; vertical-align: middle; background-color: red; color: white;">\n\t\t\t<div style="padding-top: 9px; padding-bottom: 9px;" class="shimmer">*** PLEASE LOGIN ***</div>\n\t\t</div>\n\t</div>\n\t<div *ngIf="status">\n\t\t<div style="height: 40px; text-align: center; vertical-align: middle; background-color: red; color: white;">\n\t\t\t<div style="padding-top: 9px; padding-bottom: 9px;" class="shimmer">*** {{ status.message }} ***</div>\n\t\t</div>\n\t</div>\n\t<div *ngIf="fullScreen">\n\t\t<router-outlet name="jobboardfsoutlet"></router-outlet>\n\t</div>\n\t<div [ngClass]="[\'container-fluid\', fullScreen ? \'hideThis\' : \'\']" [style.font-size.px]="fontSize">\n\t\t<div class="dontPrint">\n\t\t\t<navbar-main style="width: 100%" tourAnchor="navBarMain" #navBarMain [logo]="logo" [navTabs]="navTabs" [fontSize]="fontSize" [publicProgram]="publicProgram || digitalSign" [digitalSign]="digitalSign"></navbar-main>\n\t\t</div>\n\t\t<ng-template ngbModalContainer></ng-template>\n\t\t<div class="row">\n\t\t\t<div id="navSid" *ngIf="showNavbarModule && !digitalSign" [ngClass]="[\'dontPrint\', windowSizeWidth > 1200 && collapsableMenu ? \'navSidbar\' : \'col-xl-1\']" [style.width]="windowSizeWidth > 1200 && collapsableMenu ? 40 + \'px\' : 100 + \'%\'" [style.margin-top.px]="windowSizeWidth > 1200 && collapsableMenu ? navbarMainHeight + statusHeight + connectedHeight : 0" >\n\t\t\t\t<div class="openbtn" *ngIf="windowSizeWidth > 1200 && collapsableMenu" (mouseenter)="openNav()"><span>MENU</span></div>\n\t\t\t\t<div [ngClass]="windowSizeWidth > 1200 && collapsableMenu ? \'sid_inr\' : \'\'">\n\t\t\t\t\t<navbar-module #navBarModule tourAnchor="navBarModule" [sideNavWidth]="windowSizeWidth > 1200 && collapsableMenu ? \'90%\' : \'auto\'" [sideNavHeight]="windowSizeWidth > 1200 && collapsableMenu ? windowSizeHeight - navbarMainHeight - statusHeight - connectedHeight - (showNavigationMenu ? (54 + getNavbarModuleHeight()) : 0) - ((!isDevice || (isDevice && showNavigationMenu)) ? 20 : 0) : \'\'"></navbar-module>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div [id]="windowSizeWidth > 1200 ? \'main_cont\' : \'main_cont_mobile\'" [ngClass]="[windowSizeWidth > 1200 && collapsableMenu ? \'col-xl-12\' : \'col-xl-11\']" [style.padding-left]="windowSizeWidth > 1200 && collapsableMenu && showNavbarModule ? 45 + \'px\' : null" [style.padding]="((isDevice && windowSizeWidth <= 1200) || !showNavbarModule) ? 0 + \'px\' : null" (mouseenter)="windowSizeWidth > 1200 && collapsableMenu && showNavbarModule ? closeNav() : null" style="padding-right: 5px">\n\t\t\t\t<div style="-webkit-overflow-scrolling: touch" [style.overflow-y]="(isDevice && !showNavigationMenu) ? \'initial\' : \'scroll\'" [style.height.px]="windowSizeHeight - ((isDevice && windowSizeWidth <= 1200) && !showNavigationMenu ? (getNavbarModuleHeight() > 100 ? 0 : getNavbarModuleHeight()) : 0) - navbarMainHeight - (!publicProgram && !digitalSign ? statusHeight : 0) - (!publicProgram && !digitalSign ? connectedHeight : 0) - (isDevice && showNavigationMenu ? (54 + (getNavbarModuleHeight() > 100 ? 0 : getNavbarModuleHeight())) : 0) - ((!isDevice || (isDevice && showNavigationMenu)) ? 20 : 0)" class="removeOverflow">\n\t\t\t\t\t<router-outlet></router-outlet>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div *ngIf="isDevice && showNavigationMenu" style="height: 54px; background-color: lightgray; margin-left: -15px; margin-right: -15px;" class="dontPrint">\n\t\t\t<table style="width: 100%">\n\t\t\t\t<tr>\n\t\t\t\t\t<td style="text-align: center">\n\t\t\t\t\t\t<button type="button" class="btn" style="background-color: lightgray" (click)="onPushBackButton()"><i class="fa fa-arrow-left" style="color: black; font-size: 20px"></i></button>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td style="text-align: center">\n\t\t\t\t\t\t<button type="button" class="btn" style="background-color: lightgray" (click)="onPushReloadButton()"><i class="fa fa-refresh" style="color: black; font-size: 20px"></i></button>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td style="text-align: center">\n\t\t\t\t\t\t<button type="button" class="btn" style="background-color: lightgray" (click)="onPushForwardButton()"><i class="fa fa-arrow-right" style="color: black; font-size: 20px"></i></button>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</div>\n\t\t<div *ngIf="!isDevice" style="text-align: center; height: 20px; font-style: italic; font-weight: bold; background-color: lightgray; margin-left: -15px; margin-right: -15px;">© {{year}} RESOLVEIO ALL RIGHTS RESERVED</div>\n\t</div>\n</div>\n'}]}],ctorParameters:function(){return[{type:i1$5.DeviceDetectorService},{type:DialogService},{type:ResizeService},{type:ProviderService},{type:OfflineManagerService},{type:i1$2.LocalStorageService},{type:AuthService},{type:AuthPermissionService}]},propDecorators:{environment:[{type:Input,args:["environment"]}],logo:[{type:Input,args:["logo"]}],navTabs:[{type:Input,args:["navTabs"]}],userHasPhoneNumber:[{type:Input,args:["userHasPhoneNumber"]}],client:[{type:Input,args:["client"]}],showNavbarModule:[{type:Input,args:["showNavbarModule"]}],publicProgram:[{type:Input,args:["publicProgram"]}],el_navBarMain:[{type:ViewChild,args:["navBarMain",{read:ElementRef,static:!0}]}],el_navBarModule:[{type:ViewChild,args:["navBarModule",{read:ElementRef,static:!0}]}]}});class JsonParsePipe{transform(t){let e=null,n=!1;try{e=JSON.parse(t,dateReviver)}catch(t){n=!0}return n?t:JSON.stringify(e,null,2)}}JsonParsePipe.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:JsonParsePipe,deps:[],target:i0.ɵɵFactoryTarget.Pipe}),JsonParsePipe.ɵpipe=i0.ɵɵngDeclarePipe({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:JsonParsePipe,name:"jsonParse",pure:!1}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:JsonParsePipe,decorators:[{type:Pipe,args:[{name:"jsonParse",pure:!1}]}]});class LoggerComponent extends BaseComponent{constructor(t,e,n){super(t),this._services=t,this._ds=e,this._cd=n,this.subscription$=[],this.logs=[],this.entries_per_page=25,this.page_num=1,this.log_cnt=0,this.user=null,this.users=[],this.selectedTypes=[],this.collection="",this.method="",this.route="",this.id_document=""}ngOnInit(){this._services._account.getUser().roles.super_admin||this._services._router.navigateByUrl("/home"),this.subscription$.push(this._services._socket.subscribe("allUsers").subscribe((t=>{this.users=t,this._cd.detectChanges()})));let t=new Date;t.setHours(0,0,0,0);let e=new Date(moment$1(t).subtract(10,"days").toDate());this.dateStartElem={year:e.getFullYear(),month:e.getMonth()+1,day:e.getDate()},this.timeStartElem={hour:0,minute:0,second:0};let n=new Date;n.setHours(23,59,59,999);let o=n;this.dateEndElem={year:o.getFullYear(),month:o.getMonth()+1,day:o.getDate()},this.timeEndElem={hour:23,minute:59,second:59},this.getLogData()}ngOnDestroy(){this.subscription$.forEach((t=>{t.unsubscribe()}))}getLogData(){this.dateStart=new Date(this.dateStartElem.year,this.dateStartElem.month-1,this.dateStartElem.day,this.timeStartElem.hour,this.timeStartElem.minute,this.timeStartElem.second,0),this.dateEnd=new Date(this.dateEndElem.year,this.dateEndElem.month-1,this.dateEndElem.day,this.timeEndElem.hour,this.timeEndElem.minute,this.timeEndElem.second,999);let t={$and:[{createdAt:{$gte:this.dateStart}},{createdAt:{$lte:this.dateEnd}}]};if(this.selectedTypes.length){if(t.$and.push({type:{$in:this.selectedTypes}}),this.collection)if(this.collection.includes(",")){let e=this.collection.split(",").map((t=>t.trim())).filter((t=>!t.startsWith("!")));e.length&&t.$and.push({collection:{$in:e}}),this.collection.split(",").map((t=>t.trim())).filter((t=>t.startsWith("!"))).forEach((e=>{t.$and.push({collection:{$ne:e.replace("!","")}})}))}else this.collection.startsWith("!")?t.$and.push({collection:{$ne:this.collection.replace("!","").trim()}}):t.$and.push({collection:this.collection.trim()});if(this.method)if(this.method.includes(",")){let e=this.method.split(",").map((t=>t.trim())).filter((t=>!t.startsWith("!")));e.length&&t.$and.push({method:{$in:e}}),this.method.split(",").map((t=>t.trim())).filter((t=>t.startsWith("!"))).forEach((e=>{t.$and.push({method:{$ne:e.replace("!","")}})}))}else this.method.startsWith("!")?t.$and.push({method:{$ne:this.method.replace("!","").trim()}}):t.$and.push({method:this.method.trim()});if(this.route)if(this.route.includes(",")){let e=this.route.split(",").map((t=>t.trim())).filter((t=>!t.startsWith("!")));e.length&&t.$and.push({route:{$in:e}}),this.route.split(",").map((t=>t.trim())).filter((t=>t.startsWith("!"))).forEach((e=>{t.$and.push({route:{$ne:e.replace("!","")}})}))}else this.route.startsWith("!")?t.$and.push({route:{$ne:this.route.replace("!","").trim()}}):t.$and.push({route:this.route.trim()});if(this.id_document)if(this.id_document.includes(",")){let e=this.id_document.split(",").map((t=>t.trim())).filter((t=>!t.startsWith("!")));e.length&&t.$and.push({id_document:{$in:e}}),this.id_document.split(",").map((t=>t.trim())).filter((t=>t.startsWith("!"))).forEach((e=>{t.$and.push({id_document:{$ne:e.replace("!","")}})}))}else this.id_document.startsWith("!")?t.$and.push({id_document:{$ne:this.id_document.replace("!","").trim()}}):t.$and.push({id_document:this.id_document.trim()});this.user&&t.$and.push({user:this.user}),"string"==typeof this.entries_per_page&&(this.entries_per_page=parseInt(this.entries_per_page)),this._services._socket.call("findWithOptions","logs",t,{sort:{createdAt:-1},limit:this.entries_per_page,skip:this.entries_per_page*(this.page_num-1)},((t,e)=>{this.logs=e,this._cd.detectChanges()})),this._services._socket.call("countCollectionWithQuery","logs",t,((t,e)=>{this.log_cnt=e,this._cd.detectChanges()})),this._cd.detectChanges()}}selectType(t){"all"!==t?this.selectedTypes.includes(t)?this.selectedTypes.splice(this.selectedTypes.indexOf(t),1):this.selectedTypes.push(t):7===this.selectedTypes.length?this.selectedTypes=[]:this.selectedTypes=["error","document","query","queryResponse","client-request","client-response","callMethodInternal"],this.logs=[],this.selectedTypes.length&&this.getLogData()}icon(t){return"error"===t?"danger":"document"===t?"info":"client-response"===t?"success":"client-request"===t?"primary":"secondary"}removeAllLogs(){this._ds.confirm("Are you sure you want to delete all logs?").then((()=>{this._services._socket.call("removeAllDocuments","logs")}),(()=>{}))}}LoggerComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:LoggerComponent,deps:[{token:ProviderService},{token:DialogService},{token:i0.ChangeDetectorRef}],target:i0.ɵɵFactoryTarget.Component}),LoggerComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:LoggerComponent,selector:"ng-component",providers:[ProviderService],usesInheritance:!0,ngImport:i0,template:'<style>\n\t.label-accordion {\n\t\tfont-weight: bold;\n\t\tcolor: black;\n\t\tmargin-bottom: 0px;\n\t}\n\tngb-accordion {\n\t\twidth: 100%;\n\t}\n\t.hoverThis:hover {\n\t\tbackground: lightblue;\n\t\tcursor: pointer;\n\t}\n\t\n\t.fa-plus {\n\t\tcolor: black;\n\t}\n\t.fa-minus {\n\t\tcolor: black;\n\t}\n\t\n\t.selected {\n\t\tbackground-color: orange;\n\t}\n\t.selected:hover {\n\t\tcursor: pointer;\n\t}\n\t.card {\n\t\twidth: 100%;\n\t}\n</style>\n\n<div class="row">\n\t<div class="col-lg-12">\n\t\t<div class="card">\n\t\t\t<div class="card-header"><b>Filters</b></div>\n\t\t\t<div class="card-body">\n\t\t\t\t<div class="row">\n\t\t\t\t\t<div class="col-lg-12">\n\t\t\t\t\t\t<responsive-button-group collapseSize="900">\n\t\t\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedTypes.includes(\'error\') && selectedTypes.includes(\'document\') && selectedTypes.includes(\'query\') && selectedTypes.includes(\'client-request\') && selectedTypes.includes(\'client-response\') ? \'btn-success\' : \'btn-warning\']" (click)="selectType(\'all\')">All</button>\n\t\t\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedTypes.includes(\'error\') ? \'btn-success\' : \'btn-warning\']" (click)="selectType(\'error\')">Errors</button>\n\t\t\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedTypes.includes(\'document\') ? \'btn-success\' : \'btn-warning\']" (click)="selectType(\'document\')">Document</button>\n\t\t\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedTypes.includes(\'query\') ? \'btn-success\' : \'btn-warning\']" (click)="selectType(\'query\')">Query</button>\n\t\t\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedTypes.includes(\'queryResponse\') ? \'btn-success\' : \'btn-warning\']" (click)="selectType(\'queryResponse\')">Query Response</button>\n\t\t\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedTypes.includes(\'client-request\') ? \'btn-success\' : \'btn-warning\']" (click)="selectType(\'client-request\')">Client Requests</button>\n\t\t\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedTypes.includes(\'client-response\') ? \'btn-success\' : \'btn-warning\']" (click)="selectType(\'client-response\')">Client Responses</button>\n\t\t\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedTypes.includes(\'callMethodInternal\') ? \'btn-success\' : \'btn-warning\']" (click)="selectType(\'callMethodInternal\')">Call Method Internal</button>\n\t\t\t\t\t\t\t<button type="button" class="btn btn-danger" (click)="removeAllLogs()">REMOVE ALL LOGS</button>\n\t\t\t\t\t\t</responsive-button-group>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="row" style="margin-top: 10px;">\n\t\t\t\t\t<div class="col-lg-2">\n\t\t\t\t\t\t<label class="form-control-label">User</label>\n\t\t\t\t\t\t<ng-select [(ngModel)]="user" (change)="getLogData()" placeholder="Select User">\n\t\t\t\t\t\t\t<ng-option *ngFor="let user of users" [value]="user.fullname">{{user.fullname}}</ng-option>\n\t\t\t\t\t\t</ng-select>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-lg-2">\n\t\t\t\t\t\t<label class="form-control-label">Collection</label>\n\t\t\t\t\t\t<input class="form-control" [(ngModel)]="collection" (change)="getLogData()" placeholder="Input Colls Sep By , & ! for !Not">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-lg-2">\n\t\t\t\t\t\t<label class="form-control-label">Method</label>\n\t\t\t\t\t\t<input class="form-control" [(ngModel)]="method" (change)="getLogData()" placeholder="Input Methods Sep By , & ! for !Not">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-lg-2">\n\t\t\t\t\t\t<label class="form-control-label">Route</label>\n\t\t\t\t\t\t<input class="form-control" [(ngModel)]="route" (change)="getLogData()" placeholder="Input Routes Sep By , & ! for !Not">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-lg-2">\n\t\t\t\t\t\t<label class="form-control-label">Document</label>\n\t\t\t\t\t\t<input class="form-control" [(ngModel)]="id_document" (change)="getLogData()" placeholder="Input Ids Sep By , & ! for !Not">\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="row" style="margin-top: 10px;">\n\t\t\t\t\t<div class="col-lg-3">\n\t\t\t\t\t\t<label class="form-control-label">Date Start</label>\n\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t<input class="form-control" [(ngModel)]="dateStartElem" ngbDatepicker #dStart="ngbDatepicker" (change)="getLogData()">\n\t\t\t\t\t\t\t<div class="input-group-append" (click)="dStart.toggle()">\n\t\t\t\t\t\t\t\t<div class="input-group-text">\n\t\t\t\t\t\t\t\t\t<i class="fa fa-calendar" aria-hidden="true"></i>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-lg-3">\n\t\t\t\t\t\t<label class="form-control-label">Time Start</label>\n\t\t\t\t\t\t<ngb-timepicker [(ngModel)]="timeStartElem" meridian="ON" [seconds]="true" (change)="getLogData()"></ngb-timepicker>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-lg-3">\n\t\t\t\t\t\t<label class="form-control-label">Date End</label>\n\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t<input class="form-control" [(ngModel)]="dateEndElem" ngbDatepicker #dEnd="ngbDatepicker" (change)="getLogData()">\n\t\t\t\t\t\t\t<div class="input-group-append" (click)="dEnd.toggle()">\n\t\t\t\t\t\t\t\t<div class="input-group-text">\n\t\t\t\t\t\t\t\t\t<i class="fa fa-calendar" aria-hidden="true"></i>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-lg-3">\n\t\t\t\t\t\t<label class="form-control-label">Time End</label><br>\n\t\t\t\t\t\t<ngb-timepicker [(ngModel)]="timeEndElem" meridian="ON" [seconds]="true" (change)="getLogData()"></ngb-timepicker>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n<div class="row">\n\t<div class="col-lg-8">\n\t\t<label class="form-control-label">Entries Per Page</label>\n\t\t<select class="form-control" [(ngModel)]="entries_per_page" (change)="getLogData()">\n\t\t\t<option value="10">10</option>\n\t\t\t<option value="25">25</option>\n\t\t\t<option value="50">50</option>\n\t\t\t<option value="100">100</option>\n\t\t\t<option value="250">250</option>\n\t\t\t<option value="500">500</option>\n\t\t\t<option value="1000">1000</option>\n\t\t\t<option value="5000">5000</option>\n\t\t</select>\n\t</div>\n\t<div class="col-lg-4">\n\t\t<ngb-pagination class="float-right"\n\t\tboundaryLinks="true"\n\t\t[collectionSize]="log_cnt"\n\t\tdirectionLinks="true"\n\t\tellipses="false"\n\t\t[(page)]="page_num"\n\t\tmaxSize="6"\n\t\t[pageSize]="entries_per_page"\n\t\trotate="true"\n\t\t(pageChange)="getLogData()"\n\t\t>\n\t\t</ngb-pagination>\n\t</div>\n</div>\n<div class="row" style="margin-top: 10px">\n\t<ngb-accordion #acc="ngbAccordion" activeIds="">\n\t\t<ngb-panel *ngFor="let log of logs; let i = index" [id]="\'log_\' + i">\n\t\t\t<ng-template ngbPanelTitle>\n\t\t\t\t<div> \n\t\t\t\t\t<label class="label-accordion" style="width: 90%; height: 22px">\n\t\t\t\t\t\t<strong class="pull-left">Type: {{ log.type }}{{log.method ? \' - Method: \' + log.method : \'\' }}{{log.collection ? \' - Collection: \' + log.collection : \'\' }}{{log.user ? \' - User: \' + log.user : \'\' }}{{log.route ? \' - Route: \' + log.route : \'\' }}{{log.id_document ? \' - id_document: \' + log.id_document : \'\' }}{{log.messageId ? \' - messageId: \' + log.messageId : \'\' }}</strong>\n\t\t\t\t\t\t<p class="pull-right">{{ log.createdAt | date : \'medium\' }}</p>\n\t\t\t\t\t</label>\n\t\t\t\t\t<i *ngIf="!acc.activeIds.includes(\'log_\' + i)" class="fa fa-plus float-end" aria-hidden="true"></i>\n\t\t\t\t\t<i *ngIf="acc.activeIds.includes(\'log_\' + i)" class="fa fa-minus float-end" aria-hidden="true"></i>\n\t\t\t\t</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template ngbPanelContent>\n\t\t\t\t<div *ngIf="log.payload">\n\t\t\t\t\t<pre>{{ log.payload | jsonParse }}</pre>\n\t\t\t\t</div>\n\t\t\t\t<div *ngIf="!log.payload">\n\t\t\t\t\tNo Data\n\t\t\t\t</div>\n\t\t\t</ng-template>\n\t\t</ngb-panel>\n\t</ngb-accordion>\n</div>\n<div class="row" style="margin-top: 10px">\n\t<div class="col-lg-4">\n\t\t<div class="row"> \n\t\t\t<div class="col-lg-8">\n\t\t\t\t<label class="form-control-label">Entries Per Page</label>\n\t\t\t\t<select class="form-control" [(ngModel)]="entries_per_page" (change)="getLogData()">\n\t\t\t\t\t<option value="10">10</option>\n\t\t\t\t\t<option value="25">25</option>\n\t\t\t\t\t<option value="50">50</option>\n\t\t\t\t\t<option value="100">100</option>\n\t\t\t\t\t<option value="250">250</option>\n\t\t\t\t\t<option value="500">500</option>\n\t\t\t\t\t<option value="1000">1000</option>\n\t\t\t\t\t<option value="5000">5000</option>\n\t\t\t\t</select>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div class="col-lg-8">\n\t\t<ngb-pagination class="float-right"\n\t\tboundaryLinks="true"\n\t\t[collectionSize]="log_cnt"\n\t\tdirectionLinks="true"\n\t\tellipses="false"\n\t\t[(page)]="page_num"\n\t\tmaxSize="6"\n\t\t[pageSize]="entries_per_page"\n\t\trotate="true"\n\t\t(pageChange)="getLogData()"\n\t\t>\n\t\t</ngb-pagination>\n\t</div>\n</div>',styles:["\n\t.label-accordion {\n\t\tfont-weight: bold;\n\t\tcolor: black;\n\t\tmargin-bottom: 0px;\n\t}\n\tngb-accordion {\n\t\twidth: 100%;\n\t}\n\t.hoverThis:hover {\n\t\tbackground: lightblue;\n\t\tcursor: pointer;\n\t}\n\t\n\t.fa-plus {\n\t\tcolor: black;\n\t}\n\t.fa-minus {\n\t\tcolor: black;\n\t}\n\t\n\t.selected {\n\t\tbackground-color: orange;\n\t}\n\t.selected:hover {\n\t\tcursor: pointer;\n\t}\n\t.card {\n\t\twidth: 100%;\n\t}\n"],dependencies:[{kind:"directive",type:i2.NgSelectOption,selector:"option",inputs:["ngValue","value"]},{kind:"directive",type:i2.ɵNgSelectMultipleOption,selector:"option",inputs:["ngValue","value"]},{kind:"directive",type:i2.DefaultValueAccessor,selector:"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]"},{kind:"directive",type:i2.SelectControlValueAccessor,selector:"select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]",inputs:["compareWith"]},{kind:"directive",type:i2.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i2.NgModel,selector:"[ngModel]:not([formControlName]):not([formControl])",inputs:["name","disabled","ngModel","ngModelOptions"],outputs:["ngModelChange"],exportAs:["ngModel"]},{kind:"component",type:i1$4.NgbAccordion,selector:"ngb-accordion",inputs:["animation","activeIds","closeOthers","destroyOnHide","type"],outputs:["panelChange","shown","hidden"],exportAs:["ngbAccordion"]},{kind:"directive",type:i1$4.NgbPanel,selector:"ngb-panel",inputs:["disabled","id","title","type","cardClass"],outputs:["shown","hidden"]},{kind:"directive",type:i1$4.NgbPanelTitle,selector:"ng-template[ngbPanelTitle]"},{kind:"directive",type:i1$4.NgbPanelContent,selector:"ng-template[ngbPanelContent]"},{kind:"directive",type:i1$4.NgbInputDatepicker,selector:"input[ngbDatepicker]",inputs:["autoClose","datepickerClass","dayTemplate","dayTemplateData","displayMonths","firstDayOfWeek","footerTemplate","markDisabled","minDate","maxDate","navigation","outsideDays","placement","restoreFocus","showWeekNumbers","startDate","container","positionTarget","weekdays","disabled"],outputs:["dateSelect","navigate","closed"],exportAs:["ngbDatepicker"]},{kind:"component",type:i1$4.NgbPagination,selector:"ngb-pagination",inputs:["disabled","boundaryLinks","directionLinks","ellipses","rotate","collectionSize","maxSize","page","pageSize","size"],outputs:["pageChange"]},{kind:"component",type:i1$4.NgbTimepicker,selector:"ngb-timepicker",inputs:["meridian","spinners","seconds","hourStep","minuteStep","secondStep","readonlyInputs","size"]},{kind:"component",type:ResponsiveButtonGroupComponent,selector:"responsive-button-group",inputs:["collapseSize"]},{kind:"component",type:i4$1.NgSelectComponent,selector:"ng-select",inputs:["bindLabel","bindValue","markFirst","placeholder","notFoundText","typeToSearchText","addTagText","loadingText","clearAllText","appearance","dropdownPosition","appendTo","loading","closeOnSelect","hideSelected","selectOnTab","openOnEnter","maxSelectedItems","groupBy","groupValue","bufferAmount","virtualScroll","selectableGroup","selectableGroupAsModel","searchFn","trackByFn","clearOnBackspace","labelForId","inputAttrs","tabIndex","readonly","searchWhileComposing","minTermLength","editableSearchTerm","keyDownFn","typeahead","multiple","addTag","searchable","clearable","isOpen","items","compareWith","clearSearchOnAdd"],outputs:["blur","focus","change","open","close","search","clear","add","remove","scroll","scrollToEnd"]},{kind:"component",type:i4$1.NgOptionComponent,selector:"ng-option",inputs:["value","disabled"]},{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"pipe",type:JsonParsePipe,name:"jsonParse"},{kind:"pipe",type:i7.DatePipe,name:"date"}],changeDetection:i0.ChangeDetectionStrategy.OnPush}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:LoggerComponent,decorators:[{type:Component,args:[{providers:[ProviderService],changeDetection:ChangeDetectionStrategy.OnPush,template:'<style>\n\t.label-accordion {\n\t\tfont-weight: bold;\n\t\tcolor: black;\n\t\tmargin-bottom: 0px;\n\t}\n\tngb-accordion {\n\t\twidth: 100%;\n\t}\n\t.hoverThis:hover {\n\t\tbackground: lightblue;\n\t\tcursor: pointer;\n\t}\n\t\n\t.fa-plus {\n\t\tcolor: black;\n\t}\n\t.fa-minus {\n\t\tcolor: black;\n\t}\n\t\n\t.selected {\n\t\tbackground-color: orange;\n\t}\n\t.selected:hover {\n\t\tcursor: pointer;\n\t}\n\t.card {\n\t\twidth: 100%;\n\t}\n</style>\n\n<div class="row">\n\t<div class="col-lg-12">\n\t\t<div class="card">\n\t\t\t<div class="card-header"><b>Filters</b></div>\n\t\t\t<div class="card-body">\n\t\t\t\t<div class="row">\n\t\t\t\t\t<div class="col-lg-12">\n\t\t\t\t\t\t<responsive-button-group collapseSize="900">\n\t\t\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedTypes.includes(\'error\') && selectedTypes.includes(\'document\') && selectedTypes.includes(\'query\') && selectedTypes.includes(\'client-request\') && selectedTypes.includes(\'client-response\') ? \'btn-success\' : \'btn-warning\']" (click)="selectType(\'all\')">All</button>\n\t\t\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedTypes.includes(\'error\') ? \'btn-success\' : \'btn-warning\']" (click)="selectType(\'error\')">Errors</button>\n\t\t\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedTypes.includes(\'document\') ? \'btn-success\' : \'btn-warning\']" (click)="selectType(\'document\')">Document</button>\n\t\t\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedTypes.includes(\'query\') ? \'btn-success\' : \'btn-warning\']" (click)="selectType(\'query\')">Query</button>\n\t\t\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedTypes.includes(\'queryResponse\') ? \'btn-success\' : \'btn-warning\']" (click)="selectType(\'queryResponse\')">Query Response</button>\n\t\t\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedTypes.includes(\'client-request\') ? \'btn-success\' : \'btn-warning\']" (click)="selectType(\'client-request\')">Client Requests</button>\n\t\t\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedTypes.includes(\'client-response\') ? \'btn-success\' : \'btn-warning\']" (click)="selectType(\'client-response\')">Client Responses</button>\n\t\t\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedTypes.includes(\'callMethodInternal\') ? \'btn-success\' : \'btn-warning\']" (click)="selectType(\'callMethodInternal\')">Call Method Internal</button>\n\t\t\t\t\t\t\t<button type="button" class="btn btn-danger" (click)="removeAllLogs()">REMOVE ALL LOGS</button>\n\t\t\t\t\t\t</responsive-button-group>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="row" style="margin-top: 10px;">\n\t\t\t\t\t<div class="col-lg-2">\n\t\t\t\t\t\t<label class="form-control-label">User</label>\n\t\t\t\t\t\t<ng-select [(ngModel)]="user" (change)="getLogData()" placeholder="Select User">\n\t\t\t\t\t\t\t<ng-option *ngFor="let user of users" [value]="user.fullname">{{user.fullname}}</ng-option>\n\t\t\t\t\t\t</ng-select>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-lg-2">\n\t\t\t\t\t\t<label class="form-control-label">Collection</label>\n\t\t\t\t\t\t<input class="form-control" [(ngModel)]="collection" (change)="getLogData()" placeholder="Input Colls Sep By , & ! for !Not">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-lg-2">\n\t\t\t\t\t\t<label class="form-control-label">Method</label>\n\t\t\t\t\t\t<input class="form-control" [(ngModel)]="method" (change)="getLogData()" placeholder="Input Methods Sep By , & ! for !Not">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-lg-2">\n\t\t\t\t\t\t<label class="form-control-label">Route</label>\n\t\t\t\t\t\t<input class="form-control" [(ngModel)]="route" (change)="getLogData()" placeholder="Input Routes Sep By , & ! for !Not">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-lg-2">\n\t\t\t\t\t\t<label class="form-control-label">Document</label>\n\t\t\t\t\t\t<input class="form-control" [(ngModel)]="id_document" (change)="getLogData()" placeholder="Input Ids Sep By , & ! for !Not">\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="row" style="margin-top: 10px;">\n\t\t\t\t\t<div class="col-lg-3">\n\t\t\t\t\t\t<label class="form-control-label">Date Start</label>\n\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t<input class="form-control" [(ngModel)]="dateStartElem" ngbDatepicker #dStart="ngbDatepicker" (change)="getLogData()">\n\t\t\t\t\t\t\t<div class="input-group-append" (click)="dStart.toggle()">\n\t\t\t\t\t\t\t\t<div class="input-group-text">\n\t\t\t\t\t\t\t\t\t<i class="fa fa-calendar" aria-hidden="true"></i>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-lg-3">\n\t\t\t\t\t\t<label class="form-control-label">Time Start</label>\n\t\t\t\t\t\t<ngb-timepicker [(ngModel)]="timeStartElem" meridian="ON" [seconds]="true" (change)="getLogData()"></ngb-timepicker>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-lg-3">\n\t\t\t\t\t\t<label class="form-control-label">Date End</label>\n\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t<input class="form-control" [(ngModel)]="dateEndElem" ngbDatepicker #dEnd="ngbDatepicker" (change)="getLogData()">\n\t\t\t\t\t\t\t<div class="input-group-append" (click)="dEnd.toggle()">\n\t\t\t\t\t\t\t\t<div class="input-group-text">\n\t\t\t\t\t\t\t\t\t<i class="fa fa-calendar" aria-hidden="true"></i>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-lg-3">\n\t\t\t\t\t\t<label class="form-control-label">Time End</label><br>\n\t\t\t\t\t\t<ngb-timepicker [(ngModel)]="timeEndElem" meridian="ON" [seconds]="true" (change)="getLogData()"></ngb-timepicker>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n<div class="row">\n\t<div class="col-lg-8">\n\t\t<label class="form-control-label">Entries Per Page</label>\n\t\t<select class="form-control" [(ngModel)]="entries_per_page" (change)="getLogData()">\n\t\t\t<option value="10">10</option>\n\t\t\t<option value="25">25</option>\n\t\t\t<option value="50">50</option>\n\t\t\t<option value="100">100</option>\n\t\t\t<option value="250">250</option>\n\t\t\t<option value="500">500</option>\n\t\t\t<option value="1000">1000</option>\n\t\t\t<option value="5000">5000</option>\n\t\t</select>\n\t</div>\n\t<div class="col-lg-4">\n\t\t<ngb-pagination class="float-right"\n\t\tboundaryLinks="true"\n\t\t[collectionSize]="log_cnt"\n\t\tdirectionLinks="true"\n\t\tellipses="false"\n\t\t[(page)]="page_num"\n\t\tmaxSize="6"\n\t\t[pageSize]="entries_per_page"\n\t\trotate="true"\n\t\t(pageChange)="getLogData()"\n\t\t>\n\t\t</ngb-pagination>\n\t</div>\n</div>\n<div class="row" style="margin-top: 10px">\n\t<ngb-accordion #acc="ngbAccordion" activeIds="">\n\t\t<ngb-panel *ngFor="let log of logs; let i = index" [id]="\'log_\' + i">\n\t\t\t<ng-template ngbPanelTitle>\n\t\t\t\t<div> \n\t\t\t\t\t<label class="label-accordion" style="width: 90%; height: 22px">\n\t\t\t\t\t\t<strong class="pull-left">Type: {{ log.type }}{{log.method ? \' - Method: \' + log.method : \'\' }}{{log.collection ? \' - Collection: \' + log.collection : \'\' }}{{log.user ? \' - User: \' + log.user : \'\' }}{{log.route ? \' - Route: \' + log.route : \'\' }}{{log.id_document ? \' - id_document: \' + log.id_document : \'\' }}{{log.messageId ? \' - messageId: \' + log.messageId : \'\' }}</strong>\n\t\t\t\t\t\t<p class="pull-right">{{ log.createdAt | date : \'medium\' }}</p>\n\t\t\t\t\t</label>\n\t\t\t\t\t<i *ngIf="!acc.activeIds.includes(\'log_\' + i)" class="fa fa-plus float-end" aria-hidden="true"></i>\n\t\t\t\t\t<i *ngIf="acc.activeIds.includes(\'log_\' + i)" class="fa fa-minus float-end" aria-hidden="true"></i>\n\t\t\t\t</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template ngbPanelContent>\n\t\t\t\t<div *ngIf="log.payload">\n\t\t\t\t\t<pre>{{ log.payload | jsonParse }}</pre>\n\t\t\t\t</div>\n\t\t\t\t<div *ngIf="!log.payload">\n\t\t\t\t\tNo Data\n\t\t\t\t</div>\n\t\t\t</ng-template>\n\t\t</ngb-panel>\n\t</ngb-accordion>\n</div>\n<div class="row" style="margin-top: 10px">\n\t<div class="col-lg-4">\n\t\t<div class="row"> \n\t\t\t<div class="col-lg-8">\n\t\t\t\t<label class="form-control-label">Entries Per Page</label>\n\t\t\t\t<select class="form-control" [(ngModel)]="entries_per_page" (change)="getLogData()">\n\t\t\t\t\t<option value="10">10</option>\n\t\t\t\t\t<option value="25">25</option>\n\t\t\t\t\t<option value="50">50</option>\n\t\t\t\t\t<option value="100">100</option>\n\t\t\t\t\t<option value="250">250</option>\n\t\t\t\t\t<option value="500">500</option>\n\t\t\t\t\t<option value="1000">1000</option>\n\t\t\t\t\t<option value="5000">5000</option>\n\t\t\t\t</select>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div class="col-lg-8">\n\t\t<ngb-pagination class="float-right"\n\t\tboundaryLinks="true"\n\t\t[collectionSize]="log_cnt"\n\t\tdirectionLinks="true"\n\t\tellipses="false"\n\t\t[(page)]="page_num"\n\t\tmaxSize="6"\n\t\t[pageSize]="entries_per_page"\n\t\trotate="true"\n\t\t(pageChange)="getLogData()"\n\t\t>\n\t\t</ngb-pagination>\n\t</div>\n</div>'}]}],ctorParameters:function(){return[{type:ProviderService},{type:DialogService},{type:i0.ChangeDetectorRef}]}});class AuthGuard{constructor(t,e,n,o,r,i,a,s){this._router=t,this._auth=e,this._ds=n,this._account=o,this._app=r,this._offline=i,this._aps=a,this._alert=s}canActivate(t,e){return new Promise((t=>{this._account.isInitCompleted().then((()=>{let n=this._account.getUser();if(n||(n=this._offline.getUser(),n&&this._account.setUser(n)),n)if(n.active){let o=e.url.replace(/\/[a-f0-9]{24}$/,"").replace(/\?.+$/,""),r=o.replace(/([^\/]+\/?$)/,"");if(n.roles.super_admin)t(!0);else{let e=!1;for(;!e&&o.split("/").length>2;){if(!this.isLinkFakeRoute(o))if(n.roles.groups.some((t=>t.views.some((t=>t===o)))))e=!0,t(!0);else if(n.roles.groups.some((t=>t.views.some((t=>t.startsWith(r)&&!this.doesLinkHaveParameter(t)&&!this.isLinkFakeRoute(t)))))){let o=n.roles.groups.filter((t=>t.views.some((t=>t.startsWith(r)&&!this.doesLinkHaveParameter(t)&&!this.isLinkFakeRoute(t)))))[0].views.filter((t=>t.startsWith(r)&&!this.doesLinkHaveParameter(t)&&!this.isLinkFakeRoute(t)))[0];e=!0,this._router.navigateByUrl(o),t(!1)}r=r.replace(/([^\/]+\/?$)/,""),o=o.replace(/(\/[^\/]+$)/,"")}e||(this._router.navigateByUrl("/home"),t(!1))}}else this._router.navigateByUrl("/home"),t(!1);else navigator.onLine?this._auth.loginUser().then((o=>{this._account.isLoginCompleted().then((()=>{if(n=this._account.getUser(),n.active){let o=e.url.replace(/\/[a-f0-9]{24}$/,"").replace(/\?.+$/,""),r=o.replace(/([^\/]+\/?$)/,"");if(n.roles.super_admin)t(!0);else{let e=!1;for(;!e&&o.split("/").length>2;){if(!this.isLinkFakeRoute(o))if(n.roles.groups.some((t=>t.views.some((t=>t===o)))))e=!0,t(!0);else if(n.roles.groups.some((t=>t.views.some((t=>t.startsWith(r)&&!this.doesLinkHaveParameter(t)&&!this.isLinkFakeRoute(t)))))){let o=n.roles.groups.filter((t=>t.views.some((t=>t.startsWith(r)&&!this.doesLinkHaveParameter(t)&&!this.isLinkFakeRoute(t)))))[0].views.filter((t=>t.startsWith(r)&&!this.doesLinkHaveParameter(t)&&!this.isLinkFakeRoute(t)))[0];e=!0,this._router.navigateByUrl(o),t(!1)}r=r.replace(/([^\/]+\/?$)/,""),o=o.replace(/(\/[^\/]+$)/,"")}e||(this._router.navigateByUrl("/home"),t(!1))}}else this._router.navigateByUrl("/home"),t(!1)}))}),(()=>{this._router.navigateByUrl("/home"),t(!1)})):t(!0)}),(()=>{}))}))}doesLinkHaveParameter(t){let e=this._aps.getAllModulePermissions();for(let n=0;n<e.length;n++){let o=e[n];for(let e=0;e<o.views.length;e++){let n=o.views[e];if(n.link===t)return!!n.has_parameter}}return!1}isLinkFakeRoute(t){let e=this._aps.getAllModulePermissions();for(let n=0;n<e.length;n++){let o=e[n];for(let e=0;e<o.views.length;e++){let n=o.views[e];if(n.link===t)return!!n.fake_route}}return!0}}AuthGuard.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AuthGuard,deps:[{token:i1$3.Router},{token:AuthService},{token:DialogService},{token:AccountManagerService},{token:CoreService},{token:OfflineManagerService},{token:AuthPermissionService},{token:AlertService}],target:i0.ɵɵFactoryTarget.Injectable}),AuthGuard.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AuthGuard}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AuthGuard,decorators:[{type:Injectable}],ctorParameters:function(){return[{type:i1$3.Router},{type:AuthService},{type:DialogService},{type:AccountManagerService},{type:CoreService},{type:OfflineManagerService},{type:AuthPermissionService},{type:AlertService}]}});class CanDeactivateGuard{canDeactivate(t){return!t.canDeactivate||t.canDeactivate()}}function getWindow(){return window}CanDeactivateGuard.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:CanDeactivateGuard,deps:[],target:i0.ɵɵFactoryTarget.Injectable}),CanDeactivateGuard.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:CanDeactivateGuard}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:CanDeactivateGuard,decorators:[{type:Injectable}]});class WindowRefService{get nativeWindow(){return getWindow()}}WindowRefService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:WindowRefService,deps:[],target:i0.ɵɵFactoryTarget.Injectable}),WindowRefService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:WindowRefService}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:WindowRefService,decorators:[{type:Injectable}]});class UserRoleComponent extends BaseComponent{constructor(t){super(t),this._services=t}userInRole(){return this._services._account.isUserInView(this.role)}}UserRoleComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:UserRoleComponent,deps:[{token:ProviderService}],target:i0.ɵɵFactoryTarget.Component}),UserRoleComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:UserRoleComponent,selector:"user-role",inputs:{role:"role"},providers:[ProviderService],usesInheritance:!0,ngImport:i0,template:'<ng-container *ngIf="userInRole()"><ng-content></ng-content></ng-container>',isInline:!0,dependencies:[{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:UserRoleComponent,decorators:[{type:Component,args:[{providers:[ProviderService],selector:"user-role",template:'<ng-container *ngIf="userInRole()"><ng-content></ng-content></ng-container>'}]}],ctorParameters:function(){return[{type:ProviderService}]},propDecorators:{role:[{type:Input}]}});class UserRoleModule{}UserRoleModule.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:UserRoleModule,deps:[],target:i0.ɵɵFactoryTarget.NgModule}),UserRoleModule.ɵmod=i0.ɵɵngDeclareNgModule({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:UserRoleModule,declarations:[UserRoleComponent],imports:[CommonModule],exports:[UserRoleComponent]}),UserRoleModule.ɵinj=i0.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:UserRoleModule,imports:[CommonModule]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:UserRoleModule,decorators:[{type:NgModule,args:[{imports:[CommonModule],exports:[UserRoleComponent],declarations:[UserRoleComponent]}]}]});class FormButtonModule{}FormButtonModule.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:FormButtonModule,deps:[],target:i0.ɵɵFactoryTarget.NgModule}),FormButtonModule.ɵmod=i0.ɵɵngDeclareNgModule({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:FormButtonModule,declarations:[FormButtonComponent],imports:[CommonModule,NgbTooltipModule],exports:[FormButtonComponent]}),FormButtonModule.ɵinj=i0.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:FormButtonModule,imports:[CommonModule,NgbTooltipModule]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:FormButtonModule,decorators:[{type:NgModule,args:[{imports:[CommonModule,NgbTooltipModule],exports:[FormButtonComponent],declarations:[FormButtonComponent]}]}]});class ResponsiveButtonGroupModule{}ResponsiveButtonGroupModule.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ResponsiveButtonGroupModule,deps:[],target:i0.ɵɵFactoryTarget.NgModule}),ResponsiveButtonGroupModule.ɵmod=i0.ɵɵngDeclareNgModule({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:ResponsiveButtonGroupModule,declarations:[ResponsiveButtonGroupComponent],imports:[CommonModule],exports:[ResponsiveButtonGroupComponent]}),ResponsiveButtonGroupModule.ɵinj=i0.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ResponsiveButtonGroupModule,imports:[CommonModule]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ResponsiveButtonGroupModule,decorators:[{type:NgModule,args:[{imports:[CommonModule],declarations:[ResponsiveButtonGroupComponent],exports:[ResponsiveButtonGroupComponent]}]}]});class CollapseTableModule{}CollapseTableModule.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:CollapseTableModule,deps:[],target:i0.ɵɵFactoryTarget.NgModule}),CollapseTableModule.ɵmod=i0.ɵɵngDeclareNgModule({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:CollapseTableModule,declarations:[CollapseTableComponent],imports:[FormsModule,CommonModule],exports:[CollapseTableComponent]}),CollapseTableModule.ɵinj=i0.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:CollapseTableModule,providers:[ResizeService],imports:[FormsModule,CommonModule]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:CollapseTableModule,decorators:[{type:NgModule,args:[{imports:[FormsModule,CommonModule],exports:[CollapseTableComponent],declarations:[CollapseTableComponent],providers:[ResizeService]}]}]});class PhonePipe{transform(t){if(!t)return"";let e,n,o;switch((t=(t=(t=(t=t.replace(new RegExp("-","g"),"")).replace(new RegExp(" ","g"),"")).replace("(","")).replace(")","")).length){case 10:e=1,n=t.slice(0,3),o=t.slice(3);break;case 11:e=t[0],n=t.slice(1,4),o=t.slice(4);break;case 12:e=t.slice(0,3),n=t.slice(3,5),o=t.slice(5);break;default:return t}return 1===e&&(e=""),o=o.slice(0,3)+"-"+o.slice(3),(e+" ("+n+") "+o).trim()}}PhonePipe.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:PhonePipe,deps:[],target:i0.ɵɵFactoryTarget.Pipe}),PhonePipe.ɵpipe=i0.ɵɵngDeclarePipe({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:PhonePipe,name:"phone"}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:PhonePipe,decorators:[{type:Pipe,args:[{name:"phone"}]}]});class ReversePipe{transform(t){return t.slice(0).reverse()}}ReversePipe.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ReversePipe,deps:[],target:i0.ɵɵFactoryTarget.Pipe}),ReversePipe.ɵpipe=i0.ɵɵngDeclarePipe({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:ReversePipe,name:"reverse"}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ReversePipe,decorators:[{type:Pipe,args:[{name:"reverse"}]}]});class MinusCurrencyPipe{transform(t,e){return"-"===t.charAt(0)?"("+t.substring(1,t.length)+")":t}}MinusCurrencyPipe.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:MinusCurrencyPipe,deps:[],target:i0.ɵɵFactoryTarget.Pipe}),MinusCurrencyPipe.ɵpipe=i0.ɵɵngDeclarePipe({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:MinusCurrencyPipe,name:"minusCurrency"}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:MinusCurrencyPipe,decorators:[{type:Pipe,args:[{name:"minusCurrency"}]}]});class DomSanitizorPipe{constructor(t){this._sanitizer=t}transform(t,e="html"){switch(e){case"html":return this._sanitizer.bypassSecurityTrustHtml(t);case"style":return this._sanitizer.bypassSecurityTrustStyle(t);case"script":return this._sanitizer.bypassSecurityTrustScript(t);case"url":return this._sanitizer.bypassSecurityTrustUrl(t);case"resourceUrl":return this._sanitizer.bypassSecurityTrustResourceUrl(t);default:throw new Error(`Invalid safe type specified: ${e}`)}}}DomSanitizorPipe.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DomSanitizorPipe,deps:[{token:i1.DomSanitizer}],target:i0.ɵɵFactoryTarget.Pipe}),DomSanitizorPipe.ɵpipe=i0.ɵɵngDeclarePipe({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:DomSanitizorPipe,name:"safe"}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DomSanitizorPipe,decorators:[{type:Pipe,args:[{name:"safe"}]}],ctorParameters:function(){return[{type:i1.DomSanitizer}]}});class TitleCaseAndUnderscorePipe{transform(t){let e=t.replace("_"," ").toLowerCase().split(" ");for(let t=0;t<e.length;t++)e[t]=e[t].charAt(0).toUpperCase()+e[t].slice(1);return e.join(" ")}}TitleCaseAndUnderscorePipe.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:TitleCaseAndUnderscorePipe,deps:[],target:i0.ɵɵFactoryTarget.Pipe}),TitleCaseAndUnderscorePipe.ɵpipe=i0.ɵɵngDeclarePipe({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:TitleCaseAndUnderscorePipe,name:"titleCase",pure:!1}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:TitleCaseAndUnderscorePipe,decorators:[{type:Pipe,args:[{name:"titleCase",pure:!1}]}]});class PipeModule{}PipeModule.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:PipeModule,deps:[],target:i0.ɵɵFactoryTarget.NgModule}),PipeModule.ɵmod=i0.ɵɵngDeclareNgModule({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:PipeModule,declarations:[FilterEqualPipe,FilterNotEqualPipe,PhonePipe,ReversePipe,MinusCurrencyPipe,DomSanitizorPipe,TitleCaseAndUnderscorePipe,JsonParsePipe],exports:[FilterEqualPipe,FilterNotEqualPipe,PhonePipe,ReversePipe,MinusCurrencyPipe,DomSanitizorPipe,TitleCaseAndUnderscorePipe,JsonParsePipe]}),PipeModule.ɵinj=i0.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:PipeModule}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:PipeModule,decorators:[{type:NgModule,args:[{declarations:[FilterEqualPipe,FilterNotEqualPipe,PhonePipe,ReversePipe,MinusCurrencyPipe,DomSanitizorPipe,TitleCaseAndUnderscorePipe,JsonParsePipe],exports:[FilterEqualPipe,FilterNotEqualPipe,PhonePipe,ReversePipe,MinusCurrencyPipe,DomSanitizorPipe,TitleCaseAndUnderscorePipe,JsonParsePipe]}]}]});class SortTableDirective{get direction(){return this._direction}set direction(t){if(t&&-1!==t&&1!==t)throw Error(t+" is not a valid sort direction (0 or 1).");this._direction=t}constructor(t){this.element=t,this.sortables=new Map,this._stateChanges=new Subject,this.start=1,this.disabled=!1,this.tableFixed=!1,this.headerFixed=!1,this.secondaryColor=!1,this.tertiaryColor=!1,this._direction=0,this._data=new BehaviorSubject([]),this.sortChange=new EventEmitter}register(t){if(!t.id)throw Error("CTSortHeader must be provided with a unique id");if(this.sortables.has(t.id))throw Error("Cannot have two CTSortables with the same id "+t.id);this.sortables.set(t.id,t)}deregister(t){this.sortables.delete(t.id)}sort(t){if(this.active!=t.id?(this.active=t.id,this.direction=t.start?t.start:this.start):this.direction*=-1,this.sortChange.emit({active:this.active,direction:this.direction}),this._data.value.length){let e=null;for(let n=0;n<this._data.value.length;n++)if(t.id.split(".").reduce(((t,e)=>t[e]),this._data.value[n])){e=t.id.split(".").reduce(((t,e)=>t[e]),this._data.value[n]);break}if(null!=e)if("string"==typeof e){let e=new RegExp(/^[\d.,$]+$/);this._data.value.filter((e=>t.id.split(".").reduce(((t,e)=>t[e]),e))).some((n=>!e.test(t.id.split(".").reduce(((t,e)=>t[e]),n))))?1===this.direction?this._data.next(this._data.value.sort(((e,n)=>(t.id.split(".").reduce(((t,e)=>t[e]),e)||"zzzzzz").localeCompare(t.id.split(".").reduce(((t,e)=>t[e]),n)||"zzzzzz")))):this._data.next(this._data.value.sort(((e,n)=>(t.id.split(".").reduce(((t,e)=>t[e]),n)||"AAAAAAA").localeCompare(t.id.split(".").reduce(((t,e)=>t[e]),e)||"AAAAAAA")))):1===this.direction?this._data.next(this._data.value.sort(((e,n)=>(null!==t.id.split(".").reduce(((t,e)=>t[e]),e)?parseFloat(t.id.split(".").reduce(((t,e)=>t[e]),e).replace(/\$/g,"").replace(",","")):999999999999)-(null!==t.id.split(".").reduce(((t,e)=>t[e]),n)?parseFloat(t.id.split(".").reduce(((t,e)=>t[e]),n).replace(/\$/g,"").replace(",","")):999999999999)))):this._data.next(this._data.value.sort(((e,n)=>(null!==t.id.split(".").reduce(((t,e)=>t[e]),n)?parseFloat(t.id.split(".").reduce(((t,e)=>t[e]),n).replace(/\$/g,"").replace(",","")):-999999999999)-(null!==t.id.split(".").reduce(((t,e)=>t[e]),e)?parseFloat(t.id.split(".").reduce(((t,e)=>t[e]),e).replace(/\$/g,"").replace(",","")):-999999999999))))}else"number"==typeof e?1===this.direction?this._data.next(this._data.value.sort(((e,n)=>(null!==t.id.split(".").reduce(((t,e)=>t[e]),e)?t.id.split(".").reduce(((t,e)=>t[e]),e):999999999999)-(null!==t.id.split(".").reduce(((t,e)=>t[e]),n)?t.id.split(".").reduce(((t,e)=>t[e]),n):999999999999)))):this._data.next(this._data.value.sort(((e,n)=>(null!==t.id.split(".").reduce(((t,e)=>t[e]),n)?t.id.split(".").reduce(((t,e)=>t[e]),n):-999999999999)-(null!==t.id.split(".").reduce(((t,e)=>t[e]),e)?t.id.split(".").reduce(((t,e)=>t[e]),e):-999999999999)))):e instanceof Date?1===this.direction?this._data.next(this._data.value.sort(((e,n)=>(t.id.split(".").reduce(((t,e)=>t[e]),e)?t.id.split(".").reduce(((t,e)=>t[e]),e).getTime():0)-(t.id.split(".").reduce(((t,e)=>t[e]),n)?t.id.split(".").reduce(((t,e)=>t[e]),n).getTime():0)))):this._data.next(this._data.value.sort(((e,n)=>(t.id.split(".").reduce(((t,e)=>t[e]),n)?t.id.split(".").reduce(((t,e)=>t[e]),n).getTime():0)-(t.id.split(".").reduce(((t,e)=>t[e]),e)?t.id.split(".").reduce(((t,e)=>t[e]),e).getTime():0)))):"boolean"==typeof e?this._data.next(this._data.value.sort(((e,n)=>t.id.split(".").reduce(((t,e)=>t[e]),e)===t.id.split(".").reduce(((t,e)=>t[e]),n)?0:t.id.split(".").reduce(((t,e)=>t[e]),e)?1===this.direction?-1:1:1===this.direction?1:-1))):this._data.next(this._data.value.sort(((e,n)=>t.id.split(".").reduce(((t,e)=>t[e]),e)===t.id.split(".").reduce(((t,e)=>t[e]),n)?0:t.id.split(".").reduce(((t,e)=>t[e]),e)>t.id.split(".").reduce(((t,e)=>t[e]),n)?-1:1)))}}getData(){return this._data.asObservable()}setData(t){this._data.next(t)}ngOnInit(){}ngOnChanges(){this._stateChanges.next()}ngOnDestroy(){this._stateChanges.complete()}}SortTableDirective.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SortTableDirective,deps:[{token:i0.ElementRef}],target:i0.ɵɵFactoryTarget.Directive}),SortTableDirective.ɵdir=i0.ɵɵngDeclareDirective({minVersion:"14.0.0",version:"15.2.10",type:SortTableDirective,selector:"[sortable]",inputs:{active:["sortActive","active"],start:["sortStart","start"],disabled:["sortDisabled","disabled"],tableFixed:"tableFixed",headerFixed:"headerFixed",secondaryColor:"secondaryColor",tertiaryColor:"tertiaryColor"},outputs:{sortChange:"sortChange"},usesOnChanges:!0,ngImport:i0}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SortTableDirective,decorators:[{type:Directive,args:[{selector:"[sortable]"}]}],ctorParameters:function(){return[{type:i0.ElementRef}]},propDecorators:{active:[{type:Input,args:["sortActive"]}],start:[{type:Input,args:["sortStart"]}],disabled:[{type:Input,args:["sortDisabled"]}],tableFixed:[{type:Input}],headerFixed:[{type:Input}],secondaryColor:[{type:Input}],tertiaryColor:[{type:Input}],sortChange:[{type:Output,args:["sortChange"]}]}});class SortTableHeaderComponent{constructor(t,e){if(this._sort=e,this._arrowDirection=0,this.arrowPosition="after",!e)throw Error("SortTableSortHeader must be placed within a parent element with the CTSortable directive.");this._rerenderSubscription=merge(e.sortChange,e._stateChanges).subscribe((()=>{this._isSorted()&&this._updateArrowDirection(),t.markForCheck()}))}ngOnInit(){this._sort.register(this)}ngOnDestroy(){this._sort.deregister(this),this._rerenderSubscription.unsubscribe()}_isSorted(){return this._sort.active===this.id}_getSortDirection(){return this._sort.direction}_updateArrowDirection(){this._arrowDirection=this._isSorted()?this._sort.direction:this.start||this._sort.start}_isDisabled(){return this._sort.disabled||this.disabled}onClick(t){this._isDisabled()||this._sort.sort(this)}}SortTableHeaderComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SortTableHeaderComponent,deps:[{token:i0.ChangeDetectorRef},{token:SortTableDirective,optional:!0}],target:i0.ɵɵFactoryTarget.Component}),SortTableHeaderComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:SortTableHeaderComponent,selector:"[sort-table-header]",inputs:{disabled:"disabled",id:["sort-table-header","id"],arrowPosition:"arrowPosition",start:"start"},ngImport:i0,template:'<div (click)="onClick($event)">\n <ng-content></ng-content>\n <i *ngIf="_isSorted() && _getSortDirection() === -1" class="fa fa-arrow-down" style="margin-left: 10px; font-size: 14px"></i>\n <i *ngIf="_isSorted() && _getSortDirection() === 1" class="fa fa-arrow-up" style="margin-left: 10px; font-size: 14px"></i>\n</div>',dependencies:[{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]}],changeDetection:i0.ChangeDetectionStrategy.OnPush,encapsulation:i0.ViewEncapsulation.None}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SortTableHeaderComponent,decorators:[{type:Component,args:[{selector:"[sort-table-header]",encapsulation:ViewEncapsulation.None,changeDetection:ChangeDetectionStrategy.OnPush,inputs:["disabled"],template:'<div (click)="onClick($event)">\n <ng-content></ng-content>\n <i *ngIf="_isSorted() && _getSortDirection() === -1" class="fa fa-arrow-down" style="margin-left: 10px; font-size: 14px"></i>\n <i *ngIf="_isSorted() && _getSortDirection() === 1" class="fa fa-arrow-up" style="margin-left: 10px; font-size: 14px"></i>\n</div>'}]}],ctorParameters:function(){return[{type:i0.ChangeDetectorRef},{type:SortTableDirective,decorators:[{type:Optional}]}]},propDecorators:{id:[{type:Input,args:["sort-table-header"]}],arrowPosition:[{type:Input}],start:[{type:Input}],disabled:[{type:Input}]}});class SortTableNgForComponent{constructor(t){if(this._sort=t,this.data=[],this.dataChanged=new EventEmitter,this.sortSub$=null,this.sortedData=[],!t)throw Error("SortTableNgFor must be placed within a parent element with the CTSortable directive.")}ngOnInit(){this.sortSub$=this._sort.getData().subscribe((t=>{this.sortedData=t,this.dataChanged.emit(this.sortedData)}))}ngOnChanges(){this._sort.setData(this.data)}ngOnDestroy(){this.sortSub$.unsubscribe()}}SortTableNgForComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SortTableNgForComponent,deps:[{token:SortTableDirective,optional:!0}],target:i0.ɵɵFactoryTarget.Component}),SortTableNgForComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:SortTableNgForComponent,selector:"[sort-table-ngfor]",inputs:{data:["sort-table-ngfor","data"]},outputs:{dataChanged:"dataChanged"},usesOnChanges:!0,ngImport:i0,template:"<ng-content></ng-content>",isInline:!0}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SortTableNgForComponent,decorators:[{type:Component,args:[{selector:"[sort-table-ngfor]",template:"<ng-content></ng-content>"}]}],ctorParameters:function(){return[{type:SortTableDirective,decorators:[{type:Optional}]}]},propDecorators:{data:[{type:Input,args:["sort-table-ngfor"]}],dataChanged:[{type:Output}]}});class SortTableModule{}SortTableModule.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SortTableModule,deps:[],target:i0.ɵɵFactoryTarget.NgModule}),SortTableModule.ɵmod=i0.ɵɵngDeclareNgModule({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:SortTableModule,declarations:[SortTableDirective,SortTableHeaderComponent,SortTableNgForComponent],imports:[FormsModule,CommonModule],exports:[SortTableDirective,SortTableHeaderComponent,SortTableNgForComponent]}),SortTableModule.ɵinj=i0.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SortTableModule,imports:[FormsModule,CommonModule]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SortTableModule,decorators:[{type:NgModule,args:[{imports:[FormsModule,CommonModule],exports:[SortTableDirective,SortTableHeaderComponent,SortTableNgForComponent],declarations:[SortTableDirective,SortTableHeaderComponent,SortTableNgForComponent]}]}]});class SharedModule{}SharedModule.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SharedModule,deps:[],target:i0.ɵɵFactoryTarget.NgModule}),SharedModule.ɵmod=i0.ɵɵngDeclareNgModule({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:SharedModule,imports:[ReactiveFormsModule,FormsModule,CollapseTableModule,RouterModule,NgbModule,FormButtonModule,ResponsiveButtonGroupModule,PipeModule,UserRoleModule,NgSelectModule,SortTableModule,CommonModule],exports:[ReactiveFormsModule,FormsModule,CollapseTableModule,RouterModule,NgbModule,FormButtonModule,ResponsiveButtonGroupModule,PipeModule,UserRoleModule,NgSelectModule,SortTableModule,CommonModule]}),SharedModule.ɵinj=i0.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SharedModule,imports:[ReactiveFormsModule,FormsModule,CollapseTableModule,RouterModule,NgbModule,FormButtonModule,ResponsiveButtonGroupModule,PipeModule,UserRoleModule,NgSelectModule,SortTableModule,CommonModule,ReactiveFormsModule,FormsModule,CollapseTableModule,RouterModule,NgbModule,FormButtonModule,ResponsiveButtonGroupModule,PipeModule,UserRoleModule,NgSelectModule,SortTableModule,CommonModule]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SharedModule,decorators:[{type:NgModule,args:[{imports:[ReactiveFormsModule,FormsModule,CollapseTableModule,RouterModule,NgbModule,FormButtonModule,ResponsiveButtonGroupModule,PipeModule,UserRoleModule,NgSelectModule,SortTableModule,CommonModule],exports:[ReactiveFormsModule,FormsModule,CollapseTableModule,RouterModule,NgbModule,FormButtonModule,ResponsiveButtonGroupModule,PipeModule,UserRoleModule,NgSelectModule,SortTableModule,CommonModule]}]}]});class ForgotPasswordComponent extends BaseComponent{constructor(t,e,n,o){super(e),this._route=t,this._services=e,this._http=n,this._ds=o,this.serverURL="",this.subscription$=[],this.disableFormButton=!1}ngOnInit(){2!==this._route.snapshot.queryParamMap.keys.length?(this._ds.error("Invalid params"),this._services._router.navigateByUrl("/home")):(this.serverURL=this._route.snapshot.queryParamMap.keys[0],this.token=this._route.snapshot.queryParamMap.keys[1]),this.form=this._services._fb.group({password:["",[Validators.compose([Validators.required,Validators.minLength(6)])]],confirm_password:["",[Validators.compose([Validators.required,Validators.minLength(6)])]]},{validator:this._services._vs.matchPassword}),this._http.post(this.serverURL+"/userWithForgotPasswordToken",{forgotPasswordToken:this.token}).toPromise().then((t=>{t.error?(this._ds.error("Invalid token"),this._services._router.navigateByUrl("/home")):this.user=t.result.user}),(t=>{this._ds.error("Invalid token"),this._services._router.navigateByUrl("/home")}))}ngOnDestroy(){this.subscription$.forEach((t=>{t.unsubscribe()}))}submit(){this.disableFormButton=!0,this._http.post(this.serverURL+"/setUserWithForgotPasswordToken",{forgotPasswordToken:this.token,password:this.form.value.password}).toPromise().then((t=>{t.error?(this._ds.error("Could not update user"),this._services._router.navigateByUrl("/home")):(this._services._alert.setAlert("success","User has been updated, please log in"),this._services._router.navigateByUrl("/home"))}),(t=>{this._ds.error("Invalid token"),this._services._router.navigateByUrl("/home")})),this._services._router.navigateByUrl("/home")}}ForgotPasswordComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ForgotPasswordComponent,deps:[{token:i1$3.ActivatedRoute},{token:ProviderService},{token:i4.HttpClient},{token:DialogService}],target:i0.ɵɵFactoryTarget.Component}),ForgotPasswordComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:ForgotPasswordComponent,selector:"ng-component",providers:[ProviderService],usesInheritance:!0,ngImport:i0,template:'<style>\n input {\n width: 100%;\n }\n</style>\n\n<div *ngIf="user">\n\t<h4>Welcome to ResolveIO.<br><br>Your username will be {{user.username}}. Please create a password for your account.</h4>\n\t<form [formGroup]="form" novalidate (ngSubmit)="submit()">\n\t\t<div class="row">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<div class="form-group">\n\t\t\t\t\t<label class="form-control-label">Username</label>\n\t\t\t\t\t<div>{{user.username}}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="row">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<div class="form-group">\n\t\t\t\t\t<label class="form-control-label">Password</label>\n\t\t\t\t\t<em *ngIf="form.controls.password.hasError(\'required\')">- Required</em>\n\t\t\t\t\t<em *ngIf="form.controls.password.hasError(\'minlength\') || form.hasError(\'matchPassword\')">- Invalid</em>\n\t\t\t\t\t<input type="text" [ngClass]="[\'form-control\', (form.controls.password.valid && form.valid) ? \'is-valid\' : \'is-invalid\']" formControlName="password" type="password" autocomplete="new-password">\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="form.controls.password.hasError(\'required\')">Password is required</div>\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="form.controls.password.hasError(\'minlength\')">Password must be 6 or more characters</div>\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="!form.controls.password.hasError(\'minlength\') && form.hasError(\'matchPassword\')" align="start">Passwords do not match</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="row">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<div class="form-group">\n\t\t\t\t\t<label class="form-control-label">Confirm Password</label>\n\t\t\t\t\t<em *ngIf="form.controls.confirm_password.hasError(\'required\')">- Required</em>\n\t\t\t\t\t<em *ngIf="form.hasError(\'matchPassword\')">- Invalid</em>\n\t\t\t\t\t<input type="text" [ngClass]="[\'form-control\', form.controls.confirm_password.valid ? \'is-valid\' : \'is-invalid\']" formControlName="confirm_password" type="password" autocomplete="new-password">\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="form.controls.confirm_password.hasError(\'required\')">Password is required</div>\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="form.hasError(\'matchPassword\')" align="start">Passwords do not match</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="row" style="margin-top: 30px;">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<form-button [form]="form" [disabled]="disableFormButton"></form-button>\n\t\t\t</div>\n\t\t</div>\n\t</form>\n</div>',styles:["\n input {\n width: 100%;\n }\n"],dependencies:[{kind:"directive",type:i2.ɵNgNoValidate,selector:"form:not([ngNoForm]):not([ngNativeValidate])"},{kind:"directive",type:i2.DefaultValueAccessor,selector:"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]"},{kind:"directive",type:i2.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i2.NgControlStatusGroup,selector:"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]"},{kind:"directive",type:i2.FormGroupDirective,selector:"[formGroup]",inputs:["formGroup"],outputs:["ngSubmit"],exportAs:["ngForm"]},{kind:"directive",type:i2.FormControlName,selector:"[formControlName]",inputs:["formControlName","disabled","ngModel"],outputs:["ngModelChange"]},{kind:"component",type:FormButtonComponent,selector:"form-button",inputs:["form","disabled","type"]},{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ForgotPasswordComponent,decorators:[{type:Component,args:[{providers:[ProviderService],template:'<style>\n input {\n width: 100%;\n }\n</style>\n\n<div *ngIf="user">\n\t<h4>Welcome to ResolveIO.<br><br>Your username will be {{user.username}}. Please create a password for your account.</h4>\n\t<form [formGroup]="form" novalidate (ngSubmit)="submit()">\n\t\t<div class="row">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<div class="form-group">\n\t\t\t\t\t<label class="form-control-label">Username</label>\n\t\t\t\t\t<div>{{user.username}}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="row">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<div class="form-group">\n\t\t\t\t\t<label class="form-control-label">Password</label>\n\t\t\t\t\t<em *ngIf="form.controls.password.hasError(\'required\')">- Required</em>\n\t\t\t\t\t<em *ngIf="form.controls.password.hasError(\'minlength\') || form.hasError(\'matchPassword\')">- Invalid</em>\n\t\t\t\t\t<input type="text" [ngClass]="[\'form-control\', (form.controls.password.valid && form.valid) ? \'is-valid\' : \'is-invalid\']" formControlName="password" type="password" autocomplete="new-password">\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="form.controls.password.hasError(\'required\')">Password is required</div>\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="form.controls.password.hasError(\'minlength\')">Password must be 6 or more characters</div>\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="!form.controls.password.hasError(\'minlength\') && form.hasError(\'matchPassword\')" align="start">Passwords do not match</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="row">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<div class="form-group">\n\t\t\t\t\t<label class="form-control-label">Confirm Password</label>\n\t\t\t\t\t<em *ngIf="form.controls.confirm_password.hasError(\'required\')">- Required</em>\n\t\t\t\t\t<em *ngIf="form.hasError(\'matchPassword\')">- Invalid</em>\n\t\t\t\t\t<input type="text" [ngClass]="[\'form-control\', form.controls.confirm_password.valid ? \'is-valid\' : \'is-invalid\']" formControlName="confirm_password" type="password" autocomplete="new-password">\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="form.controls.confirm_password.hasError(\'required\')">Password is required</div>\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="form.hasError(\'matchPassword\')" align="start">Passwords do not match</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="row" style="margin-top: 30px;">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<form-button [form]="form" [disabled]="disableFormButton"></form-button>\n\t\t\t</div>\n\t\t</div>\n\t</form>\n</div>'}]}],ctorParameters:function(){return[{type:i1$3.ActivatedRoute},{type:ProviderService},{type:i4.HttpClient},{type:DialogService}]}});class EnrollComponent extends BaseComponent{constructor(t,e,n,o){super(e),this._route=t,this._services=e,this._http=n,this._ds=o,this.serverURL="",this.subscription$=[],this.disableFormButton=!1}ngOnInit(){2!==this._route.snapshot.queryParamMap.keys.length?(this._ds.error("Invalid params"),this._services._router.navigateByUrl("/home")):(this.serverURL=this._route.snapshot.queryParamMap.keys[0],this.token=this._route.snapshot.queryParamMap.keys[1]),this.form=this._services._fb.group({password:["",[Validators.compose([Validators.required,Validators.minLength(6)])]],confirm_password:["",[Validators.compose([Validators.required,Validators.minLength(6)])]]},{validator:this._services._vs.matchPassword}),this._http.post(this.serverURL+"/userWithEnrollmentToken",{enrollmentToken:this.token}).toPromise().then((t=>{t.error?(this._ds.error("Invalid token"),this._services._router.navigateByUrl("/home")):this.user=t.result.user}),(t=>{this._ds.error("Invalid token"),this._services._router.navigateByUrl("/home")}))}ngOnDestroy(){this.subscription$.forEach((t=>{t.unsubscribe()}))}submit(){this.disableFormButton=!0,this._http.post(this.serverURL+"/setUserWithEnrollmentToken",{enrollmentToken:this.token,password:this.form.value.password}).toPromise().then((t=>{t.error?(this._ds.error("Could not update user"),this._services._router.navigateByUrl("/home")):(this._services._alert.setAlert("success","User has been updated, please log in"),this._services._router.navigateByUrl("/home"))}),(t=>{this._ds.error("Invalid token"),this._services._router.navigateByUrl("/home")}))}}EnrollComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:EnrollComponent,deps:[{token:i1$3.ActivatedRoute},{token:ProviderService},{token:i4.HttpClient},{token:DialogService}],target:i0.ɵɵFactoryTarget.Component}),EnrollComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:EnrollComponent,selector:"ng-component",providers:[ProviderService],usesInheritance:!0,ngImport:i0,template:'<style>\n input {\n width: 100%;\n }\n</style>\n\n<div *ngIf="user">\n\t<h4>Welcome to ResolveIO.<br><br>Your username will be {{user.username}}. Please create a password for your account.</h4>\n\t<form [formGroup]="form" novalidate (ngSubmit)="submit()">\n\t\t<div class="row">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<div class="form-group">\n\t\t\t\t\t<label class="form-control-label">Username</label>\n\t\t\t\t\t<div>{{user.username}}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="row">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<div class="form-group">\n\t\t\t\t\t<label class="form-control-label">Password</label>\n\t\t\t\t\t<em *ngIf="form.controls.password.hasError(\'required\')">- Required</em>\n\t\t\t\t\t<em *ngIf="form.controls.password.hasError(\'minlength\') || form.hasError(\'matchPassword\')">- Invalid</em>\n\t\t\t\t\t<input type="text" [ngClass]="[\'form-control\', form.controls.password.valid && !form.hasError(\'matchPassword\') ? \'is-valid\' : \'is-invalid\']" formControlName="password" type="password" autocomplete="new-password">\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="form.controls.password.hasError(\'required\')">Password is required</div>\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="form.controls.password.hasError(\'minlength\')">Password must be 6 or more characters</div>\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="!form.controls.password.hasError(\'minlength\') && form.hasError(\'matchPassword\')" align="start">Passwords do not match</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="row">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<div class="form-group">\n\t\t\t\t\t<label class="form-control-label">Confirm Password</label>\n\t\t\t\t\t<em *ngIf="form.controls.confirm_password.hasError(\'required\')">- Required</em>\n\t\t\t\t\t<em *ngIf="form.hasError(\'matchPassword\')">- Invalid</em>\n\t\t\t\t\t<input type="text" [ngClass]="[\'form-control\', form.controls.confirm_password.valid && !form.hasError(\'matchPassword\') ? \'is-valid\' : \'is-invalid\']" formControlName="confirm_password" type="password" autocomplete="new-password">\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="form.controls.confirm_password.hasError(\'required\')">Password is required</div>\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="form.hasError(\'matchPassword\')" align="start">Passwords do not match</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="row" style="margin-top: 30px;">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<form-button [form]="form" [disabled]="disableFormButton"></form-button>\n\t\t\t</div>\n\t\t</div>\n\t</form>\n</div>',styles:["\n input {\n width: 100%;\n }\n"],dependencies:[{kind:"directive",type:i2.ɵNgNoValidate,selector:"form:not([ngNoForm]):not([ngNativeValidate])"},{kind:"directive",type:i2.DefaultValueAccessor,selector:"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]"},{kind:"directive",type:i2.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i2.NgControlStatusGroup,selector:"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]"},{kind:"directive",type:i2.FormGroupDirective,selector:"[formGroup]",inputs:["formGroup"],outputs:["ngSubmit"],exportAs:["ngForm"]},{kind:"directive",type:i2.FormControlName,selector:"[formControlName]",inputs:["formControlName","disabled","ngModel"],outputs:["ngModelChange"]},{kind:"component",type:FormButtonComponent,selector:"form-button",inputs:["form","disabled","type"]},{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:EnrollComponent,decorators:[{type:Component,args:[{providers:[ProviderService],template:'<style>\n input {\n width: 100%;\n }\n</style>\n\n<div *ngIf="user">\n\t<h4>Welcome to ResolveIO.<br><br>Your username will be {{user.username}}. Please create a password for your account.</h4>\n\t<form [formGroup]="form" novalidate (ngSubmit)="submit()">\n\t\t<div class="row">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<div class="form-group">\n\t\t\t\t\t<label class="form-control-label">Username</label>\n\t\t\t\t\t<div>{{user.username}}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="row">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<div class="form-group">\n\t\t\t\t\t<label class="form-control-label">Password</label>\n\t\t\t\t\t<em *ngIf="form.controls.password.hasError(\'required\')">- Required</em>\n\t\t\t\t\t<em *ngIf="form.controls.password.hasError(\'minlength\') || form.hasError(\'matchPassword\')">- Invalid</em>\n\t\t\t\t\t<input type="text" [ngClass]="[\'form-control\', form.controls.password.valid && !form.hasError(\'matchPassword\') ? \'is-valid\' : \'is-invalid\']" formControlName="password" type="password" autocomplete="new-password">\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="form.controls.password.hasError(\'required\')">Password is required</div>\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="form.controls.password.hasError(\'minlength\')">Password must be 6 or more characters</div>\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="!form.controls.password.hasError(\'minlength\') && form.hasError(\'matchPassword\')" align="start">Passwords do not match</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="row">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<div class="form-group">\n\t\t\t\t\t<label class="form-control-label">Confirm Password</label>\n\t\t\t\t\t<em *ngIf="form.controls.confirm_password.hasError(\'required\')">- Required</em>\n\t\t\t\t\t<em *ngIf="form.hasError(\'matchPassword\')">- Invalid</em>\n\t\t\t\t\t<input type="text" [ngClass]="[\'form-control\', form.controls.confirm_password.valid && !form.hasError(\'matchPassword\') ? \'is-valid\' : \'is-invalid\']" formControlName="confirm_password" type="password" autocomplete="new-password">\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="form.controls.confirm_password.hasError(\'required\')">Password is required</div>\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="form.hasError(\'matchPassword\')" align="start">Passwords do not match</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="row" style="margin-top: 30px;">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<form-button [form]="form" [disabled]="disableFormButton"></form-button>\n\t\t\t</div>\n\t\t</div>\n\t</form>\n</div>'}]}],ctorParameters:function(){return[{type:i1$3.ActivatedRoute},{type:ProviderService},{type:i4.HttpClient},{type:DialogService}]}});class Auth365Component extends BaseComponent{constructor(t,e,n,o,r,i){super(n),this._app=t,this._route=e,this._services=n,this._http=o,this._ds=r,this._socket=i,this._app.environment.value.MS_id_token?this._services._account.logIn365(this._app.environment.value.MS_id_token).then((()=>{this._services._router.navigateByUrl("/home")}),(()=>{})):this._services._router.navigateByUrl("/home")}}Auth365Component.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:Auth365Component,deps:[{token:CoreService},{token:i1$3.ActivatedRoute},{token:ProviderService},{token:i4.HttpClient},{token:DialogService},{token:SocketManagerService}],target:i0.ɵɵFactoryTarget.Component}),Auth365Component.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:Auth365Component,selector:"ng-component",providers:[ProviderService],usesInheritance:!0,ngImport:i0,template:"<router-outlet></router-outlet>",isInline:!0,dependencies:[{kind:"directive",type:i1$3.RouterOutlet,selector:"router-outlet",inputs:["name"],outputs:["activate","deactivate","attach","detach"],exportAs:["outlet"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:Auth365Component,decorators:[{type:Component,args:[{providers:[ProviderService],template:"<router-outlet></router-outlet>"}]}],ctorParameters:function(){return[{type:CoreService},{type:i1$3.ActivatedRoute},{type:ProviderService},{type:i4.HttpClient},{type:DialogService},{type:SocketManagerService}]}});class UserSettingsService{constructor(){this.selectedUser=new BehaviorSubject("0")}setSelectedUser(t){this.selectedUser.next(t)}}UserSettingsService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:UserSettingsService,deps:[],target:i0.ɵɵFactoryTarget.Injectable}),UserSettingsService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:UserSettingsService}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:UserSettingsService,decorators:[{type:Injectable}],ctorParameters:function(){return[]}});const UserSettingsModulePermission={name:"user-settings",views:[{link:"/user-settings/settings",label:"Settings"}],approval:{type:"user-settings"}};class UserSettingsComponent extends BaseComponent{constructor(t,e){super(e),this._us=t,this._services=e}ngOnInit(){this.selectedUserSettings$=this._us.selectedUser.subscribe((t=>this.selectedUserSettingsChanged(t)))}ngOnDestroy(){this._us.setSelectedUser("0"),this.selectedUserSettings$.unsubscribe()}selectedUserSettingsChanged(t){this.setUserSettingsMenuData()}setUserSettingsMenuData(t,e){let n=[];UserSettingsModulePermission.views.forEach((t=>{if((this._services._account.isUserInView(t.link)||this._services._account.isUserSuperAdmin())&&"/user-settings/settings"===t.link)n.push({link:"/user-settings/settings",params:null,label:"Settings"})})),this.menuData={title:"User Settings",module:"User Settings",description_name:"User: ",description:e?e.fullname:"",tabs:n},this._services._app.setNavbarModuleData(this.menuData)}}UserSettingsComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:UserSettingsComponent,deps:[{token:UserSettingsService},{token:ProviderService}],target:i0.ɵɵFactoryTarget.Component}),UserSettingsComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:UserSettingsComponent,selector:"ng-component",providers:[ProviderService],usesInheritance:!0,ngImport:i0,template:"<router-outlet></router-outlet>",isInline:!0,dependencies:[{kind:"directive",type:i1$3.RouterOutlet,selector:"router-outlet",inputs:["name"],outputs:["activate","deactivate","attach","detach"],exportAs:["outlet"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:UserSettingsComponent,decorators:[{type:Component,args:[{providers:[ProviderService],template:"<router-outlet></router-outlet>"}]}],ctorParameters:function(){return[{type:UserSettingsService},{type:ProviderService}]}});class UsersSettingsComponent extends BaseComponent{constructor(t,e,n,o){super(n),this._aps=t,this._us=e,this._services=n,this._ds=o,this.subscription$=[],this.disableFormButton=!1,this.client="",this.views=[],this.hasSubmit=!1}ngOnInit(){this._us.setSelectedUser("0"),this.client=this._services._app.client.getValue(),this.form=this._services._fb.group({table_color:["#3b3ee3",[Validators.required]],table_font_color:["#ffffff",[Validators.required]],font_size:[12,[Validators.required,this._services._vs.wholeNumbersGreaterThanZero,this._services._vs.maxValue(18),this._services._vs.minValue(8)]],secondary_table_color:["#87ceeb",[Validators.required]],secondary_table_font_color:["#000000",[Validators.required]],tertiary_table_color:["#ff4500",[Validators.required]],tertiary_table_font_color:["#000000",[Validators.required]],collapsable_menu:[!0],entries_per_page:["25",[Validators.required]],warning_color:["#ffc107",[Validators.required]],warning_font_color:["#000000",[Validators.required]],warning_hover_color:["#e0a800",[Validators.required]],success_color:["#28a745",[Validators.required]],success_font_color:["#ffffff",[Validators.required]],success_hover_color:["#218838",[Validators.required]],danger_color:["#dc3545",[Validators.required]],danger_font_color:["#ffffff",[Validators.required]],danger_hover_color:["#c82333",[Validators.required]],info_color:["#17a2b8",[Validators.required]],info_font_color:["#ffffff",[Validators.required]],info_hover_color:["#138496",[Validators.required]],primary_color:["#007bff",[Validators.required]],primary_font_color:["#ffffff",[Validators.required]],primary_hover_color:["#0069d9",[Validators.required]],secondary_color:["#868e96",[Validators.required]],secondary_font_color:["#ffffff",[Validators.required]],secondary_hover_color:["#5a6268",[Validators.required]],routing_preference:["alwaysAsk"],opening_route:["/home"]}),this._services._account.getUser()&&this._services._account.getUser().settings&&(this.form.patchValue(this._services._account.getUser().settings),this._services._account.getUser().roles.groups.forEach((t=>{t.views.forEach((t=>{this.views.some((e=>e.value===t))||this.views.push({value:t,display:toTitleCase(t.replace("/","").replace(new RegExp("/","g")," - "))})}))}))),document.documentElement.style.setProperty("--primary-table-color",this.form.controls.table_color.value),document.documentElement.style.setProperty("--primary-table-font-color",this.form.controls.table_font_color.value),document.documentElement.style.setProperty("--font-size",this.form.controls.font_size.value+"px"),document.documentElement.style.setProperty("--secondary-table-color",this.form.controls.secondary_table_color.value),document.documentElement.style.setProperty("--secondary-table-font-color",this.form.controls.secondary_table_font_color.value),document.documentElement.style.setProperty("--tertiary-table-color",this.form.controls.tertiary_table_color.value),document.documentElement.style.setProperty("--tertiary-table-font-color",this.form.controls.tertiary_table_font_color.value),document.documentElement.style.setProperty("--warning-color",this.form.controls.warning_color.value),document.documentElement.style.setProperty("--warning-font-color",this.form.controls.warning_font_color.value),document.documentElement.style.setProperty("--warning-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.warning_color.value,.5)),document.documentElement.style.setProperty("--warning-hover-color",this.form.controls.warning_hover_color.value),document.documentElement.style.setProperty("--success-color",this.form.controls.success_color.value),document.documentElement.style.setProperty("--success-font-color",this.form.controls.success_font_color.value),document.documentElement.style.setProperty("--success-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.success_color.value,.5)),document.documentElement.style.setProperty("--success-hover-color",this.form.controls.success_hover_color.value),document.documentElement.style.setProperty("--danger-color",this.form.controls.danger_color.value),document.documentElement.style.setProperty("--danger-font-color",this.form.controls.danger_font_color.value),document.documentElement.style.setProperty("--danger-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.danger_color.value,.5)),document.documentElement.style.setProperty("--danger-hover-color",this.form.controls.danger_hover_color.value),document.documentElement.style.setProperty("--info-color",this.form.controls.info_color.value),document.documentElement.style.setProperty("--info-font-color",this.form.controls.info_font_color.value),document.documentElement.style.setProperty("--info-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.info_color.value,.5)),document.documentElement.style.setProperty("--info-hover-color",this.form.controls.info_hover_color.value),document.documentElement.style.setProperty("--primary-color",this.form.controls.primary_color.value),document.documentElement.style.setProperty("--primary-font-color",this.form.controls.primary_font_color.value),document.documentElement.style.setProperty("--primary-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.primary_color.value,.5)),document.documentElement.style.setProperty("--primary-hover-color",this.form.controls.primary_hover_color.value),document.documentElement.style.setProperty("--secondary-color",this.form.controls.secondary_color.value),document.documentElement.style.setProperty("--secondary-font-color",this.form.controls.secondary_font_color.value),document.documentElement.style.setProperty("--secondary-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.secondary_color.value,.5)),document.documentElement.style.setProperty("--secondary-hover-color",this.form.controls.secondary_hover_color.value),this.subscription$.push(this._services._account.user.subscribe((t=>{this.user=t})))}ngOnDestroy(){this.subscription$.forEach((t=>{t.unsubscribe()})),this.hasSubmit||this.submitForm(this.form)}changePrimaryColor(){document.documentElement.style.setProperty("--primary-table-color",this.form.controls.table_color.value)}changePrimaryFontColor(){document.documentElement.style.setProperty("--primary-table-font-color",this.form.controls.table_font_color.value)}changePrimaryFontSize(){document.documentElement.style.setProperty("--font-size",this.form.controls.font_size.value+"px")}changeSecondaryColor(){document.documentElement.style.setProperty("--secondary-table-color",this.form.controls.secondary_table_color.value)}changeSecondaryFontColor(){document.documentElement.style.setProperty("--secondary-table-font-color",this.form.controls.secondary_table_font_color.value)}changeTertiaryColor(){document.documentElement.style.setProperty("--tertiary-table-color",this.form.controls.tertiary_table_color.value)}changeTertiaryFontColor(){document.documentElement.style.setProperty("--tertiary-table-font-color",this.form.controls.tertiary_table_font_color.value)}changeWarningColor(){document.documentElement.style.setProperty("--warning-color",this.form.controls.warning_color.value),document.documentElement.style.setProperty("--warning-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.warning_color.value,.5))}changeWarningHoverColor(){document.documentElement.style.setProperty("--warning-hover-color",this.form.controls.warning_hover_color.value)}changeWarningFontColor(){document.documentElement.style.setProperty("--warning-font-color",this.form.controls.warning_font_color.value)}changeSuccessColor(){document.documentElement.style.setProperty("--success-color",this.form.controls.success_color.value),document.documentElement.style.setProperty("--success-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.success_color.value,.5))}changeSuccessHoverColor(){document.documentElement.style.setProperty("--success-hover-color",this.form.controls.success_hover_color.value)}changeSuccessFontColor(){document.documentElement.style.setProperty("--success-font-color",this.form.controls.success_font_color.value)}changeDangerColor(){document.documentElement.style.setProperty("--danger-color",this.form.controls.danger_color.value),document.documentElement.style.setProperty("--danger-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.danger_color.value,.5))}changeDangerHoverColor(){document.documentElement.style.setProperty("--danger-hover-color",this.form.controls.danger_hover_color.value)}changeDangerFontColor(){document.documentElement.style.setProperty("--danger-font-color",this.form.controls.danger_font_color.value)}changeInfoColor(){document.documentElement.style.setProperty("--info-color",this.form.controls.info_color.value),document.documentElement.style.setProperty("--info-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.info_color.value,.5))}changeInfoHoverColor(){document.documentElement.style.setProperty("--info-hover-color",this.form.controls.info_hover_color.value)}changeInfoFontColor(){document.documentElement.style.setProperty("--info-font-color",this.form.controls.info_font_color.value)}changePrimaryButtonColor(){document.documentElement.style.setProperty("--primary-color",this.form.controls.primary_color.value),document.documentElement.style.setProperty("--primary-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.primary_color.value,.5))}changePrimaryHoverColor(){document.documentElement.style.setProperty("--primary-hover-color",this.form.controls.primary_hover_color.value)}changePrimaryButtonFontColor(){document.documentElement.style.setProperty("--primary-font-color",this.form.controls.primary_font_color.value)}changeSecondaryButtonColor(){document.documentElement.style.setProperty("--secondary-color",this.form.controls.secondary_color.value),document.documentElement.style.setProperty("--secondary-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.secondary_color.value,.5))}changeSecondaryHoverColor(){document.documentElement.style.setProperty("--secondary-hover-color",this.form.controls.secondary_hover_color.value)}changeSecondaryButtonFontColor(){document.documentElement.style.setProperty("--secondary-font-color",this.form.controls.secondary_font_color.value)}reset(){this.form.controls.table_color.setValue("#3b3ee3"),this.form.controls.table_font_color.setValue("#ffffff"),this.form.controls.font_size.setValue(12),this.form.controls.secondary_table_color.setValue("#87ceeb"),this.form.controls.secondary_table_font_color.setValue("#000000"),this.form.controls.tertiary_table_color.setValue("#ff4500"),this.form.controls.tertiary_table_font_color.setValue("#000000"),this.form.controls.collapsable_menu.setValue(!0),this.form.controls.entries_per_page.setValue("25"),this.form.controls.warning_color.setValue("#ffc107"),this.form.controls.warning_font_color.setValue("#000000"),this.form.controls.warning_hover_color.setValue("#e0a800"),this.form.controls.success_color.setValue("#28a745"),this.form.controls.success_font_color.setValue("#ffffff"),this.form.controls.success_hover_color.setValue("#218838"),this.form.controls.danger_color.setValue("#dc3545"),this.form.controls.danger_font_color.setValue("#ffffff"),this.form.controls.danger_hover_color.setValue("#c82333"),this.form.controls.info_color.setValue("#17a2b8"),this.form.controls.info_font_color.setValue("#ffffff"),this.form.controls.info_hover_color.setValue("#138496"),this.form.controls.primary_color.setValue("#007bff"),this.form.controls.primary_font_color.setValue("#ffffff"),this.form.controls.primary_hover_color.setValue("#0069d9"),this.form.controls.secondary_color.setValue("#868e96"),this.form.controls.secondary_font_color.setValue("#ffffff"),this.form.controls.secondary_hover_color.setValue("#5a6268"),document.documentElement.style.setProperty("--primary-table-color",this.form.controls.table_color.value),document.documentElement.style.setProperty("--primary-table-font-color",this.form.controls.table_font_color.value),document.documentElement.style.setProperty("--font-size",this.form.controls.font_size.value+"px"),document.documentElement.style.setProperty("--secondary-table-color",this.form.controls.secondary_table_color.value),document.documentElement.style.setProperty("--secondary-table-font-color",this.form.controls.secondary_table_font_color.value),document.documentElement.style.setProperty("--tertiary-table-color",this.form.controls.tertiary_table_color.value),document.documentElement.style.setProperty("--tertiary-table-font-color",this.form.controls.tertiary_table_font_color.value),document.documentElement.style.setProperty("--warning-color",this.form.controls.warning_color.value),document.documentElement.style.setProperty("--warning-font-color",this.form.controls.warning_font_color.value),document.documentElement.style.setProperty("--warning-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.warning_color.value,.5)),document.documentElement.style.setProperty("--warning-hover-color",this.form.controls.warning_hover_color.value),document.documentElement.style.setProperty("--success-color",this.form.controls.success_color.value),document.documentElement.style.setProperty("--success-font-color",this.form.controls.success_font_color.value),document.documentElement.style.setProperty("--success-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.success_color.value,.5)),document.documentElement.style.setProperty("--success-hover-color",this.form.controls.success_hover_color.value),document.documentElement.style.setProperty("--danger-color",this.form.controls.danger_color.value),document.documentElement.style.setProperty("--danger-font-color",this.form.controls.danger_font_color.value),document.documentElement.style.setProperty("--danger-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.danger_color.value,.5)),document.documentElement.style.setProperty("--danger-hover-color",this.form.controls.danger_hover_color.value),document.documentElement.style.setProperty("--info-color",this.form.controls.info_color.value),document.documentElement.style.setProperty("--info-font-color",this.form.controls.info_font_color.value),document.documentElement.style.setProperty("--info-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.info_color.value,.5)),document.documentElement.style.setProperty("--info-hover-color",this.form.controls.info_hover_color.value),document.documentElement.style.setProperty("--primary-color",this.form.controls.primary_color.value),document.documentElement.style.setProperty("--primary-font-color",this.form.controls.primary_font_color.value),document.documentElement.style.setProperty("--primary-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.primary_color.value,.5)),document.documentElement.style.setProperty("--primary-hover-color",this.form.controls.primary_hover_color.value),document.documentElement.style.setProperty("--secondary-color",this.form.controls.secondary_color.value),document.documentElement.style.setProperty("--secondary-font-color",this.form.controls.secondary_font_color.value),document.documentElement.style.setProperty("--secondary-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.secondary_color.value,.5)),document.documentElement.style.setProperty("--secondary-hover-color",this.form.controls.secondary_hover_color.value)}submitForm(t){this.hasSubmit=!0,this._services._socket.call("updateDocumentProps","users",this._services._account.getUser()._id,[{prop:"settings",data:this.form.value}],this._services._account.getUser().__v,((t,e)=>{e?this._services._alert.setAlert("success","Settings have been updated"):(this._ds.error("Could not update settings"),this._services._socket.call("insertErrorLog","user settings - update user",[this._services._account.getUser(),t]))}))}}function hexToRGB(t,e){let n=parseInt(t.slice(1,3),16),o=parseInt(t.slice(3,5),16),r=parseInt(t.slice(5,7),16);return e?"rgba("+n+", "+o+", "+r+", "+e+")":"rgb("+n+", "+o+", "+r+")"}UsersSettingsComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:UsersSettingsComponent,deps:[{token:AuthPermissionService},{token:UserSettingsService},{token:ProviderService},{token:DialogService}],target:i0.ɵɵFactoryTarget.Component}),UsersSettingsComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:UsersSettingsComponent,selector:"ng-component",providers:[ProviderService],usesInheritance:!0,ngImport:i0,template:'<style>\n ::ng-deep :root {\n --primary-table-color: #3b3ee3;\n --primary-table-font-color: #ffffff;\n --font-size: 12px;\n --secondary-table-color: #87ceeb;\n --secondary-table-font-color: #000000;\n --tertiary-table-color: #ff4500;\n --tertiary-table-font-color: #000000;\n --warning-color: #ffc107;\n --warning-font-color: #000000;\n --warning-hover-color: #e0a800;\n --warning-shadow-color: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);\n --success-color: #28a745;\n --success-font-color: #ffffff;\n --success-hover-color: #218838;\n --success-shadow-color: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);\n --danger-color: #dc3545;\n --danger-font-color: #ffffff;\n --danger-hover-color: #c82333;\n --danger-shadow-color: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);\n --info-color: #17a2b8;\n --info-font-color: #ffffff;\n --info-hover-color: #138496;\n --info-shadow-color: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);\n --primary-color: #007bff;\n --primary-font-color: #ffffff;\n --primary-hover-color: #0069d9;\n --primary-shadow-color: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);\n --secondary-color: #868e96;\n --secondary-font-color: #ffffff;\n --secondary-hover-color: #5a6268;\n --secondary-shadow-color: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);\n }\n\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n } \n\n .btn-warning {\n color: var(--warning-font-color);\n background-color: var(--warning-color);\n border-color: var(--warning-color);\n }\n .btn-warning:focus, .btn-warning.focus {\n box-shadow: var(--warning-shadow-color);\n }\n .btn-warning:hover {\n color: var(--warning-font-color);\n background-color: var(--warning-hover-color);\n border-color: var(--warning-hover-color);\n }\n\n .btn-success {\n color: var(--success-font-color);\n background-color: var(--success-color);\n border-color: var(--success-color);\n }\n .btn-success:focus, .btn-success.focus {\n box-shadow: var(--success-shadow-color);\n }\n .btn-success:hover {\n color: var(--success-font-color);\n background-color: var(--success-hover-color);\n border-color: var(--success-hover-color);\n }\n\n .btn-danger {\n color: var(--danger-font-color);\n background-color: var(--danger-color);\n border-color: var(--danger-color);\n }\n .btn-danger:focus, .btn-danger.focus {\n box-shadow: var(--danger-shadow-color);\n }\n .btn-danger:hover {\n color: var(--danger-font-color);\n background-color: var(--danger-hover-color);\n border-color: var(--danger-hover-color);\n }\n\n .btn-info {\n color: var(--info-font-color);\n background-color: var(--info-color);\n border-color: var(--info-color);\n }\n .btn-info:focus, .btn-info.focus {\n box-shadow: var(--info-shadow-color);\n }\n .btn-info:hover {\n color: var(--info-font-color);\n background-color: var(--info-hover-color);\n border-color: var(--info-hover-color);\n }\n\n .btn-primary {\n color: var(--primary-font-color);\n background-color: var(--primary-color);\n border-color: var(--primary-color);\n }\n .btn-primary:focus, .btn-primary.focus {\n box-shadow: var(--primary-shadow-color);\n }\n .btn-primary:hover {\n color: var(--primary-font-color);\n background-color: var(--primary-hover-color);\n border-color: var(--primary-hover-color);\n }\n\n .btn-secondary {\n color: var(--secondary-font-color);\n background-color: var(--secondary-color);\n border-color: var(--secondary-color);\n }\n .btn-secondary:focus, .btn-secondary.focus {\n box-shadow: var(--secondary-shadow-color);\n }\n .btn-secondary:hover {\n color: var(--secondary-font-color);\n background-color: var(--secondary-hover-color);\n border-color: var(--secondary-hover-color);\n }\n\n .fa-minus {\n color: black;\n } \n\n :host /deep/ .card .card-body .collapseTable th {\n background-color: var(--primary-table-color);\n color: var(--primary-table-font-color);\n font-size: var(--font-size);\n }\n\n :host /deep/ .card .card-body .collapseTable-sec th {\n background-color: var(--secondary-table-color);\n color: var(--secondary-table-font-color);\n font-size: var(--font-size);\n }\n\n :host /deep/ .card .card-body .collapseTable-tert th {\n background-color: var(--tertiary-table-color);\n color: var(--tertiary-table-font-color);\n font-size: var(--font-size);\n }\n</style>\n\n<div class="col-lg-12">\n <form [formGroup]="form" novalidate (ngSubmit)="submitForm(form)">\n <div class="row">\n <ngb-accordion #acc="ngbAccordion" activeIds="miscOptions, tableOptions, buttonOptions">\n <ngb-panel id="miscOptions">\n <ng-template ngbPanelTitle>\n <div> \n <label class="label-accordion">Misc. Options</label>\n <i *ngIf="!acc.activeIds.includes(\'miscOptions\')" class="fa fa-plus float-end" aria-hidden="true"></i>\n <i *ngIf="acc.activeIds.includes(\'miscOptions\')" class="fa fa-minus float-end" aria-hidden="true"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class="row">\n <div class="col-lg-12">\n <responsive-button-group>\n <button type="button" class="btn btn-success" (click)="reset()">Reset Default Settings</button>\n </responsive-button-group>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-4">\n\t\t\t\t\t\t\t\t<b>Collapsable Menu</b><br>\n\t\t\t\t\t\t\t\t<div class="form-check">\n\t\t\t\t\t\t\t\t\t<label class="form-check-label">\n\t\t\t\t\t\t\t\t\t\t<input class="form-check-input" type="checkbox" hidden formControlName="collapsable_menu">\n\t\t\t\t\t\t\t\t\t\t<i *ngIf="form.controls.collapsable_menu.value" class="fa fa-check" style="color: green; font-size: 24px;" aria-hidden="true"></i>\n\t\t\t\t\t\t\t\t\t\t<i *ngIf="!form.controls.collapsable_menu.value" class="fa fa-times" style="color: red; font-size: 24px;" aria-hidden="true"></i>\n\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t</div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Default Entries Per Page</label>\n <em *ngIf="!form.controls.entries_per_page.valid">- Required</em>\n <select [ngClass]="[\'form-control\', form.controls.entries_per_page.valid ? \'is-valid\' : \'is-invalid\']" formControlName="entries_per_page">\n <option value="25">25</option>\n <option value="50">50</option>\n <option value="100">100</option>\n <option value="250">250</option>\n </select>\n <div class="invalid-feedback" *ngIf="!form.controls.entries_per_page.valid">Entries per page is required</div>\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Font Size (Recommended 11-14)</label>\n <em *ngIf="form.controls.font_size.hasError(\'required\')">- Required</em>\n <em *ngIf="form.controls.font_size.hasError(\'wholeNumbersGreaterThanZero\')">- Invalid</em>\n <em *ngIf="form.controls.font_size.hasError(\'maxValue\')">- Invalid</em>\n <em *ngIf="form.controls.font_size.hasError(\'minValue\')">- Invalid</em>\n <input [ngClass]="[\'form-control\', form.controls.font_size.valid ? \'is-valid\' : \'is-invalid\']" type="number" formControlName="font_size" (keyup)="changePrimaryFontSize()">\n <div class="invalid-feedback" *ngIf="form.controls.font_size.hasError(\'required\')">Font size is required</div>\n <div class="invalid-feedback" *ngIf="form.controls.font_size.hasError(\'wholeNumbersGreaterThanZero\')">Font size is invalid</div>\n <div class="invalid-feedback" *ngIf="form.controls.font_size.hasError(\'maxValue\')">Font size can not exceed 18</div>\n <div class="invalid-feedback" *ngIf="form.controls.font_size.hasError(\'minValue\')">Font size can not be less than 8</div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-6">\n <div class="form-group">\n <label class="form-control-label">Starting Page</label>\n <select [ngClass]="[\'form-control\', form.controls.opening_route.valid ? \'is-valid\' : \'\']" formControlName="opening_route">\n <option value="/home">Home</option>\n <option *ngFor="let view of views" [value]="view.value">{{view.display | titleCase}}</option>\n </select>\n </div>\n </div>\n <div class="col-lg-6" *ngIf="client === \'Ace Completions\'">\n <div class="form-group">\n <label class="form-control-label">Routing Preference</label>\n <select [ngClass]="[\'form-control\', form.controls.routing_preference.valid ? \'is-valid\' : \'\']" formControlName="routing_preference">\n <option value="alwaysAsk">Always Ask</option>\n <option value="sameTab">Same Tab</option>\n <option value="newTab">New Tab</option>\n <option value="newWindow">New Window</option>\n </select>\n </div>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n <ngb-panel id="tableOptions">\n <ng-template ngbPanelTitle>\n <div> \n <label class="label-accordion">Table Options</label>\n <i *ngIf="!acc.activeIds.includes(\'tableOptions\')" class="fa fa-plus float-end" aria-hidden="true"></i>\n <i *ngIf="acc.activeIds.includes(\'tableOptions\')" class="fa fa-minus float-end" aria-hidden="true"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class="row">\n <div class="col-lg-12">\n <collapse-table> \n <thead>\n <tr>\n <th>\n Primary Table\n </th>\n </tr>\n </thead>\n </collapse-table>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-6">\n <dl>\n <dt>Primary Table Background:</dt>\n <dd>\n <div class="form-group">\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.table_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="table_color" (ngModelChange)="changePrimaryColor()">\n </div>\n </dd>\n </dl>\n </div>\n <div class="col-lg-6">\n <dl>\n <dt>Primary Table Font:</dt>\n <dd>\n <div class="form-group">\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.table_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="table_font_color" (ngModelChange)="changePrimaryFontColor()">\n </div>\n </dd>\n </dl>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <collapse-table secondaryColor="true"> \n <thead>\n <tr>\n <th>\n Secondary Table\n </th>\n </tr>\n </thead>\n </collapse-table>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-6">\n <dl>\n <dt>Secondary Table Background:</dt>\n <dd>\n <div class="form-group">\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.secondary_table_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="secondary_table_color" (ngModelChange)="changeSecondaryColor()">\n </div>\n </dd>\n </dl>\n </div>\n <br>\n <div class="col-lg-6">\n <dl>\n <dt>Secondary Table Font:</dt>\n <dd>\n <div class="form-group">\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.secondary_table_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="secondary_table_font_color" (ngModelChange)="changeSecondaryFontColor()">\n </div>\n </dd>\n </dl>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <collapse-table tertiaryColor="true"> \n <thead>\n <tr>\n <th>\n Tertiary Table\n </th>\n </tr>\n </thead>\n </collapse-table>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-6">\n <dl>\n <dt>Tertiary Table Background:</dt>\n <dd>\n <div class="form-group">\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.tertiary_table_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="tertiary_table_color" (ngModelChange)="changeTertiaryColor()">\n </div>\n </dd>\n </dl>\n </div>\n <div class="col-lg-6">\n <dl>\n <dt>Tertiary Table Font:</dt>\n <dd>\n <div class="form-group">\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.tertiary_table_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="tertiary_table_font_color" (ngModelChange)="changeTertiaryFontColor()">\n </div>\n </dd>\n </dl>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n <ngb-panel id="buttonOptions">\n <ng-template ngbPanelTitle>\n <div> \n <label class="label-accordion">Button Options</label>\n <i *ngIf="!acc.activeIds.includes(\'buttonOptions\')" class="fa fa-plus float-end" aria-hidden="true"></i>\n <i *ngIf="acc.activeIds.includes(\'buttonOptions\')" class="fa fa-minus float-end" aria-hidden="true"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class="row">\n <div class="col-lg-12">\n <button type="button" class="btn btn-success">Success</button>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Success Button Background:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.success_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="success_color" (ngModelChange)="changeSuccessColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Success Button Font:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.success_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="success_font_color" (ngModelChange)="changeSuccessFontColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Success Button Hover:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.success_hover_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="success_hover_color" (ngModelChange)="changeSuccessHoverColor()">\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <button type="button" class="btn btn-warning">Warning</button>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Warning Button Background:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.warning_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="warning_color" (ngModelChange)="changeWarningColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Warning Button Font:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.warning_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="warning_font_color" (ngModelChange)="changeWarningFontColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Warning Button Hover:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.warning_hover_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="warning_hover_color" (ngModelChange)="changeWarningHoverColor()">\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <button type="button" class="btn btn-danger">Danger</button>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Danger Button Background:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.danger_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="danger_color" (ngModelChange)="changeDangerColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Danger Button Font:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.danger_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="danger_font_color" (ngModelChange)="changeDangerFontColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Danger Button Hover:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.danger_hover_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="danger_hover_color" (ngModelChange)="changeDangerHoverColor()">\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <button type="button" class="btn btn-info">Info</button>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Info Button Background:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.info_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="info_color" (ngModelChange)="changeInfoColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Info Button Font:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.info_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="info_font_color" (ngModelChange)="changeInfoFontColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Info Button Hover:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.info_hover_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="info_hover_color" (ngModelChange)="changeInfoHoverColor()">\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <button type="button" class="btn btn-primary">Primary</button>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Primary Button Background:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.primary_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="primary_color" (ngModelChange)="changePrimaryButtonColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Primary Button Font:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.primary_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="primary_font_color" (ngModelChange)="changePrimaryButtonFontColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Primary Button Hover:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.primary_hover_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="primary_hover_color" (ngModelChange)="changePrimaryHoverColor()">\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <button type="button" class="btn btn-secondary">Secondary</button>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Secondary Button Background:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.secondary_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="secondary_color" (ngModelChange)="changeSecondaryButtonColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Secondary Button Font:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.secondary_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="secondary_font_color" (ngModelChange)="changeSecondaryButtonFontColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Secondary Button Hover:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.secondary_hover_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="secondary_hover_color" (ngModelChange)="changeSecondaryHoverColor()">\n </div>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n </ngb-accordion>\n </div>\n <div class="row" style="padding-top: 15px;">\n <form-button [form]="form" [disabled]="disableFormButton"></form-button>\n </div>\n </form>\n</div>',styles:["\n ::ng-deep :root {\n --primary-table-color: #3b3ee3;\n --primary-table-font-color: #ffffff;\n --font-size: 12px;\n --secondary-table-color: #87ceeb;\n --secondary-table-font-color: #000000;\n --tertiary-table-color: #ff4500;\n --tertiary-table-font-color: #000000;\n --warning-color: #ffc107;\n --warning-font-color: #000000;\n --warning-hover-color: #e0a800;\n --warning-shadow-color: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);\n --success-color: #28a745;\n --success-font-color: #ffffff;\n --success-hover-color: #218838;\n --success-shadow-color: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);\n --danger-color: #dc3545;\n --danger-font-color: #ffffff;\n --danger-hover-color: #c82333;\n --danger-shadow-color: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);\n --info-color: #17a2b8;\n --info-font-color: #ffffff;\n --info-hover-color: #138496;\n --info-shadow-color: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);\n --primary-color: #007bff;\n --primary-font-color: #ffffff;\n --primary-hover-color: #0069d9;\n --primary-shadow-color: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);\n --secondary-color: #868e96;\n --secondary-font-color: #ffffff;\n --secondary-hover-color: #5a6268;\n --secondary-shadow-color: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);\n }\n\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n } \n\n .btn-warning {\n color: var(--warning-font-color);\n background-color: var(--warning-color);\n border-color: var(--warning-color);\n }\n .btn-warning:focus, .btn-warning.focus {\n box-shadow: var(--warning-shadow-color);\n }\n .btn-warning:hover {\n color: var(--warning-font-color);\n background-color: var(--warning-hover-color);\n border-color: var(--warning-hover-color);\n }\n\n .btn-success {\n color: var(--success-font-color);\n background-color: var(--success-color);\n border-color: var(--success-color);\n }\n .btn-success:focus, .btn-success.focus {\n box-shadow: var(--success-shadow-color);\n }\n .btn-success:hover {\n color: var(--success-font-color);\n background-color: var(--success-hover-color);\n border-color: var(--success-hover-color);\n }\n\n .btn-danger {\n color: var(--danger-font-color);\n background-color: var(--danger-color);\n border-color: var(--danger-color);\n }\n .btn-danger:focus, .btn-danger.focus {\n box-shadow: var(--danger-shadow-color);\n }\n .btn-danger:hover {\n color: var(--danger-font-color);\n background-color: var(--danger-hover-color);\n border-color: var(--danger-hover-color);\n }\n\n .btn-info {\n color: var(--info-font-color);\n background-color: var(--info-color);\n border-color: var(--info-color);\n }\n .btn-info:focus, .btn-info.focus {\n box-shadow: var(--info-shadow-color);\n }\n .btn-info:hover {\n color: var(--info-font-color);\n background-color: var(--info-hover-color);\n border-color: var(--info-hover-color);\n }\n\n .btn-primary {\n color: var(--primary-font-color);\n background-color: var(--primary-color);\n border-color: var(--primary-color);\n }\n .btn-primary:focus, .btn-primary.focus {\n box-shadow: var(--primary-shadow-color);\n }\n .btn-primary:hover {\n color: var(--primary-font-color);\n background-color: var(--primary-hover-color);\n border-color: var(--primary-hover-color);\n }\n\n .btn-secondary {\n color: var(--secondary-font-color);\n background-color: var(--secondary-color);\n border-color: var(--secondary-color);\n }\n .btn-secondary:focus, .btn-secondary.focus {\n box-shadow: var(--secondary-shadow-color);\n }\n .btn-secondary:hover {\n color: var(--secondary-font-color);\n background-color: var(--secondary-hover-color);\n border-color: var(--secondary-hover-color);\n }\n\n .fa-minus {\n color: black;\n } \n\n :host /deep/ .card .card-body .collapseTable th {\n background-color: var(--primary-table-color);\n color: var(--primary-table-font-color);\n font-size: var(--font-size);\n }\n\n :host /deep/ .card .card-body .collapseTable-sec th {\n background-color: var(--secondary-table-color);\n color: var(--secondary-table-font-color);\n font-size: var(--font-size);\n }\n\n :host /deep/ .card .card-body .collapseTable-tert th {\n background-color: var(--tertiary-table-color);\n color: var(--tertiary-table-font-color);\n font-size: var(--font-size);\n }\n"],dependencies:[{kind:"directive",type:i2.ɵNgNoValidate,selector:"form:not([ngNoForm]):not([ngNativeValidate])"},{kind:"directive",type:i2.NgSelectOption,selector:"option",inputs:["ngValue","value"]},{kind:"directive",type:i2.ɵNgSelectMultipleOption,selector:"option",inputs:["ngValue","value"]},{kind:"directive",type:i2.DefaultValueAccessor,selector:"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]"},{kind:"directive",type:i2.NumberValueAccessor,selector:"input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]"},{kind:"directive",type:i2.CheckboxControlValueAccessor,selector:"input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]"},{kind:"directive",type:i2.SelectControlValueAccessor,selector:"select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]",inputs:["compareWith"]},{kind:"directive",type:i2.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i2.NgControlStatusGroup,selector:"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]"},{kind:"directive",type:i2.FormGroupDirective,selector:"[formGroup]",inputs:["formGroup"],outputs:["ngSubmit"],exportAs:["ngForm"]},{kind:"directive",type:i2.FormControlName,selector:"[formControlName]",inputs:["formControlName","disabled","ngModel"],outputs:["ngModelChange"]},{kind:"component",type:CollapseTableComponent,selector:"collapse-table",inputs:["collapseSize","tableFixed","headerFixed","secondaryColor","tertiaryColor"]},{kind:"component",type:i1$4.NgbAccordion,selector:"ngb-accordion",inputs:["animation","activeIds","closeOthers","destroyOnHide","type"],outputs:["panelChange","shown","hidden"],exportAs:["ngbAccordion"]},{kind:"directive",type:i1$4.NgbPanel,selector:"ngb-panel",inputs:["disabled","id","title","type","cardClass"],outputs:["shown","hidden"]},{kind:"directive",type:i1$4.NgbPanelTitle,selector:"ng-template[ngbPanelTitle]"},{kind:"directive",type:i1$4.NgbPanelContent,selector:"ng-template[ngbPanelContent]"},{kind:"component",type:FormButtonComponent,selector:"form-button",inputs:["form","disabled","type"]},{kind:"component",type:ResponsiveButtonGroupComponent,selector:"responsive-button-group",inputs:["collapseSize"]},{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"pipe",type:TitleCaseAndUnderscorePipe,name:"titleCase"}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:UsersSettingsComponent,decorators:[{type:Component,args:[{providers:[ProviderService],template:'<style>\n ::ng-deep :root {\n --primary-table-color: #3b3ee3;\n --primary-table-font-color: #ffffff;\n --font-size: 12px;\n --secondary-table-color: #87ceeb;\n --secondary-table-font-color: #000000;\n --tertiary-table-color: #ff4500;\n --tertiary-table-font-color: #000000;\n --warning-color: #ffc107;\n --warning-font-color: #000000;\n --warning-hover-color: #e0a800;\n --warning-shadow-color: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);\n --success-color: #28a745;\n --success-font-color: #ffffff;\n --success-hover-color: #218838;\n --success-shadow-color: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);\n --danger-color: #dc3545;\n --danger-font-color: #ffffff;\n --danger-hover-color: #c82333;\n --danger-shadow-color: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);\n --info-color: #17a2b8;\n --info-font-color: #ffffff;\n --info-hover-color: #138496;\n --info-shadow-color: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);\n --primary-color: #007bff;\n --primary-font-color: #ffffff;\n --primary-hover-color: #0069d9;\n --primary-shadow-color: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);\n --secondary-color: #868e96;\n --secondary-font-color: #ffffff;\n --secondary-hover-color: #5a6268;\n --secondary-shadow-color: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);\n }\n\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n } \n\n .btn-warning {\n color: var(--warning-font-color);\n background-color: var(--warning-color);\n border-color: var(--warning-color);\n }\n .btn-warning:focus, .btn-warning.focus {\n box-shadow: var(--warning-shadow-color);\n }\n .btn-warning:hover {\n color: var(--warning-font-color);\n background-color: var(--warning-hover-color);\n border-color: var(--warning-hover-color);\n }\n\n .btn-success {\n color: var(--success-font-color);\n background-color: var(--success-color);\n border-color: var(--success-color);\n }\n .btn-success:focus, .btn-success.focus {\n box-shadow: var(--success-shadow-color);\n }\n .btn-success:hover {\n color: var(--success-font-color);\n background-color: var(--success-hover-color);\n border-color: var(--success-hover-color);\n }\n\n .btn-danger {\n color: var(--danger-font-color);\n background-color: var(--danger-color);\n border-color: var(--danger-color);\n }\n .btn-danger:focus, .btn-danger.focus {\n box-shadow: var(--danger-shadow-color);\n }\n .btn-danger:hover {\n color: var(--danger-font-color);\n background-color: var(--danger-hover-color);\n border-color: var(--danger-hover-color);\n }\n\n .btn-info {\n color: var(--info-font-color);\n background-color: var(--info-color);\n border-color: var(--info-color);\n }\n .btn-info:focus, .btn-info.focus {\n box-shadow: var(--info-shadow-color);\n }\n .btn-info:hover {\n color: var(--info-font-color);\n background-color: var(--info-hover-color);\n border-color: var(--info-hover-color);\n }\n\n .btn-primary {\n color: var(--primary-font-color);\n background-color: var(--primary-color);\n border-color: var(--primary-color);\n }\n .btn-primary:focus, .btn-primary.focus {\n box-shadow: var(--primary-shadow-color);\n }\n .btn-primary:hover {\n color: var(--primary-font-color);\n background-color: var(--primary-hover-color);\n border-color: var(--primary-hover-color);\n }\n\n .btn-secondary {\n color: var(--secondary-font-color);\n background-color: var(--secondary-color);\n border-color: var(--secondary-color);\n }\n .btn-secondary:focus, .btn-secondary.focus {\n box-shadow: var(--secondary-shadow-color);\n }\n .btn-secondary:hover {\n color: var(--secondary-font-color);\n background-color: var(--secondary-hover-color);\n border-color: var(--secondary-hover-color);\n }\n\n .fa-minus {\n color: black;\n } \n\n :host /deep/ .card .card-body .collapseTable th {\n background-color: var(--primary-table-color);\n color: var(--primary-table-font-color);\n font-size: var(--font-size);\n }\n\n :host /deep/ .card .card-body .collapseTable-sec th {\n background-color: var(--secondary-table-color);\n color: var(--secondary-table-font-color);\n font-size: var(--font-size);\n }\n\n :host /deep/ .card .card-body .collapseTable-tert th {\n background-color: var(--tertiary-table-color);\n color: var(--tertiary-table-font-color);\n font-size: var(--font-size);\n }\n</style>\n\n<div class="col-lg-12">\n <form [formGroup]="form" novalidate (ngSubmit)="submitForm(form)">\n <div class="row">\n <ngb-accordion #acc="ngbAccordion" activeIds="miscOptions, tableOptions, buttonOptions">\n <ngb-panel id="miscOptions">\n <ng-template ngbPanelTitle>\n <div> \n <label class="label-accordion">Misc. Options</label>\n <i *ngIf="!acc.activeIds.includes(\'miscOptions\')" class="fa fa-plus float-end" aria-hidden="true"></i>\n <i *ngIf="acc.activeIds.includes(\'miscOptions\')" class="fa fa-minus float-end" aria-hidden="true"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class="row">\n <div class="col-lg-12">\n <responsive-button-group>\n <button type="button" class="btn btn-success" (click)="reset()">Reset Default Settings</button>\n </responsive-button-group>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-4">\n\t\t\t\t\t\t\t\t<b>Collapsable Menu</b><br>\n\t\t\t\t\t\t\t\t<div class="form-check">\n\t\t\t\t\t\t\t\t\t<label class="form-check-label">\n\t\t\t\t\t\t\t\t\t\t<input class="form-check-input" type="checkbox" hidden formControlName="collapsable_menu">\n\t\t\t\t\t\t\t\t\t\t<i *ngIf="form.controls.collapsable_menu.value" class="fa fa-check" style="color: green; font-size: 24px;" aria-hidden="true"></i>\n\t\t\t\t\t\t\t\t\t\t<i *ngIf="!form.controls.collapsable_menu.value" class="fa fa-times" style="color: red; font-size: 24px;" aria-hidden="true"></i>\n\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t</div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Default Entries Per Page</label>\n <em *ngIf="!form.controls.entries_per_page.valid">- Required</em>\n <select [ngClass]="[\'form-control\', form.controls.entries_per_page.valid ? \'is-valid\' : \'is-invalid\']" formControlName="entries_per_page">\n <option value="25">25</option>\n <option value="50">50</option>\n <option value="100">100</option>\n <option value="250">250</option>\n </select>\n <div class="invalid-feedback" *ngIf="!form.controls.entries_per_page.valid">Entries per page is required</div>\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Font Size (Recommended 11-14)</label>\n <em *ngIf="form.controls.font_size.hasError(\'required\')">- Required</em>\n <em *ngIf="form.controls.font_size.hasError(\'wholeNumbersGreaterThanZero\')">- Invalid</em>\n <em *ngIf="form.controls.font_size.hasError(\'maxValue\')">- Invalid</em>\n <em *ngIf="form.controls.font_size.hasError(\'minValue\')">- Invalid</em>\n <input [ngClass]="[\'form-control\', form.controls.font_size.valid ? \'is-valid\' : \'is-invalid\']" type="number" formControlName="font_size" (keyup)="changePrimaryFontSize()">\n <div class="invalid-feedback" *ngIf="form.controls.font_size.hasError(\'required\')">Font size is required</div>\n <div class="invalid-feedback" *ngIf="form.controls.font_size.hasError(\'wholeNumbersGreaterThanZero\')">Font size is invalid</div>\n <div class="invalid-feedback" *ngIf="form.controls.font_size.hasError(\'maxValue\')">Font size can not exceed 18</div>\n <div class="invalid-feedback" *ngIf="form.controls.font_size.hasError(\'minValue\')">Font size can not be less than 8</div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-6">\n <div class="form-group">\n <label class="form-control-label">Starting Page</label>\n <select [ngClass]="[\'form-control\', form.controls.opening_route.valid ? \'is-valid\' : \'\']" formControlName="opening_route">\n <option value="/home">Home</option>\n <option *ngFor="let view of views" [value]="view.value">{{view.display | titleCase}}</option>\n </select>\n </div>\n </div>\n <div class="col-lg-6" *ngIf="client === \'Ace Completions\'">\n <div class="form-group">\n <label class="form-control-label">Routing Preference</label>\n <select [ngClass]="[\'form-control\', form.controls.routing_preference.valid ? \'is-valid\' : \'\']" formControlName="routing_preference">\n <option value="alwaysAsk">Always Ask</option>\n <option value="sameTab">Same Tab</option>\n <option value="newTab">New Tab</option>\n <option value="newWindow">New Window</option>\n </select>\n </div>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n <ngb-panel id="tableOptions">\n <ng-template ngbPanelTitle>\n <div> \n <label class="label-accordion">Table Options</label>\n <i *ngIf="!acc.activeIds.includes(\'tableOptions\')" class="fa fa-plus float-end" aria-hidden="true"></i>\n <i *ngIf="acc.activeIds.includes(\'tableOptions\')" class="fa fa-minus float-end" aria-hidden="true"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class="row">\n <div class="col-lg-12">\n <collapse-table> \n <thead>\n <tr>\n <th>\n Primary Table\n </th>\n </tr>\n </thead>\n </collapse-table>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-6">\n <dl>\n <dt>Primary Table Background:</dt>\n <dd>\n <div class="form-group">\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.table_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="table_color" (ngModelChange)="changePrimaryColor()">\n </div>\n </dd>\n </dl>\n </div>\n <div class="col-lg-6">\n <dl>\n <dt>Primary Table Font:</dt>\n <dd>\n <div class="form-group">\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.table_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="table_font_color" (ngModelChange)="changePrimaryFontColor()">\n </div>\n </dd>\n </dl>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <collapse-table secondaryColor="true"> \n <thead>\n <tr>\n <th>\n Secondary Table\n </th>\n </tr>\n </thead>\n </collapse-table>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-6">\n <dl>\n <dt>Secondary Table Background:</dt>\n <dd>\n <div class="form-group">\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.secondary_table_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="secondary_table_color" (ngModelChange)="changeSecondaryColor()">\n </div>\n </dd>\n </dl>\n </div>\n <br>\n <div class="col-lg-6">\n <dl>\n <dt>Secondary Table Font:</dt>\n <dd>\n <div class="form-group">\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.secondary_table_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="secondary_table_font_color" (ngModelChange)="changeSecondaryFontColor()">\n </div>\n </dd>\n </dl>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <collapse-table tertiaryColor="true"> \n <thead>\n <tr>\n <th>\n Tertiary Table\n </th>\n </tr>\n </thead>\n </collapse-table>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-6">\n <dl>\n <dt>Tertiary Table Background:</dt>\n <dd>\n <div class="form-group">\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.tertiary_table_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="tertiary_table_color" (ngModelChange)="changeTertiaryColor()">\n </div>\n </dd>\n </dl>\n </div>\n <div class="col-lg-6">\n <dl>\n <dt>Tertiary Table Font:</dt>\n <dd>\n <div class="form-group">\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.tertiary_table_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="tertiary_table_font_color" (ngModelChange)="changeTertiaryFontColor()">\n </div>\n </dd>\n </dl>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n <ngb-panel id="buttonOptions">\n <ng-template ngbPanelTitle>\n <div> \n <label class="label-accordion">Button Options</label>\n <i *ngIf="!acc.activeIds.includes(\'buttonOptions\')" class="fa fa-plus float-end" aria-hidden="true"></i>\n <i *ngIf="acc.activeIds.includes(\'buttonOptions\')" class="fa fa-minus float-end" aria-hidden="true"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class="row">\n <div class="col-lg-12">\n <button type="button" class="btn btn-success">Success</button>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Success Button Background:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.success_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="success_color" (ngModelChange)="changeSuccessColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Success Button Font:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.success_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="success_font_color" (ngModelChange)="changeSuccessFontColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Success Button Hover:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.success_hover_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="success_hover_color" (ngModelChange)="changeSuccessHoverColor()">\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <button type="button" class="btn btn-warning">Warning</button>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Warning Button Background:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.warning_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="warning_color" (ngModelChange)="changeWarningColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Warning Button Font:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.warning_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="warning_font_color" (ngModelChange)="changeWarningFontColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Warning Button Hover:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.warning_hover_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="warning_hover_color" (ngModelChange)="changeWarningHoverColor()">\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <button type="button" class="btn btn-danger">Danger</button>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Danger Button Background:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.danger_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="danger_color" (ngModelChange)="changeDangerColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Danger Button Font:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.danger_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="danger_font_color" (ngModelChange)="changeDangerFontColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Danger Button Hover:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.danger_hover_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="danger_hover_color" (ngModelChange)="changeDangerHoverColor()">\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <button type="button" class="btn btn-info">Info</button>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Info Button Background:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.info_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="info_color" (ngModelChange)="changeInfoColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Info Button Font:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.info_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="info_font_color" (ngModelChange)="changeInfoFontColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Info Button Hover:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.info_hover_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="info_hover_color" (ngModelChange)="changeInfoHoverColor()">\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <button type="button" class="btn btn-primary">Primary</button>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Primary Button Background:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.primary_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="primary_color" (ngModelChange)="changePrimaryButtonColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Primary Button Font:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.primary_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="primary_font_color" (ngModelChange)="changePrimaryButtonFontColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Primary Button Hover:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.primary_hover_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="primary_hover_color" (ngModelChange)="changePrimaryHoverColor()">\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <button type="button" class="btn btn-secondary">Secondary</button>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Secondary Button Background:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.secondary_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="secondary_color" (ngModelChange)="changeSecondaryButtonColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Secondary Button Font:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.secondary_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="secondary_font_color" (ngModelChange)="changeSecondaryButtonFontColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Secondary Button Hover:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.secondary_hover_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="secondary_hover_color" (ngModelChange)="changeSecondaryHoverColor()">\n </div>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n </ngb-accordion>\n </div>\n <div class="row" style="padding-top: 15px;">\n <form-button [form]="form" [disabled]="disableFormButton"></form-button>\n </div>\n </form>\n</div>'}]}],ctorParameters:function(){return[{type:AuthPermissionService},{type:UserSettingsService},{type:ProviderService},{type:DialogService}]}});const routes$1=[{path:"user-settings",component:UserSettingsComponent,children:[{path:"settings",component:UsersSettingsComponent},{path:"**",redirectTo:"settings"}]}],UserSettingsRouting=RouterModule.forChild(routes$1);class DatatableComponent extends BaseComponent{constructor(t){super(t),this._services=t,this.totalItems=1e3,this.onChangeTableData=new EventEmitter}changeTableData(){this.onChangeTableData.emit()}sortColumn(t){this.tableData.sortColumn===t?"desc"===this.tableData.sortOrder?this.tableData.sortOrder="asc":this.tableData.sortOrder="desc":(this.tableData.sortOrder="asc",this.tableData.sortColumn=t),this.changeTableData()}navigateTo(t,e){"file_key"!==e&&t&&this.urlClick&&this._services._router.navigateByUrl(this.urlClick+t)}openFile(t){this._services._socket.call("getSignedUrl",t,900,((e,n)=>{n?window.open(n):this._services._socket.call("insertErrorLog","Widgets-datatable - getsignedurl",[t,e])}))}typeOf(t){return typeof t}}DatatableComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DatatableComponent,deps:[{token:ProviderService}],target:i0.ɵɵFactoryTarget.Component}),DatatableComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:DatatableComponent,selector:"data-table",inputs:{urlClick:"urlClick",columns:"columns",data:"data",collapseSize:"collapseSize",searchTitle:"searchTitle",totalItems:"totalItems",tableData:"tableData"},outputs:{onChangeTableData:"onChangeTableData"},providers:[ProviderService],usesInheritance:!0,ngImport:i0,template:'<style>\n .orangeRow { \n background-color: orangered;\n }\n\n collapse-table tr:hover {\n background-color: lightblue;\n cursor: pointer;\n }\n\n collapse-table {\n width: 100%;\n }\n</style>\n\n<div class="row">\n <div class="input-group">\n <span class="input-group-btn">\n <button class="btn btn-primary" type="button" (click)="changeTableData()">Search!</button>\n </span>\n <input type="text" class="form-control" placeholder="{{searchTitle}}" [(ngModel)]="tableData.searchString" (keyup.enter)="changeTableData()" style="z-index: 0">\n </div>\n</div>\n<div class="row" style="padding-top: 20px;">\n <collapse-table [collapseSize]="collapseSize" headerFixed="true">\n <thead>\n <tr>\n <th *ngFor="let column of columns" (click)="sortColumn(column.data)" style="cursor:pointer">\n {{column.name}}\n <i *ngIf="tableData.sortColumn == column.data && tableData.sortOrder === \'desc\'" class="fa fa-caret-down"></i>\n <i *ngIf="tableData.sortColumn == column.data && tableData.sortOrder === \'asc\'" class="fa fa-caret-up"></i>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor="let item of data" [ngClass]="{\'orangeRow\': item[\'color_red\']}">\n <td *ngFor="let column of columns" (click)="navigateTo(item[\'_id\'], column.data)" [attr.data-label]="column.name">\n <span *ngIf="typeOf(item[column.data]) !== \'boolean\' && column.data !== \'cost\' && column.data !== \'wells\' && column.data !== \'cost_total\' && column.data !== \'price\' && column.data !== \'date\' && column.data !== \'date_created\' && column.data !== \'date_delivered\' && column.data !== \'quantity\' && column.data !== \'quantity_string\' && column.data !== \'min_stock\' && column.data !== \'max_stock\' && column.data !== \'file_key\' && column.data !== \'date_in\'">{{column.subData ? item[column.data][column.subData] : item[column.data]}}</span>\n <span *ngIf="column.data === \'cost\' || column.data === \'price\' || column.data === \'cost_total\'">{{item[column.data] | currency:\'USD\':\'symbol\':"1.2-2"}}</span>\n <span *ngIf="column.data === \'date\' || column.data === \'date_created\' || column.data === \'date_delivered\'">{{item[column.data] | date:\'short\'}}</span>\n <span *ngIf="column.data === \'quantity\' || column.data === \'min_stock\' || column.data === \'max_stock\'">{{item[column.data] | number}}</span>\n <span *ngIf="column.data === \'quantity_string\'">{{item[column.data] | number}}</span>\n <span *ngIf="column.data === \'wells\'"><pre>{{item[column.data]}}</pre></span>\n <span *ngIf="column.data === \'file_key\'">\n <button type="button" (click)="openFile(item[column.data])" class="btn btn-secondary">Open File</button>\n \x3c!-- <button type="button" class="btn btn-warning" (click)="viewDeletedReason(item)" *ngIf="item.deleted.is_deleted">View Deleted Reason</button> --\x3e\n </span>\n <span *ngIf="typeOf(item[column.data]) === \'boolean\'">\n <i *ngIf="item[column.data]" class="fa fa-check" style="color: green; font-size: 18px;" aria-hidden="true"></i>\n <i *ngIf="!item[column.data]" class="fa fa-times" style="color: red; font-size: 18px;" aria-hidden="true"></i>\n </span>\n </td>\n </tr>\n </tbody>\n </collapse-table> \n</div>\n<hr />\n<div class="row">\n <div class="col-lg-4">\n <div class="row"> \n <div class="col-lg-8">\n <label class="form-control-label">Entries Per Page</label>\n <select class="form-control" [(ngModel)]="tableData.entriesPerPage" (ngModelChange)="changeTableData()">\n <option value="25">25</option>\n <option value="50">50</option>\n <option value="100">100</option>\n <option value="250">250</option>\n </select>\n </div>\n </div>\n </div>\n <div class="col-lg-8" style="margin-top: 16px;">\n <ngb-pagination class="float-right"\n boundaryLinks="true"\n [collectionSize]="totalItems"\n directionLinks="true"\n ellipses="false"\n [(page)]="tableData.pageNum"\n maxSize="6"\n [pageSize]="tableData.entriesPerPage"\n rotate="true"\n (pageChange)="changeTableData()"\n >\n </ngb-pagination>\n </div>\n</div>\n',styles:["\n .orangeRow { \n background-color: orangered;\n }\n\n collapse-table tr:hover {\n background-color: lightblue;\n cursor: pointer;\n }\n\n collapse-table {\n width: 100%;\n }\n"],dependencies:[{kind:"component",type:i1$4.NgbPagination,selector:"ngb-pagination",inputs:["disabled","boundaryLinks","directionLinks","ellipses","rotate","collectionSize","maxSize","page","pageSize","size"],outputs:["pageChange"]},{kind:"directive",type:i2.NgSelectOption,selector:"option",inputs:["ngValue","value"]},{kind:"directive",type:i2.ɵNgSelectMultipleOption,selector:"option",inputs:["ngValue","value"]},{kind:"directive",type:i2.DefaultValueAccessor,selector:"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]"},{kind:"directive",type:i2.SelectControlValueAccessor,selector:"select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]",inputs:["compareWith"]},{kind:"directive",type:i2.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i2.NgModel,selector:"[ngModel]:not([formControlName]):not([formControl])",inputs:["name","disabled","ngModel","ngModelOptions"],outputs:["ngModelChange"],exportAs:["ngModel"]},{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"component",type:CollapseTableComponent,selector:"collapse-table",inputs:["collapseSize","tableFixed","headerFixed","secondaryColor","tertiaryColor"]},{kind:"pipe",type:i7.DecimalPipe,name:"number"},{kind:"pipe",type:i7.CurrencyPipe,name:"currency"},{kind:"pipe",type:i7.DatePipe,name:"date"}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DatatableComponent,decorators:[{type:Component,args:[{providers:[ProviderService],selector:"data-table",template:'<style>\n .orangeRow { \n background-color: orangered;\n }\n\n collapse-table tr:hover {\n background-color: lightblue;\n cursor: pointer;\n }\n\n collapse-table {\n width: 100%;\n }\n</style>\n\n<div class="row">\n <div class="input-group">\n <span class="input-group-btn">\n <button class="btn btn-primary" type="button" (click)="changeTableData()">Search!</button>\n </span>\n <input type="text" class="form-control" placeholder="{{searchTitle}}" [(ngModel)]="tableData.searchString" (keyup.enter)="changeTableData()" style="z-index: 0">\n </div>\n</div>\n<div class="row" style="padding-top: 20px;">\n <collapse-table [collapseSize]="collapseSize" headerFixed="true">\n <thead>\n <tr>\n <th *ngFor="let column of columns" (click)="sortColumn(column.data)" style="cursor:pointer">\n {{column.name}}\n <i *ngIf="tableData.sortColumn == column.data && tableData.sortOrder === \'desc\'" class="fa fa-caret-down"></i>\n <i *ngIf="tableData.sortColumn == column.data && tableData.sortOrder === \'asc\'" class="fa fa-caret-up"></i>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor="let item of data" [ngClass]="{\'orangeRow\': item[\'color_red\']}">\n <td *ngFor="let column of columns" (click)="navigateTo(item[\'_id\'], column.data)" [attr.data-label]="column.name">\n <span *ngIf="typeOf(item[column.data]) !== \'boolean\' && column.data !== \'cost\' && column.data !== \'wells\' && column.data !== \'cost_total\' && column.data !== \'price\' && column.data !== \'date\' && column.data !== \'date_created\' && column.data !== \'date_delivered\' && column.data !== \'quantity\' && column.data !== \'quantity_string\' && column.data !== \'min_stock\' && column.data !== \'max_stock\' && column.data !== \'file_key\' && column.data !== \'date_in\'">{{column.subData ? item[column.data][column.subData] : item[column.data]}}</span>\n <span *ngIf="column.data === \'cost\' || column.data === \'price\' || column.data === \'cost_total\'">{{item[column.data] | currency:\'USD\':\'symbol\':"1.2-2"}}</span>\n <span *ngIf="column.data === \'date\' || column.data === \'date_created\' || column.data === \'date_delivered\'">{{item[column.data] | date:\'short\'}}</span>\n <span *ngIf="column.data === \'quantity\' || column.data === \'min_stock\' || column.data === \'max_stock\'">{{item[column.data] | number}}</span>\n <span *ngIf="column.data === \'quantity_string\'">{{item[column.data] | number}}</span>\n <span *ngIf="column.data === \'wells\'"><pre>{{item[column.data]}}</pre></span>\n <span *ngIf="column.data === \'file_key\'">\n <button type="button" (click)="openFile(item[column.data])" class="btn btn-secondary">Open File</button>\n \x3c!-- <button type="button" class="btn btn-warning" (click)="viewDeletedReason(item)" *ngIf="item.deleted.is_deleted">View Deleted Reason</button> --\x3e\n </span>\n <span *ngIf="typeOf(item[column.data]) === \'boolean\'">\n <i *ngIf="item[column.data]" class="fa fa-check" style="color: green; font-size: 18px;" aria-hidden="true"></i>\n <i *ngIf="!item[column.data]" class="fa fa-times" style="color: red; font-size: 18px;" aria-hidden="true"></i>\n </span>\n </td>\n </tr>\n </tbody>\n </collapse-table> \n</div>\n<hr />\n<div class="row">\n <div class="col-lg-4">\n <div class="row"> \n <div class="col-lg-8">\n <label class="form-control-label">Entries Per Page</label>\n <select class="form-control" [(ngModel)]="tableData.entriesPerPage" (ngModelChange)="changeTableData()">\n <option value="25">25</option>\n <option value="50">50</option>\n <option value="100">100</option>\n <option value="250">250</option>\n </select>\n </div>\n </div>\n </div>\n <div class="col-lg-8" style="margin-top: 16px;">\n <ngb-pagination class="float-right"\n boundaryLinks="true"\n [collectionSize]="totalItems"\n directionLinks="true"\n ellipses="false"\n [(page)]="tableData.pageNum"\n maxSize="6"\n [pageSize]="tableData.entriesPerPage"\n rotate="true"\n (pageChange)="changeTableData()"\n >\n </ngb-pagination>\n </div>\n</div>\n'}]}],ctorParameters:function(){return[{type:ProviderService}]},propDecorators:{urlClick:[{type:Input}],columns:[{type:Input}],data:[{type:Input}],collapseSize:[{type:Input}],searchTitle:[{type:Input}],totalItems:[{type:Input}],onChangeTableData:[{type:Output}],tableData:[{type:Input}]}});class DatatableModule{}DatatableModule.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DatatableModule,deps:[],target:i0.ɵɵFactoryTarget.NgModule}),DatatableModule.ɵmod=i0.ɵɵngDeclareNgModule({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:DatatableModule,declarations:[DatatableComponent],imports:[NgbModule,FormsModule,CommonModule,RouterModule,CollapseTableModule],exports:[DatatableComponent]}),DatatableModule.ɵinj=i0.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DatatableModule,imports:[NgbModule,FormsModule,CommonModule,RouterModule,CollapseTableModule]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DatatableModule,decorators:[{type:NgModule,args:[{imports:[NgbModule,FormsModule,CommonModule,RouterModule,CollapseTableModule],exports:[DatatableComponent],declarations:[DatatableComponent],providers:[]}]}]});class FileUploadComponent extends BaseComponent{constructor(t,e,n,o){super(e),this._resize=t,this._services=e,this._ds=n,this._http=o,this.files=[],this.allowDelete=!1,this.allowReplace=!1,this.showFileUpload=!0,this.filesChanged=new EventEmitter,this.fileAdded=new EventEmitter,this.fileRemoved=new EventEmitter,this.supportedFileTypes=["application/pdf","text/plain","image/gif","image/png","image/jpeg","image/bmp"],this.pdfSrc="",this.replaceFileIndex=0,this.isUploading=!1,this.progressMsg="",this.windowSize=0}ngOnInit(){this.windowSize$=this._resize.onResize$.subscribe((t=>{this.windowSize=t?t.innerWidth:window.innerWidth}))}ngOnDestroy(){this.windowSize$.unsubscribe()}dragFileAccepted(t){this.supportedFileTypes.indexOf(t.type)>=0?this.uploadWithEmit(t,"misc").then((()=>{}),(t=>{this._ds.error("Could not upload file, incorrect type")})):this._ds.error("Invalid format, the supported file types are: "+this.supportedFileTypes)}upload(t,e,n,o,r){return new Promise(((i,a)=>{this.progressMsg="Uploading "+(o||t.name),this._services._aws.uploadFile(t,e,n,o).then((a=>{const s={_id:a._id,name:o||t.name,size:t.size,status:r||"Uploaded",key:a.key,order:n||-1,type:e};this.isUploading=!1,this.files.push(s),this.files=this.files.sort(((t,e)=>t.order-e.order)),i(s)}),(t=>{this._ds.error("Could not upload file. "+t),a(t)})),this.isUploading=!0}))}uploadWithEmit(t,e,n,o,r){return new Promise(((i,a)=>{this.progressMsg="Uploading "+(o||t.name),this._services._aws.uploadFile(t,e,n,o).then((a=>{const s={_id:a._id,name:o||t.name,size:t.size,status:r||"Uploaded",key:a.key,order:n||-1,type:e};this.isUploading=!1,this.files=this.files.sort(((t,e)=>t.order-e.order)),this.fileAdded.emit(s),i(s)}),(t=>{this._ds.error("Could not upload file. "+t),a(t)})),this.isUploading=!0}))}delete(t,e=!0){this.pdfSrc="",e?this._ds.confirm("Are you sure you want to delete this file?").then((e=>{this._services._aws.deleteFile(this.files[t].key,((e,n)=>{e&&(this._ds.error("Could not delete file"),this._services._socket.call("insertErrorLog","Widgets.File-Upload - Delete File",[this.files[t].key,e]))})),this.files.splice(t,1)}),(t=>{})):(this._services._aws.deleteFile(this.files[t].key,((e,n)=>{e&&this._services._socket.call("insertErrorLog","Widgets.File-Upload - Delete File",[this.files[t].key,e])})),this.files.splice(t,1))}deleteWithEmit(t,e=!0){this.pdfSrc="";let n=Object.assign({},this.files[t]);e?this._ds.confirm("Are you sure you want to delete this file?").then((e=>{this._services._aws.deleteFile(this.files[t].key,((e,o)=>{e&&(this._ds.error("Could not delete file"),this._services._socket.call("insertErrorLog","Widgets.File-Upload - Delete File",[this.files[t].key,e])),this.fileRemoved.emit(n)}))}),(t=>{})):this._services._aws.deleteFile(this.files[t].key,((e,o)=>{e&&this._services._socket.call("insertErrorLog","Widgets.File-Upload - Delete File",[this.files[t].key,e]),this.fileRemoved.emit(n)}))}deleteFileWithId(t){this.delete(this.files.map((t=>t._id)).indexOf(t),!1)}open(t){this._services._socket.call("getSignedUrl",t.key,900,((e,n)=>{n?window.open(n):this._services._socket.call("insertErrorLog","Widgets-file - getsignedurl",[t.key,e])}))}setPDFViewerSrc(t){this._services._socket.call("getSignedUrl",t.key,900,((e,n)=>{n?this.pdfSrc=n:(this._ds.error("Could not get signed url for file"),this._services._socket.call("insertErrorLog","Widgets-file - getsignedurl pdfviewer",[t.key,e]))}))}onFileSelect(t){this.uploadWithEmit(t.target.files[0],this.fileType?this.fileType:"misc").then((()=>{}),(()=>{})),t.srcElement.value=""}onFileSelectReplace(t){if(t.target.files[0]){this.files[this.replaceFileIndex]._id;let e=this.files[this.replaceFileIndex].type,n=this.files[this.replaceFileIndex].order,o=this.files[this.replaceFileIndex].name.replace(/\.[^\.]+$/,"")+"."+t.target.files[0].name.split(".")[t.target.files[0].name.split(".").length-1],r=this.files[this.replaceFileIndex].status;this.deleteWithEmit(this.replaceFileIndex,!1),"Unsigned"===r?this._ds.confirm("Are you replacing this file with a signed copy?").then((r=>{this.uploadWithEmit(t.target.files[0],e,n,o,"Signed").then((t=>{t.key,t._id}),(t=>{}))}),(r=>{this.uploadWithEmit(t.target.files[0],e,n,o).then((t=>{t.key,t._id}),(t=>{}))})):this.uploadWithEmit(t.target.files[0],e,n,o).then((t=>{t.key,t._id}),(t=>{}))}}userIsInRole(t){return this._services._account.isUserInView(t)}isMobile(){}downloadResource(t){return this._http.get(t,{responseType:"blob"}).toPromise()}download(t){this._services._socket.call("getSignedUrl",t.key,900,(async(e,n)=>{if(n){const e=await this.downloadResource(n),o=window.URL.createObjectURL(e),r=this.download_link.nativeElement;r.href=o,r.download=t.name,r.click(),window.URL.revokeObjectURL(o)}else this._services._socket.call("insertErrorLog","Widgets-file - update bol",[e])}))}email(t){this._ds.input("Email file to which address?",[{label:"Email Address",form:"email",data:"",validators:[Validators.required,this._services._vs.email],validatorErrors:["required","email"],validatorMsg:["Email is required","Email is invalid"],required:!0}]).then((e=>{this._services._socket.call("emailFile",t._id,e.email.value,((t,e)=>{t?this._ds.error("Could not send email: "+t):this._services._alert.setAlert("success","Email has been sent")}))}),(t=>{}))}}FileUploadComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:FileUploadComponent,deps:[{token:ResizeService},{token:ProviderService},{token:DialogService},{token:i4.HttpClient}],target:i0.ɵɵFactoryTarget.Component}),FileUploadComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:FileUploadComponent,selector:"file-upload",inputs:{files:"files",allowDelete:"allowDelete",allowReplace:"allowReplace",showFileUpload:"showFileUpload",fileType:"fileType"},outputs:{filesChanged:"filesChanged",fileAdded:"fileAdded",fileRemoved:"fileRemoved"},viewQueries:[{propertyName:"download_link",first:!0,predicate:["download_link"],descendants:!0,static:!0}],usesInheritance:!0,ngImport:i0,template:'<style>\n \n html, body { height: 100%; }\n\n collapse-table tr:hover {\n background-color: lightblue;\n cursor: pointer;\n }\n\n collapse-table {\n width: 100%;\n }\n \n /* Label container: */\n .file {\n display: inline-block;\n padding: 0 0 0 0.5em;\n cursor: pointer;\n position: relative;\n border: .075rem solid #ddd;\n border-radius: .25rem;\n }\n \n /* The pseudo input field: */\n .file::before {\n content: "";\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n z-index: -1;\n \n /* Bootstrap appearance: */\n background-color: #fff;\n border: .075rem solid #ddd;\n border-radius: .25rem;\n -webkit-box-shadow: inset 0 .2rem .4rem rgba(0,0,0,.05);\n box-shadow: inset 0 .2rem .4rem rgba(0,0,0,.05);\n }\n \n /* The pseudo button: */\n .file::after {\n content: "Browse";\n display: inline-block;\n \n /* Bootstrap appearance: */\n background-color: #eee;\n border: .075rem solid #ddd;\n border-radius: 0 .25rem .25rem 0;\n padding: .5rem 1rem;\n line-height: 1.5;\n color: #555;\n }\n \n .file input[type=file] {\n cursor: pointer;\n border: 0 none;\n width: 12em;\n }\n \n /* -webkit hide the button: */\n .file input[type=file]::-webkit-file-upload-button {\n border: 0;\n padding: 0;\n margin: 0 ;\n width: 0;\n background: transparent;\n } \n \n /* IE10+ hide the button: */\n .file input[type=file]::-ms-browse {\n padding: 0;\n margin: -1px;\n width: 0;\n border: 0;\n background: transparent;\n }\n \n .file input[type=file]::-ms-value {\n background: #fff;\n border: 0;\n }\n\n card {\n width: 100%;\n }\n</style>\n\n<a style="display: none" #download_link></a>\n<input hidden type="file" #fileInputReplace (change)="onFileSelectReplace($event)" />\n \n<div class="card">\n <div class="card-header">\n <strong class="pull-left">Files</strong>\n </div>\n <div class="card-block">\n <div class="row">\n <div class="col-lg-6">\n <div class="row" *ngIf="showFileUpload">\n <div class="col-lg-6">\n <div class="container">\n <div style="margin: 10px 0px; font-weight: bold;">Upload File</div>\n <label class="file">\n <input type="file" #fileInput (change)="onFileSelect($event)" />\n </label>\n <br>\n <ngx-file-drop dropZoneLabel="Drop files here" style="width: 223px; height: 112px; border: 1px black dashed; border-radius: 5px; justify-content: center;" class="vertical-align" (onFileDrop)="dragFileAccepted($event)"></ngx-file-drop>\n </div>\n </div>\n <div class="col-lg-6">\n <div *ngIf="isUploading">\n <b>{{progressMsg || \'N/A\'}}</b>\n </div>\n </div>\n </div>\n <div class="row" style="margin-top: 10px;">\n <div class="col-lg-12" *ngIf="windowSize > 980">\n <div style="text-align: center;" *ngIf="pdfSrc">\n <resolveio-client-lib-pdf-viewer [pdfSrc]="pdfSrc"></resolveio-client-lib-pdf-viewer>\n </div>\n </div>\n </div>\n </div>\n <div class="col-lg-6">\n <div *ngIf="files && files.length">\n <b>Uploaded Files</b>\n <div [style.max-height]="windowSize > 900 ? \'300px\' : \'\'" [style.overflow-y]="windowSize > 900 ? \'auto\' : \'\'">\n <collapse-table collapseSize="900">\n <thead>\n <tr>\n <th>File Name</th>\n <th>Size</th>\n <th>Type</th>\n <th>Actions</th>\n </tr>\n </thead> \n <tbody>\n <tr *ngFor="let file of files; let i = index">\n <td data-label="File Name" (click)="setPDFViewerSrc(file)">{{file.name}}</td>\n <td data-label="Size" (click)="setPDFViewerSrc(file)">{{ file.size/1024/1024 | number:\'.2\' }} MB</td>\n <td data-label="Type" (click)="setPDFViewerSrc(file)">{{file.type}}</td>\n <td data-label="Actions">\n <responsive-button-group collapseSize="900">\n <button type="button" class="btn btn-success" (click)="open(file)">Open</button>\n <button type="button" class="btn btn-primary" (click)="download(file)">Download</button>\n <button [hidden]="!allowDelete || (file.type !== \'misc\' && !userIsInRole(\'super-admin\'))" type="button" class="btn btn-danger" (click)="deleteWithEmit(i)">Delete</button>\n <button [hidden]="!allowDelete || (file.type !== \'misc\' && !userIsInRole(\'super-admin\'))" type="button" class="btn btn-danger" (click)="fileInputReplace.click(); replaceFileIndex = i;">Replace</button>\n <button type="button" class="btn btn-warning" (click)="email(file)">Email</button>\n </responsive-button-group>\n </td>\n </tr>\n </tbody>\n </collapse-table>\n </div>\n </div>\n <div *ngIf="!files || !files.length">\n <b>No Uploaded Files</b>\n </div>\n </div>\n </div>\n </div>\n</div>',styles:['\n \n html, body { height: 100%; }\n\n collapse-table tr:hover {\n background-color: lightblue;\n cursor: pointer;\n }\n\n collapse-table {\n width: 100%;\n }\n \n /* Label container: */\n .file {\n display: inline-block;\n padding: 0 0 0 0.5em;\n cursor: pointer;\n position: relative;\n border: .075rem solid #ddd;\n border-radius: .25rem;\n }\n \n /* The pseudo input field: */\n .file::before {\n content: "";\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n z-index: -1;\n \n /* Bootstrap appearance: */\n background-color: #fff;\n border: .075rem solid #ddd;\n border-radius: .25rem;\n -webkit-box-shadow: inset 0 .2rem .4rem rgba(0,0,0,.05);\n box-shadow: inset 0 .2rem .4rem rgba(0,0,0,.05);\n }\n \n /* The pseudo button: */\n .file::after {\n content: "Browse";\n display: inline-block;\n \n /* Bootstrap appearance: */\n background-color: #eee;\n border: .075rem solid #ddd;\n border-radius: 0 .25rem .25rem 0;\n padding: .5rem 1rem;\n line-height: 1.5;\n color: #555;\n }\n \n .file input[type=file] {\n cursor: pointer;\n border: 0 none;\n width: 12em;\n }\n \n /* -webkit hide the button: */\n .file input[type=file]::-webkit-file-upload-button {\n border: 0;\n padding: 0;\n margin: 0 ;\n width: 0;\n background: transparent;\n } \n \n /* IE10+ hide the button: */\n .file input[type=file]::-ms-browse {\n padding: 0;\n margin: -1px;\n width: 0;\n border: 0;\n background: transparent;\n }\n \n .file input[type=file]::-ms-value {\n background: #fff;\n border: 0;\n }\n\n card {\n width: 100%;\n }\n'],dependencies:[{kind:"directive",type:i7.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"component",type:CollapseTableComponent,selector:"collapse-table",inputs:["collapseSize","tableFixed","headerFixed","secondaryColor","tertiaryColor"]},{kind:"component",type:ResponsiveButtonGroupComponent,selector:"responsive-button-group",inputs:["collapseSize"]},{kind:"component",type:i8.NgxFileDropComponent,selector:"ngx-file-drop",inputs:["accept","directory","multiple","dropZoneLabel","dropZoneClassName","useDragEnter","contentClassName","showBrowseBtn","browseBtnClassName","browseBtnLabel","disabled"],outputs:["onFileDrop","onFileOver","onFileLeave"]},{kind:"component",type:i9.PdfViewerComponent,selector:"resolveio-client-lib-pdf-viewer",inputs:["pdfSrc","fileName"]},{kind:"pipe",type:i7.DecimalPipe,name:"number"}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:FileUploadComponent,decorators:[{type:Component,args:[{selector:"file-upload",template:'<style>\n \n html, body { height: 100%; }\n\n collapse-table tr:hover {\n background-color: lightblue;\n cursor: pointer;\n }\n\n collapse-table {\n width: 100%;\n }\n \n /* Label container: */\n .file {\n display: inline-block;\n padding: 0 0 0 0.5em;\n cursor: pointer;\n position: relative;\n border: .075rem solid #ddd;\n border-radius: .25rem;\n }\n \n /* The pseudo input field: */\n .file::before {\n content: "";\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n z-index: -1;\n \n /* Bootstrap appearance: */\n background-color: #fff;\n border: .075rem solid #ddd;\n border-radius: .25rem;\n -webkit-box-shadow: inset 0 .2rem .4rem rgba(0,0,0,.05);\n box-shadow: inset 0 .2rem .4rem rgba(0,0,0,.05);\n }\n \n /* The pseudo button: */\n .file::after {\n content: "Browse";\n display: inline-block;\n \n /* Bootstrap appearance: */\n background-color: #eee;\n border: .075rem solid #ddd;\n border-radius: 0 .25rem .25rem 0;\n padding: .5rem 1rem;\n line-height: 1.5;\n color: #555;\n }\n \n .file input[type=file] {\n cursor: pointer;\n border: 0 none;\n width: 12em;\n }\n \n /* -webkit hide the button: */\n .file input[type=file]::-webkit-file-upload-button {\n border: 0;\n padding: 0;\n margin: 0 ;\n width: 0;\n background: transparent;\n } \n \n /* IE10+ hide the button: */\n .file input[type=file]::-ms-browse {\n padding: 0;\n margin: -1px;\n width: 0;\n border: 0;\n background: transparent;\n }\n \n .file input[type=file]::-ms-value {\n background: #fff;\n border: 0;\n }\n\n card {\n width: 100%;\n }\n</style>\n\n<a style="display: none" #download_link></a>\n<input hidden type="file" #fileInputReplace (change)="onFileSelectReplace($event)" />\n \n<div class="card">\n <div class="card-header">\n <strong class="pull-left">Files</strong>\n </div>\n <div class="card-block">\n <div class="row">\n <div class="col-lg-6">\n <div class="row" *ngIf="showFileUpload">\n <div class="col-lg-6">\n <div class="container">\n <div style="margin: 10px 0px; font-weight: bold;">Upload File</div>\n <label class="file">\n <input type="file" #fileInput (change)="onFileSelect($event)" />\n </label>\n <br>\n <ngx-file-drop dropZoneLabel="Drop files here" style="width: 223px; height: 112px; border: 1px black dashed; border-radius: 5px; justify-content: center;" class="vertical-align" (onFileDrop)="dragFileAccepted($event)"></ngx-file-drop>\n </div>\n </div>\n <div class="col-lg-6">\n <div *ngIf="isUploading">\n <b>{{progressMsg || \'N/A\'}}</b>\n </div>\n </div>\n </div>\n <div class="row" style="margin-top: 10px;">\n <div class="col-lg-12" *ngIf="windowSize > 980">\n <div style="text-align: center;" *ngIf="pdfSrc">\n <resolveio-client-lib-pdf-viewer [pdfSrc]="pdfSrc"></resolveio-client-lib-pdf-viewer>\n </div>\n </div>\n </div>\n </div>\n <div class="col-lg-6">\n <div *ngIf="files && files.length">\n <b>Uploaded Files</b>\n <div [style.max-height]="windowSize > 900 ? \'300px\' : \'\'" [style.overflow-y]="windowSize > 900 ? \'auto\' : \'\'">\n <collapse-table collapseSize="900">\n <thead>\n <tr>\n <th>File Name</th>\n <th>Size</th>\n <th>Type</th>\n <th>Actions</th>\n </tr>\n </thead> \n <tbody>\n <tr *ngFor="let file of files; let i = index">\n <td data-label="File Name" (click)="setPDFViewerSrc(file)">{{file.name}}</td>\n <td data-label="Size" (click)="setPDFViewerSrc(file)">{{ file.size/1024/1024 | number:\'.2\' }} MB</td>\n <td data-label="Type" (click)="setPDFViewerSrc(file)">{{file.type}}</td>\n <td data-label="Actions">\n <responsive-button-group collapseSize="900">\n <button type="button" class="btn btn-success" (click)="open(file)">Open</button>\n <button type="button" class="btn btn-primary" (click)="download(file)">Download</button>\n <button [hidden]="!allowDelete || (file.type !== \'misc\' && !userIsInRole(\'super-admin\'))" type="button" class="btn btn-danger" (click)="deleteWithEmit(i)">Delete</button>\n <button [hidden]="!allowDelete || (file.type !== \'misc\' && !userIsInRole(\'super-admin\'))" type="button" class="btn btn-danger" (click)="fileInputReplace.click(); replaceFileIndex = i;">Replace</button>\n <button type="button" class="btn btn-warning" (click)="email(file)">Email</button>\n </responsive-button-group>\n </td>\n </tr>\n </tbody>\n </collapse-table>\n </div>\n </div>\n <div *ngIf="!files || !files.length">\n <b>No Uploaded Files</b>\n </div>\n </div>\n </div>\n </div>\n</div>'}]}],ctorParameters:function(){return[{type:ResizeService},{type:ProviderService},{type:DialogService},{type:i4.HttpClient}]},propDecorators:{files:[{type:Input}],allowDelete:[{type:Input}],allowReplace:[{type:Input}],showFileUpload:[{type:Input}],filesChanged:[{type:Output}],fileAdded:[{type:Output}],fileRemoved:[{type:Output}],fileType:[{type:Input}],download_link:[{type:ViewChild,args:["download_link",{static:!0}]}]}});class FileModule{}FileModule.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:FileModule,deps:[],target:i0.ɵɵFactoryTarget.NgModule}),FileModule.ɵmod=i0.ɵɵngDeclareNgModule({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:FileModule,declarations:[FileUploadComponent],imports:[CommonModule,FormsModule,CollapseTableModule,NgbModule,ResponsiveButtonGroupModule,NgxFileDropModule,PdfViewerModule],exports:[FileUploadComponent]}),FileModule.ɵinj=i0.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:FileModule,imports:[CommonModule,FormsModule,CollapseTableModule,NgbModule,ResponsiveButtonGroupModule,NgxFileDropModule,PdfViewerModule]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:FileModule,decorators:[{type:NgModule,args:[{imports:[CommonModule,FormsModule,CollapseTableModule,NgbModule,ResponsiveButtonGroupModule,NgxFileDropModule,PdfViewerModule],declarations:[FileUploadComponent],exports:[FileUploadComponent]}]}]});class UserSettingsModule{}UserSettingsModule.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:UserSettingsModule,deps:[],target:i0.ɵɵFactoryTarget.NgModule}),UserSettingsModule.ɵmod=i0.ɵɵngDeclareNgModule({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:UserSettingsModule,declarations:[UserSettingsComponent,UsersSettingsComponent],imports:[SharedModule,i1$3.RouterModule,DatatableModule,FileModule]}),UserSettingsModule.ɵinj=i0.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:UserSettingsModule,providers:[UserSettingsService],imports:[SharedModule,UserSettingsRouting,DatatableModule,FileModule]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:UserSettingsModule,decorators:[{type:NgModule,args:[{imports:[SharedModule,UserSettingsRouting,DatatableModule,FileModule],declarations:[UserSettingsComponent,UsersSettingsComponent],providers:[UserSettingsService]}]}]});class HomeComponent extends BaseComponent{constructor(t,e,n,o,r){super(n),this._route=t,this.auth=e,this._services=n,this._http=o,this._app=r,this.menuData={title:"Home",module:null,description:null,description_name:null,tabs:[{link:"home",params:null,label:"Home"}]},this.selectedSolution="Asset",this.loggingOut$=null,this.subscription$=null}ngOnInit(){this._services._app.setNavbarModuleData(this.menuData),this.loggingOut$=this._app.isLoggingOut.subscribe((t=>{t||(this._services._account.getUser()?this._services._account.getUser().settings&&this._services._account.getUser().settings.opening_route&&"/home"!==this._services._account.getUser().settings.opening_route?this._services._router.navigateByUrl(this._services._account.getUser().settings.opening_route):"/home"!==this._services._router.url&&this._services._router.navigateByUrl("/home"):(this.subscription$&&this.subscription$.unsubscribe(),this.subscription$=this._services._account.user.subscribe((t=>{t&&t.settings&&t.settings.opening_route&&"/home"!==t.settings.opening_route?this._services._router.navigateByUrl(t.settings.opening_route):"/home"!==this._services._router.url&&this._services._router.navigateByUrl("/home")}),(()=>{}))))}))}ngOnDestroy(){this.subscription$&&this.subscription$.unsubscribe(),this.loggingOut$&&this.loggingOut$.unsubscribe()}}HomeComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:HomeComponent,deps:[{token:i1$3.ActivatedRoute},{token:AuthService},{token:ProviderService},{token:i4.HttpClient},{token:CoreService}],target:i0.ɵɵFactoryTarget.Component}),HomeComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:HomeComponent,selector:"ng-component",providers:[ProviderService],usesInheritance:!0,ngImport:i0,template:'<div style="height: 100%">\n <div class="row" style="margin-left: 0px; margin-right: 0px; height: 100%;">\n <div class="col-lg-12" style="height: 100%">\n <div class="jumbotron jumbotron-fluid" style="height: 100%; padding-bottom: 0px;">\n <div class="container text-center" style="height: 100%">\n <img src="/assets/images/ResolveIO.png" class="img-fluid" alt="Responsive image" style="height: 100%; width: auto; max-width: 750px; max-height: 525px;">\n <p style="font-size: 24px; font-style: italic">The All-in-One Solution for Tracking Inventory, Ordering, POs, Management, and Much More!</p>\n </div>\n </div>\n </div>\n </div> \n</div>'}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:HomeComponent,decorators:[{type:Component,args:[{providers:[ProviderService],template:'<div style="height: 100%">\n <div class="row" style="margin-left: 0px; margin-right: 0px; height: 100%;">\n <div class="col-lg-12" style="height: 100%">\n <div class="jumbotron jumbotron-fluid" style="height: 100%; padding-bottom: 0px;">\n <div class="container text-center" style="height: 100%">\n <img src="/assets/images/ResolveIO.png" class="img-fluid" alt="Responsive image" style="height: 100%; width: auto; max-width: 750px; max-height: 525px;">\n <p style="font-size: 24px; font-style: italic">The All-in-One Solution for Tracking Inventory, Ordering, POs, Management, and Much More!</p>\n </div>\n </div>\n </div>\n </div> \n</div>'}]}],ctorParameters:function(){return[{type:i1$3.ActivatedRoute},{type:AuthService},{type:ProviderService},{type:i4.HttpClient},{type:CoreService}]}});class CoreModule{}CoreModule.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:CoreModule,deps:[],target:i0.ɵɵFactoryTarget.NgModule}),CoreModule.ɵmod=i0.ɵɵngDeclareNgModule({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:CoreModule,declarations:[CoreComponent,HomeComponent,LoggerComponent,NavbarMainComponent,NavbarModuleComponent,ForgotPasswordComponent,EnrollComponent,Auth365Component,FocusDirective,ScrollDirective,DialogConfirmContent,DialogErrorContent,DialogInputContent,DialogNotifyContent,DialogSelectDateTimeContent,DialogSelectDataLabelsContent,DialogLoginContent,DialogRegisterContent,DialogSelectWithButtonsURLContent,DialogSelectArrayObjsContent,DialogSelectArrayContent],imports:[SharedModule,HttpClientModule,NgbModule,i1$1.ToastrModule,i1$2.NgxLocalStorageModule,UserSettingsModule,BrowserAnimationsModule,CollapseTableModule],exports:[CoreComponent,HomeComponent,LoggerComponent,NavbarMainComponent,NavbarModuleComponent,ForgotPasswordComponent,EnrollComponent,Auth365Component,FocusDirective,ScrollDirective]}),CoreModule.ɵinj=i0.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:CoreModule,providers:[CoreService,AuthService,AuthGuard,CanDeactivateGuard,DialogService,ValidationService,AwsService,AuthPermissionService,WindowRefService,AlertService,SocketService,SocketManagerService,TokenManagerService,AccountManagerService,OfflineManagerService,DeviceDetectorService],imports:[SharedModule,HttpClientModule,NgbModule,ToastrModule.forRoot(),NgxLocalStorageModule.forRoot({prefix:"ResolveIO"}),UserSettingsModule,BrowserAnimationsModule,CollapseTableModule]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:CoreModule,decorators:[{type:NgModule,args:[{imports:[SharedModule,HttpClientModule,NgbModule,ToastrModule.forRoot(),NgxLocalStorageModule.forRoot({prefix:"ResolveIO"}),UserSettingsModule,BrowserAnimationsModule,CollapseTableModule],declarations:[CoreComponent,HomeComponent,LoggerComponent,NavbarMainComponent,NavbarModuleComponent,ForgotPasswordComponent,EnrollComponent,Auth365Component,FocusDirective,ScrollDirective,DialogConfirmContent,DialogErrorContent,DialogInputContent,DialogNotifyContent,DialogSelectDateTimeContent,DialogSelectDataLabelsContent,DialogLoginContent,DialogRegisterContent,DialogSelectWithButtonsURLContent,DialogSelectArrayObjsContent,DialogSelectArrayContent],providers:[CoreService,AuthService,AuthGuard,CanDeactivateGuard,DialogService,ValidationService,AwsService,AuthPermissionService,WindowRefService,AlertService,SocketService,SocketManagerService,TokenManagerService,AccountManagerService,OfflineManagerService,DeviceDetectorService],exports:[CoreComponent,HomeComponent,LoggerComponent,NavbarMainComponent,NavbarModuleComponent,ForgotPasswordComponent,EnrollComponent,Auth365Component,FocusDirective,ScrollDirective]}]}]});class SupportTicketService{constructor(){this.selectedSupportTicket=new BehaviorSubject("0")}setSelectedSupportTicket(t){this.selectedSupportTicket.next(t)}}SupportTicketService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketService,deps:[],target:i0.ɵɵFactoryTarget.Injectable}),SupportTicketService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketService}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketService,decorators:[{type:Injectable}],ctorParameters:function(){return[]}});class SupportTicketComponent extends BaseComponent{constructor(t,e){super(e),this._sts=t,this._services=e}ngOnInit(){this.selectedResolveIOSupport$=this._sts.selectedSupportTicket.subscribe((t=>this.selectedResolveIOSupportChanged(t)))}ngOnDestroy(){this._sts.setSelectedSupportTicket("0"),this.selectedResolveIOSupport$.unsubscribe()}selectedResolveIOSupportChanged(t){"0"!==t?this._services._socket.call("supportGetSupportTicketWithId",t,((e,n)=>{n?this.setResolveIOSupportModuleMenuData(t,n):this.setResolveIOSupportModuleMenuData()})):this.setResolveIOSupportModuleMenuData()}setResolveIOSupportModuleMenuData(t,e){let n=[];n.push({link:"/support-ticket/list",params:null,label:"List",tourAnchor:"navBarModuleSupportList"}),n.push({link:"/support-ticket/new",params:null,label:"New",tourAnchor:"navBarModuleSupportNew"}),n.push({link:"/support-ticket/detail",params:t||"0",label:"Details"}),(this._services._account.isUserSuperAdmin()||e&&e.id_user_created===this._services._account.getUser()._id)&&n.push({link:"/support-ticket/edit",params:t||"0",label:"Edit"}),this.menuData={title:"Support Center",module:"Support Ticket",description_name:"Support Ticket #",description:e?e.support_ticket_number_string:"",tabs:n},this._services._app.setNavbarModuleData(this.menuData)}}SupportTicketComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketComponent,deps:[{token:SupportTicketService},{token:ProviderService}],target:i0.ɵɵFactoryTarget.Component}),SupportTicketComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:SupportTicketComponent,selector:"ng-component",providers:[ProviderService],usesInheritance:!0,ngImport:i0,template:"<router-outlet></router-outlet>",isInline:!0,dependencies:[{kind:"directive",type:i1$3.RouterOutlet,selector:"router-outlet",inputs:["name"],outputs:["activate","deactivate","attach","detach"],exportAs:["outlet"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketComponent,decorators:[{type:Component,args:[{providers:[ProviderService],template:"<router-outlet></router-outlet>"}]}],ctorParameters:function(){return[{type:SupportTicketService},{type:ProviderService}]}});class SupportTicketListComponent extends BaseComponent{constructor(t,e,n){super(n),this._sts=t,this._route=e,this._services=n,this.subscription$=[],this.columns=[{name:"Support Ticket #",data:"support_ticket_number"},{name:"Date Created",data:"date_created"},{name:"Type",data:"type"},{name:"Issue",data:"issue"},{name:"Status",data:"status"},{name:"Created By",data:"user_created"}],this.tableData={searchString:"",entriesPerPage:"25",pageNum:1,sortColumn:"",sortOrder:"desc",filters:{status:"Opened",substatus:"All"}},this.totalItems=1e3}ngOnInit(){this._sts.setSelectedSupportTicket("0"),this.route$=this._route.queryParams.subscribe((()=>{let t=Object.keys(this.tableData),e=Object.keys(this.tableData.filters);this._route.snapshot.queryParamMap.keys.length?(t.splice(t.indexOf("filters",1)),e.forEach((e=>{t.push("filters."+e)})),t.filter((t=>t in this._route.snapshot.queryParams)).forEach((t=>{if(t.includes("filters.")){let e=t;e=e.replace("filters.",""),this.tableData.filters[e]=this._route.snapshot.queryParams[t]}else this.tableData[t]=this._route.snapshot.queryParams[t]}))):this.tableData={searchString:"",entriesPerPage:"25",pageNum:1,sortColumn:"",sortOrder:"desc",filters:{status:"Opened",substatus:"All"}},this.queryData()}))}ngOnDestroy(){this.subscription$.forEach((t=>{t.unsubscribe()})),this.route$.unsubscribe()}onQueryDataChanged(){let t={},e=Object.keys(this.tableData),n=Object.keys(this.tableData.filters);e.forEach((e=>{"filters"===e?n.forEach((e=>{t["filters."+e]=this.tableData.filters[e]})):t[e]=this.tableData[e]})),this._services._router.navigate(["/support-ticket/list"],{queryParams:t})}queryData(){let t={};this.columns.forEach((e=>{t[e.data]=1}));const e={limit:parseInt(this.tableData.entriesPerPage),skip:(this.tableData.pageNum-1)*parseInt(this.tableData.entriesPerPage),sort:this.tableData.sortColumn?{[this.tableData.sortColumn]:"asc"===this.tableData.sortOrder?1:-1}:{name:1},fields:t};let n=[{prop:"client",data:this._services._app.client.getValue()}];"All"!==this.tableData.filters.status&&n.push({prop:"status",data:this.tableData.filters.status}),"All"!==this.tableData.filters.substatus&&n.push({prop:"substatus",data:this.tableData.filters.substatus}),this._services._socket.call("supportticketsWithOptions",e,this.tableData.searchString,n,((t,e)=>{this.support_tickets=e})),this._services._socket.call("supportticketCount",this.tableData.searchString,n,((t,e)=>{t?this._services._socket.call("insertErrorLog","countQuery - resolveioSupportList",[t]):this.totalItems=e}))}}SupportTicketListComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketListComponent,deps:[{token:SupportTicketService},{token:i1$3.ActivatedRoute},{token:ProviderService}],target:i0.ɵɵFactoryTarget.Component}),SupportTicketListComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:SupportTicketListComponent,selector:"ng-component",providers:[ProviderService],usesInheritance:!0,ngImport:i0,template:'<div class="row">\n <div class="col-sm-6">\n <b>Filter Support Ticket By Status</b><br>\n <select class="form-control" [(ngModel)]="tableData.filters[\'status\']" (change)="onQueryDataChanged()" tourAnchor="supportListFilter">\n <option value="All">All</option>\n <option value="Opened">Opened</option>\n <option value="Resolved">Resolved</option>\n </select>\n </div>\n <div class="col-sm-6">\n <b>Filter Support Ticket By Sub-Status</b><br>\n <select class="form-control" [(ngModel)]="tableData.filters[\'substatus\']" (change)="onQueryDataChanged()">\n <option value="All">All</option>\n <option value="Investigating">Investigating</option>\n <option value="Awaiting Customer Interaction">Awaiting Customer Interaction</option>\n <option value="Resolved">Resolved</option>\n </select>\n </div>\n</div>\n<div class="row">\n <div class="col-md-12">\n <div style="padding-left: 15px; padding-right: 15px; padding-top: 15px;">\n <data-table #dataTable\n [urlClick]="\'/support-ticket/detail/\'"\n [columns]="columns"\n [data]="support_tickets"\n [collapseSize]="990"\n [searchTitle]="\'Search For Support Ticket...\'"\n [totalItems]="totalItems"\n (onChangeTableData)="onQueryDataChanged()"\n [tableData]="tableData"\n tourAnchor="supportListDatatable">\n </data-table>\n </div>\n </div>\n</div>\n ',dependencies:[{kind:"directive",type:i2.NgSelectOption,selector:"option",inputs:["ngValue","value"]},{kind:"directive",type:i2.ɵNgSelectMultipleOption,selector:"option",inputs:["ngValue","value"]},{kind:"directive",type:i2.SelectControlValueAccessor,selector:"select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]",inputs:["compareWith"]},{kind:"directive",type:i2.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i2.NgModel,selector:"[ngModel]:not([formControlName]):not([formControl])",inputs:["name","disabled","ngModel","ngModelOptions"],outputs:["ngModelChange"],exportAs:["ngModel"]},{kind:"component",type:DatatableComponent,selector:"data-table",inputs:["urlClick","columns","data","collapseSize","searchTitle","totalItems","tableData"],outputs:["onChangeTableData"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketListComponent,decorators:[{type:Component,args:[{providers:[ProviderService],template:'<div class="row">\n <div class="col-sm-6">\n <b>Filter Support Ticket By Status</b><br>\n <select class="form-control" [(ngModel)]="tableData.filters[\'status\']" (change)="onQueryDataChanged()" tourAnchor="supportListFilter">\n <option value="All">All</option>\n <option value="Opened">Opened</option>\n <option value="Resolved">Resolved</option>\n </select>\n </div>\n <div class="col-sm-6">\n <b>Filter Support Ticket By Sub-Status</b><br>\n <select class="form-control" [(ngModel)]="tableData.filters[\'substatus\']" (change)="onQueryDataChanged()">\n <option value="All">All</option>\n <option value="Investigating">Investigating</option>\n <option value="Awaiting Customer Interaction">Awaiting Customer Interaction</option>\n <option value="Resolved">Resolved</option>\n </select>\n </div>\n</div>\n<div class="row">\n <div class="col-md-12">\n <div style="padding-left: 15px; padding-right: 15px; padding-top: 15px;">\n <data-table #dataTable\n [urlClick]="\'/support-ticket/detail/\'"\n [columns]="columns"\n [data]="support_tickets"\n [collapseSize]="990"\n [searchTitle]="\'Search For Support Ticket...\'"\n [totalItems]="totalItems"\n (onChangeTableData)="onQueryDataChanged()"\n [tableData]="tableData"\n tourAnchor="supportListDatatable">\n </data-table>\n </div>\n </div>\n</div>\n '}]}],ctorParameters:function(){return[{type:SupportTicketService},{type:i1$3.ActivatedRoute},{type:ProviderService}]}});class SupportTicketNewComponent extends BaseComponent{constructor(t,e,n,o){super(n),this._sts=t,this._cd=e,this._services=n,this._ds=o,this.subscription$=[],this.disableFormButton=!1,this.submit=!1}ngOnInit(){this._sts.setSelectedSupportTicket("0"),this.form=this._services._fb.group({__v:[0],type:["",[Validators.required]],priority:["",[Validators.required]],issue:["",[Validators.required]],support_ticket_number:[0],support_ticket_number_string:["0"],status:["Opened"],substatus:["New"],client:[this._services._app.client.getValue()],id_client:[this._services._app.client.getValue()],messages:[[]],date_created:[null],date_created_string:[""],id_user_created:[this._services._account.getUser()._id],user_created:[this._services._account.getUser().fullname],billable:[!1,[Validators.required]],date_investigation:[null],date_closed:[null],files:[[]],current_watchers:[[]],client_user:[{id_user:this._services._account.getUser()._id,user:this._services._account.getUser().fullname,email:this._services._account.getUser().email?this._services._account.getUser().email:""}],tasks:[[]],notes:[[]],users_assigned:[[]],bill_description:[""],difficulty:[1]})}ngOnDestroy(){this.subscription$.forEach((t=>{t.unsubscribe()}))}canDeactivate(){return!0}onTypeChange(){"System Impairment"===this.form.controls.type.value?(this.form.controls.priority.setValue("High"),this.form.controls.billable.setValue(!1)):"Request New Feature"===this.form.controls.type.value||"General Inquery"===this.form.controls.type.value?(this.form.controls.priority.setValue("Low"),this.form.controls.billable.setValue(!0)):(this.form.controls.priority.setValue(""),this.form.controls.billable.setValue(!1))}submitForm(t){this.submit=!0,this.disableFormButton=!0;let e=new Date;this.form.controls.date_created.setValue(e),this.form.controls.date_created_string.setValue(e.getFullYear()+"/"+(e.getMonth()+1)+"/"+e.getDate()),this._services._socket.call("supportInsertSupportTicket",this.form.value,((t,e)=>{e?(this._services._alert.setAlert("success","Support ticket has been created"),this._services._router.navigateByUrl("/support-ticket/detail/"+e)):(this._ds.error("Could not create new support ticket."),this._services._socket.call("insertErrorLog","Support Ticket New - insert support ticket",[this.form.value,t]))}))}}SupportTicketNewComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketNewComponent,deps:[{token:SupportTicketService},{token:i0.ChangeDetectorRef},{token:ProviderService},{token:DialogService}],target:i0.ɵɵFactoryTarget.Component}),SupportTicketNewComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:SupportTicketNewComponent,selector:"ng-component",providers:[ProviderService],viewQueries:[{propertyName:"fileUpload",first:!0,predicate:["fileUpload"],descendants:!0,static:!0}],usesInheritance:!0,ngImport:i0,template:'<style>\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n</style>\n\n<div class="col-lg-12">\n <form [formGroup]="form" novalidate (ngSubmit)="submitForm(form)">\n <div class="row">\n <ngb-accordion #acc="ngbAccordion" activeIds="supportTicketInfo">\n <ngb-panel id="supportTicketInfo">\n <ng-template ngbPanelTitle>\n <div> \n <label class="label-accordion">Support Ticket Info</label>\n <i *ngIf="!acc.activeIds.includes(\'supportTicketInfo\')" class="fa fa-plus float-end" aria-hidden="true"></i>\n <i *ngIf="acc.activeIds.includes(\'supportTicketInfo\')" class="fa fa-minus float-end" aria-hidden="true"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class="row">\n <div class="col-12">\n <div class="form-group">\n <label class="form-control-label">Support Ticket Type</label>\n <em *ngIf="!form.controls.type.valid">- Required</em>\n <select [ngClass]="[\'form-control\', form.controls.type.valid ? \'is-valid\' : \'is-invalid\']" formControlName="type" (change)="onTypeChange()" tourAnchor="supportNewSelect">\n <option value="">Select Type</option>\n <option value="General Inquery">General Inquery</option>\n <option value="System Impairment">System Impairment</option>\n <option value="Request New Feature">Request New Feature</option>\n </select>\n <div class="invalid-feedback" *ngIf="!form.controls.type.valid">Type is required</div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <div class="form-group">\n <label class="form-control-label">Problem/Feature Description</label>\n <em *ngIf="!form.controls.issue.valid">- Required</em>\n <textarea formControlName="issue" [ngClass]="[\'form-control\', form.controls.issue.valid ? \'is-valid\' : \'is-invalid\' ]" [rows]="5" style="overflow-x: hidden" tourAnchor="supportNewInput"></textarea>\n <div class="invalid-feedback" *ngIf="!form.controls.issue.valid">Description is required</div>\n </div>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n </ngb-accordion>\n </div>\n <div class="row" style="padding-top: 15px;">\n <form-button [form]="form" [disabled]="disableFormButton" tourAnchor="supportNewSubmit"></form-button>\n </div>\n </form>\n</div>\n',styles:["\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n"],dependencies:[{kind:"directive",type:i2.ɵNgNoValidate,selector:"form:not([ngNoForm]):not([ngNativeValidate])"},{kind:"directive",type:i2.NgSelectOption,selector:"option",inputs:["ngValue","value"]},{kind:"directive",type:i2.ɵNgSelectMultipleOption,selector:"option",inputs:["ngValue","value"]},{kind:"directive",type:i2.DefaultValueAccessor,selector:"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]"},{kind:"directive",type:i2.SelectControlValueAccessor,selector:"select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]",inputs:["compareWith"]},{kind:"directive",type:i2.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i2.NgControlStatusGroup,selector:"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]"},{kind:"directive",type:i2.FormGroupDirective,selector:"[formGroup]",inputs:["formGroup"],outputs:["ngSubmit"],exportAs:["ngForm"]},{kind:"directive",type:i2.FormControlName,selector:"[formControlName]",inputs:["formControlName","disabled","ngModel"],outputs:["ngModelChange"]},{kind:"component",type:i1$4.NgbAccordion,selector:"ngb-accordion",inputs:["animation","activeIds","closeOthers","destroyOnHide","type"],outputs:["panelChange","shown","hidden"],exportAs:["ngbAccordion"]},{kind:"directive",type:i1$4.NgbPanel,selector:"ngb-panel",inputs:["disabled","id","title","type","cardClass"],outputs:["shown","hidden"]},{kind:"directive",type:i1$4.NgbPanelTitle,selector:"ng-template[ngbPanelTitle]"},{kind:"directive",type:i1$4.NgbPanelContent,selector:"ng-template[ngbPanelContent]"},{kind:"component",type:FormButtonComponent,selector:"form-button",inputs:["form","disabled","type"]},{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketNewComponent,decorators:[{type:Component,args:[{providers:[ProviderService],template:'<style>\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n</style>\n\n<div class="col-lg-12">\n <form [formGroup]="form" novalidate (ngSubmit)="submitForm(form)">\n <div class="row">\n <ngb-accordion #acc="ngbAccordion" activeIds="supportTicketInfo">\n <ngb-panel id="supportTicketInfo">\n <ng-template ngbPanelTitle>\n <div> \n <label class="label-accordion">Support Ticket Info</label>\n <i *ngIf="!acc.activeIds.includes(\'supportTicketInfo\')" class="fa fa-plus float-end" aria-hidden="true"></i>\n <i *ngIf="acc.activeIds.includes(\'supportTicketInfo\')" class="fa fa-minus float-end" aria-hidden="true"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class="row">\n <div class="col-12">\n <div class="form-group">\n <label class="form-control-label">Support Ticket Type</label>\n <em *ngIf="!form.controls.type.valid">- Required</em>\n <select [ngClass]="[\'form-control\', form.controls.type.valid ? \'is-valid\' : \'is-invalid\']" formControlName="type" (change)="onTypeChange()" tourAnchor="supportNewSelect">\n <option value="">Select Type</option>\n <option value="General Inquery">General Inquery</option>\n <option value="System Impairment">System Impairment</option>\n <option value="Request New Feature">Request New Feature</option>\n </select>\n <div class="invalid-feedback" *ngIf="!form.controls.type.valid">Type is required</div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <div class="form-group">\n <label class="form-control-label">Problem/Feature Description</label>\n <em *ngIf="!form.controls.issue.valid">- Required</em>\n <textarea formControlName="issue" [ngClass]="[\'form-control\', form.controls.issue.valid ? \'is-valid\' : \'is-invalid\' ]" [rows]="5" style="overflow-x: hidden" tourAnchor="supportNewInput"></textarea>\n <div class="invalid-feedback" *ngIf="!form.controls.issue.valid">Description is required</div>\n </div>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n </ngb-accordion>\n </div>\n <div class="row" style="padding-top: 15px;">\n <form-button [form]="form" [disabled]="disableFormButton" tourAnchor="supportNewSubmit"></form-button>\n </div>\n </form>\n</div>\n'}]}],ctorParameters:function(){return[{type:SupportTicketService},{type:i0.ChangeDetectorRef},{type:ProviderService},{type:DialogService}]},propDecorators:{fileUpload:[{type:ViewChild,args:["fileUpload",{static:!0}]}]}});class SupportTicketDetailComponent extends BaseComponent{constructor(t,e,n,o){super(n),this._route=t,this._sts=e,this._services=n,this._ds=o,this.subscription$=[],this.files=[]}ngOnInit(){this.id=this._route.snapshot.params.id,this._sts.setSelectedSupportTicket(this.id),this._services._socket.call("supportGetSupportTicketWithId",this.id,((t,e)=>{if(!e)return this._services._router.navigateByUrl("/support-ticket/list"),void this._ds.error("Could not find support ticket");this.data=e}))}ngOnDestroy(){this.subscription$.forEach((t=>{t.unsubscribe()}))}onFileAdded(t){this.data.files.push(t._id),this._services._socket.call("supportUpdateSupportTicket",this.data,((t,e)=>{!t&&e||(this._ds.error("Could not update support ticket files"),this._services._socket.call("insertErrorLog","support-ticket-detail - update support-ticket files add",[this.data.files,t]))}))}onFilesRemoved(t){this._ds.confirm("Are you sure you want to remove a file? This will email all current watchers?").then((e=>{-1!==this.data.files.indexOf(t._id)&&(this.data.files.splice(this.data.files.indexOf(t._id),1),this._services._socket.call("supportUpdateSupportTicket",this.data,((t,e)=>{!t&&e||(this._ds.error("Could not update support-ticket files"),this._services._socket.call("insertErrorLog","support-ticket-detail - update files remove",[{prop:"files",data:this.data.files},t]))})))}),(()=>{}))}edit(){this._services._router.navigateByUrl("/support-ticket/edit/"+this.id)}newMessage(){this._ds.input("Input Message",[{label:"Message",form:"message",data:"",validators:[Validators.required],validatorErrors:["required"],validatorMsg:["Message is required"],required:!0,type:"textarea"}]).then((t=>{this.data.messages.push({message:t.message.value,id_user:this._services._account.getUser()._id,user:this._services._account.getUser().fullname,date:new Date,type:"Client"}),this._services._socket.call("supportUpdateSupportTicket",this.data,((t,e)=>{e||(this._services._socket.call("insertErrorLog","Support Ticket Detail - Add Message"),this._ds.error("Support ticket could not update"))}))}),(()=>{}))}editMessage(t){let e=this.data.messages[t];this._ds.input("Input Message",[{label:"Message",form:"message",data:e.message,validators:[Validators.required],validatorErrors:["required"],validatorMsg:["Message is required"],required:!0,type:"textarea"}]).then((t=>{e.message=t.message.value,this._services._socket.call("supportUpdateSupportTicket",this.data,((t,e)=>{e||(this._services._socket.call("insertErrorLog","Support Ticket Detail - Add Message"),this._ds.error("Support ticket could not update"))}))}),(()=>{}))}deleteMessage(t){this._ds.confirm("Are you sure you want to remove this message?").then((()=>{this.data.messages.splice(t,1),this._services._socket.call("supportUpdateSupportTicket",this.data,((t,e)=>{e||(this._services._socket.call("insertErrorLog","Support Ticket Detail - Add Message"),this._ds.error("Support ticket could not update"))}))}),(()=>{}))}isMyMessage(t){return this._services._account.getUser()._id===t.id_user}}SupportTicketDetailComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketDetailComponent,deps:[{token:i1$3.ActivatedRoute},{token:SupportTicketService},{token:ProviderService},{token:DialogService}],target:i0.ɵɵFactoryTarget.Component}),SupportTicketDetailComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:SupportTicketDetailComponent,selector:"ng-component",providers:[ProviderService],viewQueries:[{propertyName:"fileUpload",first:!0,predicate:["fileUpload"],descendants:!0,static:!0}],usesInheritance:!0,ngImport:i0,template:'<style>\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n\n ngb-accordion {\n width: 100%;\n }\n\n dl {\n margin-bottom: 0px;\n }\n\n .selected {\n background-color: lightblue;\n }\n</style>\n\n<div class="col-lg-12" *ngIf="data">\n <div class="row">\n <ngb-accordion #acc="ngbAccordion" activeIds="supportTicketInfo, supportTicketMessages, files">\n <ngb-panel id="supportTicketInfo">\n <ng-template ngbPanelTitle>\n <div> \n <label class="label-accordion">Support Ticket Info</label>\n <i *ngIf="!acc.activeIds.includes(\'supportTicketInfo\')" class="fa fa-plus float-end" aria-hidden="true"></i>\n <i *ngIf="acc.activeIds.includes(\'supportTicketInfo\')" class="fa fa-minus float-end" aria-hidden="true"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class="card">\n <div class="card-header"><b>General Info</b></div>\n <div class="card-body">\n <div class="row">\n <div class="col-lg-4">\n <dl>\n <dt>Support Ticket #</dt>\n <dd>{{data.support_ticket_number | number}}</dd>\n <dt>Date Created</dt>\n <dd>{{data.date_created | date: \'short\'}}</dd>\n </dl>\n </div>\n <div class="col-lg-4">\n <dl>\n <dt>Type</dt>\n <dd>{{data.type}}</dd>\n <dt>User</dt>\n <dd>{{data.user_created}}</dd>\n </dl>\n </div>\n <div class="col-lg-4">\n <dl>\n <dt>Status</dt>\n <dd>{{ data.status }}</dd>\n </dl>\n </div>\n </div>\n </div>\n </div>\n <div class="card">\n <div class="card-header"><b>Problem Description</b></div>\n <div class="card-body">\n <pre>{{data.issue}}</pre>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n <ngb-panel id="supportTicketMessages" *ngIf="data">\n <ng-template ngbPanelTitle>\n <div> \n <label class="label-accordion">Messages</label>\n <i *ngIf="!acc.activeIds.includes(\'supportTicketMessages\')" class="fa fa-plus float-end" aria-hidden="true"></i>\n <i *ngIf="acc.activeIds.includes(\'supportTicketMessages\')" class="fa fa-minus float-end" aria-hidden="true"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class="row">\n <div class="col-lg-12">\n <div class="card" *ngFor="let message of data.messages; let i = index;">\n <div class="card-header"><b>User: {{message.user}} - Date: {{message.date | date : \'short\'}}</b></div>\n <div class="card-body" [ngClass]="[message.type === \'ResolveIO\' ? \'selected\' : \'\']">\n <div class="row" style="width: 100%">\n <div class="col-lg-10">\n <pre>{{message.message}}</pre>\n </div>\n <div class="col-lg-2">\n <responsive-button-group collapseSize="900">\n <button type="button" class="btn btn-warning" (click)="editMessage(i)" *ngIf="isMyMessage(message)">Edit</button>\n <button type="button" class="btn btn-danger" (click)="deleteMessage(i)" *ngIf="isMyMessage(message)">Delete</button>\n </responsive-button-group>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class="row" style="margin-top: 10px;">\n <div class="col-lg-12">\n <button type="button" class="btn btn-success" (click)="newMessage()">New Message</button>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n <ngb-panel id="files">\n\t\t\t\t<ng-template ngbPanelTitle>\n\t\t\t\t\t<div> \n\t\t\t\t\t\t<label class="label-accordion">Support Ticket Files</label>\n\t\t\t\t\t\t<i *ngIf="!acc.activeIds.includes(\'files\')" class="fa fa-plus float-end" aria-hidden="true"></i>\n\t\t\t\t\t\t<i *ngIf="acc.activeIds.includes(\'files\')" class="fa fa-minus float-end" aria-hidden="true"></i>\n\t\t\t\t\t</div>\n\t\t\t\t</ng-template>\n\t\t\t\t<ng-template ngbPanelContent>\n\t\t\t\t\t<file-upload #fileUpload (fileAdded)="onFileAdded($event)" (fileRemoved)="onFilesRemoved($event)" [files]="files" [allowDelete]="true" [allowReplace]="true"></file-upload>\n\t\t\t\t</ng-template>\n\t\t\t</ngb-panel>\n </ngb-accordion>\n </div>\n <div class="row" style="padding-top: 15px;">\n <responsive-button-group collapseSize="900">\n <button class="btn btn-warning" type="button" (click)="edit()">Edit Support Ticket</button>\n </responsive-button-group>\n </div>\n</div>\n ',styles:["\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n\n ngb-accordion {\n width: 100%;\n }\n\n dl {\n margin-bottom: 0px;\n }\n\n .selected {\n background-color: lightblue;\n }\n"],dependencies:[{kind:"component",type:i1$4.NgbAccordion,selector:"ngb-accordion",inputs:["animation","activeIds","closeOthers","destroyOnHide","type"],outputs:["panelChange","shown","hidden"],exportAs:["ngbAccordion"]},{kind:"directive",type:i1$4.NgbPanel,selector:"ngb-panel",inputs:["disabled","id","title","type","cardClass"],outputs:["shown","hidden"]},{kind:"directive",type:i1$4.NgbPanelTitle,selector:"ng-template[ngbPanelTitle]"},{kind:"directive",type:i1$4.NgbPanelContent,selector:"ng-template[ngbPanelContent]"},{kind:"component",type:ResponsiveButtonGroupComponent,selector:"responsive-button-group",inputs:["collapseSize"]},{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"component",type:FileUploadComponent,selector:"file-upload",inputs:["files","allowDelete","allowReplace","showFileUpload","fileType"],outputs:["filesChanged","fileAdded","fileRemoved"]},{kind:"pipe",type:i7.DecimalPipe,name:"number"},{kind:"pipe",type:i7.DatePipe,name:"date"}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketDetailComponent,decorators:[{type:Component,args:[{providers:[ProviderService],template:'<style>\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n\n ngb-accordion {\n width: 100%;\n }\n\n dl {\n margin-bottom: 0px;\n }\n\n .selected {\n background-color: lightblue;\n }\n</style>\n\n<div class="col-lg-12" *ngIf="data">\n <div class="row">\n <ngb-accordion #acc="ngbAccordion" activeIds="supportTicketInfo, supportTicketMessages, files">\n <ngb-panel id="supportTicketInfo">\n <ng-template ngbPanelTitle>\n <div> \n <label class="label-accordion">Support Ticket Info</label>\n <i *ngIf="!acc.activeIds.includes(\'supportTicketInfo\')" class="fa fa-plus float-end" aria-hidden="true"></i>\n <i *ngIf="acc.activeIds.includes(\'supportTicketInfo\')" class="fa fa-minus float-end" aria-hidden="true"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class="card">\n <div class="card-header"><b>General Info</b></div>\n <div class="card-body">\n <div class="row">\n <div class="col-lg-4">\n <dl>\n <dt>Support Ticket #</dt>\n <dd>{{data.support_ticket_number | number}}</dd>\n <dt>Date Created</dt>\n <dd>{{data.date_created | date: \'short\'}}</dd>\n </dl>\n </div>\n <div class="col-lg-4">\n <dl>\n <dt>Type</dt>\n <dd>{{data.type}}</dd>\n <dt>User</dt>\n <dd>{{data.user_created}}</dd>\n </dl>\n </div>\n <div class="col-lg-4">\n <dl>\n <dt>Status</dt>\n <dd>{{ data.status }}</dd>\n </dl>\n </div>\n </div>\n </div>\n </div>\n <div class="card">\n <div class="card-header"><b>Problem Description</b></div>\n <div class="card-body">\n <pre>{{data.issue}}</pre>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n <ngb-panel id="supportTicketMessages" *ngIf="data">\n <ng-template ngbPanelTitle>\n <div> \n <label class="label-accordion">Messages</label>\n <i *ngIf="!acc.activeIds.includes(\'supportTicketMessages\')" class="fa fa-plus float-end" aria-hidden="true"></i>\n <i *ngIf="acc.activeIds.includes(\'supportTicketMessages\')" class="fa fa-minus float-end" aria-hidden="true"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class="row">\n <div class="col-lg-12">\n <div class="card" *ngFor="let message of data.messages; let i = index;">\n <div class="card-header"><b>User: {{message.user}} - Date: {{message.date | date : \'short\'}}</b></div>\n <div class="card-body" [ngClass]="[message.type === \'ResolveIO\' ? \'selected\' : \'\']">\n <div class="row" style="width: 100%">\n <div class="col-lg-10">\n <pre>{{message.message}}</pre>\n </div>\n <div class="col-lg-2">\n <responsive-button-group collapseSize="900">\n <button type="button" class="btn btn-warning" (click)="editMessage(i)" *ngIf="isMyMessage(message)">Edit</button>\n <button type="button" class="btn btn-danger" (click)="deleteMessage(i)" *ngIf="isMyMessage(message)">Delete</button>\n </responsive-button-group>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class="row" style="margin-top: 10px;">\n <div class="col-lg-12">\n <button type="button" class="btn btn-success" (click)="newMessage()">New Message</button>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n <ngb-panel id="files">\n\t\t\t\t<ng-template ngbPanelTitle>\n\t\t\t\t\t<div> \n\t\t\t\t\t\t<label class="label-accordion">Support Ticket Files</label>\n\t\t\t\t\t\t<i *ngIf="!acc.activeIds.includes(\'files\')" class="fa fa-plus float-end" aria-hidden="true"></i>\n\t\t\t\t\t\t<i *ngIf="acc.activeIds.includes(\'files\')" class="fa fa-minus float-end" aria-hidden="true"></i>\n\t\t\t\t\t</div>\n\t\t\t\t</ng-template>\n\t\t\t\t<ng-template ngbPanelContent>\n\t\t\t\t\t<file-upload #fileUpload (fileAdded)="onFileAdded($event)" (fileRemoved)="onFilesRemoved($event)" [files]="files" [allowDelete]="true" [allowReplace]="true"></file-upload>\n\t\t\t\t</ng-template>\n\t\t\t</ngb-panel>\n </ngb-accordion>\n </div>\n <div class="row" style="padding-top: 15px;">\n <responsive-button-group collapseSize="900">\n <button class="btn btn-warning" type="button" (click)="edit()">Edit Support Ticket</button>\n </responsive-button-group>\n </div>\n</div>\n '}]}],ctorParameters:function(){return[{type:i1$3.ActivatedRoute},{type:SupportTicketService},{type:ProviderService},{type:DialogService}]},propDecorators:{fileUpload:[{type:ViewChild,args:["fileUpload",{static:!0}]}]}});class SupportTicketEditComponent extends BaseComponent{constructor(t,e,n,o){super(n),this._route=t,this._sts=e,this._services=n,this._ds=o,this.subscription$=[],this.disableFormButton=!1}ngOnInit(){this.id=this._route.snapshot.params.id,this._sts.setSelectedSupportTicket(this.id.toString()),this.form=this._services._fb.group({_id:[""],__v:[0],type:["",[Validators.required]],priority:["",[Validators.required]],issue:["",[Validators.required]],support_ticket_number:[null],support_ticket_number_string:[null],status:["Opened"],substatus:["New"],client:[""],id_client:["",[Validators.required]],messages:[[]],date_created:[null],date_created_string:[""],id_user_created:[this._services._account.getUser()._id],user_created:[this._services._account.getUser().fullname],billable:[!1,[Validators.required]],date_investigation:[null],date_closed:[null],files:[[]],current_watchers:[[]],client_user:[null],users_assigned:[[]],bill_description:[""],tasks:[[]],notes:[[]],difficulty:[1]}),this._services._socket.call("supportGetSupportTicketWithId",this.id,((t,e)=>{if(!e)return this._services._router.navigateByUrl("/support-ticket/list"),void this._ds.error("Could not find support ticket");this.data=e,this.loadForm()}))}ngOnDestroy(){this.subscription$.forEach((t=>{t.unsubscribe()}))}loadForm(){this.form.patchValue(this.data)}onTypeChange(){"System Impairment"===this.form.controls.type.value?(this.form.controls.priority.setValue("High"),this.form.controls.billable.setValue(!1)):"Request New Feature"===this.form.controls.type.value||"General Inquery"===this.form.controls.type.value?(this.form.controls.priority.setValue("Low"),this.form.controls.billable.setValue(!0)):(this.form.controls.priority.setValue(""),this.form.controls.billable.setValue(!1))}submitForm(t){this.disableFormButton=!0,this._services._socket.call("supportUpdateSupportTicket",this.form.value,((t,e)=>{e?(this._services._alert.setAlert("info","Editing support ticket, please wait"),this._services._router.navigateByUrl("/support-ticket/detail/"+this.id)):(this._ds.error("Could not edit support ticket"),this._services._socket.call("insertErrorLog","Support-ticket-edit - update support ticket",[this.form.value,t]))}))}}SupportTicketEditComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketEditComponent,deps:[{token:i1$3.ActivatedRoute},{token:SupportTicketService},{token:ProviderService},{token:DialogService}],target:i0.ɵɵFactoryTarget.Component}),SupportTicketEditComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:SupportTicketEditComponent,selector:"ng-component",providers:[ProviderService],viewQueries:[{propertyName:"fileUpload",first:!0,predicate:["fileUpload"],descendants:!0,static:!0},{propertyName:"selectType",first:!0,predicate:["selectType"],descendants:!0,static:!0}],usesInheritance:!0,ngImport:i0,template:'<style>\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n</style>\n\n<div class="col-lg-12">\n <form [formGroup]="form" novalidate (ngSubmit)="submitForm(form)">\n <div class="row">\n <ngb-accordion #acc="ngbAccordion" activeIds="supportTicketInfo">\n <ngb-panel id="supportTicketInfo">\n <ng-template ngbPanelTitle>\n <div> \n <label class="label-accordion">Support Ticket Info</label>\n <i *ngIf="!acc.activeIds.includes(\'supportTicketInfo\')" class="fa fa-plus float-end" aria-hidden="true"></i>\n <i *ngIf="acc.activeIds.includes(\'supportTicketInfo\')" class="fa fa-minus float-end" aria-hidden="true"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class="row">\n <div class="col-12">\n <div class="form-group">\n <label class="form-control-label">Support Ticket Type</label>\n <em *ngIf="!form.controls.type.valid">- Required</em>\n <select [ngClass]="[\'form-control\', form.controls.type.valid ? \'is-valid\' : \'is-invalid\']" formControlName="type" (change)="onTypeChange()">\n <option value="">Select Type</option>\n <option value="General Inquery">General Inquery</option>\n <option value="System Impairment">System Impairment</option>\n <option value="Request New Feature">Request New Feature</option>\n </select>\n <div class="invalid-feedback" *ngIf="!form.controls.type.valid">Type is required</div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <div class="form-group">\n <label class="form-control-label">Problem Description</label>\n <em *ngIf="!form.controls.issue.valid">- Required</em>\n <textarea formControlName="issue" [ngClass]="[\'form-control\', form.controls.issue.valid ? \'is-valid\' : \'is-invalid\' ]" [rows]="5" style="overflow-x: hidden"></textarea>\n <div class="invalid-feedback" *ngIf="!form.controls.issue.valid">Problem Description is required</div>\n </div>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n </ngb-accordion>\n </div>\n <div class="row" style="padding-top: 15px;">\n <form-button [form]="form" [disabled]="disableFormButton"></form-button>\n </div>\n </form>\n</div>\n ',styles:["\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n"],dependencies:[{kind:"directive",type:i2.ɵNgNoValidate,selector:"form:not([ngNoForm]):not([ngNativeValidate])"},{kind:"directive",type:i2.NgSelectOption,selector:"option",inputs:["ngValue","value"]},{kind:"directive",type:i2.ɵNgSelectMultipleOption,selector:"option",inputs:["ngValue","value"]},{kind:"directive",type:i2.DefaultValueAccessor,selector:"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]"},{kind:"directive",type:i2.SelectControlValueAccessor,selector:"select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]",inputs:["compareWith"]},{kind:"directive",type:i2.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i2.NgControlStatusGroup,selector:"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]"},{kind:"directive",type:i2.FormGroupDirective,selector:"[formGroup]",inputs:["formGroup"],outputs:["ngSubmit"],exportAs:["ngForm"]},{kind:"directive",type:i2.FormControlName,selector:"[formControlName]",inputs:["formControlName","disabled","ngModel"],outputs:["ngModelChange"]},{kind:"component",type:i1$4.NgbAccordion,selector:"ngb-accordion",inputs:["animation","activeIds","closeOthers","destroyOnHide","type"],outputs:["panelChange","shown","hidden"],exportAs:["ngbAccordion"]},{kind:"directive",type:i1$4.NgbPanel,selector:"ngb-panel",inputs:["disabled","id","title","type","cardClass"],outputs:["shown","hidden"]},{kind:"directive",type:i1$4.NgbPanelTitle,selector:"ng-template[ngbPanelTitle]"},{kind:"directive",type:i1$4.NgbPanelContent,selector:"ng-template[ngbPanelContent]"},{kind:"component",type:FormButtonComponent,selector:"form-button",inputs:["form","disabled","type"]},{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketEditComponent,decorators:[{type:Component,args:[{providers:[ProviderService],template:'<style>\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n</style>\n\n<div class="col-lg-12">\n <form [formGroup]="form" novalidate (ngSubmit)="submitForm(form)">\n <div class="row">\n <ngb-accordion #acc="ngbAccordion" activeIds="supportTicketInfo">\n <ngb-panel id="supportTicketInfo">\n <ng-template ngbPanelTitle>\n <div> \n <label class="label-accordion">Support Ticket Info</label>\n <i *ngIf="!acc.activeIds.includes(\'supportTicketInfo\')" class="fa fa-plus float-end" aria-hidden="true"></i>\n <i *ngIf="acc.activeIds.includes(\'supportTicketInfo\')" class="fa fa-minus float-end" aria-hidden="true"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class="row">\n <div class="col-12">\n <div class="form-group">\n <label class="form-control-label">Support Ticket Type</label>\n <em *ngIf="!form.controls.type.valid">- Required</em>\n <select [ngClass]="[\'form-control\', form.controls.type.valid ? \'is-valid\' : \'is-invalid\']" formControlName="type" (change)="onTypeChange()">\n <option value="">Select Type</option>\n <option value="General Inquery">General Inquery</option>\n <option value="System Impairment">System Impairment</option>\n <option value="Request New Feature">Request New Feature</option>\n </select>\n <div class="invalid-feedback" *ngIf="!form.controls.type.valid">Type is required</div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <div class="form-group">\n <label class="form-control-label">Problem Description</label>\n <em *ngIf="!form.controls.issue.valid">- Required</em>\n <textarea formControlName="issue" [ngClass]="[\'form-control\', form.controls.issue.valid ? \'is-valid\' : \'is-invalid\' ]" [rows]="5" style="overflow-x: hidden"></textarea>\n <div class="invalid-feedback" *ngIf="!form.controls.issue.valid">Problem Description is required</div>\n </div>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n </ngb-accordion>\n </div>\n <div class="row" style="padding-top: 15px;">\n <form-button [form]="form" [disabled]="disableFormButton"></form-button>\n </div>\n </form>\n</div>\n '}]}],ctorParameters:function(){return[{type:i1$3.ActivatedRoute},{type:SupportTicketService},{type:ProviderService},{type:DialogService}]},propDecorators:{fileUpload:[{type:ViewChild,args:["fileUpload",{static:!0}]}],selectType:[{type:ViewChild,args:["selectType",{static:!0}]}]}});const routes=[{path:"",component:SupportTicketComponent,children:[{path:"list",component:SupportTicketListComponent},{path:"new",component:SupportTicketNewComponent},{path:"detail/:id",component:SupportTicketDetailComponent},{path:"edit/:id",component:SupportTicketEditComponent},{path:"**",redirectTo:"list"}]}],SupportTicketRouting=RouterModule.forChild(routes);class SupportTicketModule{}SupportTicketModule.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketModule,deps:[],target:i0.ɵɵFactoryTarget.NgModule}),SupportTicketModule.ɵmod=i0.ɵɵngDeclareNgModule({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketModule,declarations:[SupportTicketComponent,SupportTicketListComponent,SupportTicketNewComponent,SupportTicketDetailComponent,SupportTicketEditComponent],imports:[SharedModule,i1$3.RouterModule,DatatableModule,FileModule]}),SupportTicketModule.ɵinj=i0.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketModule,providers:[SupportTicketService],imports:[SharedModule,SupportTicketRouting,DatatableModule,FileModule]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketModule,decorators:[{type:NgModule,args:[{imports:[SharedModule,SupportTicketRouting,DatatableModule,FileModule],declarations:[SupportTicketComponent,SupportTicketListComponent,SupportTicketNewComponent,SupportTicketDetailComponent,SupportTicketEditComponent],providers:[SupportTicketService]}]}]});let typeCache={};function type(t){if(typeCache[t])throw new Error(`Action type "${t}" is not unqiue"`);return typeCache[t]=!0,t}class DateShortcutComponent extends BaseComponent{constructor(t,e){super(t),this._services=t,this._cd=e,this.startDateObjChange=new EventEmitter,this.endDateObjChange=new EventEmitter,this.startDateObjFormChange=new EventEmitter,this.endDateObjFormChange=new EventEmitter,this.datesChanged=new EventEmitter,this.shortcutValue=null,this.shortcutValueChange=new EventEmitter}ngOnInit(){this.onSelectShortcut()}reset(){this.shortcutValue=null,this.shortcutValueChange.emit(this.shortcutValue),this._cd.detectChanges()}onSelectShortcut(){if(this.shortcutValue){if(this.startDateObj&&this.endDateObj){let t=moment$1(new Date(this.startDateObj.year,this.startDateObj.month-1,this.startDateObj.day)).toDate(),e=moment$1(new Date(this.endDateObj.year,this.endDateObj.month-1,this.endDateObj.day)).toDate();"Q1"===this.shortcutValue?(t=moment$1().startOf("year").toDate(),e=moment$1().startOf("year").quarter(2).subtract(1,"days").toDate()):"Q2"===this.shortcutValue?(t=moment$1().startOf("year").quarter(2).toDate(),e=moment$1().startOf("year").quarter(3).subtract(1,"days").toDate()):"Q3"===this.shortcutValue?(t=moment$1().startOf("year").quarter(3).toDate(),e=moment$1().startOf("year").quarter(4).subtract(1,"days").toDate()):"Q4"===this.shortcutValue?(t=moment$1().startOf("year").quarter(4).toDate(),e=moment$1().endOf("year").toDate()):"Last Q1"===this.shortcutValue?(t=moment$1().startOf("year").subtract(1,"year").toDate(),e=moment$1().startOf("year").subtract(1,"year").quarter(2).subtract(1,"days").toDate()):"Last Q2"===this.shortcutValue?(t=moment$1().startOf("year").subtract(1,"year").quarter(2).toDate(),e=moment$1().startOf("year").subtract(1,"year").quarter(3).subtract(1,"days").toDate()):"Last Q3"===this.shortcutValue?(t=moment$1().startOf("year").subtract(1,"year").quarter(3).toDate(),e=moment$1().startOf("year").subtract(1,"year").quarter(4).subtract(1,"days").toDate()):"Last Q4"===this.shortcutValue?(t=moment$1().startOf("year").subtract(1,"year").quarter(4).toDate(),e=moment$1().endOf("year").subtract(1,"year").toDate()):"Today"===this.shortcutValue?(t=moment$1().startOf("day").toDate(),e=new Date):"Yesterday"===this.shortcutValue?(t=moment$1().subtract(1,"days").startOf("day").toDate(),e=moment$1().subtract(1,"days").endOf("day").toDate()):"Week"===this.shortcutValue?(t=moment$1().startOf("isoWeek").toDate(),e=new Date):"Last Week"===this.shortcutValue?(e=moment$1().startOf("isoWeek").subtract(1,"days").toDate(),t=moment$1(e).startOf("isoWeek").toDate()):"Month"===this.shortcutValue?(t=moment$1().startOf("month").toDate(),e=new Date):"Last Month"===this.shortcutValue?(e=moment$1().startOf("month").subtract(1,"days").endOf("day").toDate(),t=moment$1(e).startOf("month").toDate()):"Last 30 Days"===this.shortcutValue?(e=new Date,t=moment$1().subtract(30,"days").startOf("day").toDate()):"Quarter"===this.shortcutValue?(t=moment$1().startOf("year").quarter(moment$1().quarter()).toDate(),e=new Date):"Last Quarter"===this.shortcutValue?(e=moment$1().startOf("year").quarter(moment$1().quarter()).subtract(1,"days").endOf("day").toDate(),t=moment$1(e).startOf("quarter").toDate()):"Year"===this.shortcutValue?(t=moment$1().startOf("year").toDate(),e=new Date):"Last Year"===this.shortcutValue?(e=moment$1().startOf("year").subtract(1,"days").endOf("day").toDate(),t=moment$1(e).startOf("year").toDate()):"All"===this.shortcutValue&&(t=new Date(2017,0,1,0,0,0,0),e=new Date),this.startDateObj={year:t.getFullYear(),month:t.getMonth()+1,day:t.getDate()},this.endDateObj={year:e.getFullYear(),month:e.getMonth()+1,day:e.getDate()},this.startDateObjChange.emit(this.startDateObj),this.endDateObjChange.emit(this.endDateObj),this.datesChanged.emit([this.startDateObj,this.endDateObj])}else if(this.startDateObjForm&&this.endDateObjForm){let t=moment$1(new Date(this.startDateObjForm.value.year,this.startDateObjForm.value.month-1,this.startDateObjForm.value.day)).toDate(),e=moment$1(new Date(this.endDateObjForm.value.year,this.endDateObjForm.value.month-1,this.endDateObjForm.value.day)).toDate();"Q1"===this.shortcutValue?(t=moment$1().startOf("year").toDate(),e=moment$1().startOf("year").quarter(2).subtract(1,"days").toDate()):"Q2"===this.shortcutValue?(t=moment$1().startOf("year").quarter(2).toDate(),e=moment$1().startOf("year").quarter(3).subtract(1,"days").toDate()):"Q3"===this.shortcutValue?(t=moment$1().startOf("year").quarter(3).toDate(),e=moment$1().startOf("year").quarter(4).subtract(1,"days").toDate()):"Q4"===this.shortcutValue?(t=moment$1().startOf("year").quarter(4).toDate(),e=moment$1().endOf("year").toDate()):"Last Q1"===this.shortcutValue?(t=moment$1().startOf("year").subtract(1,"year").toDate(),e=moment$1().startOf("year").subtract(1,"year").quarter(2).subtract(1,"days").toDate()):"Last Q2"===this.shortcutValue?(t=moment$1().startOf("year").subtract(1,"year").quarter(2).toDate(),e=moment$1().startOf("year").subtract(1,"year").quarter(3).subtract(1,"days").toDate()):"Last Q3"===this.shortcutValue?(t=moment$1().startOf("year").subtract(1,"year").quarter(3).toDate(),e=moment$1().startOf("year").subtract(1,"year").quarter(4).subtract(1,"days").toDate()):"Last Q4"===this.shortcutValue?(t=moment$1().startOf("year").subtract(1,"year").quarter(4).toDate(),e=moment$1().endOf("year").subtract(1,"year").toDate()):"Today"===this.shortcutValue?(t=moment$1().startOf("day").toDate(),e=new Date):"Yesterday"===this.shortcutValue?(t=moment$1().subtract(1,"days").startOf("day").toDate(),e=moment$1().subtract(1,"days").endOf("day").toDate()):"Week"===this.shortcutValue?(t=moment$1().startOf("isoWeek").toDate(),e=new Date):"Last Week"===this.shortcutValue?(e=moment$1().startOf("isoWeek").subtract(1,"days").toDate(),t=moment$1(e).startOf("isoWeek").toDate()):"Month"===this.shortcutValue?(t=moment$1().startOf("month").toDate(),e=new Date):"Last Month"===this.shortcutValue?(e=moment$1().startOf("month").subtract(1,"days").endOf("day").toDate(),t=moment$1(e).startOf("month").toDate()):"Last 30 Days"===this.shortcutValue?(e=new Date,t=moment$1().subtract(30,"days").startOf("day").toDate()):"Quarter"===this.shortcutValue?(t=moment$1().startOf("year").quarter(moment$1().quarter()).toDate(),e=new Date):"Last Quarter"===this.shortcutValue?(e=moment$1().startOf("year").quarter(moment$1().quarter()).subtract(1,"days").endOf("day").toDate(),t=moment$1(e).startOf("quarter").toDate()):"Year"===this.shortcutValue?(t=moment$1().startOf("year").toDate(),e=new Date):"Last Year"===this.shortcutValue?(e=moment$1().startOf("year").subtract(1,"days").endOf("day").toDate(),t=moment$1(e).startOf("year").toDate()):"All"===this.shortcutValue&&(t=new Date(2017,0,1,0,0,0,0),e=new Date),this.startDateObjForm.setValue({year:t.getFullYear(),month:t.getMonth()+1,day:t.getDate()}),this.endDateObjForm.setValue({year:e.getFullYear(),month:e.getMonth()+1,day:e.getDate()}),this.startDateObjFormChange.emit(this.startDateObjForm),this.endDateObjFormChange.emit(this.endDateObjForm),this.datesChanged.emit([this.startDateObjForm,this.endDateObjForm])}this.shortcutValueChange.emit(this.shortcutValue)}this._cd.detectChanges()}}DateShortcutComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DateShortcutComponent,deps:[{token:ProviderService},{token:i0.ChangeDetectorRef}],target:i0.ɵɵFactoryTarget.Component}),DateShortcutComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:DateShortcutComponent,selector:"date-shortcut",inputs:{startDateObj:"startDateObj",endDateObj:"endDateObj",startDateObjForm:"startDateObjForm",endDateObjForm:"endDateObjForm",shortcutValue:"shortcutValue"},outputs:{startDateObjChange:"startDateObjChange",endDateObjChange:"endDateObjChange",startDateObjFormChange:"startDateObjFormChange",endDateObjFormChange:"endDateObjFormChange",datesChanged:"datesChanged",shortcutValueChange:"shortcutValueChange"},providers:[ProviderService],usesInheritance:!0,ngImport:i0,template:'\n\t\t<label class="form-control-label">Date Shortcuts</label>\n\t\t<ng-select [(ngModel)]="shortcutValue" (change)="onSelectShortcut()" placeholder="Select Shortcut" [clearable]="false">\n\t\t\t<ng-option value="Today">Today</ng-option>\n\t\t\t<ng-option value="Yesterday">Yesterday</ng-option>\n\t\t\t<ng-option value="Week">This Week</ng-option>\n\t\t\t<ng-option value="Last Week">Last Week</ng-option>\n\t\t\t<ng-option value="Month">This Month</ng-option>\n\t\t\t<ng-option value="Last Month">Last Month</ng-option>\n\t\t\t<ng-option value="Last 30 Days">Last 30 Days</ng-option>\n\t\t\t<ng-option value="Quarter">This Quarter</ng-option>\n\t\t\t<ng-option value="Last Quarter">Last Quarter</ng-option>\n\t\t\t<ng-option value="Year">This Year</ng-option>\n\t\t\t<ng-option value="Last Year">Last Year</ng-option>\n\t\t\t<ng-option value="Q1">Q1</ng-option>\n\t\t\t<ng-option value="Q2">Q2</ng-option>\n\t\t\t<ng-option value="Q3">Q3</ng-option>\n\t\t\t<ng-option value="Q4">Q4</ng-option>\n\t\t\t<ng-option value="Last Q1">Last Q1</ng-option>\n\t\t\t<ng-option value="Last Q2">Last Q2</ng-option>\n\t\t\t<ng-option value="Last Q3">Last Q3</ng-option>\n\t\t\t<ng-option value="Last Q4">Last Q4</ng-option>\n\t\t\t<ng-option value="All">All</ng-option>\n\t\t</ng-select>\n\t',isInline:!0,dependencies:[{kind:"directive",type:i2.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i2.NgModel,selector:"[ngModel]:not([formControlName]):not([formControl])",inputs:["name","disabled","ngModel","ngModelOptions"],outputs:["ngModelChange"],exportAs:["ngModel"]},{kind:"component",type:i4$1.NgSelectComponent,selector:"ng-select",inputs:["bindLabel","bindValue","markFirst","placeholder","notFoundText","typeToSearchText","addTagText","loadingText","clearAllText","appearance","dropdownPosition","appendTo","loading","closeOnSelect","hideSelected","selectOnTab","openOnEnter","maxSelectedItems","groupBy","groupValue","bufferAmount","virtualScroll","selectableGroup","selectableGroupAsModel","searchFn","trackByFn","clearOnBackspace","labelForId","inputAttrs","tabIndex","readonly","searchWhileComposing","minTermLength","editableSearchTerm","keyDownFn","typeahead","multiple","addTag","searchable","clearable","isOpen","items","compareWith","clearSearchOnAdd"],outputs:["blur","focus","change","open","close","search","clear","add","remove","scroll","scrollToEnd"]},{kind:"component",type:i4$1.NgOptionComponent,selector:"ng-option",inputs:["value","disabled"]}],changeDetection:i0.ChangeDetectionStrategy.OnPush}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DateShortcutComponent,decorators:[{type:Component,args:[{providers:[ProviderService],selector:"date-shortcut",template:'\n\t\t<label class="form-control-label">Date Shortcuts</label>\n\t\t<ng-select [(ngModel)]="shortcutValue" (change)="onSelectShortcut()" placeholder="Select Shortcut" [clearable]="false">\n\t\t\t<ng-option value="Today">Today</ng-option>\n\t\t\t<ng-option value="Yesterday">Yesterday</ng-option>\n\t\t\t<ng-option value="Week">This Week</ng-option>\n\t\t\t<ng-option value="Last Week">Last Week</ng-option>\n\t\t\t<ng-option value="Month">This Month</ng-option>\n\t\t\t<ng-option value="Last Month">Last Month</ng-option>\n\t\t\t<ng-option value="Last 30 Days">Last 30 Days</ng-option>\n\t\t\t<ng-option value="Quarter">This Quarter</ng-option>\n\t\t\t<ng-option value="Last Quarter">Last Quarter</ng-option>\n\t\t\t<ng-option value="Year">This Year</ng-option>\n\t\t\t<ng-option value="Last Year">Last Year</ng-option>\n\t\t\t<ng-option value="Q1">Q1</ng-option>\n\t\t\t<ng-option value="Q2">Q2</ng-option>\n\t\t\t<ng-option value="Q3">Q3</ng-option>\n\t\t\t<ng-option value="Q4">Q4</ng-option>\n\t\t\t<ng-option value="Last Q1">Last Q1</ng-option>\n\t\t\t<ng-option value="Last Q2">Last Q2</ng-option>\n\t\t\t<ng-option value="Last Q3">Last Q3</ng-option>\n\t\t\t<ng-option value="Last Q4">Last Q4</ng-option>\n\t\t\t<ng-option value="All">All</ng-option>\n\t\t</ng-select>\n\t',changeDetection:ChangeDetectionStrategy.OnPush}]}],ctorParameters:function(){return[{type:ProviderService},{type:i0.ChangeDetectorRef}]},propDecorators:{startDateObj:[{type:Input}],endDateObj:[{type:Input}],startDateObjForm:[{type:Input}],endDateObjForm:[{type:Input}],startDateObjChange:[{type:Output}],endDateObjChange:[{type:Output}],startDateObjFormChange:[{type:Output}],endDateObjFormChange:[{type:Output}],datesChanged:[{type:Output}],shortcutValue:[{type:Input}],shortcutValueChange:[{type:Output}]}});class DateShortcutModule{}DateShortcutModule.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DateShortcutModule,deps:[],target:i0.ɵɵFactoryTarget.NgModule}),DateShortcutModule.ɵmod=i0.ɵɵngDeclareNgModule({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:DateShortcutModule,declarations:[DateShortcutComponent],imports:[FormsModule,CommonModule,NgSelectModule],exports:[DateShortcutComponent]}),DateShortcutModule.ɵinj=i0.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DateShortcutModule,imports:[FormsModule,CommonModule,NgSelectModule]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DateShortcutModule,decorators:[{type:NgModule,args:[{imports:[FormsModule,CommonModule,NgSelectModule],exports:[DateShortcutComponent],declarations:[DateShortcutComponent]}]}]});class SchedulerComponent extends BaseComponent{constructor(t){super(t),this._services=t,this.today=new Date,this.over_forward=!1,this.over_backwards=!1,this.mouseDown=!1,this.mouseLastEvent=null,this.timer_sub=null,this.months=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],this.size_svg={width:0,height:0},this.size_cell={width:30,height:30}}ngAfterViewInit(){this.size_svg.width=this.svgChart.nativeElement.clientWidth,this.size_svg.height=this.svgChart.nativeElement.clientHeight}ngOnDestroy(){this.timer_sub&&clearInterval(this.timer_sub)}onMouseup(){this.mouseDown=!1}onMousedown(t){this.mouseDown=!0,this.mouseLastEvent=t}onMousemove(t){if(this.mouseDown){let e=0;this.mouseLastEvent.clientX-t.clientX>1?e=Math.floor((this.mouseLastEvent.clientX-t.clientX)/15)>0?Math.floor((this.mouseLastEvent.clientX-t.clientX+5*(30-this.size_cell.width))/20):1:this.mouseLastEvent.clientX-t.clientX<-1&&(e=Math.floor((this.mouseLastEvent.clientX-t.clientX)/15)<0?Math.floor((this.mouseLastEvent.clientX-t.clientX-5*(30-this.size_cell.width))/20):-1),this.today=moment$1(this.today).add(e,"days").toDate(),this.mouseLastEvent=t}}onMouseLeave(t){this.mouseDown&&(this.mouseDown=!1)}buildDays(){let t=[];for(let e=0;e<Math.floor(this.size_svg.width/this.size_cell.width);e++)t.push({index:e,day:moment$1(this.today).add(e,"days").toDate().getDate()});return t}buildMonths(){let t=[{index_start:0,index_end:null,month:this.months[this.today.getMonth()]}];for(let e=1;e<Math.floor(this.size_svg.width/this.size_cell.width);e++)moment$1(this.today).add(e,"days").toDate().getMonth()!==moment$1(this.today).add(e-1,"days").toDate().getMonth()&&(t[t.length-1].index_end=e,t.push({index_start:e,index_end:null,month:this.months[moment$1(this.today).add(e,"days").toDate().getMonth()]}));return t[t.length-1].index_end=Math.floor(this.size_svg.width/this.size_cell.width),t}buildYears(){let t=[{index_start:0,index_end:null,year:this.today.getFullYear()}];for(let e=1;e<Math.floor(this.size_svg.width/this.size_cell.width);e++)moment$1(this.today).add(e,"days").toDate().getFullYear()!==moment$1(this.today).add(e-1,"days").toDate().getFullYear()&&(t[t.length-1].index_end=e,t.push({index_start:e,index_end:null,year:moment$1(this.today).add(e,"days").toDate().getFullYear()}));return t[t.length-1].index_end=Math.floor(this.size_svg.width/this.size_cell.width),t}decrementToday(){this.today=moment$1(this.today).subtract(1,"days").toDate()}incrementToday(){this.today=moment$1(this.today).add(1,"days").toDate()}overForward(){this.timer_sub=setInterval((()=>{this.incrementToday()}),50)}leftForward(){clearInterval(this.timer_sub)}overBackwards(){this.timer_sub=setInterval((()=>{this.decrementToday()}),50)}leftBackwards(){clearInterval(this.timer_sub)}zoomOut(){this.size_cell.width>10&&(this.size_cell.width-=10)}zoomIn(){this.size_cell.width+=10}}SchedulerComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SchedulerComponent,deps:[{token:ProviderService}],target:i0.ɵɵFactoryTarget.Component}),SchedulerComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:SchedulerComponent,selector:"scheduler",host:{listeners:{mouseup:"onMouseup()",mousedown:"onMousedown($event)",mousemove:"onMousemove($event)",mouseleave:"onMouseLeave($event)"}},providers:[ProviderService],viewQueries:[{propertyName:"svgChart",first:!0,predicate:["svgChart"],descendants:!0,static:!0}],usesInheritance:!0,ngImport:i0,template:'<style>\n\t.bar {\n\t\tfill: red; /* changes the background */\n\t\theight: 21px;\n\t\ttransition: fill .3s ease;\n\t\tcursor: pointer;\n\t\tfont-family: Helvetica, sans-serif;\n\t}\n\n\t.bar text {\n\t\tcolor: black;\n\t}\n\n\t.bar:hover,\n\t.bar:focus {\n\t\tfill: black;\n\t}\n\n\t.bar:hover text,\n\t.bar:focus text {\n\t\tfill: red;\n\t}\n\n\t.year {\n\t\tstroke:black;\n\t\tfill: white;\n\t}\n\n\t.month {\n\t\tstroke:black;\n\t\tfill: white;\n\t}\n\n\t.day {\n\t\tstroke:black;\n\t\tfill: white;\n\t}\n\n\t.smallText {\n\t\tfont-size: 4px;\n\t}\n</style>\n\n<div class="scheduler">\n\n\t<button class="btn btn-warning" type="button" (mouseenter)="overBackwards()" (mouseleave)="leftBackwards()">Go Backwards</button>\n\t<button class="btn btn-success" type="button" (mouseenter)="overForward()" (mouseleave)="leftForward()">Go Forward</button>\n\n\t<button style="margin-left: 20px;" class="btn btn-warning" type="button" (click)="zoomOut()">Zoom Out</button>\n\t<button class="btn btn-success" type="button" (click)="zoomIn()">Zoom In</button>\n\n\t<svg class="chart" width="100%" height="100%" aria-labelledby="title desc" role="img" #svgChart>\n\t\t<title id="title">Scheduler</title>\n\t\t<desc id="desc">Scheduler</desc>\n\n\t\t<g class="year">\n\t\t\t<ng-container *ngFor="let year of buildYears()">\n\t\t\t\t<rect [attr.width]="(year.index_end - year.index_start) * size_cell.width" [attr.height]="size_cell.height" [attr.x]="year.index_start * size_cell.width"></rect>\n\t\t\t\t<svg [attr.width]="(year.index_end - year.index_start) * size_cell.width" [attr.height]="size_cell.height" [attr.x]="year.index_start * size_cell.width">\n\t\t\t\t\t<text x="50%" y="50%" alignment-baseline="middle" text-anchor="middle">{{year.year}}</text>\n\t\t\t\t</svg>\n\t\t\t</ng-container>\n\t\t</g>\n\t\t<g class="month">\n\t\t\t<ng-container *ngFor="let month of buildMonths()">\n\t\t\t\t<rect [attr.width]="(month.index_end - month.index_start) * size_cell.width" [attr.height]="size_cell.height" [attr.x]="month.index_start * size_cell.width" [attr.y]="size_cell.height"></rect>\n\t\t\t\t<svg [attr.width]="(month.index_end - month.index_start) * size_cell.width" [attr.height]="size_cell.height" [attr.x]="month.index_start * size_cell.width" [attr.y]="size_cell.height">\n\t\t\t\t\t<text x="50%" y="50%" alignment-baseline="middle" text-anchor="middle">{{month.month}}</text>\n\t\t\t\t</svg>\n\t\t\t</ng-container>\n\t\t</g>\n\t\t<g class="day">\n\t\t\t<ng-container *ngFor="let day of buildDays()">\n\t\t\t\t<rect [attr.width]="size_cell.width" [attr.height]="size_cell.height" [attr.x]="day.index * size_cell.width" [attr.y]="size_cell.height * 2"></rect>\n\t\t\t\t<svg [attr.width]="size_cell.width" [attr.height]="size_cell.height" [attr.x]="day.index * size_cell.width" [attr.y]="size_cell.height * 2">\n\t\t\t\t\t<text x="50%" y="50%" alignment-baseline="middle" text-anchor="middle" [style.font-size.px]="[size_cell.width > 10 ? 12 : 6]">{{day.day}}</text>\n\t\t\t\t</svg>\n\t\t\t</ng-container>\n\t\t</g>\n\n\n\t\t\x3c!-- <g class="bar">\n\t\t\t<rect width="40" height="19"></rect>\n\t\t\t<text x="45" y="9.5" dy=".35em">4 apples</text>\n\t\t</g>\n\t\t<g class="bar">\n\t\t\t<rect width="80" height="19" y="20"></rect>\n\t\t\t<text x="85" y="28" dy=".35em">8 bananas</text>\n\t\t</g>\n\t\t<g class="bar">\n\t\t\t<rect width="150" height="19" y="40"></rect>\n\t\t\t<text x="150" y="48" dy=".35em">15 kiwis</text>\n\t\t</g>\n\t\t<g class="bar">\n\t\t\t<rect width="160" height="19" y="60"></rect>\n\t\t\t<text x="161" y="68" dy=".35em">16 oranges</text>\n\t\t</g>\n\t\t<g class="bar">\n\t\t\t<rect width="230" height="19" y="80"></rect>\n\t\t\t<text x="235" y="88" dy=".35em">23 lemons</text>\n\t\t</g> --\x3e\n\t</svg>\n</div>\n',styles:["\n\t.bar {\n\t\tfill: red; /* changes the background */\n\t\theight: 21px;\n\t\ttransition: fill .3s ease;\n\t\tcursor: pointer;\n\t\tfont-family: Helvetica, sans-serif;\n\t}\n\n\t.bar text {\n\t\tcolor: black;\n\t}\n\n\t.bar:hover,\n\t.bar:focus {\n\t\tfill: black;\n\t}\n\n\t.bar:hover text,\n\t.bar:focus text {\n\t\tfill: red;\n\t}\n\n\t.year {\n\t\tstroke:black;\n\t\tfill: white;\n\t}\n\n\t.month {\n\t\tstroke:black;\n\t\tfill: white;\n\t}\n\n\t.day {\n\t\tstroke:black;\n\t\tfill: white;\n\t}\n\n\t.smallText {\n\t\tfont-size: 4px;\n\t}\n"],dependencies:[{kind:"directive",type:i7.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SchedulerComponent,decorators:[{type:Component,args:[{providers:[ProviderService],selector:"scheduler",template:'<style>\n\t.bar {\n\t\tfill: red; /* changes the background */\n\t\theight: 21px;\n\t\ttransition: fill .3s ease;\n\t\tcursor: pointer;\n\t\tfont-family: Helvetica, sans-serif;\n\t}\n\n\t.bar text {\n\t\tcolor: black;\n\t}\n\n\t.bar:hover,\n\t.bar:focus {\n\t\tfill: black;\n\t}\n\n\t.bar:hover text,\n\t.bar:focus text {\n\t\tfill: red;\n\t}\n\n\t.year {\n\t\tstroke:black;\n\t\tfill: white;\n\t}\n\n\t.month {\n\t\tstroke:black;\n\t\tfill: white;\n\t}\n\n\t.day {\n\t\tstroke:black;\n\t\tfill: white;\n\t}\n\n\t.smallText {\n\t\tfont-size: 4px;\n\t}\n</style>\n\n<div class="scheduler">\n\n\t<button class="btn btn-warning" type="button" (mouseenter)="overBackwards()" (mouseleave)="leftBackwards()">Go Backwards</button>\n\t<button class="btn btn-success" type="button" (mouseenter)="overForward()" (mouseleave)="leftForward()">Go Forward</button>\n\n\t<button style="margin-left: 20px;" class="btn btn-warning" type="button" (click)="zoomOut()">Zoom Out</button>\n\t<button class="btn btn-success" type="button" (click)="zoomIn()">Zoom In</button>\n\n\t<svg class="chart" width="100%" height="100%" aria-labelledby="title desc" role="img" #svgChart>\n\t\t<title id="title">Scheduler</title>\n\t\t<desc id="desc">Scheduler</desc>\n\n\t\t<g class="year">\n\t\t\t<ng-container *ngFor="let year of buildYears()">\n\t\t\t\t<rect [attr.width]="(year.index_end - year.index_start) * size_cell.width" [attr.height]="size_cell.height" [attr.x]="year.index_start * size_cell.width"></rect>\n\t\t\t\t<svg [attr.width]="(year.index_end - year.index_start) * size_cell.width" [attr.height]="size_cell.height" [attr.x]="year.index_start * size_cell.width">\n\t\t\t\t\t<text x="50%" y="50%" alignment-baseline="middle" text-anchor="middle">{{year.year}}</text>\n\t\t\t\t</svg>\n\t\t\t</ng-container>\n\t\t</g>\n\t\t<g class="month">\n\t\t\t<ng-container *ngFor="let month of buildMonths()">\n\t\t\t\t<rect [attr.width]="(month.index_end - month.index_start) * size_cell.width" [attr.height]="size_cell.height" [attr.x]="month.index_start * size_cell.width" [attr.y]="size_cell.height"></rect>\n\t\t\t\t<svg [attr.width]="(month.index_end - month.index_start) * size_cell.width" [attr.height]="size_cell.height" [attr.x]="month.index_start * size_cell.width" [attr.y]="size_cell.height">\n\t\t\t\t\t<text x="50%" y="50%" alignment-baseline="middle" text-anchor="middle">{{month.month}}</text>\n\t\t\t\t</svg>\n\t\t\t</ng-container>\n\t\t</g>\n\t\t<g class="day">\n\t\t\t<ng-container *ngFor="let day of buildDays()">\n\t\t\t\t<rect [attr.width]="size_cell.width" [attr.height]="size_cell.height" [attr.x]="day.index * size_cell.width" [attr.y]="size_cell.height * 2"></rect>\n\t\t\t\t<svg [attr.width]="size_cell.width" [attr.height]="size_cell.height" [attr.x]="day.index * size_cell.width" [attr.y]="size_cell.height * 2">\n\t\t\t\t\t<text x="50%" y="50%" alignment-baseline="middle" text-anchor="middle" [style.font-size.px]="[size_cell.width > 10 ? 12 : 6]">{{day.day}}</text>\n\t\t\t\t</svg>\n\t\t\t</ng-container>\n\t\t</g>\n\n\n\t\t\x3c!-- <g class="bar">\n\t\t\t<rect width="40" height="19"></rect>\n\t\t\t<text x="45" y="9.5" dy=".35em">4 apples</text>\n\t\t</g>\n\t\t<g class="bar">\n\t\t\t<rect width="80" height="19" y="20"></rect>\n\t\t\t<text x="85" y="28" dy=".35em">8 bananas</text>\n\t\t</g>\n\t\t<g class="bar">\n\t\t\t<rect width="150" height="19" y="40"></rect>\n\t\t\t<text x="150" y="48" dy=".35em">15 kiwis</text>\n\t\t</g>\n\t\t<g class="bar">\n\t\t\t<rect width="160" height="19" y="60"></rect>\n\t\t\t<text x="161" y="68" dy=".35em">16 oranges</text>\n\t\t</g>\n\t\t<g class="bar">\n\t\t\t<rect width="230" height="19" y="80"></rect>\n\t\t\t<text x="235" y="88" dy=".35em">23 lemons</text>\n\t\t</g> --\x3e\n\t</svg>\n</div>\n'}]}],ctorParameters:function(){return[{type:ProviderService}]},propDecorators:{svgChart:[{type:ViewChild,args:["svgChart",{static:!0}]}],onMouseup:[{type:HostListener,args:["mouseup"]}],onMousedown:[{type:HostListener,args:["mousedown",["$event"]]}],onMousemove:[{type:HostListener,args:["mousemove",["$event"]]}],onMouseLeave:[{type:HostListener,args:["mouseleave",["$event"]]}]}});class SchedulerModule{}SchedulerModule.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SchedulerModule,deps:[],target:i0.ɵɵFactoryTarget.NgModule}),SchedulerModule.ɵmod=i0.ɵɵngDeclareNgModule({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:SchedulerModule,declarations:[SchedulerComponent],imports:[NgbModule,FormsModule,CommonModule,RouterModule],exports:[SchedulerComponent]}),SchedulerModule.ɵinj=i0.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SchedulerModule,imports:[NgbModule,FormsModule,CommonModule,RouterModule]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SchedulerModule,decorators:[{type:NgModule,args:[{imports:[NgbModule,FormsModule,CommonModule,RouterModule],exports:[SchedulerComponent],declarations:[SchedulerComponent],providers:[]}]}]});const ReportBuilderModulePermission={name:"report-builder",views:[{link:"/report-builder/list",label:"List"},{link:"/report-builder/new",label:"New"},{link:"/report-builder/scheduled-job",label:"Scheduled Job"},{link:"/report-builder/dashboard-builder",label:"Dashboard Builder"},{link:"/report-builder/detail",label:"Detail",has_parameter:!0},{link:"/report-builder/edit",label:"Edit",has_parameter:!0},{link:"/report-builder/delete",label:"Delete",has_parameter:!0}]},SuperAdminModulePermission={name:"super-admin",views:[{link:"/super-admin/dashboard",label:"Dashboard"},{link:"/super-admin/apm",label:"APM"},{link:"/super-admin/monitor",label:"Monitor"}]};export{AccountManagerService,AlertService,Auth365Component,AuthGuard,AuthPermissionService,AuthService,AwsService,BaseComponent,CanDeactivateGuard,CollapseTableComponent,CollapseTableModule,CoreComponent,CoreModule,CoreService,DatatableComponent,DatatableModule,DateShortcutComponent,DateShortcutModule,DialogService,DomSanitizorPipe,EnrollComponent,FileModule,FileUploadComponent,FilterEqualPipe,FilterNotEqualPipe,FocusDirective,ForgotPasswordComponent,FormButtonComponent,FormButtonModule,HomeComponent,JsonParsePipe,LoggerComponent,MinusCurrencyPipe,NavbarMainComponent,NavbarModuleComponent,OfflineManagerService,PhonePipe,PipeModule,ProviderService,ReportBuilderModulePermission,ResizeService,ResponsiveButtonGroupComponent,ResponsiveButtonGroupModule,ReversePipe,SchedulerComponent,SchedulerModule,ScrollDirective,SharedModule,SocketManagerService,SocketService,SortTableDirective,SortTableHeaderComponent,SortTableModule,SortTableNgForComponent,StorageDB,SuperAdminModulePermission,SupportTicketComponent,SupportTicketDetailComponent,SupportTicketEditComponent,SupportTicketListComponent,SupportTicketModule,SupportTicketNewComponent,SupportTicketRouting,SupportTicketService,TitleCaseAndUnderscorePipe,TokenManagerService,UserRoleComponent,UserRoleModule,ValidationService,WindowRefService,b64toBlobURL,blobToFile,dateReviver,deepCopy,deepDiffDetails,generateCronStringFromDate,isUpperCase,mergeDeep,pad,round,s2ab,toDataURL,toTitleCase,type};
|
|
1
|
+
import*as i0 from"@angular/core";import{Injectable,Component,Input,HostListener,ViewChild,Directive,ChangeDetectionStrategy,EventEmitter,Output,ViewChildren,Pipe,ElementRef,NgModule,ViewEncapsulation,Optional}from"@angular/core";import{BehaviorSubject,Subject,merge}from"rxjs";import*as i1$5 from"ngx-device-detector";import{DeviceDetectorService}from"ngx-device-detector";import*as i1 from"@angular/platform-browser";import*as i2 from"@angular/forms";import{UntypedFormControl,Validators,FormsModule,ReactiveFormsModule}from"@angular/forms";import*as i1$1 from"ngx-toastr";import{ToastrModule}from"ngx-toastr";import*as i1$2 from"ngx-localstorage";import{NgxLocalStorageModule}from"ngx-localstorage";import moment from"moment-timezone";import{finalize}from"rxjs/operators";import{detailedDiff}from"deep-object-diff";import moment$1 from"moment";import*as CryptoJS from"crypto-js";import*as i1$3 from"@angular/router";import{RouterModule}from"@angular/router";import*as i4 from"@angular/common/http";import{HttpClientModule}from"@angular/common/http";import*as i1$4 from"@ng-bootstrap/ng-bootstrap";import{NgbTooltipModule,NgbModule}from"@ng-bootstrap/ng-bootstrap";import*as i7 from"@angular/common";import{CommonModule}from"@angular/common";import*as i4$1 from"@ng-select/ng-select";import{NgSelectModule}from"@ng-select/ng-select";import{UserAgentApplication}from"msal";import{BrowserAnimationsModule}from"@angular/platform-browser/animations";import*as Diff from"diff";import*as Diff2Html from"diff2html";import*as i8 from"ngx-file-drop";import{NgxFileDropModule}from"ngx-file-drop";import*as i9 from"@resolveio/client-lib-pdf-viewer";import{PdfViewerModule}from"@resolveio/client-lib-pdf-viewer";class CoreService{constructor(){this.isDevice=new BehaviorSubject(!1),this.fullScreen=new BehaviorSubject(!1),this.fsActivated=new BehaviorSubject(!1),this.hasConnected=new BehaviorSubject(!1),this.navbarModuleData=new BehaviorSubject({title:"",module:"",description:"",description_name:"",tabs:[]}),this.hasStatusMessage=new BehaviorSubject(!1),this.alertData=new BehaviorSubject({type:"",message:"",timer:0,showing:!1}),this.isInvalidSW=new BehaviorSubject(!1),this.environment=new BehaviorSubject(null),this.client=new BehaviorSubject(""),this.standardProgram=new BehaviorSubject(!1),this.navTabs=new BehaviorSubject([]),this.tourStops=new BehaviorSubject([]),this.tourStarted=new BehaviorSubject(!1),this.isDemo=new BehaviorSubject(!1),this.isLoggingOut=new BehaviorSubject(!1)}setFullScreen(t){this.fullScreen.next(t)}setFsActivated(t){this.fsActivated.next(t)}setHasConnected(t){this.hasConnected.next(t)}setNavbarModuleData(t){t.tabs=t.tabs.filter((t=>null===t.params)).concat(t.tabs.filter((t=>null!==t.params))),this.navbarModuleData.next(t)}setHasStatusMessage(t){this.hasStatusMessage.next(t)}setIsDevice(t){this.isDevice.next(t)}setIsInvalidSW(t){this.isInvalidSW.next(t)}setEnvironment(t){this.environment.next(t)}setClient(t){this.client.next(t)}setStandardProgram(t){this.standardProgram.next(t)}setNavTabs(t){this.navTabs.next(t)}setTourStops(t){this.tourStops.next(t)}setTourStarted(t){this.tourStarted.next(t)}setDemo(t){this.isDemo.next(t)}}CoreService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:CoreService,deps:[],target:i0.ɵɵFactoryTarget.Injectable}),CoreService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:CoreService,providedIn:"root"}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:CoreService,decorators:[{type:Injectable,args:[{providedIn:"root"}]}],ctorParameters:function(){return[]}});class ResizeService{get onResize$(){return this.resizeSubject.asObservable()}constructor(t){this.eventManager=t,this.resizeSubject=new Subject,this.eventManager.addGlobalEventListener("window","resize",this.onResize.bind(this))}onResize(t){this.resizeSubject.next(t.target)}}ResizeService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ResizeService,deps:[{token:i1.EventManager}],target:i0.ɵɵFactoryTarget.Injectable}),ResizeService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ResizeService}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ResizeService,decorators:[{type:Injectable}],ctorParameters:function(){return[{type:i1.EventManager}]}});class AlertService{constructor(t){this._toastr=t}clearAlert(t){t?this._toastr.clear(t):this._toastr.clear()}setAlert(t,e,n=5e3){return"success"===t?n?this._toastr.success(e,"Success",{timeOut:n}):this._toastr.success(e,"Success",{disableTimeOut:!0}):"info"===t?n?this._toastr.info(e,"Info",{timeOut:n}):this._toastr.info(e,"Info",{disableTimeOut:!0}):"warning"===t?n?this._toastr.warning(e,"Warning",{timeOut:n}):this._toastr.warning(e,"Warning",{disableTimeOut:!0}):"error"===t?n?this._toastr.error(e,"Error",{timeOut:n}):this._toastr.error(e,"Error",{disableTimeOut:!0}):"update"===t?this._toastr.warning(e,"Update",{disableTimeOut:!0}):void 0}}AlertService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AlertService,deps:[{token:i1$1.ToastrService}],target:i0.ɵɵFactoryTarget.Injectable}),AlertService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AlertService}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AlertService,decorators:[{type:Injectable}],ctorParameters:function(){return[{type:i1$1.ToastrService}]}});class SocketService{constructor(t){this._storage=t,this.debug=!1,this.reconnectInterval=1e3,this.timeoutInterval=5e3,this.timeout=null,this.readyState$=new BehaviorSubject(0),this.protocols=[],this.pingInterval=null,this.pongTimeout=null,this.pingIntervalTime=15e3,this.pongTimeoutTime=12e3,this.onopen=function(t){},this.onclose=function(t){},this.onconnecting=function(){},this.onmessage=function(t){},this.onerror=function(t){},this.onOpenHandler=t=>{clearTimeout(this.timeout),this.timeout=null,this.log(new Date,"WS","onopen",this.url),this.readyState=WebSocket.OPEN,this.readyState$.next(this.readyState),this.onopen(t),this.startPinging()},this.onCloseHandler=t=>{this.ws&&this.readyState!==WebSocket.CLOSED&&(this.timeout&&clearTimeout(this.timeout),this.timeout=null,this.ws.removeEventListener("open",this.onOpenHandler),this.ws.removeEventListener("close",this.onCloseHandler),this.ws.removeEventListener("message",this.onMessageHandler),this.ws.removeEventListener("error",this.onErrorHandler),this.ws=null,this.readyState=WebSocket.CLOSED,this.readyState$.next(this.readyState),this.log(new Date,"WS","onclose",this.url),this.onclose(t),setTimeout((()=>{this.connect()}),this.reconnectInterval),this.stopPinging())},this.onMessageHandler=t=>{if("pong"===t.data)this.log(new Date,"WS","pong received"),clearTimeout(this.pongTimeout);else if("ping"===t.data)this.log(new Date,"WS","ping received"),this.send("pong");else{let e=JSON.parse(t.data);e=this.convertUTCDateToLocalDate(e),this.onmessage(e)}},this.onErrorHandler=t=>{this.log(new Date,"WS","onerror",this,t),this.onerror(t),this.reconnect()},document.addEventListener("visibilitychange",this.handleVisibilityChange.bind(this))}openSocket(t,e){this.url=t.WS_URL,this.protocols=e,this.timezone=t.TZ_CLIENT,this.connect()}connect(){!this.ws&&this.readyState!==WebSocket.CONNECTING&&this._storage.get("accessToken")&&(this.readyState=WebSocket.CONNECTING,this.readyState$.next(this.readyState),this.timeout&&clearTimeout(this.timeout),this.ws=new WebSocket(this.url,this.protocols),this.onconnecting(),this.log(new Date,"WS","attempt-connect",this.url),this.timeout=setTimeout((()=>{this.log(new Date,"WS","connection-timeout",this.url),this.close()}),this.timeoutInterval),this.ws.onopen=this.onOpenHandler,this.ws.onclose=this.onCloseHandler,this.ws.onmessage=this.onMessageHandler,this.ws.onerror=this.onErrorHandler)}convertUTCDateToLocalDate(t){if(Array.isArray(t))return t.map((t=>this.convertUTCDateToLocalDate(t)));if("object"==typeof t&&null!==t){return Object.keys(t).forEach((e=>{t[e]=this.convertUTCDateToLocalDate(t[e])})),t}if("string"==typeof t){if(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z$/.test(t))return new Date(t)}return t}startPinging(){this.pingInterval=setInterval((()=>{this.isWebSocketActive()?(this.send("ping"),this.pongTimeout=setTimeout((()=>{this.log(new Date,"WS","pong not received, closing connection"),this.reconnect()}),this.pongTimeoutTime)):this.reconnect()}),this.pingIntervalTime)}stopPinging(){this.pingInterval&&clearInterval(this.pingInterval),this.pongTimeout&&clearTimeout(this.pongTimeout)}convertDatesToUTC(t,e=new WeakSet){"object"==typeof t&&null!==t&&(e.has(t)||(e.add(t),Object.keys(t).forEach((n=>{t[n]instanceof Date?t[n]=moment(t[n]).tz(this.timezone,!0).utc().toDate().toISOString():"object"==typeof t[n]&&null!==t[n]&&this.convertDatesToUTC(t[n],e)}))))}send(...t){return this.isWebSocketActive()?(t.forEach((t=>this.convertDatesToUTC(t))),this.ws.send(1===t.length?JSON.stringify(t[0]):JSON.stringify(t)),!0):(this.log(new Date,"WS","send error",this.readyState),this.reconnect(),!1)}close(){return!!this.ws&&(this.log(new Date,"WS","closing socket"),this.readyState=WebSocket.CLOSING,this.readyState$.next(this.readyState),this.ws.close(),!0)}reconnect(){this.log(new Date,"WS","reconnect",this.readyState),this.readyState!==WebSocket.CONNECTING&&this.close()}getBufferAmount(){return this.ws?this.ws.bufferedAmount:20480}log(...t){this.debug&&console.log(...t)}handleVisibilityChange(){"visible"===document.visibilityState&&(this.isWebSocketActive()||this.reconnect())}isWebSocketActive(){return this.ws&&this.ws.readyState===WebSocket.OPEN}}SocketService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SocketService,deps:[{token:i1$2.LocalStorageService}],target:i0.ɵɵFactoryTarget.Injectable}),SocketService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SocketService}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SocketService,decorators:[{type:Injectable}],ctorParameters:function(){return[{type:i1$2.LocalStorageService}]}});const isObject$1=t=>t instanceof Object&&"Object"===t.constructor.name;function round(t,e=0){const n=Math.pow(10,e);return Math.round(t*n+1e-6)/n}function toTitleCase(t){return t.replace(/\w\S*/g,(function(t){return t.charAt(0).toUpperCase()+t.substr(1).toLowerCase()}))}function isUpperCase(t){return/^[A-Z]*$/.test(t)}function pad(t,e){let n=t+"";for(;n.length<e;)n="0"+n;return n}function deepCopy(t){return JSON.parse(JSON.stringify(t),dateReviver)}function dateReviver(t,e){if("string"==typeof e){let t=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(e);if(t)return new Date(Date.UTC(+t[1],+t[2]-1,+t[3],+t[4],+t[5],+t[6].split(".")[0],+t[6].split(".")[1]))}return e}function b64toBlobURL(t,e,n){t=t.replace("data:application/pdf;base64,",""),e=e||"",n=n||512;let o=atob(t),r=[];for(let t=0;t<o.length;t+=n){let e=o.slice(t,t+n),i=new Array(e.length);for(let t=0;t<e.length;t++)i[t]=e.charCodeAt(t);let a=new Uint8Array(i);r.push(a)}let i=new Blob(r,{type:e});return URL.createObjectURL(i)}function blobToFile(t,e){return t.lastModifiedDate=new Date,t.name=e,t}function toDataURL(t,e){let n=new XMLHttpRequest;n.onload=function(){let t=new FileReader;t.onloadend=function(){e(t.result)},t.readAsDataURL(n.response)},n.open("GET",t),n.responseType="blob",n.send()}function deepDiffDetails(t,e){let n=deepCopy(t),o=deepCopy(e),r=detailedDiff(n,o),i="";const a=t=>t instanceof Date?moment$1(t).format("llll"):"object"==typeof t&&null!==t?(Object.keys(t).filter((t=>t.startsWith("_id")||t.startsWith("id_"))).forEach((e=>{delete t[e]})),JSON.stringify(t)):"string"==typeof t?`"${t}"`:String(t),s=(t,e)=>null===t||null===e||"object"!=typeof t||"object"!=typeof e?`from: ${a(t)} to: ${a(e)}`:Array.isArray(t)||Array.isArray(e)?((t,e)=>{let n=[];const o=Math.max(t.length,e.length);for(let r=0;r<o;r++)t[r]&&!e[r]?n.push(`Removed at index ${r}: ${a(t[r])}`):!t[r]&&e[r]?n.push(`Added at index ${r}: ${a(e[r])}`):t[r]&&e[r]&&JSON.stringify(t[r])!==JSON.stringify(e[r])&&n.push(`Changed at index ${r}: {${s(t[r],e[r])}}`);return n.join(", ")})(Array.isArray(t)?t:[],Array.isArray(e)?e:[]):Object.keys({...t,...e}).filter((t=>!t.startsWith("_id")&&!t.startsWith("id_"))).map((n=>{const o=t?t[n]:void 0,r=e?e[n]:void 0;return`${toTitleCase(n)}: ${s(o,r)}`})).join(", ");return["added","deleted","updated"].forEach((t=>{if(Object.keys(r[t]).length>0){const e=Object.keys(r[t]).filter((e=>"added"===t||("deleted"===t?!r.added[e]:!r.added[e]&&!r.deleted[e]))).filter((t=>!t.startsWith("_id")&&!t.startsWith("id_"))).map((t=>`\n${toTitleCase(t)}: ${s(n[t],o[t])}`)).join(",");i+=e?`${e}`:""}})),i}function generateCronStringFromDate(t){return t.getSeconds()+" "+t.getMinutes()+" "+t.getHours()+" "+t.getDate()+" "+(t.getMonth()+1)+" "+t.getDay()}function s2ab(t){let e=new ArrayBuffer(t.length),n=new Uint8Array(e);for(let e=0;e!==t.length;++e)n[e]=255&t.charCodeAt(e);return e}function mergeDeep(t,...e){if(!e.length)return t;const n=e.shift();if(isObject$1(t)&&isObject$1(n))for(const e in n)isObject$1(n[e])?(t[e]||Object.assign(t,{[e]:{}}),mergeDeep(t[e],n[e])):Object.assign(t,{[e]:n[e]});return mergeDeep(t,...e)}class StorageDB{constructor(t){this.storage=null,this.database=null,this.primaryKey=null,this.secretKey=null,this.sep="",t=t||{},this.storage=t.storage||window&&window.localStorage,this.database=t.database||"db",this.primaryKey=t.primaryKey||"_id",this.sep=t.sep||":",this.secretKey=t.secretKey||"",isSupported(this.storage)||(this.storage=null)}encryptData(t){const e=JSON.stringify(t);return CryptoJS.AES.encrypt(e,this.secretKey).toString()}decryptData(t){const e=CryptoJS.AES.decrypt(t,this.secretKey);try{const t=e.toString(CryptoJS.enc.Utf8);return JSON.parse(t,dateReviver)}catch(t){return null}}get(t,e){return new Collection(this,t,e)}getCollections(){let t=[];return Object.keys(this.storage).filter((t=>t.split(":").length>2)).forEach((e=>{t.some((t=>t===e.split(":")[1]))||t.push(e.split(":")[1])})),t}collection(t,e){return this.get(t,e)}}class Collection{constructor(t,e,n){this.name="",this.storage=null,this.path="",this.primaryKey="",this.cache={},this.cacheable=!1,this.db=null,n=n||{},this.name=e,this.storage=t.storage||new MockStorage,this.path=t.database+t.sep+e+t.sep,this.primaryKey=n.primaryKey||t.primaryKey,this.cache={},this.cacheable=!t.storage,this.db=t}_initCache(){let t={},e=new RegExp("^"+this.path);for(let n of Object.keys(this.storage))if(e.test(n)){const e=this.storage.getItem(n);t[n]=this.db.decryptData(e)}this.cache=t,this.cacheable=!0}_filter(t,e){e.type=e.type||"data",e.multi=e.multi||!1,this.cacheable||this._initCache();let n,o=[],r="id"===e.type;if("string"==typeof t)t=new RegExp(t);else if("function"==typeof t)n=!0;else if(!t){let t=r?Object.keys(this.cache):Object.values(this.cache);return e.multi?t:t[0]||null}for(let i of Object.keys(this.cache)){let a=this.cache[i];if(n){if(t(i,a.data)){let t=r?i:a;if(!e.multi)return t;o.push(t)}}else if(t.test(i)){let t=r?i:a;if(!e.multi)return t;o.push(t)}}return e.multi?o:null}insert(t,e,n){let o=t instanceof Array;if(o){if(0===t.length)return[]}else t=[t];let r=this.primaryKey,i=this.cacheable;for(let n of t){if(!isObject(n))throw new Error("TypeError: insert data must be an object or an object array");void 0===n[r]&&(n[r]=(new ID).toString());let t=new Date,o={offlineDate:t,offlineDateExpires:e||new Date(t.getTime()+6048e5),data:n};const a=this.db.encryptData(o);i&&(this.cache[this.path+n[r]]=o),this.storage.setItem(this.path+n[r],a)}return o?t.map((t=>t._id)):t[0]._id}find(t,e,n){let o;t=t||{},(e=e||{}).skip=e.skip||0,e.limit=e.limit,e.sort=e.sort;let r=isObject(t)?null:t instanceof Array?t:[t],i={type:e._filterType||"data",multi:!0};if(r){let t=new RegExp("^"+this.path+"("+r.join("|")+")$");o=this._filter(t,i)}else o=Object.keys(t).length?this._filter(((e,n)=>queryMatch(t,n)),i):this._filter(null,i);return n||(o=o.map((t=>t.data))),e.sort&&o.sort(((t,n)=>sortCompare(e.sort,t,n))),e.limit?o=o.slice(e.skip,e.skip+e.limit):e.skip&&(o=o.slice(e.skip)),o}findOne(t,e){let n;e=e||{};let o=isObject(t=t||{})?null:t,r=isObject(t)?Object.keys(t):[],i=!1,a=!!e.sort,s={type:e._filterType||"data",multi:!1};if(r.length&&r.includes(this.primaryKey)&&(o=t[this.primaryKey],i=!0),o){if(n=this.storage.getItem(this.path+o),n=n?this.db.decryptData(n).data:null,n&&i&&!queryMatch(t,n))return null}else r.length?a?n=this.find(t,e):(n=this._filter(((e,n)=>queryMatch(t,n)),s),Array.isArray(n)?n=n.map((t=>t.data)):n&&(n=n.data)):n=a?this.find(t,e):this._filter(null,s);return!o&&a&&n&&(n=n[0].data||null),n&&"id"===s.type&&(n=this.path+n[this.primaryKey]),n}remove(t,e){if(!t)throw new Error("remove needs a query");(e=e||{}).multi=void 0===e.multi||e.multi;let n=e.multi?"find":"findOne",o=null;o="find"===n?this[n](t,{_filterType:"id"},!0):this[n](t,{_filterType:"id"});let r=this.cacheable;if(e.multi&&!o.length||!e.multi&&!o)return 0;e.multi||(o=[o]);for(let t of o)r&&delete this.cache[t],this.storage.removeItem(t);return o.length}update(t,e,n){if(!t)throw new Error("update needs a query");if(!e||!isObject(e))throw new Error("update needs an object");(n=n||{}).multi=void 0!==n.multi&&n.multi;let o=this[n.multi?"find":"findOne"](t,{_filterType:"id"}),r=this.primaryKey,i=this.cacheable;if(n.multi&&!o.length||!n.multi&&!o)return 0;if(n.multi){if(delete e[r],!Object.keys(e).length)return 0;for(let t of o){let n=i?this.cache[t]:this.db.decryptData(this.storage.getItem(t)),o=Object.assign({},n.data,e);i&&(this.cache[t]={offlineDate:n.offlineDate,offlineDateExpires:n.offlineDateExpires,data:o});const r=this.db.encryptData({offlineDate:n.offlineDate,offlineDateExpires:n.offlineDateExpires,data:o});this.storage.setItem(t,r)}return o.length}{let t=o,n=i?this.cache[t]:this.db.decryptData(this.storage.getItem(t)),a=e[r]&&e[r]!==n.data[r],s=a?this.path+e[r]:t;if(a&&this.findOne(e[r]))throw new Error("Duplicate value '"+e[r]+"' for unique field '"+r+"'");let l=Object.assign({},n.data,e);i&&(this.cache[s]={offlineDate:n.offlineDate,offlineDateExpires:n.offlineDateExpires,data:l},a&&delete this.cache[t]);const c=this.db.encryptData({offlineDate:n.offlineDate,offlineDateExpires:n.offlineDateExpires,data:l});return this.storage.setItem(s,c),a&&this.storage.removeItem(t),l}}drop(){return this.remove({}),!0}}class ID{constructor(){}toString(){return((new Date).getTime()/1e3).toString(16).substr(-4)+Math.random().toString(16).substr(2,12)}}class MockStorage{constructor(){this.length=0,this.length=0}key(){}setItem(){}getItem(){}removeItem(){}}const isSupported=t=>{if(!(t&&t instanceof Object))return!1;try{return t.setItem("_supported","1"),t.removeItem("_supported"),!0}catch(t){return!1}},isObject=t=>t instanceof Object&&"Object"===t.constructor.name,queryMatch=(t,e)=>{if(!t||!Object.keys(t).length)return!0;for(let n of Object.keys(t)){let o=t[n];if("$or"===n&&Array.isArray(o))return o.some((t=>queryMatch(t,e)));if("$and"===n&&Array.isArray(o))return o.every((t=>queryMatch(t,e)));if("$in"===n&&Array.isArray(o))return o.includes(e);if("$nin"===n&&Array.isArray(o))return!o.includes(e);if("$exists"===n&&"boolean"==typeof o)return o?void 0!==e:void 0===e;let r=e[n];if(r||n.split(".").forEach((t=>{r=r?r[t]:e[t]})),o instanceof RegExp){if(!o.test(r))return!1}else if(isObject(o)){for(let t of Object.keys(o))if(Operator._checkExist(t)&&!Operator[t](o[t],r))return!1}else if(o!==r)return!1}return!0},sortCompare=(t,e,n,o,r)=>{o=o||0;let i=(r=r||Object.keys(t))[o];return i?e[i]===n[i]?(o++,sortCompare(t,e,n,o,r)):1===t[i]?e[i]-n[i]:-1===t[i]?n[i]-e[i]:void 0:0},ops=["$eq","$gt","$gte","$in","$lt","$lte","$ne","$nin"],isNotNumber=t=>"number"!=typeof t;class Operator{static $eq(t,e){return e===t}static $gt(t,e){if(isNotNumber(t))throw new Error("'$gt' value must be a number");return e>t}static $gte(t,e){if(isNotNumber(t))throw new Error("'$gte' value must be a number");return e>=t}static $lt(t,e){if(isNotNumber(t))throw new Error("'$lt' value must be a number");return e<t}static $lte(t,e){if(isNotNumber(t))throw new Error("'$lte' value must be a number");return e<=t}static $ne(t,e){return e!==t}static $in(t,e){if(!(t instanceof Array))throw new Error("'$in' value must be an array");return t.includes(e)}static $nin(t,e){if(!(t instanceof Array))throw new Error("'$nin' value must be an array");return!t.includes(e)}static $exists(t,e){return t?void 0!==e:void 0===e}static $regex(t,e){if(!(t instanceof RegExp))throw new Error("'$regex' value must be a RegExp");return t.test(e)}static _checkExist(t){if(["$eq","$gt","$gte","$in","$lt","$lte","$ne","$nin","$exists","$regex"].includes(t))return!0;throw new Error("unknown operator: '"+t+"'")}}class OfflineManagerService{constructor(t){this._storage=t,this.storageInitialized=new BehaviorSubject(!1),this.offlineMode=new BehaviorSubject(!0)}initStorage(t){this._offlineDB=new StorageDB({storage:window.localStorage,database:"offlineDB",primaryKey:"_id",secretKey:t}),this._offlineDB.getCollections().forEach((t=>{let e=this.find(t,{},{},!0);e.some((t=>!t))?this.dropCollection(t):e.forEach((e=>{e&&e.offlineDateExpires&&"function"==typeof e.offlineDateExpires.getTime&&Date.now()>=e.offlineDateExpires.getTime()&&this.removeDocument(t,e.data._id)}))}));let e=this._storage.get("user");if(e){if(null===this._offlineDB.decryptData(e)){const t=this._offlineDB.encryptData(e);this._storage.set("user",t)}}let n=this._storage.get("lastURL");if(n){if(null===this._offlineDB.decryptData(n)){const t=this._offlineDB.encryptData(n);this._storage.set("lastURL",t)}}let o=this._storage.get("accessToken");if(o){if(null===this._offlineDB.decryptData(o)){const t=this._offlineDB.encryptData(o);this._storage.set("accessToken",t)}}let r=this._storage.get("refreshToken");if(r){if(null===this._offlineDB.decryptData(r)){const t=this._offlineDB.encryptData(r);this._storage.set("refreshToken",t)}}this.storageInitialized.next(!0)}getStorage(){return this._offlineDB}setOffline(t){this.offlineMode.next(t)}saveUser(t){return this._storage.set("user",this._offlineDB.encryptData(t))}getUser(){return this._storage.get("user")?this._offlineDB.decryptData(this._storage.get("user")):null}removeUser(){this._storage.remove("user")}find(t,e,n={},o=!1){const r=this._offlineDB.get(t);return r?r.find(e,n,o):[]}findOne(t,e){const n=this._offlineDB.get(t);return n?n.findOne(e):null}insertDocument(t,e,n){const o=this._offlineDB.get(t);let r="";return o&&e&&(!Array.isArray(e)||e.length)&&(r=o.insert(e,n)),r}updateDocument(t,e){const n=this._offlineDB.get(t);if(n){if(n.findOne({_id:e._id}))return e.__v+=1,n.update(e._id,e),1}return 0}updateDocumentProps(t,e,n,o){const r=this._offlineDB.get(t);if(r){let t=r.findOne({_id:e});if(t)return n.forEach((e=>{t[e.prop]=e.data})),t.__v+=1,r.update({_id:e},t),1}return 0}removeDocument(t,e){const n=this._offlineDB.get(t);n&&n.remove(e)}dropCollection(t){this._offlineDB.get(t).drop()}}OfflineManagerService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:OfflineManagerService,deps:[{token:i1$2.LocalStorageService}],target:i0.ɵɵFactoryTarget.Injectable}),OfflineManagerService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:OfflineManagerService}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:OfflineManagerService,decorators:[{type:Injectable}],ctorParameters:function(){return[{type:i1$2.LocalStorageService}]}});class TokenManagerService{constructor(t,e){this._storage=t,this._offline=e}getToken(t){let e=this._storage.get(t);return e?this._offline.getStorage().decryptData(e):null}setToken(t,e){this._storage.set(t,this._offline.getStorage().encryptData(e))}removeToken(t){null!==this.getToken(t)&&this._storage.remove(t)}}TokenManagerService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:TokenManagerService,deps:[{token:i1$2.LocalStorageService},{token:OfflineManagerService}],target:i0.ɵɵFactoryTarget.Injectable}),TokenManagerService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:TokenManagerService}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:TokenManagerService,decorators:[{type:Injectable}],ctorParameters:function(){return[{type:i1$2.LocalStorageService},{type:OfflineManagerService}]}});class SocketManagerService{constructor(t,e,n,o,r){this._socket=t,this._offline=e,this._alert=n,this._router=o,this._token=r,this.messageId=0,this._cbArray=[],this._subArray=[],this._offlineUpdates=[],this._pendingMessages=[],this._sendTimeout=null,this._currentLockId="",this._connectionDelayTimeout=null,this.onerror=function(){}}getSubArray(){return this._subArray}initSocketManager(){this._socket.readyState$.subscribe((t=>{this.socketStatus=t})),this._socket.onmessage=t=>{this.handleMessage(t)},this._socket.onopen=t=>{this._connectionDelayTimeout=setTimeout((async()=>{if(this._connectionDelayTimeout=null,this._offline.setOffline(!1),this._subArray.forEach((t=>{this.send(t.messageRoute,new Date,t.messageId,"subscription","sub",t.subscription,...t.parameters)})),!await this.acquireLock("processingOfflineUpdates"))return;let t=this._offline.find("collectionOffline",{}).sort(((t,e)=>t.date.getTime()-e.date.getTime())),e=this._offline.find("methodOffline",{}).sort(((t,e)=>t.date.getTime()-e.date.getTime()));t.length||e.length?(t.forEach((t=>{let e=this.messageId++;this._offlineUpdates.push({id_offline_doc:t._id,messageId:e,type:"collectionOffline"}),t.data[2]=e,"updateDocument"===t.type?(t.data[4]="updateDocumentOffline",t.data[0]="Offline - "+t.data[0]):"updateDocumentProps"===t.type?(t.data[4]="updateDocumentPropsOffline",t.data[0]="Offline - "+t.data[0]):t.data[0]="Offline - "+t.data[0]})),e.forEach((t=>{let e=this.messageId++;this._offlineUpdates.push({id_offline_doc:t._id,messageId:e,type:"methodOffline"}),t.data[2]=e,t.data[0]="Offline - "+t.data[0]})),this.send("Offline Updates",new Date,this.messageId++,"offline",t.concat(e).sort(((t,e)=>t.date.getTime()-e.date.getTime())))):this.releaseLock("processingOfflineUpdates")}),100)},this._socket.onerror=t=>{this._connectionDelayTimeout&&clearTimeout(this._connectionDelayTimeout),console.log(new Date,"SOCKET ERROR",t),this.onerror()},this._socket.onclose=t=>{this._connectionDelayTimeout&&clearTimeout(this._connectionDelayTimeout)}}handleMessage(t){for(let e of t)this.processReceivedMessage(e)}async acquireLock(t,e=6e4,n=100){let o=Date.now(),r=this.generateUniqueId(),i=JSON.stringify({lockId:r,timestamp:o}),a=this._token.getToken(t);if(a){let{lockId:n,timestamp:r}=JSON.parse(a);if(!(o>r+e))return!1;this._token.setToken(t,i)}else this._token.setToken(t,i);await this.sleep(n);let s=this._token.getToken(t);if(s){let{lockId:t,timestamp:n}=JSON.parse(s);if(t===r&&o<=n+e)return this._currentLockId=r,!0}return!1}sleep(t){return new Promise((e=>setTimeout(e,t)))}releaseLock(t){let e=this._token.getToken(t);if(e){let{lockId:n}=JSON.parse(e);n===this._currentLockId&&this._token.removeToken(t)}}generateUniqueId(){return`${Date.now()}-${Math.random().toString(36).substr(2,9)}`}processReceivedMessage(t){let e=this._offlineUpdates.findIndex((e=>e.messageId===t.messageId));if(e>=0&&(this._offline.removeDocument(this._offlineUpdates[e].type,this._offlineUpdates[e].id_offline_doc),this._offlineUpdates.splice(e,1),this._offlineUpdates.length||this.releaseLock("processingOfflineUpdates")),"ACK"!==t.data&&"NACK"!==t.data)if(this._cbArray.map((t=>t.messageId)).includes(t.messageId)){let e=this._cbArray.findIndex((e=>e.messageId===t.messageId));e>=0&&(this._cbArray[e].cb?(this._cbArray[e].cb(t.hasError?t.data:null,t.hasError?null:t.data),this._cbArray[e].resolveFn(t.hasError?t.data:null)):t.hasError?this._cbArray[e].rejectFn(t.data):this._cbArray[e].resolveFn(t.data),this._cbArray.splice(e,1))}else if(this._subArray.map((t=>t.messageId)).includes(t.messageId)){let e=this._subArray.findIndex((e=>e.messageId===t.messageId));e>=0&&this._subArray[e].subject.next(t.data)}}openSocket(t,e){this._socket.openSocket(t,e)}closeSocket(){this._token.removeToken("accessToken"),this._socket.close()}call(t,...e){let n=null,o=null,r=new Promise(((t,e)=>{n=t,o=e})),i=this.messageId++;e[e.length-1]&&"function"==typeof e[e.length-1]?this._cbArray.push({messageId:i,cb:e.pop(),resolveFn:n,rejectFn:o,retryCnt:0}):this._cbArray.push({messageId:i,cb:null,resolveFn:n,rejectFn:o,retryCnt:0});let a=e.length;for(;(void 0===e[e.length-1]||null===e[e.length-1])&&a>0;)e.pop(),a=e.length;return this.send(this._router.url.includes("?")?this._router.url.substring(0,this._router.url.indexOf("?")):this._router.url,new Date,i,"method",t,...e),r}subscribe(t,...e){const n=deepCopy(e),o=new Subject;let r=this.messageId++;this._subArray.push({messageId:r,messageRoute:this._router.url.includes("?")?this._router.url.substring(0,this._router.url.indexOf("?")):this._router.url,subscription:t,parameters:n,subject:o});const i=o.pipe(finalize((()=>{this.unsubscribe(r,t,...n),this._subArray.splice(this._subArray.map((t=>t.messageId)).indexOf(r),1)})));return this.send(this._router.url.includes("?")?this._router.url.substring(0,this._router.url.indexOf("?")):this._router.url,new Date,r,"subscription","sub",t,...n),i}subscribeBypassRoute(t,...e){const n=deepCopy(e),o=new Subject;let r=this.messageId++;this._subArray.push({messageId:r,messageRoute:"Bypass",subscription:t,parameters:n,subject:o});const i=o.pipe(finalize((()=>{this.unsubscribe(r,t,...n),this._subArray.splice(this._subArray.map((t=>t.messageId)).indexOf(r),1)})));return this.send("Bypass",new Date,r,"subscription","sub",t,...n),i}unsubscribe(t,e,...n){this.send(this._router.url.includes("?")?this._router.url.substring(0,this._router.url.indexOf("?")):this._router.url,new Date,t,"subscription","unsub",e,...n)}send(...t){this.socketStatus===WebSocket.OPEN?(this._pendingMessages.push(t),this._sendTimeout||(this._sendTimeout=setTimeout((()=>{this._sendTimeout=null;const t=[...this._pendingMessages];this._pendingMessages=[],this._socket.send(t)}),25))):"method"===t[3]&&this.handleOfflineMethod(t)}handleOfflineMethod(t){if("insertDocument"===t[4]){if("driver-gps"===t[5])return;this._alert.setAlert("warning","This insert command has not taken place on the server yet because you are offline. It will automatically sync up next time you are online as long as you do not clear your cache!"),this._offline.insertDocument("collectionOffline",{type:"insert",data:t,date:new Date});let e=this._offline.insertDocument(t[5],t[6]),n=this._cbArray.filter((e=>e.messageId===t[2]))[0];n&&n.cb&&(n.cb(null,e),this._cbArray.splice(this._cbArray.findIndex((e=>e.messageId===t[2])),1))}else if("updateDocument"===t[4]){this._alert.setAlert("warning","This update command has not taken place on the server yet because you are offline. It will automatically sync up next time you are online as long as you do not clear your cache!"),this._offline.insertDocument("collectionOffline",{type:"updateDocument",data:t,date:new Date}),this._offline.findOne(t[5],{_id:t[6]._id})?this._offline.updateDocument(t[5],t[6]):console.log("Could not find Offline data",t[5],t[6]);let e=this._cbArray.filter((e=>e.messageId===t[2]))[0];e&&e.cb&&(e.cb(null,1),this._cbArray.splice(this._cbArray.findIndex((e=>e.messageId===t[2])),1))}else if("updateDocumentProps"===t[4]){this._alert.setAlert("warning","This update command has not taken place on the server yet because you are offline. It will automatically sync up next time you are online as long as you do not clear your cache!"),this._offline.insertDocument("collectionOffline",{type:"updateDocumentProps",data:t,date:new Date}),this._offline.findOne(t[5],{_id:t[6]})?this._offline.updateDocumentProps(t[5],t[6],t[7],t[8]):console.log("Could not find Offline data",t[5],t[6]);let e=this._cbArray.filter((e=>e.messageId===t[2]))[0];e&&e.cb&&(e.cb(null,1),this._cbArray.splice(this._cbArray.findIndex((e=>e.messageId===t[2])),1))}else if("removeDocument"===t[4]){this._alert.setAlert("warning","This remove command has not taken place on the server yet because you are offline. It will automatically sync up next time you are online as long as you do not clear your cache!"),this._offline.insertDocument("collectionOffline",{type:"removeDocument",data:t,date:new Date}),this._offline.findOne(t[5],{_id:t[6]})?this._offline.removeDocument(t[5],t[6]):console.log("Could not find Offline data",t[5],t[6]);let e=this._cbArray.filter((e=>e.messageId===t[2]))[0];e&&e.cb&&(e.cb(null,1),this._cbArray.splice(this._cbArray.findIndex((e=>e.messageId===t[2])),1))}else t[0].includes("/dashboard/driver/")&&this._offline.insertDocument("methodOffline",{type:t[4],data:t,date:new Date})}getStatus(){return this._socket.readyState$}}SocketManagerService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SocketManagerService,deps:[{token:SocketService},{token:OfflineManagerService},{token:AlertService},{token:i1$3.Router},{token:TokenManagerService}],target:i0.ɵɵFactoryTarget.Injectable}),SocketManagerService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SocketManagerService}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SocketManagerService,decorators:[{type:Injectable}],ctorParameters:function(){return[{type:SocketService},{type:OfflineManagerService},{type:AlertService},{type:i1$3.Router},{type:TokenManagerService}]}});class AccountManagerService{constructor(t,e,n,o,r,i){this._router=t,this._socket=e,this._token=n,this._http=o,this._alert=r,this._offline=i,this.user=new BehaviorSubject(null),this.initCompleted=new BehaviorSubject(!1),this.loginCompleted=new BehaviorSubject(!1),this.environment=null}initLoginManager(t){this.environment=t,this._offline.storageInitialized.subscribe((t=>{this._socket.initSocketManager();let e=this._token.getToken("refreshToken");e?(this.initLogin(e),setInterval((()=>{e=this._token.getToken("refreshToken"),this.initLogin(e)}),3e3)):this.initCompleted.next(!0)}))}initLogin(t){if(navigator.onLine)this._offline.offlineMode.getValue()&&(this._offline.setOffline(!1),this.getAccessToken(t));else if(!this._offline.offlineMode.getValue()||!this.initCompleted.getValue()){this.closeSocket(),this._offline.setOffline(!0);let t=this._offline.getUser();t&&this.user.next(t),this.initCompleted.getValue()||this.initCompleted.next(!0)}}getAccessToken(t){t&&this._http.post(this.environment.SERVER_URL+"/accessToken",{refreshToken:t}).toPromise().then((t=>{t.error?this.initCompleted.next(!0):(this._token.setToken("accessToken",t.result.token),this.user.next(t.result.user),this.openSocket(t.result.token),this.user$&&this.user$.unsubscribe(),this.user$=this._socket.subscribeBypassRoute("userWithId",t.result.user._id).subscribe((t=>{t&&(this.user.getValue()&&this.user.getValue()._id!==t._id?this._socket.call("incorrectUser",this.user.getValue(),t,this._socket.getSubArray()):(this.user.next(t),this.loginCompleted.next(!0),this.initCompleted.next(!0),this._offline.saveUser(t)))})))}),(t=>{this.initCompleted.next(!0)}))}logIn(t,e){return new Promise(((n,o)=>{this._http.post(this.environment.SERVER_URL+"/login",{username:t,password:e}).toPromise().then((t=>{t.error?(this._alert.setAlert("error",t.result),o(t.result)):(this._token.setToken("refreshToken",t.result.token),this.getAccessToken(t.result.token),n(t.result.token))}),(t=>{}))}))}logIn365(t){return new Promise(((e,n)=>{this._http.post(this.environment.SERVER_URL+"/login365",{id_token:t}).toPromise().then((t=>{t.error?(this._alert.setAlert("error",t.result),n(t.result)):(this._token.setToken("refreshToken",t.result.token),this.getAccessToken(t.result.token),e(t.result.token))}),(t=>{}))}))}resetUserPassword(t){return new Promise(((e,n)=>{this._http.post(this.environment.SERVER_URL+"/resetPassword",{username:t}).toPromise().then((t=>{e(!0)}),(t=>{}))}))}logOut(){return new Promise(((t,e)=>{this._router.navigateByUrl("/home"),setTimeout((()=>{this.user.next(null),this._token.removeToken("refreshToken"),this._offline.removeUser(),this.closeSocket(),t(!0)}),500)}))}openSocket(t){this._socket.openSocket(this.environment,[t])}closeSocket(){this._socket.closeSocket()}setUser(t){this.user.next(t)}getUser(){return this.user.getValue()}getSocketStatus(){return this._socket.getStatus()}isUserInView(t){let e=!1;if(this.isUserSuperAdmin())return!0;let n=this.user.getValue();return n&&(n.roles.groups.forEach((n=>{n.views.filter((e=>e.startsWith(t))).length&&(e=!0)})),n.roles.miscs.filter((e=>e.startsWith(t))).length&&(e=!0),n.roles.groups.filter((e=>e.name===t)).length&&(e=!0)),e}isUserSuperAdmin(){return this.user.getValue()&&this.user.getValue().roles.super_admin}isInitCompleted(){return new Promise(((t,e)=>{if(this.initCompleted.value)t(!0);else{let e=this.initCompleted.subscribe((n=>{n&&(e.unsubscribe(),t(!0))}),(()=>{}))}}))}isLoginCompleted(){return new Promise(((t,e)=>{if(this.loginCompleted.value)t(!0);else{let e=this.loginCompleted.subscribe((n=>{n&&(e.unsubscribe(),t(!0))}))}}))}}AccountManagerService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AccountManagerService,deps:[{token:i1$3.Router},{token:SocketManagerService},{token:TokenManagerService},{token:i4.HttpClient},{token:AlertService},{token:OfflineManagerService}],target:i0.ɵɵFactoryTarget.Injectable}),AccountManagerService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AccountManagerService}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AccountManagerService,decorators:[{type:Injectable}],ctorParameters:function(){return[{type:i1$3.Router},{type:SocketManagerService},{type:TokenManagerService},{type:i4.HttpClient},{type:AlertService},{type:OfflineManagerService}]}});class ValidationService{constructor(){}wholeNumbersAllowNegative(t){return""===t.value||null===t.value||/^[\-]?\d+$/.test(t.value)?null:{wholeNumbersAllowNegative:{valid:!1}}}wholeNumbersWithZero(t){return""===t.value||null===t.value||/^[0-9]*$/.test(t.value)?null:{wholeNumbersWithZero:{valid:!1}}}wholeNumbersGreaterThanZero(t){return""===t.value||null===t.value||/^[1-9]+[0-9]*$/.test(t.value)?null:{wholeNumbersGreaterThanZero:{valid:!1}}}decimalWithZero(t){return""===t.value||null===t.value||/^\d*\.?\d*$/.test(t.value)?null:{decimalWithZero:{valid:!1}}}decimalGreaterThanZero(t){return""===t.value||null===t.value||/^\s*(?=.*[1-9])\d*(?:\.\d{1,10})?\s*$/.test(t.value)?null:{decimalGreaterThanZero:{valid:!1}}}currency(t){return""===t.value||null===t.value||/^[0-9]\d*(\.\d+)?$/.test(t.value)?null:{currency:{valid:!1}}}currencyGreaterThanZero(t){return""===t.value||null===t.value||/^[0-9]\d*(\.\d+)?$/.test(t.value)&&t.value>0?null:{currency:{valid:!1}}}currencyAllowNegative(t){return""===t.value||null===t.value||/^[\-]?[0-9]\d*(\.\d+)?$/.test(t.value)?null:{currency:{valid:!1}}}phoneNumber(t){return""===t.value||null===t.value||/^1?([2-9])(\d{9})/.test(t.value)?null:{phoneNumber:{valid:!1}}}email(t){return""===t.value||null===t.value||/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(t.value)?null:{email:{valid:!1}}}matchPassword(t){let e=t.controls.password,n=t.controls.confirm_password;return e.value&&n.value?e.value===n.value?null:{matchPassword:{isValid:!1}}:null}density(t){return""===t.value||null===t.value||/^[\-]?\d*\.?\d*$/.test(t.value)?null:{density:{valid:!1}}}maxValue(t){return e=>("string"==typeof e.value?parseFloat(e.value):e.value)>t?{maxValue:{max:t}}:null}minValue(t){return e=>("string"==typeof e.value?parseFloat(e.value):e.value)<t?{minValue:{min:t}}:null}multipleOf(t){return e=>("string"==typeof e.value?parseFloat(e.value):e.value)%t!=0?{multipleOf:{value:t}}:null}minLengthArray(t){return e=>e.value&&e.value.length>=t?null:{minLengthArray:{valid:!1}}}maxLengthArray(t){return e=>e.value&&e.value.length<=t?null:{maxLengthArray:{valid:!1}}}validIPAddress(t){return""===t.value||null===t.value||/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/.test(t.value)?null:{validIPAddress:{valid:!1}}}alphaNumericWithDashes(t){return""===t.value||null===t.value||/^[a-zA-Z0-9-_]+$/.test(t.value)?null:{alphaNumericWithDashes:{valid:!1}}}}ValidationService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ValidationService,deps:[],target:i0.ɵɵFactoryTarget.Injectable}),ValidationService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ValidationService}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ValidationService,decorators:[{type:Injectable}],ctorParameters:function(){return[]}});class AwsService{constructor(t){this._socket=t}dataURItoFile(t,e){let n=atob(t.split(",")[1]),o=t.split(",")[0].split(":")[1].split(";")[0],r=new ArrayBuffer(n.length),i=new Uint8Array(r);for(let t=0;t<n.length;t++)i[t]=n.charCodeAt(t);let a=new Blob([r],{type:o});return a.lastModifiedDate=new Date,a.name=e,a}uploadFile(t,e,n,o){return new Promise(((r,i)=>{t.size?this.getBase64(t).then((a=>{this._socket.call("uploadFileAndSave",o||t.name,a,t.size,n||-1,e,!0,((t,e)=>{e?r(e):i(t)}))})):i("Invalid File")}))}getFileWithKey(t,e){this._socket.call("getFile",t,e)}getFileWithId(t,e){this._socket.call("findOne","files",{_id:t},((t,n)=>{this.getFileWithKey(n.key,e)}))}deleteFile(t,e){this._socket.call("deleteFile",t,e)}deleteFileWithId(t,e){this._socket.call("findOne","files",{_id:t},((t,n)=>{this.deleteFile(n.key,e)}))}deleteFilesWithKeys(t,e){this._socket.call("deleteFiles",t,e)}getBase64(t){return new Promise(((e,n)=>{const o=new FileReader;o.readAsDataURL(t),o.onload=()=>e(o.result),o.onerror=t=>n(t)}))}}AwsService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AwsService,deps:[{token:SocketManagerService}],target:i0.ɵɵFactoryTarget.Injectable}),AwsService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AwsService}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AwsService,decorators:[{type:Injectable}],ctorParameters:function(){return[{type:SocketManagerService}]}});class BaseComponent{constructor(t){this.providerService=t}}class ProviderService{constructor(t,e,n,o,r,i,a,s){this._app=t,this._router=e,this._socket=n,this._account=o,this._alert=r,this._vs=i,this._aws=a,this._fb=s}}ProviderService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ProviderService,deps:[{token:CoreService},{token:i1$3.Router},{token:SocketManagerService},{token:AccountManagerService},{token:AlertService},{token:ValidationService},{token:AwsService},{token:i2.FormBuilder}],target:i0.ɵɵFactoryTarget.Injectable}),ProviderService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ProviderService}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ProviderService,decorators:[{type:Injectable}],ctorParameters:function(){return[{type:CoreService},{type:i1$3.Router},{type:SocketManagerService},{type:AccountManagerService},{type:AlertService},{type:ValidationService},{type:AwsService},{type:i2.FormBuilder}]}});class DialogNotifyContent{handleKeyboardEvent(t){13===t.keyCode&&this.activeModal.close()}constructor(t){this.activeModal=t}}DialogNotifyContent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogNotifyContent,deps:[{token:i1$4.NgbActiveModal}],target:i0.ɵɵFactoryTarget.Component}),DialogNotifyContent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:DialogNotifyContent,selector:"ng-component",inputs:{title:"title",body:"body"},host:{listeners:{"document:keypress":"handleKeyboardEvent($event)"}},ngImport:i0,template:'\n\t\t<div class="modal-header">\n\t\t\t<h4 class="modal-title"><i class="fa fa-info-circle" style="color: blue; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>\n\t \t\t<button type="button" class="close" aria-label="Close" (click)="activeModal.dismiss(\'Cross click\')">\n\t\t\t\t<span aria-hidden="true">×</span>\n\t \t\t</button>\n\t\t</div>\n\t\t<div class="modal-body">\n\t \t \t<p>{{ body }}</p>\n\t\t</div>\n\t\t<div class="modal-footer">\n\t \t\t<button type="button" class="btn btn-secondary" (click)="activeModal.close(\'Close click\')">Ok</button>\n\t\t</div>\n ',isInline:!0}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogNotifyContent,decorators:[{type:Component,args:[{template:'\n\t\t<div class="modal-header">\n\t\t\t<h4 class="modal-title"><i class="fa fa-info-circle" style="color: blue; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>\n\t \t\t<button type="button" class="close" aria-label="Close" (click)="activeModal.dismiss(\'Cross click\')">\n\t\t\t\t<span aria-hidden="true">×</span>\n\t \t\t</button>\n\t\t</div>\n\t\t<div class="modal-body">\n\t \t \t<p>{{ body }}</p>\n\t\t</div>\n\t\t<div class="modal-footer">\n\t \t\t<button type="button" class="btn btn-secondary" (click)="activeModal.close(\'Close click\')">Ok</button>\n\t\t</div>\n '}]}],ctorParameters:function(){return[{type:i1$4.NgbActiveModal}]},propDecorators:{title:[{type:Input}],body:[{type:Input}],handleKeyboardEvent:[{type:HostListener,args:["document:keypress",["$event"]]}]}});class FormButtonComponent extends BaseComponent{constructor(t){super(t),this._services=t,this.disabled=!1,this.type="submit"}getTipErrors(){let t=[];if(this.form&&this.form.invalid&&"object"==typeof this.form.controls){Object.keys(this.form.controls).forEach((e=>{let n=this.form.controls[e];if(n.invalid&&(t.push(e.replace("_id","").replace("id_","").replace("_"," ").replace(/\b\S/g,(function(t){return t.toUpperCase()}))+" is invalid"),"object"==typeof n.value&&Array.isArray(n.value)&&n.controls))for(let e=0;e<n.controls.length;e++){let o=n.controls[e];if(o.controls){Object.keys(o.controls).forEach((n=>{o.controls[n].invalid&&t.push("["+e+"] -> "+n.replace("_id","").replace("id_","").replace("_"," ").replace(/\b\S/g,(function(t){return t.toUpperCase()}))+" is invalid")}))}}}))}return t}isSuperAdmin(){return!(!this._services._account.getUser()||!this._services._account.getUser().roles.super_admin)}}FormButtonComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:FormButtonComponent,deps:[{token:ProviderService}],target:i0.ɵɵFactoryTarget.Component}),FormButtonComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:FormButtonComponent,selector:"form-button",inputs:{form:"form",disabled:"disabled",type:"type"},providers:[ProviderService],viewQueries:[{propertyName:"formButton",first:!0,predicate:["formButton"],descendants:!0}],usesInheritance:!0,ngImport:i0,template:'\n\t\t<div style="position: relative; text-align: left; width: 100%">\n\t\t\t<ng-template #tipContent>\n\t\t\t\t<span style="font-weight: bold">Errors:<br></span>\n\t\t\t\t<ul>\n\t\t\t\t\t<li *ngFor="let error of getTipErrors()">{{error}}</li>\n\t\t\t\t</ul>\n\t\t\t</ng-template>\n\t\t\t<div [ngbTooltip]="(getTipErrors().length ? tipContent : \'\')" placement="top-left" #t>\n\t\t\t\t<button [type]="type" [ngClass]="[\'btn\', form && form.valid ? \'btn-success\' : \'btn-danger\']" [disabled]="!form || !form.valid || disabled" style="width: 200px" [autofocus]="true" #formButton>Submit</button>\n\t\t\t</div>\n\t\t</div>\n\t',isInline:!0,dependencies:[{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{kind:"directive",type:i1$4.NgbTooltip,selector:"[ngbTooltip]",inputs:["animation","autoClose","placement","triggers","container","disableTooltip","tooltipClass","openDelay","closeDelay","ngbTooltip"],outputs:["shown","hidden"],exportAs:["ngbTooltip"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:FormButtonComponent,decorators:[{type:Component,args:[{providers:[ProviderService],selector:"form-button",template:'\n\t\t<div style="position: relative; text-align: left; width: 100%">\n\t\t\t<ng-template #tipContent>\n\t\t\t\t<span style="font-weight: bold">Errors:<br></span>\n\t\t\t\t<ul>\n\t\t\t\t\t<li *ngFor="let error of getTipErrors()">{{error}}</li>\n\t\t\t\t</ul>\n\t\t\t</ng-template>\n\t\t\t<div [ngbTooltip]="(getTipErrors().length ? tipContent : \'\')" placement="top-left" #t>\n\t\t\t\t<button [type]="type" [ngClass]="[\'btn\', form && form.valid ? \'btn-success\' : \'btn-danger\']" [disabled]="!form || !form.valid || disabled" style="width: 200px" [autofocus]="true" #formButton>Submit</button>\n\t\t\t</div>\n\t\t</div>\n\t'}]}],ctorParameters:function(){return[{type:ProviderService}]},propDecorators:{form:[{type:Input}],disabled:[{type:Input}],type:[{type:Input}],formButton:[{type:ViewChild,args:["formButton",{static:!1}]}]}});class FocusDirective{constructor(t){this.element=t}ngOnChanges(){this.focus&&this.element.nativeElement.focus()}}FocusDirective.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:FocusDirective,deps:[{token:i0.ElementRef}],target:i0.ɵɵFactoryTarget.Directive}),FocusDirective.ɵdir=i0.ɵɵngDeclareDirective({minVersion:"14.0.0",version:"15.2.10",type:FocusDirective,selector:"[focus]",inputs:{focus:"focus"},usesOnChanges:!0,ngImport:i0}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:FocusDirective,decorators:[{type:Directive,args:[{selector:"[focus]"}]}],ctorParameters:function(){return[{type:i0.ElementRef}]},propDecorators:{focus:[{type:Input}]}});class DialogInputContent{constructor(t,e){this._activeModal=t,this._fb=e,this.title="",this.inputFields=[],this.states=["Alabama","Alaska","Arizona","Arkansas","California","Colorado","Connecticut","Delaware","Florida","Georgia","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine","Maryland","Massachusetts","Michigan","Minnesota","Mississippi","Missouri","Montana","Nebraska","Nevada","New Hampshire","New Jersey","New Mexico","New York","North Carolina","North Dakota","Ohio","Oklahoma","Oregon","Pennsylvania","Rhode Island","South Carolina","South Dakota","Tennessee","Texas","Utah","Vermont","Virginia","Washington","West Virginia","Wisconsin","Wyoming"]}ngOnInit(){this.formInput=this._fb.group({});for(let t=0;t<this.inputFields.length;t++)"datetime"!==this.inputFields[t].type?null===this.inputFields[t].validators?this.formInput.addControl(this.inputFields[t].form,new UntypedFormControl({value:this.inputFields[t].data,disabled:this.inputFields[t].disabled})):this.formInput.addControl(this.inputFields[t].form,new UntypedFormControl({value:this.inputFields[t].data,disabled:this.inputFields[t].disabled},this.inputFields[t].validators)):(null===this.inputFields[t].validators?this.formInput.addControl(this.inputFields[t].form,new UntypedFormControl({value:this.inputFields[t].data[0],disabled:this.inputFields[t].disabled})):this.formInput.addControl(this.inputFields[t].form,new UntypedFormControl({value:this.inputFields[t].data[0],disabled:this.inputFields[t].disabled},this.inputFields[t].validators)),null===this.inputFields[t].validators?this.formInput.addControl(this.inputFields[t].form+"_time",new UntypedFormControl({value:this.inputFields[t].data[1],disabled:this.inputFields[t].disabled})):this.formInput.addControl(this.inputFields[t].form+"_time",new UntypedFormControl({value:this.inputFields[t].data[1],disabled:this.inputFields[t].disabled},this.inputFields[t].validators)))}validateInput(t,e){if(t.disabled)return"";let n=!0;for(let o=0;o<t.validators.length;o++)e.controls[t.form].hasError([t.validatorErrors[o]])&&(n=!1);return n&&null!==e.controls[t.form].value?"is-valid":!t.validators.length||!t.required&&n?"":"is-invalid"}getErrorMessages(t,e){let n=[];for(let o=0;o<t.validators.length;o++)e.controls[t.form].hasError([t.validatorErrors[o]])&&n.push(t.validatorMsg[o]);return n}}DialogInputContent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogInputContent,deps:[{token:i1$4.NgbActiveModal},{token:i2.FormBuilder}],target:i0.ɵɵFactoryTarget.Component}),DialogInputContent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:DialogInputContent,selector:"ng-component",inputs:{title:"title",inputFields:"inputFields"},ngImport:i0,template:'\n\t\t<form [formGroup]="formInput" novalidate (ngSubmit)="_activeModal.close(this.formInput.controls)">\n\t\t\t<div class="modal-header">\n\t\t\t\t<h4 class="modal-title"><i class="fa fa-plus-circle" style="color: green; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>\n\t\t\t\t<button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()">\n\t\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class="modal-body">\n\t\t\t\t<div *ngFor="let inputField of inputFields; let i = index">\n\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t<label class="form-control-label">{{inputField.label}}</label>\n\t\t\t\t\t\t<em *ngIf="formInput.controls[inputField.form].hasError(\'required\') && inputField.required">- Required</em>\n\t\t\t\t\t\t<em *ngIf="!formInput.controls[inputField.form].hasError(\'required\') && formInput.controls[inputField.form].invalid">- Invalid</em>\n\t\t\t\t\t\t<div *ngIf="inputField.type !== \'date\' && inputField.type !== \'datetime\' && inputField.type !== \'state\' && inputField.type !== \'textarea\' && inputField.type !== \'number\' && inputField.type !== \'select\' && inputField.type !== \'boolean\'">\n\t\t\t\t\t\t<input [autofocus]="i === 0 ? true : false" [focus]="i === 0 ? true : false" [formControlName]="inputField.form" [ngClass]="[\'form-control\', validateInput(inputField, formInput)]" [type]="(inputField.type ? inputField.type : \'text\')">\n\t\t\t\t\t\t\t<ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">\n\t\t\t\t\t\t\t\t<div class="invalid-feedback">{{errorMsg}}</div>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngIf="inputField.type === \'select\'">\n\t\t\t\t\t\t\t<ng-select [formControlName]="inputField.form" [ngClass]="[validateInput(inputField, formInput)]" [placeholder]="inputField.placeholder">\n\t\t\t\t\t\t\t\t<ng-option *ngFor="let opt of inputField.options" [value]="opt.value" [disabled]="opt.value === \'disabled\'">{{opt.text}}</ng-option>\n\t\t\t\t\t\t\t</ng-select>\n\t\t\t\t\t\t\t<ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">\n\t\t\t\t\t\t\t\t<div class="invalid-feedback">{{errorMsg}}</div>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngIf="inputField.type === \'state\'">\n\t\t\t\t\t\t\t<select [formControlName]="inputField.form" [ngClass]="[\'form-control\', validateInput(inputField, formInput)]">\n\t\t\t\t\t\t\t\t<option value="">Select State</option>\n\t\t\t\t\t\t\t\t<option *ngFor="let state of states" [value]="state">{{state}}</option>\n\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t<ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">\n\t\t\t\t\t\t\t\t<div class="invalid-feedback">{{errorMsg}}</div>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngIf="inputField.type === \'textarea\'">\n\t\t\t\t\t\t\t<textarea rows="4" [formControlName]="inputField.form" [ngClass]="[\'form-control\', validateInput(inputField, formInput)]"></textarea>\n\t\t\t\t\t\t\t<ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">\n\t\t\t\t\t\t\t\t<div class="invalid-feedback">{{errorMsg}}</div>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngIf="inputField.type === \'number\'">\n\t\t\t\t\t\t\t<input [formControlName]="inputField.form" type="number" [ngClass]="[\'form-control\', validateInput(inputField, formInput)]">\n\t\t\t\t\t\t\t<ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">\n\t\t\t\t\t\t\t\t<div class="invalid-feedback">{{errorMsg}}</div>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngIf="inputField.type === \'date\'">\n\t\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t\t<input [formControlName]="inputField.form" placeholder="yyyy-mm-dd" ngbDatepicker [firstDayOfWeek]="7" #d="ngbDatepicker" [ngClass]="[\'form-control\', validateInput(inputField, formInput)]" (click)="d.toggle()">\n\t\t\t\t\t\t\t\t<div class="input-group-append" (click)="d.toggle()">\n\t\t\t\t\t\t\t\t\t<div class="input-group-text">\n\t\t\t\t\t\t\t\t\t\t<i class="fa fa-calendar" aria-hidden="true"></i>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngIf="inputField.type === \'datetime\'">\n\t\t\t\t\t\t\t<div class="row" style="align-items: center;">\n\t\t\t\t\t\t\t\t<div class="col-sm-8">\n\t\t\t\t\t\t\t\t\t<label class="form-control-label" style="align-items: top;">Date/Time</label>\n\t\t\t\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t\t\t\t<input [formControlName]="inputField.form" placeholder="yyyy-mm-dd" ngbDatepicker [firstDayOfWeek]="7" #d="ngbDatepicker" [ngClass]="[\'form-control\', validateInput(inputField, formInput)]" (click)="d.toggle()">\n\t\t\t\t\t\t\t\t\t\t<div class="input-group-append" (click)="d.toggle()">\n\t\t\t\t\t\t\t\t\t\t\t<div class="input-group-text">\n\t\t\t\t\t\t\t\t\t\t\t\t<i class="fa fa-calendar" aria-hidden="true"></i>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class="col-sm-4">\n\t\t\t\t\t\t\t\t\t<label class="form-control-label" style="align-items: top;"> </label>\n\t\t\t\t\t\t\t\t\t<ngb-timepicker [formControlName]="inputField.form + \'_time\'" meridian="ON" [ngClass]="[validateInput(inputField, formInput)]"></ngb-timepicker>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngIf="inputField.type === \'boolean\'" (click)="formInput.controls[inputField.form].setValue(!formInput.controls[inputField.form].value)">\n\t\t\t\t\t\t\t<i *ngIf="formInput.controls[inputField.form].value" class="fa fa-check" style="color: green; font-size: 24px;" aria-hidden="true"></i>\n\t\t\t\t\t\t\t<i *ngIf="!formInput.controls[inputField.form].value" class="fa fa-times" style="color: red; font-size: 24px;" aria-hidden="true"></i>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="modal-footer">\n\t\t\t\t<form-button [form]="formInput"></form-button>\n\t\t\t\t<button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>\n\t\t\t</div>\n\t\t</form>\n\t',isInline:!0,dependencies:[{kind:"directive",type:i2.ɵNgNoValidate,selector:"form:not([ngNoForm]):not([ngNativeValidate])"},{kind:"directive",type:i2.NgSelectOption,selector:"option",inputs:["ngValue","value"]},{kind:"directive",type:i2.ɵNgSelectMultipleOption,selector:"option",inputs:["ngValue","value"]},{kind:"directive",type:i2.DefaultValueAccessor,selector:"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]"},{kind:"directive",type:i2.NumberValueAccessor,selector:"input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]"},{kind:"directive",type:i2.SelectControlValueAccessor,selector:"select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]",inputs:["compareWith"]},{kind:"directive",type:i2.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i2.NgControlStatusGroup,selector:"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]"},{kind:"directive",type:i2.FormGroupDirective,selector:"[formGroup]",inputs:["formGroup"],outputs:["ngSubmit"],exportAs:["ngForm"]},{kind:"directive",type:i2.FormControlName,selector:"[formControlName]",inputs:["formControlName","disabled","ngModel"],outputs:["ngModelChange"]},{kind:"directive",type:i1$4.NgbInputDatepicker,selector:"input[ngbDatepicker]",inputs:["autoClose","datepickerClass","dayTemplate","dayTemplateData","displayMonths","firstDayOfWeek","footerTemplate","markDisabled","minDate","maxDate","navigation","outsideDays","placement","restoreFocus","showWeekNumbers","startDate","container","positionTarget","weekdays","disabled"],outputs:["dateSelect","navigate","closed"],exportAs:["ngbDatepicker"]},{kind:"component",type:i1$4.NgbTimepicker,selector:"ngb-timepicker",inputs:["meridian","spinners","seconds","hourStep","minuteStep","secondStep","readonlyInputs","size"]},{kind:"component",type:FormButtonComponent,selector:"form-button",inputs:["form","disabled","type"]},{kind:"component",type:i4$1.NgSelectComponent,selector:"ng-select",inputs:["bindLabel","bindValue","markFirst","placeholder","notFoundText","typeToSearchText","addTagText","loadingText","clearAllText","appearance","dropdownPosition","appendTo","loading","closeOnSelect","hideSelected","selectOnTab","openOnEnter","maxSelectedItems","groupBy","groupValue","bufferAmount","virtualScroll","selectableGroup","selectableGroupAsModel","searchFn","trackByFn","clearOnBackspace","labelForId","inputAttrs","tabIndex","readonly","searchWhileComposing","minTermLength","editableSearchTerm","keyDownFn","typeahead","multiple","addTag","searchable","clearable","isOpen","items","compareWith","clearSearchOnAdd"],outputs:["blur","focus","change","open","close","search","clear","add","remove","scroll","scrollToEnd"]},{kind:"component",type:i4$1.NgOptionComponent,selector:"ng-option",inputs:["value","disabled"]},{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"directive",type:FocusDirective,selector:"[focus]",inputs:["focus"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogInputContent,decorators:[{type:Component,args:[{template:'\n\t\t<form [formGroup]="formInput" novalidate (ngSubmit)="_activeModal.close(this.formInput.controls)">\n\t\t\t<div class="modal-header">\n\t\t\t\t<h4 class="modal-title"><i class="fa fa-plus-circle" style="color: green; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>\n\t\t\t\t<button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()">\n\t\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class="modal-body">\n\t\t\t\t<div *ngFor="let inputField of inputFields; let i = index">\n\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t<label class="form-control-label">{{inputField.label}}</label>\n\t\t\t\t\t\t<em *ngIf="formInput.controls[inputField.form].hasError(\'required\') && inputField.required">- Required</em>\n\t\t\t\t\t\t<em *ngIf="!formInput.controls[inputField.form].hasError(\'required\') && formInput.controls[inputField.form].invalid">- Invalid</em>\n\t\t\t\t\t\t<div *ngIf="inputField.type !== \'date\' && inputField.type !== \'datetime\' && inputField.type !== \'state\' && inputField.type !== \'textarea\' && inputField.type !== \'number\' && inputField.type !== \'select\' && inputField.type !== \'boolean\'">\n\t\t\t\t\t\t<input [autofocus]="i === 0 ? true : false" [focus]="i === 0 ? true : false" [formControlName]="inputField.form" [ngClass]="[\'form-control\', validateInput(inputField, formInput)]" [type]="(inputField.type ? inputField.type : \'text\')">\n\t\t\t\t\t\t\t<ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">\n\t\t\t\t\t\t\t\t<div class="invalid-feedback">{{errorMsg}}</div>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngIf="inputField.type === \'select\'">\n\t\t\t\t\t\t\t<ng-select [formControlName]="inputField.form" [ngClass]="[validateInput(inputField, formInput)]" [placeholder]="inputField.placeholder">\n\t\t\t\t\t\t\t\t<ng-option *ngFor="let opt of inputField.options" [value]="opt.value" [disabled]="opt.value === \'disabled\'">{{opt.text}}</ng-option>\n\t\t\t\t\t\t\t</ng-select>\n\t\t\t\t\t\t\t<ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">\n\t\t\t\t\t\t\t\t<div class="invalid-feedback">{{errorMsg}}</div>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngIf="inputField.type === \'state\'">\n\t\t\t\t\t\t\t<select [formControlName]="inputField.form" [ngClass]="[\'form-control\', validateInput(inputField, formInput)]">\n\t\t\t\t\t\t\t\t<option value="">Select State</option>\n\t\t\t\t\t\t\t\t<option *ngFor="let state of states" [value]="state">{{state}}</option>\n\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t<ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">\n\t\t\t\t\t\t\t\t<div class="invalid-feedback">{{errorMsg}}</div>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngIf="inputField.type === \'textarea\'">\n\t\t\t\t\t\t\t<textarea rows="4" [formControlName]="inputField.form" [ngClass]="[\'form-control\', validateInput(inputField, formInput)]"></textarea>\n\t\t\t\t\t\t\t<ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">\n\t\t\t\t\t\t\t\t<div class="invalid-feedback">{{errorMsg}}</div>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngIf="inputField.type === \'number\'">\n\t\t\t\t\t\t\t<input [formControlName]="inputField.form" type="number" [ngClass]="[\'form-control\', validateInput(inputField, formInput)]">\n\t\t\t\t\t\t\t<ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">\n\t\t\t\t\t\t\t\t<div class="invalid-feedback">{{errorMsg}}</div>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngIf="inputField.type === \'date\'">\n\t\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t\t<input [formControlName]="inputField.form" placeholder="yyyy-mm-dd" ngbDatepicker [firstDayOfWeek]="7" #d="ngbDatepicker" [ngClass]="[\'form-control\', validateInput(inputField, formInput)]" (click)="d.toggle()">\n\t\t\t\t\t\t\t\t<div class="input-group-append" (click)="d.toggle()">\n\t\t\t\t\t\t\t\t\t<div class="input-group-text">\n\t\t\t\t\t\t\t\t\t\t<i class="fa fa-calendar" aria-hidden="true"></i>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngIf="inputField.type === \'datetime\'">\n\t\t\t\t\t\t\t<div class="row" style="align-items: center;">\n\t\t\t\t\t\t\t\t<div class="col-sm-8">\n\t\t\t\t\t\t\t\t\t<label class="form-control-label" style="align-items: top;">Date/Time</label>\n\t\t\t\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t\t\t\t<input [formControlName]="inputField.form" placeholder="yyyy-mm-dd" ngbDatepicker [firstDayOfWeek]="7" #d="ngbDatepicker" [ngClass]="[\'form-control\', validateInput(inputField, formInput)]" (click)="d.toggle()">\n\t\t\t\t\t\t\t\t\t\t<div class="input-group-append" (click)="d.toggle()">\n\t\t\t\t\t\t\t\t\t\t\t<div class="input-group-text">\n\t\t\t\t\t\t\t\t\t\t\t\t<i class="fa fa-calendar" aria-hidden="true"></i>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class="col-sm-4">\n\t\t\t\t\t\t\t\t\t<label class="form-control-label" style="align-items: top;"> </label>\n\t\t\t\t\t\t\t\t\t<ngb-timepicker [formControlName]="inputField.form + \'_time\'" meridian="ON" [ngClass]="[validateInput(inputField, formInput)]"></ngb-timepicker>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngIf="inputField.type === \'boolean\'" (click)="formInput.controls[inputField.form].setValue(!formInput.controls[inputField.form].value)">\n\t\t\t\t\t\t\t<i *ngIf="formInput.controls[inputField.form].value" class="fa fa-check" style="color: green; font-size: 24px;" aria-hidden="true"></i>\n\t\t\t\t\t\t\t<i *ngIf="!formInput.controls[inputField.form].value" class="fa fa-times" style="color: red; font-size: 24px;" aria-hidden="true"></i>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="modal-footer">\n\t\t\t\t<form-button [form]="formInput"></form-button>\n\t\t\t\t<button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>\n\t\t\t</div>\n\t\t</form>\n\t'}]}],ctorParameters:function(){return[{type:i1$4.NgbActiveModal},{type:i2.FormBuilder}]},propDecorators:{title:[{type:Input}],inputFields:[{type:Input}]}});class DialogErrorContent{handleKeyboardEvent(t){13===t.keyCode&&this.activeModal.close()}constructor(t){this.activeModal=t}}DialogErrorContent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogErrorContent,deps:[{token:i1$4.NgbActiveModal}],target:i0.ɵɵFactoryTarget.Component}),DialogErrorContent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:DialogErrorContent,selector:"ng-component",inputs:{title:"title",body:"body"},host:{listeners:{"document:keypress":"handleKeyboardEvent($event)"}},ngImport:i0,template:'\n\t\t<div class="modal-header">\n\t\t\t<h4 class="modal-title"><i class="fa fa-times-circle" style="color: red; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>\n\t\t\t<button type="button" class="close" aria-label="Close" (click)="activeModal.dismiss(\'Cross click\')">\n\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t</button>\n\t\t</div>\n\t\t<div class="modal-body">\n\t\t\t<p>{{ body }}</p>\n\t\t</div>\n\t\t<div class="modal-footer">\n\t\t\t<button type="button" class="btn btn-secondary" (click)="activeModal.close(\'Close click\')">Ok</button>\n\t\t</div>\n \t',isInline:!0}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogErrorContent,decorators:[{type:Component,args:[{template:'\n\t\t<div class="modal-header">\n\t\t\t<h4 class="modal-title"><i class="fa fa-times-circle" style="color: red; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>\n\t\t\t<button type="button" class="close" aria-label="Close" (click)="activeModal.dismiss(\'Cross click\')">\n\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t</button>\n\t\t</div>\n\t\t<div class="modal-body">\n\t\t\t<p>{{ body }}</p>\n\t\t</div>\n\t\t<div class="modal-footer">\n\t\t\t<button type="button" class="btn btn-secondary" (click)="activeModal.close(\'Close click\')">Ok</button>\n\t\t</div>\n \t'}]}],ctorParameters:function(){return[{type:i1$4.NgbActiveModal}]},propDecorators:{title:[{type:Input}],body:[{type:Input}],handleKeyboardEvent:[{type:HostListener,args:["document:keypress",["$event"]]}]}});class DialogConfirmContent{handleKeyboardEvent(t){13===t.keyCode&&this.activeModal.close()}constructor(t){this.activeModal=t}}DialogConfirmContent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogConfirmContent,deps:[{token:i1$4.NgbActiveModal}],target:i0.ɵɵFactoryTarget.Component}),DialogConfirmContent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:DialogConfirmContent,selector:"ng-component",inputs:{title:"title",body:"body",html:"html"},host:{listeners:{"document:keypress":"handleKeyboardEvent($event)"}},ngImport:i0,template:'\n\t\t<div class="modal-header">\n\t\t\t<h4 class="modal-title"><i class="fa fa-question-circle" style="color: blue; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>\n\t\t\t<button type="button" class="close" aria-label="Close" (click)="activeModal.dismiss(\'Cross click\')">\n\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t</button>\n\t\t</div>\n\t\t<div class="modal-body">\n\t\t\t<p>{{ body }}</p>\n\t\t\t<div [innerHTML]="html"></div>\n\t\t</div>\n\t\t<div class="modal-footer">\n\t\t\t<button type="button" class="btn btn-success" (click)="activeModal.close()">Yes</button>\n\t\t\t<button type="button" class="btn btn-danger" (click)="activeModal.dismiss()">No</button>\n\t\t</div>\n \t',isInline:!0}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogConfirmContent,decorators:[{type:Component,args:[{template:'\n\t\t<div class="modal-header">\n\t\t\t<h4 class="modal-title"><i class="fa fa-question-circle" style="color: blue; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>\n\t\t\t<button type="button" class="close" aria-label="Close" (click)="activeModal.dismiss(\'Cross click\')">\n\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t</button>\n\t\t</div>\n\t\t<div class="modal-body">\n\t\t\t<p>{{ body }}</p>\n\t\t\t<div [innerHTML]="html"></div>\n\t\t</div>\n\t\t<div class="modal-footer">\n\t\t\t<button type="button" class="btn btn-success" (click)="activeModal.close()">Yes</button>\n\t\t\t<button type="button" class="btn btn-danger" (click)="activeModal.dismiss()">No</button>\n\t\t</div>\n \t'}]}],ctorParameters:function(){return[{type:i1$4.NgbActiveModal}]},propDecorators:{title:[{type:Input}],body:[{type:Input}],html:[{type:Input}],handleKeyboardEvent:[{type:HostListener,args:["document:keypress",["$event"]]}]}});class DialogSelectDateTimeContent{constructor(t,e){this._activeModal=t,this._fb=e,this.title="",this.showTime=!0}ngOnInit(){this.date||(this.date=new Date),this.form=this._fb.group({time:[{hour:this.date.getHours(),minute:this.date.getMinutes(),second:0},[Validators.required]],date:[{year:this.date.getFullYear(),month:this.date.getMonth()+1,day:this.date.getDate()},[Validators.required]]})}ngAfterViewInit(){setTimeout((()=>{let t=this.recursiveFindFirstElement(this.allElements.nativeElement);t?t.focus():(this.close.nativeElement.focus(),this.close.nativeElement.blur())}),100)}recursiveFindFirstElement(t){let e=null,n=t.children;for(let t=0;t<Object.keys(n).length;t++){let o=n[Object.keys(n)[t]];if(o.children&&o.children.length)e=this.recursiveFindFirstElement(o);else{if("BUTTON"===o.tagName&&o.classList.contains("close"))return null;if(!("BUTTON"!==o.tagName&&"INPUT"!==o.tagName&&"SELECT"!==o.tagName&&"TEXTAREA"!==o.tagName||o.hidden||o.disabled))return o}if(e)break}return e}submitForm(){this._activeModal.close(new Date(this.form.value.date.year,parseInt(this.form.value.date.month)-1,this.form.value.date.day,this.form.value.time.hour,this.form.value.time.minute,this.form.value.time.second,0))}}DialogSelectDateTimeContent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogSelectDateTimeContent,deps:[{token:i1$4.NgbActiveModal},{token:i2.FormBuilder}],target:i0.ɵɵFactoryTarget.Component}),DialogSelectDateTimeContent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:DialogSelectDateTimeContent,selector:"ng-component",inputs:{title:"title",date:"date",showTime:"showTime"},viewQueries:[{propertyName:"close",first:!0,predicate:["close"],descendants:!0},{propertyName:"allElements",first:!0,predicate:["allElements"],descendants:!0}],ngImport:i0,template:'\n\t \t<style>\n\t\t \ttable {\n\t\t\t\twidth: 100%;\n\t\t\t\ttable-layout: fixed;\n\t\t\t}\n\n\t\t\ttr {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\ttd {\n\t\t\t\twidth: 100%;\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t</style>\n\t\t<div #allElements>\n\t\t\t<form [formGroup]="form" novalidate (ngSubmit)="submitForm()">\n\t\t\t\t<div class="modal-header">\n\t\t\t\t\t<h4 class="modal-title"><i class="fa fa-question-circle" style="color: blue; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>\n\t\t\t\t\t<button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()" #close>\n\t\t\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-body">\n\t\t\t\t\t<table>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td style="border: none;">\n\t\t\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t\t\t<input class="form-control" placeholder="yyyy-mm-dd" name="dp" formControlName="date" ngbDatepicker [firstDayOfWeek]="7" #d="ngbDatepicker">\n\t\t\t\t\t\t\t\t\t<div class="input-group-append" (click)="d.toggle()">\n\t\t\t\t\t\t\t\t\t\t<div class="input-group-text">\n\t\t\t\t\t\t\t\t\t\t\t<i class="fa fa-calendar" aria-hidden="true"></i>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t<td *ngIf="showTime" style="border: none;">\n\t\t\t\t\t\t\t\t<div class="offset-3">\n\t\t\t\t\t\t\t\t\t<ngb-timepicker formControlName="time" meridian="ON"></ngb-timepicker>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-footer">\n\t\t\t\t\t<form-button [form]="form"></form-button>\n\t\t\t\t\t<button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>\n\t\t\t\t</div>\n\t\t\t</form>\n\t\t</div>\n\t',isInline:!0,styles:["\n\t\t \ttable {\n\t\t\t\twidth: 100%;\n\t\t\t\ttable-layout: fixed;\n\t\t\t}\n\n\t\t\ttr {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\ttd {\n\t\t\t\twidth: 100%;\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t"],dependencies:[{kind:"directive",type:i2.ɵNgNoValidate,selector:"form:not([ngNoForm]):not([ngNativeValidate])"},{kind:"directive",type:i2.DefaultValueAccessor,selector:"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]"},{kind:"directive",type:i2.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i2.NgControlStatusGroup,selector:"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]"},{kind:"directive",type:i2.FormGroupDirective,selector:"[formGroup]",inputs:["formGroup"],outputs:["ngSubmit"],exportAs:["ngForm"]},{kind:"directive",type:i2.FormControlName,selector:"[formControlName]",inputs:["formControlName","disabled","ngModel"],outputs:["ngModelChange"]},{kind:"directive",type:i1$4.NgbInputDatepicker,selector:"input[ngbDatepicker]",inputs:["autoClose","datepickerClass","dayTemplate","dayTemplateData","displayMonths","firstDayOfWeek","footerTemplate","markDisabled","minDate","maxDate","navigation","outsideDays","placement","restoreFocus","showWeekNumbers","startDate","container","positionTarget","weekdays","disabled"],outputs:["dateSelect","navigate","closed"],exportAs:["ngbDatepicker"]},{kind:"component",type:i1$4.NgbTimepicker,selector:"ngb-timepicker",inputs:["meridian","spinners","seconds","hourStep","minuteStep","secondStep","readonlyInputs","size"]},{kind:"component",type:FormButtonComponent,selector:"form-button",inputs:["form","disabled","type"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogSelectDateTimeContent,decorators:[{type:Component,args:[{template:'\n\t \t<style>\n\t\t \ttable {\n\t\t\t\twidth: 100%;\n\t\t\t\ttable-layout: fixed;\n\t\t\t}\n\n\t\t\ttr {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\ttd {\n\t\t\t\twidth: 100%;\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t</style>\n\t\t<div #allElements>\n\t\t\t<form [formGroup]="form" novalidate (ngSubmit)="submitForm()">\n\t\t\t\t<div class="modal-header">\n\t\t\t\t\t<h4 class="modal-title"><i class="fa fa-question-circle" style="color: blue; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>\n\t\t\t\t\t<button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()" #close>\n\t\t\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-body">\n\t\t\t\t\t<table>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td style="border: none;">\n\t\t\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t\t\t<input class="form-control" placeholder="yyyy-mm-dd" name="dp" formControlName="date" ngbDatepicker [firstDayOfWeek]="7" #d="ngbDatepicker">\n\t\t\t\t\t\t\t\t\t<div class="input-group-append" (click)="d.toggle()">\n\t\t\t\t\t\t\t\t\t\t<div class="input-group-text">\n\t\t\t\t\t\t\t\t\t\t\t<i class="fa fa-calendar" aria-hidden="true"></i>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t<td *ngIf="showTime" style="border: none;">\n\t\t\t\t\t\t\t\t<div class="offset-3">\n\t\t\t\t\t\t\t\t\t<ngb-timepicker formControlName="time" meridian="ON"></ngb-timepicker>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-footer">\n\t\t\t\t\t<form-button [form]="form"></form-button>\n\t\t\t\t\t<button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>\n\t\t\t\t</div>\n\t\t\t</form>\n\t\t</div>\n\t'}]}],ctorParameters:function(){return[{type:i1$4.NgbActiveModal},{type:i2.FormBuilder}]},propDecorators:{title:[{type:Input}],date:[{type:Input}],showTime:[{type:Input}],close:[{type:ViewChild,args:["close",{static:!1}]}],allElements:[{type:ViewChild,args:["allElements",{static:!1}]}]}});class DialogSelectDataLabelsContent{constructor(t,e){this._activeModal=t,this._fb=e,this.title="",this.subtitle="",this.dialogData=[]}ngOnInit(){this.getKeys()}getKeys(){let t=Object.keys(this.data),e="";t.filter((t=>"_id"!==t&&!t.startsWith("id_")&&"__v"!==t&&"createdAt"!==t&&"updatedAt"!==t)).forEach((t=>{if(e=typeof this.data[t],"object"===e)if(Array.isArray(this.data[t])){if(e="array",this.dialogData.push({label:t.replace(new RegExp("_","g")," ").replace("string","").replace(/\w\S*/g,(function(t){return t.charAt(0).toUpperCase()+t.substr(1).toLowerCase()})),data:t,selected:!0,type:e,subLabel:null,subData:null,subtype:null}),!0===this.showArraySubData){Object.keys(this.data[t][0]).filter((t=>"_id"!==t&&!t.startsWith("id_"))).forEach((n=>{this.dialogData.push({label:t.replace(new RegExp("_","g")," ").replace("string","").replace(/\w\S*/g,(function(t){return t.charAt(0).toUpperCase()+t.substr(1).toLowerCase()})),subLabel:n.replace(new RegExp("_","g")," ").replace("string","").replace(/\w\S*/g,(function(t){return t.charAt(0).toUpperCase()+t.substr(1).toLowerCase()})),data:t,type:e,subData:n,selected:!0,subtype:typeof n})}))}}else{let n=Object.keys(this.data[t]);n.length?n.filter((t=>"_id"!==t&&!t.startsWith("id_"))).forEach((n=>{this.dialogData.push({label:t.replace(new RegExp("_","g")," ").replace("string","").replace(/\w\S*/g,(function(t){return t.charAt(0).toUpperCase()+t.substr(1).toLowerCase()})),subLabel:n.replace(new RegExp("_","g")," ").replace("string","").replace(/\w\S*/g,(function(t){return t.charAt(0).toUpperCase()+t.substr(1).toLowerCase()})),data:t,subData:n,subtype:null,selected:!0,type:e})})):this.dialogData.push({label:t.replace(new RegExp("_","g")," ").replace("string","").replace(/\w\S*/g,(function(t){return t.charAt(0).toUpperCase()+t.substr(1).toLowerCase()})),data:t,selected:!0,type:e,subData:null,subLabel:null,subtype:null})}else this.dialogData.push({label:t.replace(new RegExp("_","g")," ").replace("string","").replace(/\w\S*/g,(function(t){return t.charAt(0).toUpperCase()+t.substr(1).toLowerCase()})),data:t,selected:!0,type:e,subData:null,subLabel:null,subtype:null})}))}changeSelected(t){t.selected=!t.selected,"array"===t.type&&null===t.subtype&&this.dialogData.filter((e=>e.label===t.label)).forEach((e=>{e.selected=t.selected}))}submit(){return this.dialogData}}DialogSelectDataLabelsContent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogSelectDataLabelsContent,deps:[{token:i1$4.NgbActiveModal},{token:i2.FormBuilder}],target:i0.ɵɵFactoryTarget.Component}),DialogSelectDataLabelsContent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:DialogSelectDataLabelsContent,selector:"ng-component",inputs:{title:"title",subtitle:"subtitle",data:"data",showArraySubData:"showArraySubData"},ngImport:i0,template:'\n\t\t<div class="modal-header">\n\t\t\t<h4 class="modal-title"><i class="fa fa-question-circle" style="color: blue; font-size: 0.75em" aria-hidden="true"></i> {{ title }} - {{ subtitle }}</h4>\n\t\t\t<button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()">\n\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t</button>\n\t\t</div>\n\t\t<div class="modal-body">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<div class="row">\n\t\t\t\t\t<div class="col-lg-12">\n\t\t\t\t\t\t<ng-container *ngFor="let label of dialogData">\n\t\t\t\t\t\t\t<div class="row">\n\t\t\t\t\t\t\t\t<div *ngIf="label.subtype === null && label.type !== \'object\'" style="font-size: 12px;">\n\t\t\t\t\t\t\t\t\t<input type="checkbox" [checked]="label.selected" (click)="changeSelected(label)" style="height: 20px; width: auto;"> {{ label.label }}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div *ngIf="label.subtype === null && label.type === \'object\' && label.subLabel !== null" style="font-size: 12px;">\n\t\t\t\t\t\t\t\t\t<input type="checkbox" [checked]="label.selected" (click)="changeSelected(label)" style="height: 20px; width: auto;"> {{ label.subLabel }}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div *ngIf="label.subtype === null && label.type === \'object\' && label.subLabel === null" style="font-size: 12px;">\n\t\t\t\t\t\t\t\t\t<input type="checkbox" [checked]="label.selected" (click)="changeSelected(label)" style="height: 20px; width: auto;"> {{ label.label }}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div *ngIf="label.subtype !== null" style="font-size: 12px;">\n\t\t\t\t\t\t\t\t\t <input type="checkbox" [checked]="label.selected" (click)="changeSelected(label)" style="height: 20px; width: auto;"> {{ label.subLabel }}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="modal-footer">\n\t\t\t<button type="button" class="btn btn-success" (click)="_activeModal.close(dialogData)">Submit</button>\n\t\t\t<button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>\n\t\t</div>\n\t',isInline:!0,dependencies:[{kind:"directive",type:i7.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogSelectDataLabelsContent,decorators:[{type:Component,args:[{template:'\n\t\t<div class="modal-header">\n\t\t\t<h4 class="modal-title"><i class="fa fa-question-circle" style="color: blue; font-size: 0.75em" aria-hidden="true"></i> {{ title }} - {{ subtitle }}</h4>\n\t\t\t<button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()">\n\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t</button>\n\t\t</div>\n\t\t<div class="modal-body">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<div class="row">\n\t\t\t\t\t<div class="col-lg-12">\n\t\t\t\t\t\t<ng-container *ngFor="let label of dialogData">\n\t\t\t\t\t\t\t<div class="row">\n\t\t\t\t\t\t\t\t<div *ngIf="label.subtype === null && label.type !== \'object\'" style="font-size: 12px;">\n\t\t\t\t\t\t\t\t\t<input type="checkbox" [checked]="label.selected" (click)="changeSelected(label)" style="height: 20px; width: auto;"> {{ label.label }}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div *ngIf="label.subtype === null && label.type === \'object\' && label.subLabel !== null" style="font-size: 12px;">\n\t\t\t\t\t\t\t\t\t<input type="checkbox" [checked]="label.selected" (click)="changeSelected(label)" style="height: 20px; width: auto;"> {{ label.subLabel }}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div *ngIf="label.subtype === null && label.type === \'object\' && label.subLabel === null" style="font-size: 12px;">\n\t\t\t\t\t\t\t\t\t<input type="checkbox" [checked]="label.selected" (click)="changeSelected(label)" style="height: 20px; width: auto;"> {{ label.label }}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div *ngIf="label.subtype !== null" style="font-size: 12px;">\n\t\t\t\t\t\t\t\t\t <input type="checkbox" [checked]="label.selected" (click)="changeSelected(label)" style="height: 20px; width: auto;"> {{ label.subLabel }}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="modal-footer">\n\t\t\t<button type="button" class="btn btn-success" (click)="_activeModal.close(dialogData)">Submit</button>\n\t\t\t<button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>\n\t\t</div>\n\t'}]}],ctorParameters:function(){return[{type:i1$4.NgbActiveModal},{type:i2.FormBuilder}]},propDecorators:{title:[{type:Input}],subtitle:[{type:Input}],data:[{type:Input}],showArraySubData:[{type:Input}]}});class ResponsiveButtonGroupComponent extends BaseComponent{constructor(t,e,n){super(n),this._cdRef=t,this._resizeService=e,this._services=n,this.collapseSize=900,this.windowSize=window.innerWidth,this.windowSizeSubscription=null}ngOnInit(){this.windowSizeSubscription=this._resizeService.onResize$.subscribe((t=>{t&&(this.windowSize=t.innerWidth,this._cdRef.detectChanges())}))}ngOnDestroy(){this.windowSizeSubscription.unsubscribe()}}ResponsiveButtonGroupComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ResponsiveButtonGroupComponent,deps:[{token:i0.ChangeDetectorRef},{token:ResizeService},{token:ProviderService}],target:i0.ɵɵFactoryTarget.Component}),ResponsiveButtonGroupComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:ResponsiveButtonGroupComponent,selector:"responsive-button-group",inputs:{collapseSize:"collapseSize"},providers:[ProviderService],usesInheritance:!0,ngImport:i0,template:"<style>\n\t@media screen and (min-width: 900px) {\n\t\t:host /deep/ .xsBtnGroup {\n\t\t\tdisplay: none !important;\n\t\t}\n\n\t\t:host /deep/ .lgBtnGroup {\n\t\t\tdisplay: inline-flex !important;\n\t\t}\n\n\t\t:host /deep/ .lgBtnGroup button {\n\t\t\tmargin-left: 5px !important;\n\t\t}\n\n\t\t:host /deep/ .lgBtnGroup a {\n\t\t\tmargin-left: 5px !important;\n\t\t}\n\t}\n\n\t@media screen and (max-width: 900px) {\n\n\t\t:host /deep/ .xsBtnGroup {\n\t\t\tdisplay: inherit !important;\n\t\t}\n\n\t\t:host /deep/ .xsBtnGroup button {\n\t\t\tmargin-top: 5px !important;\n\t\t\twidth: 100% !important;\n\t\t}\n\n\t\t:host /deep/ .xsBtnGroup a {\n\t\t\tmargin-top: 5px !important;\n\t\t}\n\n\t\t:host /deep/ .lgBtnGroup {\n\t\t\tdisplay: none !important;\n\t\t}\n\t}\n</style>\n\n<div [ngClass]=\"windowSize <= collapseSize ? ['btn-group-vertical', 'xsBtnGroup'] : ['btn-group', 'lgBtnGroup']\">\n\t<ng-content></ng-content>\n</div>\n",styles:["\n\t@media screen and (min-width: 900px) {\n\t\t:host /deep/ .xsBtnGroup {\n\t\t\tdisplay: none !important;\n\t\t}\n\n\t\t:host /deep/ .lgBtnGroup {\n\t\t\tdisplay: inline-flex !important;\n\t\t}\n\n\t\t:host /deep/ .lgBtnGroup button {\n\t\t\tmargin-left: 5px !important;\n\t\t}\n\n\t\t:host /deep/ .lgBtnGroup a {\n\t\t\tmargin-left: 5px !important;\n\t\t}\n\t}\n\n\t@media screen and (max-width: 900px) {\n\n\t\t:host /deep/ .xsBtnGroup {\n\t\t\tdisplay: inherit !important;\n\t\t}\n\n\t\t:host /deep/ .xsBtnGroup button {\n\t\t\tmargin-top: 5px !important;\n\t\t\twidth: 100% !important;\n\t\t}\n\n\t\t:host /deep/ .xsBtnGroup a {\n\t\t\tmargin-top: 5px !important;\n\t\t}\n\n\t\t:host /deep/ .lgBtnGroup {\n\t\t\tdisplay: none !important;\n\t\t}\n\t}\n"],dependencies:[{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ResponsiveButtonGroupComponent,decorators:[{type:Component,args:[{providers:[ProviderService],selector:"responsive-button-group",template:"<style>\n\t@media screen and (min-width: 900px) {\n\t\t:host /deep/ .xsBtnGroup {\n\t\t\tdisplay: none !important;\n\t\t}\n\n\t\t:host /deep/ .lgBtnGroup {\n\t\t\tdisplay: inline-flex !important;\n\t\t}\n\n\t\t:host /deep/ .lgBtnGroup button {\n\t\t\tmargin-left: 5px !important;\n\t\t}\n\n\t\t:host /deep/ .lgBtnGroup a {\n\t\t\tmargin-left: 5px !important;\n\t\t}\n\t}\n\n\t@media screen and (max-width: 900px) {\n\n\t\t:host /deep/ .xsBtnGroup {\n\t\t\tdisplay: inherit !important;\n\t\t}\n\n\t\t:host /deep/ .xsBtnGroup button {\n\t\t\tmargin-top: 5px !important;\n\t\t\twidth: 100% !important;\n\t\t}\n\n\t\t:host /deep/ .xsBtnGroup a {\n\t\t\tmargin-top: 5px !important;\n\t\t}\n\n\t\t:host /deep/ .lgBtnGroup {\n\t\t\tdisplay: none !important;\n\t\t}\n\t}\n</style>\n\n<div [ngClass]=\"windowSize <= collapseSize ? ['btn-group-vertical', 'xsBtnGroup'] : ['btn-group', 'lgBtnGroup']\">\n\t<ng-content></ng-content>\n</div>\n"}]}],ctorParameters:function(){return[{type:i0.ChangeDetectorRef},{type:ResizeService},{type:ProviderService}]},propDecorators:{collapseSize:[{type:Input}]}});class DialogLoginContent{constructor(t,e){this._activeModal=t,this._fb=e,this.msAllowed=!1,this.showLoginText=!0}ngOnInit(){this.form=this._fb.group({username:["",[Validators.required]],password:["",[Validators.required]],forgotPassword:[!1]})}toggleForgotPassword(){this.form.controls.forgotPassword.setValue(!this.form.controls.forgotPassword.value),this.form.controls.forgotPassword.value?(this.form.controls.password.setValue(""),this.form.controls.password.clearValidators(),this.form.controls.password.disable()):(this.form.controls.password.setValidators([Validators.required]),this.form.controls.password.enable()),this.form.controls.password.updateValueAndValidity()}close(t){this._activeModal.close({form:this.form,type:t})}}DialogLoginContent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogLoginContent,deps:[{token:i1$4.NgbActiveModal},{token:i2.FormBuilder}],target:i0.ɵɵFactoryTarget.Component}),DialogLoginContent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:DialogLoginContent,selector:"ng-component",inputs:{msAllowed:"msAllowed",showLoginText:"showLoginText"},ngImport:i0,template:'\n\t\t<style>\n\t\t\tcollapse-table {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t.navbar-light .navbar-nav .active>.nav-link, .navbar-light .navbar-nav .nav-link.active, .navbar-light .navbar-nav .nav-link.show, .navbar-light .navbar-nav .show>.nav-link {\n\t\t\t\tcolor: #0b4499;\n\t\t\t}\n\t\t\t.navbar-light .navbar-nav .nav-link {\n\t\t\t\tcolor:#333;\n\t\t\t}\n\t\t\ta.nav-link.loginreg {\n\t\t\t\tbackground-color: #0b4499;\n\t\t\t\tcolor: #fff !important;\n\t\t\t\tborder-radius: 40px;\n\t\t\t}\n\t\t\ta.nav-link.loginreg:hover {\n\t\t\t\tbackground: #1668e2;\n\t\t\t}\n\t\t\t.nav-link {\n\t\t\t\tcolor: #333333;\n\t\t\t\tfont-size: 150%\n\t\t\t}\n\t\t\t.nav-item a.nav-link.active {\n\t\t\t\tcolor: #0b4499;\n\t\t\t}\n\t\t\t.contactimg>img{\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t.log-box {\n\t\t\t\tpadding-top: 0px;\n\t\t\t\tpadding-bottom: 26px;\n\t\t\t}\n\t\t\t.loginform .form-control, .register-form .form-control {\n\t\t\t\tcolor: #000;\n\t\t\t\theight: 52px;\n\t\t\t}\n\t\t\t.loginform {\n\t\t\t\tmargin-top: 35px;\n\t\t\t}\n\t\t\t.loginform label {\n\t\t\t\tfont-size: 18px;\n\t\t\t\tfont-weight: 600;\n\t\t\t}\n\n\t\t\t.loginbtn {\n\t\t\t\tbackground: #0b4499;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 44px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\t.login365btn {\n\t\t\t\tbackground: orange;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 44px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\t.contactimg {\n\t\t\t\tposition: relative;\n\t\t\t}\n\t\t\t.login-logo {\n\t\t\t\tmargin-bottom: 20px;\n\t\t\t}\n\n\t\t\t.textbox {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 50%;\n\t\t\t\tcolor: #fff;\n\t\t\t\tpadding: 40px;\n\t\t\t\ttransform: translate(0%, -50%);\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t\t.sign-btn {\n\t\t\t\tbackground: #0b4499;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 14px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\tbutton.btn.sign-btn:hover {\n\t\t\t\tbackground: #1668e2;\n\t\t\t}\n\t\t\t\n\t\t\t.login-card {\n\t\t\t\tmargin-bottom: 20px;\n\t\t\t\tpadding: 20px;\n\t\t\t\tpadding-top: 10px;\n\t\t\t\tborder-radius: 8px;\n\t\t\t\tbox-shadow: 0 4px 8px rgba(0,0,0,0.2), 0 6px 20px rgba(0,0,0,0.19); /* Enhanced shadow */\n\t\t\t\tbackground-color: #FFFFFF;\n\t\t\t}\n\t\t\t\n\t\t\t.login-header {\n\t\t\t\tfont-size: 20px;\n\t\t\t\tfont-weight: bold;\n\t\t\t\tcolor: #333;\n\t\t\t\tmargin-bottom: 15px;\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t\t\n\t\t\t.employee-login-btn {\n\t\t\t\tbackground-color: #0078D4; /* Microsoft Blue */\n\t\t\t\tcolor: white;\n\t\t\t\tpadding: 10px 20px; /* Larger size */\n\t\t\t\tfont-size: 16px; /* Larger text */\n\t\t\t\tborder-radius: 5px; /* Rounded corners */\n\t\t\t\twidth: 100%; /* Full width */\n\t\t\t\tbox-sizing: border-box; /* Include padding and border in the element\'s width and height */\n\t\t\t}\n\t\t\t\n\t\t\t.third-party-login-btn {\n\t\t\t\tbackground-color: #28a745; /* Bootstrap success green */\n\t\t\t\tcolor: white;\n\t\t\t\tborder-radius: 5px; /* Rounded corners */\n\t\t\t\twidth: 100%; /* Full width */\n\t\t\t\tbox-sizing: border-box; /* Include padding and border in the element\'s width and height */\n\t\t\t\tmargin-top: 10px;\n\t\t\t}\n\t\t\t\n\t\t\t.third-party-login-section {\n\t\t\t\tbackground-color: #F3F4F6; /* Optional: Light grey background for contrast */\n\t\t\t\tborder-radius: 8px; /* Optional: Rounded corners for the input form */\n\t\t\t}\n\t\t\t\n\t\t\t.employee-login-section, .third-party-login-section {\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t</style>\n\t\t<form [formGroup]="form" novalidate>\n\t\t\t<div class="modal-header">\n\t\t\t\t<h4 class="modal-title"><b>Login</b></h4>\n\t\t\t\t<button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()">\n\t\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class="modal-body" *ngIf="form">\n\t\t\t\t<div class="row justify-content-md-center">\n\t\t\t\t\t<div class="col-lg-12">\n\t\t\t\t\t\t<div class="row bg-white">\n\t\t\t\t\t\t\t<div class="col-lg-6">\n\t\t\t\t\t\t\t\t<div class="contactimg">\n\t\t\t\t\t\t\t\t\t<img src="/assets/images/loginsignup/formimg.jpg" alt="images" class="img-fluid">\n\t\t\t\t\t\t\t\t\t<div class="textbox" *ngIf="showLoginText">\n\t\t\t\t\t\t\t\t\t\t<div class="login-logo"><img src="/assets/images/loginsignup/login-logo.png" alt="images"></div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="col-lg-6">\n\t\t\t\t\t\t\t\t<div class="log-box">\n\t\t\t\t\t\t\t\t\t<div class="loginform" style="margin: 0px;">\n\t\t\t\t\t\t\t\t\t\t<ng-container *ngIf="!msAllowed">\n\t\t\t\t\t\t\t\t\t\t\t<div class="login-card">\n\t\t\t\t\t\t\t\t\t\t\t\t<h3 class="login-header">Employee/Customer Login</h3>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class="third-party-login-section">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label>Username/Email</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.username.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input type="email" [ngClass]="[\'form-control\', form.controls.username.valid ? \'is-valid\' : \'is-invalid\']" formControlName="username" [autofocus]="true" [focus]="true" aria-describedby="emailHelp" placeholder="Your Username/Email" autocomplete="username">\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label>Password</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.password.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input type="password" [ngClass]="[\'form-control\', form.controls.password.enabled ? (form.controls.password.valid ? \'is-valid\' : \'is-invalid\') : \'\']" formControlName="password" placeholder="Your Password" autocomplete="current-password">\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-check text-right">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class="form-check-label"><a href="javascript:void(0)" (click)="toggleForgotPassword()"> {{!form.controls.forgotPassword.value ? \'Forgot Password?\' : \'Enter Password\'}} </a></label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<button type="submit" class="btn third-party-login-btn" (click)="close(\'ResolveIO\')">{{!form.controls.forgotPassword.value ? \'Login\' : \'Submit\'}}</button>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t\t\t<ng-container *ngIf="msAllowed">\n\t\t\t\t\t\t\t\t\t\t\t\x3c!-- Employee Login Section --\x3e\n\t\t\t\t\t\t\t\t\t\t\t<div class="login-card">\n\t\t\t\t\t\t\t\t\t\t\t\t<h3 class="login-header">Employee Login</h3>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class="employee-login-section">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<button type="submit" class="btn employee-login-btn" (click)="close(\'MS\')">Employee Login</button>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t\t\t\x3c!-- Third Party Login Section --\x3e\n\t\t\t\t\t\t\t\t\t\t\t<div class="login-card">\n\t\t\t\t\t\t\t\t\t\t\t\t<h3 class="login-header">Third Party Login</h3>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class="third-party-login-section">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label>Username/Email</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.username.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input type="email" [ngClass]="[\'form-control\', form.controls.username.valid ? \'is-valid\' : \'is-invalid\']" formControlName="username" [autofocus]="true" [focus]="true" aria-describedby="emailHelp" placeholder="Your Username/Email" autocomplete="username">\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label>Password</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.password.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input type="password" [ngClass]="[\'form-control\', form.controls.password.enabled ? (form.controls.password.valid ? \'is-valid\' : \'is-invalid\') : \'\']" formControlName="password" placeholder="Your Password" autocomplete="current-password">\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-check text-right">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class="form-check-label"><a href="javascript:void(0)" (click)="toggleForgotPassword()"> {{!form.controls.forgotPassword.value ? \'Forgot Password?\' : \'Enter Password\'}} </a></label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<button type="submit" class="btn third-party-login-btn" (click)="close(\'ResolveIO\')">{{!form.controls.forgotPassword.value ? \'Login\' : \'Submit\'}}</button>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</ng-container>\n\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="modal-footer">\n\t\t\t\t<responsive-button-group>\n\t\t\t\t\t<button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>\n\t\t\t\t</responsive-button-group>\n\t\t\t</div>\n\t\t</form>\n\t',isInline:!0,styles:["\n\t\t\tcollapse-table {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t.navbar-light .navbar-nav .active>.nav-link, .navbar-light .navbar-nav .nav-link.active, .navbar-light .navbar-nav .nav-link.show, .navbar-light .navbar-nav .show>.nav-link {\n\t\t\t\tcolor: #0b4499;\n\t\t\t}\n\t\t\t.navbar-light .navbar-nav .nav-link {\n\t\t\t\tcolor:#333;\n\t\t\t}\n\t\t\ta.nav-link.loginreg {\n\t\t\t\tbackground-color: #0b4499;\n\t\t\t\tcolor: #fff !important;\n\t\t\t\tborder-radius: 40px;\n\t\t\t}\n\t\t\ta.nav-link.loginreg:hover {\n\t\t\t\tbackground: #1668e2;\n\t\t\t}\n\t\t\t.nav-link {\n\t\t\t\tcolor: #333333;\n\t\t\t\tfont-size: 150%\n\t\t\t}\n\t\t\t.nav-item a.nav-link.active {\n\t\t\t\tcolor: #0b4499;\n\t\t\t}\n\t\t\t.contactimg>img{\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t.log-box {\n\t\t\t\tpadding-top: 0px;\n\t\t\t\tpadding-bottom: 26px;\n\t\t\t}\n\t\t\t.loginform .form-control, .register-form .form-control {\n\t\t\t\tcolor: #000;\n\t\t\t\theight: 52px;\n\t\t\t}\n\t\t\t.loginform {\n\t\t\t\tmargin-top: 35px;\n\t\t\t}\n\t\t\t.loginform label {\n\t\t\t\tfont-size: 18px;\n\t\t\t\tfont-weight: 600;\n\t\t\t}\n\n\t\t\t.loginbtn {\n\t\t\t\tbackground: #0b4499;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 44px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\t.login365btn {\n\t\t\t\tbackground: orange;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 44px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\t.contactimg {\n\t\t\t\tposition: relative;\n\t\t\t}\n\t\t\t.login-logo {\n\t\t\t\tmargin-bottom: 20px;\n\t\t\t}\n\n\t\t\t.textbox {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 50%;\n\t\t\t\tcolor: #fff;\n\t\t\t\tpadding: 40px;\n\t\t\t\ttransform: translate(0%, -50%);\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t\t.sign-btn {\n\t\t\t\tbackground: #0b4499;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 14px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\tbutton.btn.sign-btn:hover {\n\t\t\t\tbackground: #1668e2;\n\t\t\t}\n\t\t\t\n\t\t\t.login-card {\n\t\t\t\tmargin-bottom: 20px;\n\t\t\t\tpadding: 20px;\n\t\t\t\tpadding-top: 10px;\n\t\t\t\tborder-radius: 8px;\n\t\t\t\tbox-shadow: 0 4px 8px rgba(0,0,0,0.2), 0 6px 20px rgba(0,0,0,0.19); /* Enhanced shadow */\n\t\t\t\tbackground-color: #FFFFFF;\n\t\t\t}\n\t\t\t\n\t\t\t.login-header {\n\t\t\t\tfont-size: 20px;\n\t\t\t\tfont-weight: bold;\n\t\t\t\tcolor: #333;\n\t\t\t\tmargin-bottom: 15px;\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t\t\n\t\t\t.employee-login-btn {\n\t\t\t\tbackground-color: #0078D4; /* Microsoft Blue */\n\t\t\t\tcolor: white;\n\t\t\t\tpadding: 10px 20px; /* Larger size */\n\t\t\t\tfont-size: 16px; /* Larger text */\n\t\t\t\tborder-radius: 5px; /* Rounded corners */\n\t\t\t\twidth: 100%; /* Full width */\n\t\t\t\tbox-sizing: border-box; /* Include padding and border in the element's width and height */\n\t\t\t}\n\t\t\t\n\t\t\t.third-party-login-btn {\n\t\t\t\tbackground-color: #28a745; /* Bootstrap success green */\n\t\t\t\tcolor: white;\n\t\t\t\tborder-radius: 5px; /* Rounded corners */\n\t\t\t\twidth: 100%; /* Full width */\n\t\t\t\tbox-sizing: border-box; /* Include padding and border in the element's width and height */\n\t\t\t\tmargin-top: 10px;\n\t\t\t}\n\t\t\t\n\t\t\t.third-party-login-section {\n\t\t\t\tbackground-color: #F3F4F6; /* Optional: Light grey background for contrast */\n\t\t\t\tborder-radius: 8px; /* Optional: Rounded corners for the input form */\n\t\t\t}\n\t\t\t\n\t\t\t.employee-login-section, .third-party-login-section {\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t"],dependencies:[{kind:"directive",type:i2.ɵNgNoValidate,selector:"form:not([ngNoForm]):not([ngNativeValidate])"},{kind:"directive",type:i2.DefaultValueAccessor,selector:"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]"},{kind:"directive",type:i2.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i2.NgControlStatusGroup,selector:"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]"},{kind:"directive",type:i2.FormGroupDirective,selector:"[formGroup]",inputs:["formGroup"],outputs:["ngSubmit"],exportAs:["ngForm"]},{kind:"directive",type:i2.FormControlName,selector:"[formControlName]",inputs:["formControlName","disabled","ngModel"],outputs:["ngModelChange"]},{kind:"component",type:ResponsiveButtonGroupComponent,selector:"responsive-button-group",inputs:["collapseSize"]},{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"directive",type:FocusDirective,selector:"[focus]",inputs:["focus"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogLoginContent,decorators:[{type:Component,args:[{template:'\n\t\t<style>\n\t\t\tcollapse-table {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t.navbar-light .navbar-nav .active>.nav-link, .navbar-light .navbar-nav .nav-link.active, .navbar-light .navbar-nav .nav-link.show, .navbar-light .navbar-nav .show>.nav-link {\n\t\t\t\tcolor: #0b4499;\n\t\t\t}\n\t\t\t.navbar-light .navbar-nav .nav-link {\n\t\t\t\tcolor:#333;\n\t\t\t}\n\t\t\ta.nav-link.loginreg {\n\t\t\t\tbackground-color: #0b4499;\n\t\t\t\tcolor: #fff !important;\n\t\t\t\tborder-radius: 40px;\n\t\t\t}\n\t\t\ta.nav-link.loginreg:hover {\n\t\t\t\tbackground: #1668e2;\n\t\t\t}\n\t\t\t.nav-link {\n\t\t\t\tcolor: #333333;\n\t\t\t\tfont-size: 150%\n\t\t\t}\n\t\t\t.nav-item a.nav-link.active {\n\t\t\t\tcolor: #0b4499;\n\t\t\t}\n\t\t\t.contactimg>img{\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t.log-box {\n\t\t\t\tpadding-top: 0px;\n\t\t\t\tpadding-bottom: 26px;\n\t\t\t}\n\t\t\t.loginform .form-control, .register-form .form-control {\n\t\t\t\tcolor: #000;\n\t\t\t\theight: 52px;\n\t\t\t}\n\t\t\t.loginform {\n\t\t\t\tmargin-top: 35px;\n\t\t\t}\n\t\t\t.loginform label {\n\t\t\t\tfont-size: 18px;\n\t\t\t\tfont-weight: 600;\n\t\t\t}\n\n\t\t\t.loginbtn {\n\t\t\t\tbackground: #0b4499;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 44px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\t.login365btn {\n\t\t\t\tbackground: orange;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 44px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\t.contactimg {\n\t\t\t\tposition: relative;\n\t\t\t}\n\t\t\t.login-logo {\n\t\t\t\tmargin-bottom: 20px;\n\t\t\t}\n\n\t\t\t.textbox {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 50%;\n\t\t\t\tcolor: #fff;\n\t\t\t\tpadding: 40px;\n\t\t\t\ttransform: translate(0%, -50%);\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t\t.sign-btn {\n\t\t\t\tbackground: #0b4499;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 14px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\tbutton.btn.sign-btn:hover {\n\t\t\t\tbackground: #1668e2;\n\t\t\t}\n\t\t\t\n\t\t\t.login-card {\n\t\t\t\tmargin-bottom: 20px;\n\t\t\t\tpadding: 20px;\n\t\t\t\tpadding-top: 10px;\n\t\t\t\tborder-radius: 8px;\n\t\t\t\tbox-shadow: 0 4px 8px rgba(0,0,0,0.2), 0 6px 20px rgba(0,0,0,0.19); /* Enhanced shadow */\n\t\t\t\tbackground-color: #FFFFFF;\n\t\t\t}\n\t\t\t\n\t\t\t.login-header {\n\t\t\t\tfont-size: 20px;\n\t\t\t\tfont-weight: bold;\n\t\t\t\tcolor: #333;\n\t\t\t\tmargin-bottom: 15px;\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t\t\n\t\t\t.employee-login-btn {\n\t\t\t\tbackground-color: #0078D4; /* Microsoft Blue */\n\t\t\t\tcolor: white;\n\t\t\t\tpadding: 10px 20px; /* Larger size */\n\t\t\t\tfont-size: 16px; /* Larger text */\n\t\t\t\tborder-radius: 5px; /* Rounded corners */\n\t\t\t\twidth: 100%; /* Full width */\n\t\t\t\tbox-sizing: border-box; /* Include padding and border in the element\'s width and height */\n\t\t\t}\n\t\t\t\n\t\t\t.third-party-login-btn {\n\t\t\t\tbackground-color: #28a745; /* Bootstrap success green */\n\t\t\t\tcolor: white;\n\t\t\t\tborder-radius: 5px; /* Rounded corners */\n\t\t\t\twidth: 100%; /* Full width */\n\t\t\t\tbox-sizing: border-box; /* Include padding and border in the element\'s width and height */\n\t\t\t\tmargin-top: 10px;\n\t\t\t}\n\t\t\t\n\t\t\t.third-party-login-section {\n\t\t\t\tbackground-color: #F3F4F6; /* Optional: Light grey background for contrast */\n\t\t\t\tborder-radius: 8px; /* Optional: Rounded corners for the input form */\n\t\t\t}\n\t\t\t\n\t\t\t.employee-login-section, .third-party-login-section {\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t</style>\n\t\t<form [formGroup]="form" novalidate>\n\t\t\t<div class="modal-header">\n\t\t\t\t<h4 class="modal-title"><b>Login</b></h4>\n\t\t\t\t<button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()">\n\t\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class="modal-body" *ngIf="form">\n\t\t\t\t<div class="row justify-content-md-center">\n\t\t\t\t\t<div class="col-lg-12">\n\t\t\t\t\t\t<div class="row bg-white">\n\t\t\t\t\t\t\t<div class="col-lg-6">\n\t\t\t\t\t\t\t\t<div class="contactimg">\n\t\t\t\t\t\t\t\t\t<img src="/assets/images/loginsignup/formimg.jpg" alt="images" class="img-fluid">\n\t\t\t\t\t\t\t\t\t<div class="textbox" *ngIf="showLoginText">\n\t\t\t\t\t\t\t\t\t\t<div class="login-logo"><img src="/assets/images/loginsignup/login-logo.png" alt="images"></div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="col-lg-6">\n\t\t\t\t\t\t\t\t<div class="log-box">\n\t\t\t\t\t\t\t\t\t<div class="loginform" style="margin: 0px;">\n\t\t\t\t\t\t\t\t\t\t<ng-container *ngIf="!msAllowed">\n\t\t\t\t\t\t\t\t\t\t\t<div class="login-card">\n\t\t\t\t\t\t\t\t\t\t\t\t<h3 class="login-header">Employee/Customer Login</h3>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class="third-party-login-section">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label>Username/Email</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.username.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input type="email" [ngClass]="[\'form-control\', form.controls.username.valid ? \'is-valid\' : \'is-invalid\']" formControlName="username" [autofocus]="true" [focus]="true" aria-describedby="emailHelp" placeholder="Your Username/Email" autocomplete="username">\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label>Password</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.password.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input type="password" [ngClass]="[\'form-control\', form.controls.password.enabled ? (form.controls.password.valid ? \'is-valid\' : \'is-invalid\') : \'\']" formControlName="password" placeholder="Your Password" autocomplete="current-password">\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-check text-right">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class="form-check-label"><a href="javascript:void(0)" (click)="toggleForgotPassword()"> {{!form.controls.forgotPassword.value ? \'Forgot Password?\' : \'Enter Password\'}} </a></label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<button type="submit" class="btn third-party-login-btn" (click)="close(\'ResolveIO\')">{{!form.controls.forgotPassword.value ? \'Login\' : \'Submit\'}}</button>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t\t\t<ng-container *ngIf="msAllowed">\n\t\t\t\t\t\t\t\t\t\t\t\x3c!-- Employee Login Section --\x3e\n\t\t\t\t\t\t\t\t\t\t\t<div class="login-card">\n\t\t\t\t\t\t\t\t\t\t\t\t<h3 class="login-header">Employee Login</h3>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class="employee-login-section">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<button type="submit" class="btn employee-login-btn" (click)="close(\'MS\')">Employee Login</button>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t\t\t\x3c!-- Third Party Login Section --\x3e\n\t\t\t\t\t\t\t\t\t\t\t<div class="login-card">\n\t\t\t\t\t\t\t\t\t\t\t\t<h3 class="login-header">Third Party Login</h3>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class="third-party-login-section">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label>Username/Email</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.username.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input type="email" [ngClass]="[\'form-control\', form.controls.username.valid ? \'is-valid\' : \'is-invalid\']" formControlName="username" [autofocus]="true" [focus]="true" aria-describedby="emailHelp" placeholder="Your Username/Email" autocomplete="username">\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label>Password</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.password.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input type="password" [ngClass]="[\'form-control\', form.controls.password.enabled ? (form.controls.password.valid ? \'is-valid\' : \'is-invalid\') : \'\']" formControlName="password" placeholder="Your Password" autocomplete="current-password">\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-check text-right">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class="form-check-label"><a href="javascript:void(0)" (click)="toggleForgotPassword()"> {{!form.controls.forgotPassword.value ? \'Forgot Password?\' : \'Enter Password\'}} </a></label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<button type="submit" class="btn third-party-login-btn" (click)="close(\'ResolveIO\')">{{!form.controls.forgotPassword.value ? \'Login\' : \'Submit\'}}</button>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</ng-container>\n\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="modal-footer">\n\t\t\t\t<responsive-button-group>\n\t\t\t\t\t<button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>\n\t\t\t\t</responsive-button-group>\n\t\t\t</div>\n\t\t</form>\n\t'}]}],ctorParameters:function(){return[{type:i1$4.NgbActiveModal},{type:i2.FormBuilder}]},propDecorators:{msAllowed:[{type:Input}],showLoginText:[{type:Input}]}});class DialogRegisterContent{constructor(t,e){this._activeModal=t,this._fb=e}ngOnInit(){this.form=this._fb.group({username:["",[Validators.required]],name:["",[Validators.required]],phone:["",[Validators.required]],company:["",[Validators.required]],email:["",[Validators.required]]})}}DialogRegisterContent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogRegisterContent,deps:[{token:i1$4.NgbActiveModal},{token:i2.FormBuilder}],target:i0.ɵɵFactoryTarget.Component}),DialogRegisterContent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:DialogRegisterContent,selector:"ng-component",ngImport:i0,template:'\n\t\t<style>\n\t\t\tcollapse-table {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t.navbar-light .navbar-nav .active>.nav-link, .navbar-light .navbar-nav .nav-link.active, .navbar-light .navbar-nav .nav-link.show, .navbar-light .navbar-nav .show>.nav-link {\n\t\t\t\tcolor: #0b4499;\n\t\t\t}\n\t\t\t.navbar-light .navbar-nav .nav-link {\n\t\t\t\tcolor:#333;\n\t\t\t}\n\t\t\ta.nav-link.loginreg {\n\t\t\t\tbackground-color: #0b4499;\n\t\t\t\tcolor: #fff !important;\n\t\t\t\tborder-radius: 40px;\n\t\t\t}\n\t\t\ta.nav-link.loginreg:hover {\n\t\t\t\tbackground: #1668e2;\n\t\t\t}\n\t\t\t.nav-link {\n\t\t\t\tcolor: #333333;\n\t\t\t\tfont-size: 150%\n\t\t\t}\n\t\t\t.nav-item a.nav-link.active {\n\t\t\t\tcolor: #0b4499;\n\t\t\t}\n\t\t\t.contactimg>img{\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t.log-box {\n\t\t\t\tpadding-top: 26px;\n\t\t\t\tpadding-bottom: 26px;\n\t\t\t}\n\t\t\t.loginform .form-control, .register-form .form-control {\n\t\t\t\tcolor: #000;\n\t\t\t\theight: 52px;\n\t\t\t}\n\t\t\t.loginform {\n\t\t\t\tmargin-top: 35px;\n\t\t\t}\n\t\t\t.loginform label {\n\t\t\t\tfont-size: 18px;\n\t\t\t\tfont-weight: 600;\n\t\t\t}\n\n\t\t\t.loginbtn {\n\t\t\t\tbackground: #0b4499;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 44px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\t.contactimg {\n\t\t\t\tposition: relative;\n\t\t\t}\n\t\t\t.login-logo {\n\t\t\t\tmargin-bottom: 20px;\n\t\t\t}\n\n\t\t\t.textbox {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 50%;\n\t\t\t\tcolor: #fff;\n\t\t\t\tpadding: 40px;\n\t\t\t\ttransform: translate(0%, -50%);\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t\t.sign-btn {\n\t\t\t\tbackground: #0b4499;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 14px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\tbutton.btn.sign-btn:hover {\n\t\t\t\tbackground: #1668e2;\n\t\t\t}\n\t\t</style>\n\t\t<form [formGroup]="form" novalidate (ngSubmit)="_activeModal.close(form)">\n\t\t\t<div class="modal-header">\n\t\t\t\t<h4 class="modal-title"><i class="fa fa-question-circle" style="color: blue; font-size: 0.85em" aria-hidden="true"></i> Register</h4>\n\t\t\t\t<button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()">\n\t\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class="modal-body" *ngIf="form">\n\t\t\t\t<div class="row justify-content-md-center">\n\t\t\t\t\t<div class="col-lg-12">\n\t\t\t\t\t\t<div class="row bg-white">\n\t\t\t\t\t\t\t<div class="col-lg-6">\n\t\t\t\t\t\t\t\t<div class="contactimg">\n\t\t\t\t\t\t\t\t\t<img src="/assets/images/loginsignup/formimg.jpg" alt="images" class="img-fluid">\n\t\t\t\t\t\t\t\t\t<div class="textbox">\n\t\t\t\t\t\t\t\t\t\t<div class="login-logo"><img src="/assets/images/loginsignup/login-logo.png" alt="images"></div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="col-lg-6">\n\t\t\t\t\t\t\t\t<div class="log-box">\n\t\t\t\t\t\t\t\t\t<div class="register-form">\n\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t<label>User Name</label>\n\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.username.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t<input type="text" class="form-control" [ngClass]="[\'form-control\', form.controls.username.valid ? \'is-valid\' : \'is-invalid\']" formControlName="username" [autofocus]="true" [focus]="true" aria-describedby="emailHelp" placeholder="User Name">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t<label>Full Name</label>\n\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.name.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t<input type="text" class="form-control" [ngClass]="[\'form-control\', form.controls.name.valid ? \'is-valid\' : \'is-invalid\']" formControlName="name" aria-describedby="emailHelp" placeholder="Name">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t<label>Phone Number</label>\n\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.phone.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t<input type="text" class="form-control" [ngClass]="[\'form-control\', form.controls.phone.valid ? \'is-valid\' : \'is-invalid\']" formControlName="phone" placeholder="Phone Number">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t<label>Company</label>\n\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.company.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t<input type="text" class="form-control" [ngClass]="[\'form-control\', form.controls.company.valid ? \'is-valid\' : \'is-invalid\']" formControlName="company" placeholder="Company Name">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t<label>Email</label>\n\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.email.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t<input type="email" class="form-control" [ngClass]="[\'form-control\', form.controls.email.valid ? \'is-valid\' : \'is-invalid\']" formControlName="email" placeholder="Email">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<button type="submit" class="btn sign-btn">Signup</button>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="modal-footer">\n\t\t\t\t<responsive-button-group>\n\t\t\t\t\t<button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>\n\t\t\t\t</responsive-button-group>\n\t\t\t</div>\n\t\t</form>\n\t',isInline:!0,styles:["\n\t\t\tcollapse-table {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t.navbar-light .navbar-nav .active>.nav-link, .navbar-light .navbar-nav .nav-link.active, .navbar-light .navbar-nav .nav-link.show, .navbar-light .navbar-nav .show>.nav-link {\n\t\t\t\tcolor: #0b4499;\n\t\t\t}\n\t\t\t.navbar-light .navbar-nav .nav-link {\n\t\t\t\tcolor:#333;\n\t\t\t}\n\t\t\ta.nav-link.loginreg {\n\t\t\t\tbackground-color: #0b4499;\n\t\t\t\tcolor: #fff !important;\n\t\t\t\tborder-radius: 40px;\n\t\t\t}\n\t\t\ta.nav-link.loginreg:hover {\n\t\t\t\tbackground: #1668e2;\n\t\t\t}\n\t\t\t.nav-link {\n\t\t\t\tcolor: #333333;\n\t\t\t\tfont-size: 150%\n\t\t\t}\n\t\t\t.nav-item a.nav-link.active {\n\t\t\t\tcolor: #0b4499;\n\t\t\t}\n\t\t\t.contactimg>img{\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t.log-box {\n\t\t\t\tpadding-top: 26px;\n\t\t\t\tpadding-bottom: 26px;\n\t\t\t}\n\t\t\t.loginform .form-control, .register-form .form-control {\n\t\t\t\tcolor: #000;\n\t\t\t\theight: 52px;\n\t\t\t}\n\t\t\t.loginform {\n\t\t\t\tmargin-top: 35px;\n\t\t\t}\n\t\t\t.loginform label {\n\t\t\t\tfont-size: 18px;\n\t\t\t\tfont-weight: 600;\n\t\t\t}\n\n\t\t\t.loginbtn {\n\t\t\t\tbackground: #0b4499;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 44px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\t.contactimg {\n\t\t\t\tposition: relative;\n\t\t\t}\n\t\t\t.login-logo {\n\t\t\t\tmargin-bottom: 20px;\n\t\t\t}\n\n\t\t\t.textbox {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 50%;\n\t\t\t\tcolor: #fff;\n\t\t\t\tpadding: 40px;\n\t\t\t\ttransform: translate(0%, -50%);\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t\t.sign-btn {\n\t\t\t\tbackground: #0b4499;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 14px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\tbutton.btn.sign-btn:hover {\n\t\t\t\tbackground: #1668e2;\n\t\t\t}\n\t\t"],dependencies:[{kind:"directive",type:i2.ɵNgNoValidate,selector:"form:not([ngNoForm]):not([ngNativeValidate])"},{kind:"directive",type:i2.DefaultValueAccessor,selector:"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]"},{kind:"directive",type:i2.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i2.NgControlStatusGroup,selector:"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]"},{kind:"directive",type:i2.FormGroupDirective,selector:"[formGroup]",inputs:["formGroup"],outputs:["ngSubmit"],exportAs:["ngForm"]},{kind:"directive",type:i2.FormControlName,selector:"[formControlName]",inputs:["formControlName","disabled","ngModel"],outputs:["ngModelChange"]},{kind:"component",type:ResponsiveButtonGroupComponent,selector:"responsive-button-group",inputs:["collapseSize"]},{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"directive",type:FocusDirective,selector:"[focus]",inputs:["focus"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogRegisterContent,decorators:[{type:Component,args:[{template:'\n\t\t<style>\n\t\t\tcollapse-table {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t.navbar-light .navbar-nav .active>.nav-link, .navbar-light .navbar-nav .nav-link.active, .navbar-light .navbar-nav .nav-link.show, .navbar-light .navbar-nav .show>.nav-link {\n\t\t\t\tcolor: #0b4499;\n\t\t\t}\n\t\t\t.navbar-light .navbar-nav .nav-link {\n\t\t\t\tcolor:#333;\n\t\t\t}\n\t\t\ta.nav-link.loginreg {\n\t\t\t\tbackground-color: #0b4499;\n\t\t\t\tcolor: #fff !important;\n\t\t\t\tborder-radius: 40px;\n\t\t\t}\n\t\t\ta.nav-link.loginreg:hover {\n\t\t\t\tbackground: #1668e2;\n\t\t\t}\n\t\t\t.nav-link {\n\t\t\t\tcolor: #333333;\n\t\t\t\tfont-size: 150%\n\t\t\t}\n\t\t\t.nav-item a.nav-link.active {\n\t\t\t\tcolor: #0b4499;\n\t\t\t}\n\t\t\t.contactimg>img{\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t.log-box {\n\t\t\t\tpadding-top: 26px;\n\t\t\t\tpadding-bottom: 26px;\n\t\t\t}\n\t\t\t.loginform .form-control, .register-form .form-control {\n\t\t\t\tcolor: #000;\n\t\t\t\theight: 52px;\n\t\t\t}\n\t\t\t.loginform {\n\t\t\t\tmargin-top: 35px;\n\t\t\t}\n\t\t\t.loginform label {\n\t\t\t\tfont-size: 18px;\n\t\t\t\tfont-weight: 600;\n\t\t\t}\n\n\t\t\t.loginbtn {\n\t\t\t\tbackground: #0b4499;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 44px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\t.contactimg {\n\t\t\t\tposition: relative;\n\t\t\t}\n\t\t\t.login-logo {\n\t\t\t\tmargin-bottom: 20px;\n\t\t\t}\n\n\t\t\t.textbox {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 50%;\n\t\t\t\tcolor: #fff;\n\t\t\t\tpadding: 40px;\n\t\t\t\ttransform: translate(0%, -50%);\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t\t.sign-btn {\n\t\t\t\tbackground: #0b4499;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 14px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\tbutton.btn.sign-btn:hover {\n\t\t\t\tbackground: #1668e2;\n\t\t\t}\n\t\t</style>\n\t\t<form [formGroup]="form" novalidate (ngSubmit)="_activeModal.close(form)">\n\t\t\t<div class="modal-header">\n\t\t\t\t<h4 class="modal-title"><i class="fa fa-question-circle" style="color: blue; font-size: 0.85em" aria-hidden="true"></i> Register</h4>\n\t\t\t\t<button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()">\n\t\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class="modal-body" *ngIf="form">\n\t\t\t\t<div class="row justify-content-md-center">\n\t\t\t\t\t<div class="col-lg-12">\n\t\t\t\t\t\t<div class="row bg-white">\n\t\t\t\t\t\t\t<div class="col-lg-6">\n\t\t\t\t\t\t\t\t<div class="contactimg">\n\t\t\t\t\t\t\t\t\t<img src="/assets/images/loginsignup/formimg.jpg" alt="images" class="img-fluid">\n\t\t\t\t\t\t\t\t\t<div class="textbox">\n\t\t\t\t\t\t\t\t\t\t<div class="login-logo"><img src="/assets/images/loginsignup/login-logo.png" alt="images"></div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="col-lg-6">\n\t\t\t\t\t\t\t\t<div class="log-box">\n\t\t\t\t\t\t\t\t\t<div class="register-form">\n\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t<label>User Name</label>\n\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.username.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t<input type="text" class="form-control" [ngClass]="[\'form-control\', form.controls.username.valid ? \'is-valid\' : \'is-invalid\']" formControlName="username" [autofocus]="true" [focus]="true" aria-describedby="emailHelp" placeholder="User Name">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t<label>Full Name</label>\n\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.name.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t<input type="text" class="form-control" [ngClass]="[\'form-control\', form.controls.name.valid ? \'is-valid\' : \'is-invalid\']" formControlName="name" aria-describedby="emailHelp" placeholder="Name">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t<label>Phone Number</label>\n\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.phone.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t<input type="text" class="form-control" [ngClass]="[\'form-control\', form.controls.phone.valid ? \'is-valid\' : \'is-invalid\']" formControlName="phone" placeholder="Phone Number">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t<label>Company</label>\n\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.company.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t<input type="text" class="form-control" [ngClass]="[\'form-control\', form.controls.company.valid ? \'is-valid\' : \'is-invalid\']" formControlName="company" placeholder="Company Name">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t<label>Email</label>\n\t\t\t\t\t\t\t\t\t\t\t<em *ngIf="form.controls.email.hasError(\'required\')">- Required</em>\n\t\t\t\t\t\t\t\t\t\t\t<input type="email" class="form-control" [ngClass]="[\'form-control\', form.controls.email.valid ? \'is-valid\' : \'is-invalid\']" formControlName="email" placeholder="Email">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<button type="submit" class="btn sign-btn">Signup</button>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="modal-footer">\n\t\t\t\t<responsive-button-group>\n\t\t\t\t\t<button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>\n\t\t\t\t</responsive-button-group>\n\t\t\t</div>\n\t\t</form>\n\t'}]}],ctorParameters:function(){return[{type:i1$4.NgbActiveModal},{type:i2.FormBuilder}]}});class DialogSelectWithButtonsURLContent{constructor(t,e){this._activeModal=t,this._account=e,this.url="",this.title="Select Window Type",this.selectedType="",this.options=[{value:"same_tab",text:"Same Tab"},{value:"new_tab",text:"New Tab"},{value:"new_window",text:"New Window"}]}ngOnInit(){this._account.getUser().settings.routing_preference&&"alwaysAsk"!==this._account.getUser().settings.routing_preference&&("sameTab"===this._account.getUser().settings.routing_preference&&window.open(this.url,"_self"),"newTab"===this._account.getUser().settings.routing_preference&&window.open(this.url,"_blank"),"newWindow"===this._account.getUser().settings.routing_preference&&window.open(this.url,"_blank","toolbar=1,location=1,menubar=1"),this._activeModal.close())}ngAfterViewInit(){setTimeout((()=>{let t=this.recursiveFindFirstElement(this.allElements.nativeElement);t?t.focus():(this.close.nativeElement.focus(),this.close.nativeElement.blur())}),100)}recursiveFindFirstElement(t){let e=null,n=t.children;for(let t=0;t<Object.keys(n).length;t++){let o=n[Object.keys(n)[t]];if(o.children&&o.children.length)e=this.recursiveFindFirstElement(o);else{if("BUTTON"===o.tagName&&o.classList.contains("close"))return null;if(!("BUTTON"!==o.tagName&&"INPUT"!==o.tagName&&"SELECT"!==o.tagName&&"TEXTAREA"!==o.tagName||o.hidden||o.disabled))return o}if(e)break}return e}onSelectType(t){this.selectedType=t,this.submit()}submit(){"same_tab"===this.selectedType&&window.open(this.url,"_self"),"new_tab"===this.selectedType&&window.open(this.url,"_blank"),"new_window"===this.selectedType&&window.open(this.url,"_blank","toolbar=1,location=1,menubar=1"),this._activeModal.close()}}DialogSelectWithButtonsURLContent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogSelectWithButtonsURLContent,deps:[{token:i1$4.NgbActiveModal},{token:AccountManagerService}],target:i0.ɵɵFactoryTarget.Component}),DialogSelectWithButtonsURLContent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:DialogSelectWithButtonsURLContent,selector:"ng-component",inputs:{url:"url"},viewQueries:[{propertyName:"close",first:!0,predicate:["close"],descendants:!0},{propertyName:"allElements",first:!0,predicate:["allElements"],descendants:!0}],ngImport:i0,template:'\n\t\t<style>\n\t\t\tcollapse-table tr:hover {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\n\t\t\t.selected {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t}\n\n\t\t\tcollapse-table {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t</style>\n\t\t<div #allElements>\n\t\t\t<div class="modal-header">\n\t\t\t\t<h4 class="modal-title"><i class="fa fa-question-circle" style="color: blue; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>\n\t\t\t\t<button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()" #close>\n\t\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class="modal-body">\n\t\t\t\t<div class="row">\n\t\t\t\t\t<div class="col" *ngFor="let option of options">\n\t\t\t\t\t\t<button style="width: 100%" type="button" [ngClass]="[\'btn\', selectedType === option.value ? \'btn-success\' : \'btn-warning\']" (click)="onSelectType(option.value)">{{option.text}}</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t',isInline:!0,styles:["\n\t\t\tcollapse-table tr:hover {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\n\t\t\t.selected {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t}\n\n\t\t\tcollapse-table {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t"],dependencies:[{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogSelectWithButtonsURLContent,decorators:[{type:Component,args:[{template:'\n\t\t<style>\n\t\t\tcollapse-table tr:hover {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\n\t\t\t.selected {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t}\n\n\t\t\tcollapse-table {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t</style>\n\t\t<div #allElements>\n\t\t\t<div class="modal-header">\n\t\t\t\t<h4 class="modal-title"><i class="fa fa-question-circle" style="color: blue; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>\n\t\t\t\t<button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()" #close>\n\t\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class="modal-body">\n\t\t\t\t<div class="row">\n\t\t\t\t\t<div class="col" *ngFor="let option of options">\n\t\t\t\t\t\t<button style="width: 100%" type="button" [ngClass]="[\'btn\', selectedType === option.value ? \'btn-success\' : \'btn-warning\']" (click)="onSelectType(option.value)">{{option.text}}</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t'}]}],ctorParameters:function(){return[{type:i1$4.NgbActiveModal},{type:AccountManagerService}]},propDecorators:{url:[{type:Input}],close:[{type:ViewChild,args:["close",{static:!1}]}],allElements:[{type:ViewChild,args:["allElements",{static:!1}]}]}});class CollapseTableComponent{constructor(t,e){this._resizeService=t,this._account=e,this.headerFixed=!1,this.secondaryColor=!1,this.tertiaryColor=!1,this.windowSize=window.innerWidth,this.windowSizeSubscription=null}ngOnInit(){this.windowSizeSubscription=this._resizeService.onResize$.subscribe((t=>{this.windowSize=t.innerWidth})),this._account.getUser()&&this._account.getUser().settings&&(document.documentElement.style.setProperty("--primary-table-color",this._account.getUser().settings.table_color),document.documentElement.style.setProperty("--primary-table-font-color",this._account.getUser().settings.table_font_color),document.documentElement.style.setProperty("--font-size",this._account.getUser().settings.font_size+"px"),document.documentElement.style.setProperty("--secondary-table-color",this._account.getUser().settings.secondary_table_color),document.documentElement.style.setProperty("--secondary-table-font-color",this._account.getUser().settings.secondary_table_font_color),document.documentElement.style.setProperty("--tertiary-table-color",this._account.getUser().settings.tertiary_table_color),document.documentElement.style.setProperty("--tertiary-table-font-color",this._account.getUser().settings.tertiary_table_font_color))}ngOnDestroy(){this.windowSizeSubscription.unsubscribe()}onClick(t){}getCollapseClass(){let t=["table"];return this.secondaryColor?t.push("collapseTable-sec"):this.tertiaryColor?t.push("collapseTable-tert"):t.push("collapseTable"),t}getPrimaryColor(){return this._account.getUser()?this._account.getUser().settings.table_color:"#3b3ee3"}}CollapseTableComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:CollapseTableComponent,deps:[{token:ResizeService},{token:AccountManagerService}],target:i0.ɵɵFactoryTarget.Component}),CollapseTableComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:CollapseTableComponent,selector:"collapse-table",inputs:{collapseSize:"collapseSize",tableFixed:"tableFixed",headerFixed:"headerFixed",secondaryColor:"secondaryColor",tertiaryColor:"tertiaryColor"},ngImport:i0,template:'<style>\n ::ng-deep :root {\n --primary-table-color: #3b3ee3;\n --primary-table-font-color: white;\n --font-size: 12px;\n --secondary-table-color: #87ceeb;\n --secondary-table-font-color: #000000;\n --tertiary-table-color: #ff4500;\n --tertiary-table-font-color: #000000;\n }\n\n\t:host /deep/ .collapseTable {\n border: 1px solid #ccc;\n margin: 0;\n padding: 0;\n width: 100%;\n /*table-layout: fixed;*/ \n }\n :host /deep/ .collapseTable tr {\n border: 1px solid #ddd;\n padding: 0.35em;\n }\n :host /deep/ .collapseTable th, :host /deep/ .collapseTable td {\n padding: 0.625em;\n text-align: center;\n vertical-align: middle;\n }\n :host /deep/ .collapseTable th {\n letter-spacing: 0.1em;\n text-transform: uppercase;\n background-color: var(--primary-table-color);\n color: var(--primary-table-font-color);\n font-size: var(--font-size);\n position: sticky;\n z-index: 10;\n top: 0;\n } \n :host /deep/ .collapseTable-sec {\n border: 1px solid #ccc;\n margin: 0;\n padding: 0;\n width: 100%;\n }\n :host /deep/ .collapseTable-sec tr {\n border: 1px solid #ddd;\n padding: 0.35em;\n }\n :host /deep/ .collapseTable-sec th, :host /deep/ .collapseTable-sec td {\n padding: 0.625em;\n text-align: center;\n }\n :host /deep/ .collapseTable-sec th {\n letter-spacing: 0.1em;\n text-transform: uppercase;\n background-color: var(--secondary-table-color);\n color: var(--secondary-table-font-color);\n font-size: var(--font-size);\n position: sticky;\n z-index: 10;\n top: 0;\n } \n :host /deep/ .collapseTable-tert {\n border: 1px solid #ccc;\n margin: 0;\n padding: 0;\n width: 100%;\n }\n :host /deep/ .collapseTable-tert tr {\n border: 1px solid #ddd;\n padding: 0.35em;\n }\n :host /deep/ .collapseTable-tert th, :host /deep/ .collapseTable-tert td {\n padding: 0.625em;\n text-align: center;\n }\n :host /deep/ .collapseTable-tert th {\n letter-spacing: 0.1em;\n text-transform: uppercase;\n background-color: var(--tertiary-table-color);\n color: var(--tertiary-table-font-color);\n font-size: var(--font-size);\n position: sticky;\n z-index: 10;\n top: 0;\n }\n \n .fixed {\n table-layout: fixed;\n }\n\n :host /deep/ .headerFixed thead, :host /deep/ .headerFixed tbody tr {\n display:table;\n width:100%;\n table-layout:fixed;\n }\n\n :host /deep/ .collapseTable,\n :host /deep/ .collapseTable-sec,\n :host /deep/ .collapseTable-tert {\n box-shadow: 0 0 15px rgba(0,0,0,0.25); \n }\n \n :host /deep/ .collapseTable > thead:first-of-type > tr:first-child > th:first-child,\n :host /deep/ .collapseTable-sec > thead:first-of-type > tr:first-child > th:first-child,\n :host /deep/ .collapseTable-tert > thead:first-of-type > tr:first-child > th:first-child {\n border-top-left-radius: 10px;\n }\n\n :host /deep/ .collapseTable > thead:first-of-type > tr:first-child > th:last-child,\n :host /deep/ .collapseTable-sec > thead:first-of-type > tr:first-child > th:last-child,\n :host /deep/ .collapseTable-tert > thead:first-of-type > tr:first-child > th:last-child {\n border-top-right-radius: 10px;\n }\n\n :host /deep/ .collapseTable > tbody:last-of-type > tr:last-child > td:first-child,\n :host /deep/ .collapseTable-sec > tbody:last-of-type > tr:last-child > td:first-child,\n :host /deep/ .collapseTable-tert > tbody:last-of-type > tr:last-child > td:first-child {\n border-bottom-left-radius: 10px;\n }\n\n :host /deep/ .collapseTable > tbody:last-of-type > tr:last-child > td:last-child,\n :host /deep/ .collapseTable-sec > tbody:last-of-type > tr:last-child > td:last-child,\n :host /deep/ .collapseTable-tert > tbody:last-of-type > tr:last-child > td:last-child {\n border-bottom-right-radius: 10px;\n }\n\n .hide {\n display: none;\n }\n</style>\n\n<div class="table-responsive-xl">\n <table [ngClass]="getCollapseClass()" style="border: none" cellspacing="0" cellpadding="0">\n <ng-content></ng-content>\n </table>\n</div>',styles:["\n ::ng-deep :root {\n --primary-table-color: #3b3ee3;\n --primary-table-font-color: white;\n --font-size: 12px;\n --secondary-table-color: #87ceeb;\n --secondary-table-font-color: #000000;\n --tertiary-table-color: #ff4500;\n --tertiary-table-font-color: #000000;\n }\n\n\t:host /deep/ .collapseTable {\n border: 1px solid #ccc;\n margin: 0;\n padding: 0;\n width: 100%;\n /*table-layout: fixed;*/ \n }\n :host /deep/ .collapseTable tr {\n border: 1px solid #ddd;\n padding: 0.35em;\n }\n :host /deep/ .collapseTable th, :host /deep/ .collapseTable td {\n padding: 0.625em;\n text-align: center;\n vertical-align: middle;\n }\n :host /deep/ .collapseTable th {\n letter-spacing: 0.1em;\n text-transform: uppercase;\n background-color: var(--primary-table-color);\n color: var(--primary-table-font-color);\n font-size: var(--font-size);\n position: sticky;\n z-index: 10;\n top: 0;\n } \n :host /deep/ .collapseTable-sec {\n border: 1px solid #ccc;\n margin: 0;\n padding: 0;\n width: 100%;\n }\n :host /deep/ .collapseTable-sec tr {\n border: 1px solid #ddd;\n padding: 0.35em;\n }\n :host /deep/ .collapseTable-sec th, :host /deep/ .collapseTable-sec td {\n padding: 0.625em;\n text-align: center;\n }\n :host /deep/ .collapseTable-sec th {\n letter-spacing: 0.1em;\n text-transform: uppercase;\n background-color: var(--secondary-table-color);\n color: var(--secondary-table-font-color);\n font-size: var(--font-size);\n position: sticky;\n z-index: 10;\n top: 0;\n } \n :host /deep/ .collapseTable-tert {\n border: 1px solid #ccc;\n margin: 0;\n padding: 0;\n width: 100%;\n }\n :host /deep/ .collapseTable-tert tr {\n border: 1px solid #ddd;\n padding: 0.35em;\n }\n :host /deep/ .collapseTable-tert th, :host /deep/ .collapseTable-tert td {\n padding: 0.625em;\n text-align: center;\n }\n :host /deep/ .collapseTable-tert th {\n letter-spacing: 0.1em;\n text-transform: uppercase;\n background-color: var(--tertiary-table-color);\n color: var(--tertiary-table-font-color);\n font-size: var(--font-size);\n position: sticky;\n z-index: 10;\n top: 0;\n }\n \n .fixed {\n table-layout: fixed;\n }\n\n :host /deep/ .headerFixed thead, :host /deep/ .headerFixed tbody tr {\n display:table;\n width:100%;\n table-layout:fixed;\n }\n\n :host /deep/ .collapseTable,\n :host /deep/ .collapseTable-sec,\n :host /deep/ .collapseTable-tert {\n box-shadow: 0 0 15px rgba(0,0,0,0.25); \n }\n \n :host /deep/ .collapseTable > thead:first-of-type > tr:first-child > th:first-child,\n :host /deep/ .collapseTable-sec > thead:first-of-type > tr:first-child > th:first-child,\n :host /deep/ .collapseTable-tert > thead:first-of-type > tr:first-child > th:first-child {\n border-top-left-radius: 10px;\n }\n\n :host /deep/ .collapseTable > thead:first-of-type > tr:first-child > th:last-child,\n :host /deep/ .collapseTable-sec > thead:first-of-type > tr:first-child > th:last-child,\n :host /deep/ .collapseTable-tert > thead:first-of-type > tr:first-child > th:last-child {\n border-top-right-radius: 10px;\n }\n\n :host /deep/ .collapseTable > tbody:last-of-type > tr:last-child > td:first-child,\n :host /deep/ .collapseTable-sec > tbody:last-of-type > tr:last-child > td:first-child,\n :host /deep/ .collapseTable-tert > tbody:last-of-type > tr:last-child > td:first-child {\n border-bottom-left-radius: 10px;\n }\n\n :host /deep/ .collapseTable > tbody:last-of-type > tr:last-child > td:last-child,\n :host /deep/ .collapseTable-sec > tbody:last-of-type > tr:last-child > td:last-child,\n :host /deep/ .collapseTable-tert > tbody:last-of-type > tr:last-child > td:last-child {\n border-bottom-right-radius: 10px;\n }\n\n .hide {\n display: none;\n }\n"],dependencies:[{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:CollapseTableComponent,decorators:[{type:Component,args:[{selector:"collapse-table",template:'<style>\n ::ng-deep :root {\n --primary-table-color: #3b3ee3;\n --primary-table-font-color: white;\n --font-size: 12px;\n --secondary-table-color: #87ceeb;\n --secondary-table-font-color: #000000;\n --tertiary-table-color: #ff4500;\n --tertiary-table-font-color: #000000;\n }\n\n\t:host /deep/ .collapseTable {\n border: 1px solid #ccc;\n margin: 0;\n padding: 0;\n width: 100%;\n /*table-layout: fixed;*/ \n }\n :host /deep/ .collapseTable tr {\n border: 1px solid #ddd;\n padding: 0.35em;\n }\n :host /deep/ .collapseTable th, :host /deep/ .collapseTable td {\n padding: 0.625em;\n text-align: center;\n vertical-align: middle;\n }\n :host /deep/ .collapseTable th {\n letter-spacing: 0.1em;\n text-transform: uppercase;\n background-color: var(--primary-table-color);\n color: var(--primary-table-font-color);\n font-size: var(--font-size);\n position: sticky;\n z-index: 10;\n top: 0;\n } \n :host /deep/ .collapseTable-sec {\n border: 1px solid #ccc;\n margin: 0;\n padding: 0;\n width: 100%;\n }\n :host /deep/ .collapseTable-sec tr {\n border: 1px solid #ddd;\n padding: 0.35em;\n }\n :host /deep/ .collapseTable-sec th, :host /deep/ .collapseTable-sec td {\n padding: 0.625em;\n text-align: center;\n }\n :host /deep/ .collapseTable-sec th {\n letter-spacing: 0.1em;\n text-transform: uppercase;\n background-color: var(--secondary-table-color);\n color: var(--secondary-table-font-color);\n font-size: var(--font-size);\n position: sticky;\n z-index: 10;\n top: 0;\n } \n :host /deep/ .collapseTable-tert {\n border: 1px solid #ccc;\n margin: 0;\n padding: 0;\n width: 100%;\n }\n :host /deep/ .collapseTable-tert tr {\n border: 1px solid #ddd;\n padding: 0.35em;\n }\n :host /deep/ .collapseTable-tert th, :host /deep/ .collapseTable-tert td {\n padding: 0.625em;\n text-align: center;\n }\n :host /deep/ .collapseTable-tert th {\n letter-spacing: 0.1em;\n text-transform: uppercase;\n background-color: var(--tertiary-table-color);\n color: var(--tertiary-table-font-color);\n font-size: var(--font-size);\n position: sticky;\n z-index: 10;\n top: 0;\n }\n \n .fixed {\n table-layout: fixed;\n }\n\n :host /deep/ .headerFixed thead, :host /deep/ .headerFixed tbody tr {\n display:table;\n width:100%;\n table-layout:fixed;\n }\n\n :host /deep/ .collapseTable,\n :host /deep/ .collapseTable-sec,\n :host /deep/ .collapseTable-tert {\n box-shadow: 0 0 15px rgba(0,0,0,0.25); \n }\n \n :host /deep/ .collapseTable > thead:first-of-type > tr:first-child > th:first-child,\n :host /deep/ .collapseTable-sec > thead:first-of-type > tr:first-child > th:first-child,\n :host /deep/ .collapseTable-tert > thead:first-of-type > tr:first-child > th:first-child {\n border-top-left-radius: 10px;\n }\n\n :host /deep/ .collapseTable > thead:first-of-type > tr:first-child > th:last-child,\n :host /deep/ .collapseTable-sec > thead:first-of-type > tr:first-child > th:last-child,\n :host /deep/ .collapseTable-tert > thead:first-of-type > tr:first-child > th:last-child {\n border-top-right-radius: 10px;\n }\n\n :host /deep/ .collapseTable > tbody:last-of-type > tr:last-child > td:first-child,\n :host /deep/ .collapseTable-sec > tbody:last-of-type > tr:last-child > td:first-child,\n :host /deep/ .collapseTable-tert > tbody:last-of-type > tr:last-child > td:first-child {\n border-bottom-left-radius: 10px;\n }\n\n :host /deep/ .collapseTable > tbody:last-of-type > tr:last-child > td:last-child,\n :host /deep/ .collapseTable-sec > tbody:last-of-type > tr:last-child > td:last-child,\n :host /deep/ .collapseTable-tert > tbody:last-of-type > tr:last-child > td:last-child {\n border-bottom-right-radius: 10px;\n }\n\n .hide {\n display: none;\n }\n</style>\n\n<div class="table-responsive-xl">\n <table [ngClass]="getCollapseClass()" style="border: none" cellspacing="0" cellpadding="0">\n <ng-content></ng-content>\n </table>\n</div>'}]}],ctorParameters:function(){return[{type:ResizeService},{type:AccountManagerService}]},propDecorators:{collapseSize:[{type:Input}],tableFixed:[{type:Input}],headerFixed:[{type:Input}],secondaryColor:[{type:Input}],tertiaryColor:[{type:Input}]}});class DialogSelectArrayObjsContent{constructor(t){this._activeModal=t,this.title="",this.objects=[],this.multiple=!1,this.allowNone=!1,this.selectedIndex=null,this.selectedItem=null,this.selectedIndexes=[],this.selectedItems=[]}ngAfterViewInit(){setTimeout((()=>{let t=this.recursiveFindFirstElement(this.allElements.nativeElement);t?t.focus():(this.close.nativeElement.focus(),this.close.nativeElement.blur())}),100),this.objects.forEach(((t,e)=>{t.selected&&(this.selectedIndexes.push(e),this.selectedItems.push(t))}))}recursiveFindFirstElement(t){let e=null,n=t.children;for(let t=0;t<Object.keys(n).length;t++){let o=n[Object.keys(n)[t]];if(o.children&&o.children.length)e=this.recursiveFindFirstElement(o);else{if("BUTTON"===o.tagName&&o.classList.contains("close"))return null;if(!("BUTTON"!==o.tagName&&"INPUT"!==o.tagName&&"SELECT"!==o.tagName&&"TEXTAREA"!==o.tagName||o.hidden||o.disabled))return o}if(e)break}return e}onSelectItem(t){this.multiple?this.selectedItems.some((e=>e.value===this.objects[t].value))?(this.selectedIndexes.splice(this.selectedIndexes.indexOf(t),1),this.selectedItems.splice(this.selectedItems.map((t=>t.value)).indexOf(this.objects[t].value),1)):(this.selectedIndexes.push(t),this.selectedItems.push(this.objects[t])):this.objects[t]===this.selectedItem?(this.selectedItem=null,this.selectedIndex=null):(this.selectedItem=this.objects[t],this.selectedIndex=t)}}DialogSelectArrayObjsContent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogSelectArrayObjsContent,deps:[{token:i1$4.NgbActiveModal}],target:i0.ɵɵFactoryTarget.Component}),DialogSelectArrayObjsContent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:DialogSelectArrayObjsContent,selector:"ng-component",inputs:{title:"title",objects:"objects",multiple:"multiple",allowNone:"allowNone"},viewQueries:[{propertyName:"close",first:!0,predicate:["close"],descendants:!0},{propertyName:"allElements",first:!0,predicate:["allElements"],descendants:!0}],ngImport:i0,template:'\n\t\t<style>\n\t\t\tcollapse-table tr:hover {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\n\t\t\t.selected {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t}\n\n\t\t\tcollapse-table {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t</style>\n\t\t<div #allElements>\n\t\t\t<div class="modal-header">\n\t\t\t\t<h4 class="modal-title"><i class="fa fa-question-circle" style="color: blue; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>\n\t\t\t\t<button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()" #close>\n\t\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class="modal-body">\n\t\t\t\t<div style="height: 60vh; overflow-y: auto">\n\t\t\t\t\t<collapse-table collapseSize="900">\n\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<th>List</th>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t<tr *ngFor="let object of objects; let i = index" (click)="onSelectItem(i)" [ngClass]="{\'selected\' : i === selectedIndex || selectedIndexes.includes(i)}">\n\t\t\t\t\t\t\t\t<td>{{object.text}}</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</tbody>\n\t\t\t\t\t</collapse-table>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="modal-footer">\n\t\t\t\t<ng-container *ngIf="!allowNone">\n\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', (selectedItem || selectedItems.length) ? \'btn-success\' : \'btn-danger\']" [disabled]="!selectedItem && !selectedItems.length" (click)="_activeModal.close(selectedItem || selectedItems)">Submit</button>\n\t\t\t\t</ng-container>\n\t\t\t\t<ng-container *ngIf="allowNone">\n\t\t\t\t\t<button type="button" class="btn btn-success" (click)="_activeModal.close(selectedItem || selectedItems)">Submit</button>\n\t\t\t\t</ng-container>\n\t\t\t\t<button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>\n\t\t\t</div>\n\t\t</div>\n\t',isInline:!0,styles:["\n\t\t\tcollapse-table tr:hover {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\n\t\t\t.selected {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t}\n\n\t\t\tcollapse-table {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t"],dependencies:[{kind:"component",type:CollapseTableComponent,selector:"collapse-table",inputs:["collapseSize","tableFixed","headerFixed","secondaryColor","tertiaryColor"]},{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogSelectArrayObjsContent,decorators:[{type:Component,args:[{template:'\n\t\t<style>\n\t\t\tcollapse-table tr:hover {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\n\t\t\t.selected {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t}\n\n\t\t\tcollapse-table {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t</style>\n\t\t<div #allElements>\n\t\t\t<div class="modal-header">\n\t\t\t\t<h4 class="modal-title"><i class="fa fa-question-circle" style="color: blue; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>\n\t\t\t\t<button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()" #close>\n\t\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class="modal-body">\n\t\t\t\t<div style="height: 60vh; overflow-y: auto">\n\t\t\t\t\t<collapse-table collapseSize="900">\n\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<th>List</th>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t<tr *ngFor="let object of objects; let i = index" (click)="onSelectItem(i)" [ngClass]="{\'selected\' : i === selectedIndex || selectedIndexes.includes(i)}">\n\t\t\t\t\t\t\t\t<td>{{object.text}}</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</tbody>\n\t\t\t\t\t</collapse-table>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="modal-footer">\n\t\t\t\t<ng-container *ngIf="!allowNone">\n\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', (selectedItem || selectedItems.length) ? \'btn-success\' : \'btn-danger\']" [disabled]="!selectedItem && !selectedItems.length" (click)="_activeModal.close(selectedItem || selectedItems)">Submit</button>\n\t\t\t\t</ng-container>\n\t\t\t\t<ng-container *ngIf="allowNone">\n\t\t\t\t\t<button type="button" class="btn btn-success" (click)="_activeModal.close(selectedItem || selectedItems)">Submit</button>\n\t\t\t\t</ng-container>\n\t\t\t\t<button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>\n\t\t\t</div>\n\t\t</div>\n\t'}]}],ctorParameters:function(){return[{type:i1$4.NgbActiveModal}]},propDecorators:{title:[{type:Input}],objects:[{type:Input}],multiple:[{type:Input}],allowNone:[{type:Input}],close:[{type:ViewChild,args:["close",{static:!1}]}],allElements:[{type:ViewChild,args:["allElements",{static:!1}]}]}});class DialogSelectArrayContent{constructor(t,e){this._activeModal=t,this._cdRef=e,this.title="",this.array=[],this.selectedIndexes=[],this.method="list",this.mappedArray=[],this.selectIndexes=[]}ngOnInit(){this.mappedArray=this.array.map(((t,e)=>({value:e,text:t}))),this.selectedIndexes.forEach((t=>{this.selectIndexes.push(t)}))}ngAfterViewInit(){setTimeout((()=>{let t=this.recursiveFindFirstElement(this.allElements.nativeElement);t?t.focus():(this.close.nativeElement.focus(),this.close.nativeElement.blur())}),100)}recursiveFindFirstElement(t){let e=null,n=t.children;for(let t=0;t<Object.keys(n).length;t++){let o=n[Object.keys(n)[t]];if(o.children&&o.children.length)e=this.recursiveFindFirstElement(o);else{if("BUTTON"===o.tagName&&o.classList.contains("close"))return null;if(!("BUTTON"!==o.tagName&&"INPUT"!==o.tagName&&"SELECT"!==o.tagName&&"TEXTAREA"!==o.tagName||o.hidden||o.disabled))return o}if(e)break}return e}addDropDown(){let t=this.array.filter(((t,e)=>!this.selectedIndexes.includes(e)))[0],e=this.array.findIndex((e=>e===t));this.selectedIndexes.push(e),this.selectIndexes.push(e)}onSelectDropdown(t,e){this.onSelectItem(this.selectedIndexes[e]),this.onSelectItem(t)}availableAdd(){return!!this.array.filter(((t,e)=>!this.selectedIndexes.includes(e)))[0]}getFilteredArray(t){return this.mappedArray.filter((e=>e.value===t||!this.selectedIndexes.includes(e.value)))}isInSelectedIndex(t){return!!this.selectedIndexes.includes(t)}onSelectItem(t){this.multiple?this.selectedIndexes.includes(t)?(this.selectedIndexes.splice(this.selectedIndexes.indexOf(t),1),this.selectIndexes.splice(this.selectIndexes.indexOf(t),1)):(this.selectedIndexes.push(t),this.selectIndexes.push(t)):this.selectedIndexes.includes(t)?(this.selectedIndexes=[],this.selectIndexes=[]):(this.selectedIndexes=[t],this.selectIndexes=[t])}getArray(){let t=[];return this.selectedIndexes.forEach((e=>{t.push(this.array[e])})),t}selectAll(){this.selectedIndexes=[],this.selectIndexes=[],this.array.forEach(((t,e)=>{this.selectedIndexes.push(e),this.selectIndexes.push(e)}))}removeAll(){this.selectedIndexes=[],this.selectIndexes=[]}}DialogSelectArrayContent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogSelectArrayContent,deps:[{token:i1$4.NgbActiveModal},{token:i0.ChangeDetectorRef}],target:i0.ɵɵFactoryTarget.Component}),DialogSelectArrayContent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:DialogSelectArrayContent,selector:"ng-component",inputs:{title:"title",array:"array",multiple:"multiple",selectedIndexes:"selectedIndexes"},viewQueries:[{propertyName:"close",first:!0,predicate:["close"],descendants:!0},{propertyName:"allElements",first:!0,predicate:["allElements"],descendants:!0}],ngImport:i0,template:'\n\t\t<style>\n\t\t\tcollapse-table tr:hover {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\n\t\t\t.selected {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t}\n\n\t\t\tcollapse-table {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t</style>\n\t\t<div #allElements>\n\t\t\t<div class="modal-header">\n\t\t\t\t<h4 class="modal-title"><i class="fa fa-question-circle" style="color: blue; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>\n\t\t\t\t<button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()" #close>\n\t\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class="modal-body" style="height: 60vh;">\n\t\t\t\t<responsive-button-group>\n\t\t\t\t\t<ng-container *ngIf="multiple">\n\t\t\t\t\t\t<button type="button" class="btn btn-primary" (click)="selectAll()">Select All</button>\n\t\t\t\t\t\t<button type="button" class="btn btn-danger" (click)="removeAll()">Remove All</button>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', method === \'list\' ? \'btn-success\' : \'btn-warning\']" (click)="method = \'list\'">Use List</button>\n\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', method === \'dropdown\' ? \'btn-success\' : \'btn-warning\']" (click)="method = \'dropdown\'">Use Dropdown</button>\n\t\t\t\t</responsive-button-group>\n\t\t\t\t<div style="height: 50vh; overflow-y: auto; margin-top: 10px">\n\t\t\t\t\t<ng-container *ngIf="method === \'list\'">\n\t\t\t\t\t\t<collapse-table collapseSize="900">\n\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<th>List</th>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t<tr *ngFor="let data of array; let i = index" (click)="onSelectItem(i)" [ngClass]="{\'selected\' : isInSelectedIndex(i)}">\n\t\t\t\t\t\t\t\t\t<td>{{data}}</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t</collapse-table>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<ng-container *ngIf="method === \'dropdown\'">\n\t\t\t\t\t\t<collapse-table collapseSize="900">\n\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<th>Item</th>\n\t\t\t\t\t\t\t\t\t<th>Remove</th>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t<tr *ngFor="let item of selectIndexes; let i = index">\n\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t<ng-select placeholder="Select Item" [ngModel]="item" (change)="onSelectDropdown($event, i)">\n\t\t\t\t\t\t\t\t\t\t\t<ng-option *ngFor="let data of getFilteredArray(item)" [value]="data.value">{{data.text}}</ng-option>\n\t\t\t\t\t\t\t\t\t\t</ng-select>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t<button type="button" class="btn btn-danger" (click)="onSelectItem(item)">Remove</button>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t</collapse-table>\n\t\t\t\t\t\t<button type="button" class="btn btn-success" *ngIf="multiple || !selectIndexes.length" (click)="addDropDown()" [disabled]="!availableAdd()">Add</button>\n\t\t\t\t\t</ng-container>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="modal-footer">\n\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedIndexes.length ? \'btn-success\' : \'btn-danger\']" [disabled]="!selectedIndexes.length || this.selectedIndexes.includes(null)" (click)="_activeModal.close(this.multiple ? getArray() : array[selectedIndexes[0]])">Submit</button>\n\t\t\t\t<button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>\n\t\t\t</div>\n\t\t</div>\n\t',isInline:!0,styles:["\n\t\t\tcollapse-table tr:hover {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\n\t\t\t.selected {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t}\n\n\t\t\tcollapse-table {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t"],dependencies:[{kind:"directive",type:i2.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i2.NgModel,selector:"[ngModel]:not([formControlName]):not([formControl])",inputs:["name","disabled","ngModel","ngModelOptions"],outputs:["ngModelChange"],exportAs:["ngModel"]},{kind:"component",type:CollapseTableComponent,selector:"collapse-table",inputs:["collapseSize","tableFixed","headerFixed","secondaryColor","tertiaryColor"]},{kind:"component",type:ResponsiveButtonGroupComponent,selector:"responsive-button-group",inputs:["collapseSize"]},{kind:"component",type:i4$1.NgSelectComponent,selector:"ng-select",inputs:["bindLabel","bindValue","markFirst","placeholder","notFoundText","typeToSearchText","addTagText","loadingText","clearAllText","appearance","dropdownPosition","appendTo","loading","closeOnSelect","hideSelected","selectOnTab","openOnEnter","maxSelectedItems","groupBy","groupValue","bufferAmount","virtualScroll","selectableGroup","selectableGroupAsModel","searchFn","trackByFn","clearOnBackspace","labelForId","inputAttrs","tabIndex","readonly","searchWhileComposing","minTermLength","editableSearchTerm","keyDownFn","typeahead","multiple","addTag","searchable","clearable","isOpen","items","compareWith","clearSearchOnAdd"],outputs:["blur","focus","change","open","close","search","clear","add","remove","scroll","scrollToEnd"]},{kind:"component",type:i4$1.NgOptionComponent,selector:"ng-option",inputs:["value","disabled"]},{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]}],changeDetection:i0.ChangeDetectionStrategy.OnPush}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogSelectArrayContent,decorators:[{type:Component,args:[{template:'\n\t\t<style>\n\t\t\tcollapse-table tr:hover {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\n\t\t\t.selected {\n\t\t\t\tbackground-color: lightblue;\n\t\t\t}\n\n\t\t\tcollapse-table {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t</style>\n\t\t<div #allElements>\n\t\t\t<div class="modal-header">\n\t\t\t\t<h4 class="modal-title"><i class="fa fa-question-circle" style="color: blue; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>\n\t\t\t\t<button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()" #close>\n\t\t\t\t\t<span aria-hidden="true">×</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class="modal-body" style="height: 60vh;">\n\t\t\t\t<responsive-button-group>\n\t\t\t\t\t<ng-container *ngIf="multiple">\n\t\t\t\t\t\t<button type="button" class="btn btn-primary" (click)="selectAll()">Select All</button>\n\t\t\t\t\t\t<button type="button" class="btn btn-danger" (click)="removeAll()">Remove All</button>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', method === \'list\' ? \'btn-success\' : \'btn-warning\']" (click)="method = \'list\'">Use List</button>\n\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', method === \'dropdown\' ? \'btn-success\' : \'btn-warning\']" (click)="method = \'dropdown\'">Use Dropdown</button>\n\t\t\t\t</responsive-button-group>\n\t\t\t\t<div style="height: 50vh; overflow-y: auto; margin-top: 10px">\n\t\t\t\t\t<ng-container *ngIf="method === \'list\'">\n\t\t\t\t\t\t<collapse-table collapseSize="900">\n\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<th>List</th>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t<tr *ngFor="let data of array; let i = index" (click)="onSelectItem(i)" [ngClass]="{\'selected\' : isInSelectedIndex(i)}">\n\t\t\t\t\t\t\t\t\t<td>{{data}}</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t</collapse-table>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<ng-container *ngIf="method === \'dropdown\'">\n\t\t\t\t\t\t<collapse-table collapseSize="900">\n\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<th>Item</th>\n\t\t\t\t\t\t\t\t\t<th>Remove</th>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t<tr *ngFor="let item of selectIndexes; let i = index">\n\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t<ng-select placeholder="Select Item" [ngModel]="item" (change)="onSelectDropdown($event, i)">\n\t\t\t\t\t\t\t\t\t\t\t<ng-option *ngFor="let data of getFilteredArray(item)" [value]="data.value">{{data.text}}</ng-option>\n\t\t\t\t\t\t\t\t\t\t</ng-select>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t<button type="button" class="btn btn-danger" (click)="onSelectItem(item)">Remove</button>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t</collapse-table>\n\t\t\t\t\t\t<button type="button" class="btn btn-success" *ngIf="multiple || !selectIndexes.length" (click)="addDropDown()" [disabled]="!availableAdd()">Add</button>\n\t\t\t\t\t</ng-container>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="modal-footer">\n\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedIndexes.length ? \'btn-success\' : \'btn-danger\']" [disabled]="!selectedIndexes.length || this.selectedIndexes.includes(null)" (click)="_activeModal.close(this.multiple ? getArray() : array[selectedIndexes[0]])">Submit</button>\n\t\t\t\t<button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>\n\t\t\t</div>\n\t\t</div>\n\t',changeDetection:ChangeDetectionStrategy.OnPush}]}],ctorParameters:function(){return[{type:i1$4.NgbActiveModal},{type:i0.ChangeDetectorRef}]},propDecorators:{title:[{type:Input}],array:[{type:Input}],multiple:[{type:Input}],selectedIndexes:[{type:Input}],close:[{type:ViewChild,args:["close",{static:!1}]}],allElements:[{type:ViewChild,args:["allElements",{static:!1}]}]}});class DialogService{constructor(t){this.modalService=t}openDialog(t,e={size:"lg",backdrop:"static"}){return this.modalService.open(t,e)}notify(t){const e=this.openDialog(DialogNotifyContent);e.componentInstance.title="Notify",e.componentInstance.body=t}input(t,e){const n=this.openDialog(DialogInputContent);return n.componentInstance.title=t,n.componentInstance.inputFields=e,n.result}error(t){const e=this.openDialog(DialogErrorContent);e.componentInstance.title="Error",e.componentInstance.body=t}confirm(t,e){const n=this.openDialog(DialogConfirmContent);return n.componentInstance.title="Confirm",n.componentInstance.body=t,n.componentInstance.html=e,n.result}selectDateTime(t,e=!0){const n=this.openDialog(DialogSelectDateTimeContent);return n.componentInstance.title="Select Date"+(e?" and Time":""),n.componentInstance.date=t,n.componentInstance.showTime=e,n.result}selectDataLabel(t,e=!0){const n=this.openDialog(DialogSelectDataLabelsContent,{size:"sm",backdrop:"static"});return n.componentInstance.title="Select Data Labels",n.componentInstance.data=t,n.componentInstance.showArraySubData=e,n.result}login(t,e=!0){const n=this.openDialog(DialogLoginContent);return n.componentInstance.msAllowed=t,n.componentInstance.showLoginText=e,n.result}register(){return this.openDialog(DialogRegisterContent).result}selectWithButtonsURL(t){const e=this.openDialog(DialogSelectWithButtonsURLContent);return e.componentInstance.url=t,e.result}selectWithArrayObjs(t,e,n=!1,o=!1){const r=this.openDialog(DialogSelectArrayObjsContent);return r.componentInstance.title=t,r.componentInstance.objects=e,r.componentInstance.multiple=n,r.componentInstance.allowNone=o,r.result}selectArray(t,e,n=!1,o=[]){const r=this.openDialog(DialogSelectArrayContent);return r.componentInstance.title=t,r.componentInstance.array=e,r.componentInstance.multiple=n,r.componentInstance.selectedIndexes=o,r.result}}DialogService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogService,deps:[{token:i1$4.NgbModal}],target:i0.ɵɵFactoryTarget.Injectable}),DialogService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogService}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DialogService,decorators:[{type:Injectable}],ctorParameters:function(){return[{type:i1$4.NgbModal}]}});class AuthService{constructor(t,e,n,o,r){this._ds=t,this._vs=e,this._alert=n,this._account=o,this._socket=r,this.environment=null,this.userHasPhoneNumber=!1}setupMSSingleSignOn(t){this.environment=t,"/auth365"===window.location.pathname&&window.location.hash&&window.location.hash.startsWith("#id_token=")&&(this.environment.MS_id_token=window.location.hash.replace("#","")),this.userAgentApplication=new UserAgentApplication({auth:{clientId:this.environment.MS_clientId,authority:this.environment.MS_authority,redirectUri:this.environment.MS_redirectUri,validateAuthority:!1,navigateToLoginRequestUrl:!1},framework:{isAngular:!0}})}setEnvironment(t){this.environment=t}setUserHasPhoneNumber(t){this.userHasPhoneNumber=t}registerUser(t,e=!0){return new Promise(((n,o)=>{let r=[{label:"User Name",form:"username",data:"",validators:[Validators.required],validatorErrors:["required"],validatorMsg:["Username is required"],required:!0},{label:"Full Name",form:"fullname",data:"",validators:[Validators.required],validatorErrors:["required"],validatorMsg:["Full name is required"],required:!0},{label:"Email",form:"email",data:"",validators:[Validators.required,this._vs.email],validatorErrors:["required","email"],validatorMsg:["Email is required","Email is invalid"],required:!0}];this.userHasPhoneNumber&&r.push({label:"Phone",form:"phonenumber",data:"",validators:[this._vs.phoneNumber],validatorErrors:["phoneNumber"],validatorMsg:["Phone number is invalid"],type:"text"}),this._ds.input("Register New User",r).then((r=>{let i={username:r.username.value.trim().toLowerCase(),email:r.email.value.trim().toLowerCase(),fullname:r.fullname.value.trim(),roles:{super_admin:!1,approvals:[],groups:[],notifications:[],miscs:[]},active:!0,readonly:!1,phonenumber:r.phonenumber?r.phonenumber.value:"",other:t,attempts:0,salt:"",hash:""};this._socket.call("createUserAndEmailEnrollment",i,e,((t,e)=>{t?o(t):n(e)}))}),(t=>o()))}))}editUser(t){let e=[{label:"User Name",form:"username",data:t.username,validators:[Validators.required],validatorErrors:["required"],validatorMsg:["Username is required"],required:!0},{label:"Full Name",form:"fullname",data:t.fullname,validators:[Validators.required],validatorErrors:["required"],validatorMsg:["Full name is required"],required:!0},{label:"Email",form:"email",data:t.email,validators:[Validators.required,this._vs.email],validatorErrors:["required","email"],validatorMsg:["Email is required","Email is invalid"],required:!0}];return this.userHasPhoneNumber&&e.push({label:"Phone",form:"phonenumber",data:t.phonenumber||"",validators:[this._vs.phoneNumber],validatorErrors:["phoneNumber"],validatorMsg:["Phone number is invalid"],type:"text"}),new Promise(((n,o)=>{this._ds.input("Edit User",e).then((e=>{e.phonenumber&&e.phonenumber.value?t.phonenumber=e.phonenumber.value:t.phonenumber="",t.email=e.email.value.trim(),this._socket.call("editUser",t._id,e.username.value.trim().toLowerCase(),e.fullname.value.trim(),e.email.value.trim().toLowerCase(),t.phonenumber,((r,i)=>{if(r)this._socket.call("insertErrorLog","AuthService - edituser",[t,r]),o(r);else{let t={username:e.username.value.trim(),fullname:e.fullname.value.trim(),email:e.email.value.trim()};this._alert.setAlert("success","User has been edited"),n(t)}}))}),(t=>{n(!0)}))}))}loginUser(){return new Promise(((t,e)=>{this.loginModal().then((n=>{"MS"===n.type?this.microsoftSignOn():n.form.value.forgotPassword?this._account.resetUserPassword(n.form.value.username):this._account.logIn(n.form.value.username,n.form.value.password).then((e=>{t(e)}),(t=>e("Invalid login")))}),(t=>e()))}))}microsoftSignOn(){this.userAgentApplication.loginRedirect(["user.read","mail.send"])}loginModal(){return this._ds.login(!(!this.environment||!this.environment.MS_ALLOWED),!this.environment||!this.environment.HIDE_LOGIN_TEXT)}removeUser(t){return new Promise(((e,n)=>{this._socket.call("removeDocument","users",t,((o,r)=>{o?(this._ds.error("Could not remove user"),this._socket.call("insertErrorLog","AuthService - removeUser",[t,o]),n(o)):e(!0)}))}))}}AuthService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AuthService,deps:[{token:DialogService},{token:ValidationService},{token:AlertService},{token:AccountManagerService},{token:SocketManagerService}],target:i0.ɵɵFactoryTarget.Injectable}),AuthService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AuthService}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AuthService,decorators:[{type:Injectable}],ctorParameters:function(){return[{type:DialogService},{type:ValidationService},{type:AlertService},{type:AccountManagerService},{type:SocketManagerService}]}});class AuthPermissionService{constructor(){this.modules=[]}registerModule(t){this.modules.push(t),this.modules.sort(((t,e)=>{let n=t.name,o=e.name;return n<o?-1:n>o?1:0}))}getAllModulePermissions(){return this.modules}}AuthPermissionService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AuthPermissionService,deps:[],target:i0.ɵɵFactoryTarget.Injectable}),AuthPermissionService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AuthPermissionService}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AuthPermissionService,decorators:[{type:Injectable}],ctorParameters:function(){return[]}});class ScrollDirective{constructor(){this.onScroll=new EventEmitter,this.bottomOffset=100,this.topOffset=100}scrolled(t){this.elementScrollEvent(t)}windowScrolled(t){this.windowScrollEvent(t)}windowScrollEvent(t){const e=t.target,n=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,o=n<this.topOffset,r={isReachingBottom:e.body.offsetHeight-(window.innerHeight+n)<this.bottomOffset,isReachingTop:o,originalEvent:t,isWindowEvent:!0};this.onScroll.emit(r)}elementScrollEvent(t){const e=t.target,n=e.scrollHeight-e.scrollTop,o=e.offsetHeight,r=e.scrollTop<this.topOffset,i={isReachingBottom:n-o<this.bottomOffset,isReachingTop:r,originalEvent:t,isWindowEvent:!1};this.onScroll.emit(i)}}ScrollDirective.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ScrollDirective,deps:[],target:i0.ɵɵFactoryTarget.Directive}),ScrollDirective.ɵdir=i0.ɵɵngDeclareDirective({minVersion:"14.0.0",version:"15.2.10",type:ScrollDirective,selector:"[detect-scroll]",inputs:{bottomOffset:"bottomOffset",topOffset:"topOffset"},outputs:{onScroll:"onScroll"},host:{listeners:{scroll:"scrolled($event)","window:scroll":"windowScrolled($event)"}},ngImport:i0}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ScrollDirective,decorators:[{type:Directive,args:[{selector:"[detect-scroll]"}]}],ctorParameters:function(){return[]},propDecorators:{onScroll:[{type:Output}],bottomOffset:[{type:Input}],topOffset:[{type:Input}],scrolled:[{type:HostListener,args:["scroll",["$event"]]}],windowScrolled:[{type:HostListener,args:["window:scroll",["$event"]]}]}});class NavbarMainComponent extends BaseComponent{constructor(t,e,n,o){super(t),this._services=t,this.auth=e,this._ds=n,this._app=o,this.logo="",this.navTabs=[],this.fontSize=12,this.publicProgram=!1,this.digitalSign=!1,this.user=null,this.collapseShowing=!1,this.client="",this.isResolveIO=!1,this.standardProgram=!1,this.tourStarted=!1,this.scrollRightInterval=null,this.scrollLeftInterval=null,this.isDemo=!1}ngOnInit(){this._services._account.user.subscribe((t=>{this.user=t})),this.client=this._app.client.getValue(),this.standardProgram=this._app.standardProgram.getValue(),this.tourStarted=this._services._app.tourStarted.getValue(),this.client||(this.isResolveIO=!0),this._services._app.tourStarted.subscribe((t=>{this.tourStarted=t})),this._services._app.isDemo.subscribe((t=>{this.isDemo=t}))}ngAfterViewInit(){setInterval((()=>{this.calculateDropdownsLeft()}),500),document.documentElement.style.setProperty("--font-size",this.fontSize+"px")}async logout(){this._app.isLoggingOut.next(!0),await this._services._account.logOut(),this._app.isLoggingOut.next(!1)}login(){this.auth.loginUser().then((()=>{}),(t=>{}))}hasScrolled(){return this.scrollable.nativeElement.scrollLeft<=0&&this.stopScrollRight(),this.scrollable.nativeElement.scrollLeft>0}hasMoreScroll(){return this.scrollable.nativeElement.scrollWidth<=this.scrollable.nativeElement.clientWidth+this.scrollable.nativeElement.scrollLeft&&this.stopScrollLeft(),this.scrollable.nativeElement.scrollWidth>this.scrollable.nativeElement.clientWidth+this.scrollable.nativeElement.scrollLeft}startScrollRight(){this.scrollRightInterval=setInterval((()=>{this.scrollable.nativeElement.scrollLeft-=2}),1)}stopScrollRight(){clearInterval(this.scrollRightInterval)}scrollRightOnce(){this.scrollable.nativeElement.scrollLeft-=50}startScrollLeft(){this.scrollLeftInterval=setInterval((()=>{this.scrollable.nativeElement.scrollLeft+=2}),1)}stopScrollLeft(){clearInterval(this.scrollLeftInterval)}scrollLeftOnce(){this.scrollable.nativeElement.scrollLeft+=50}calculateDropdownsLeft(){return!!(this.dropdowns&&this.dropdowns.toArray()&&this.dropdowns.toArray().length&&this.scrollable)&&(this.navTabs.filter((t=>"dropdown"===t.type)).forEach((t=>{let e=this.dropdowns.toArray().filter((e=>e.nativeElement.innerText.split("\n")[0].replace(/[^A-Za-z0-9]/g,"")===t.label.replace(/[^A-Za-z0-9]/g,"")))[0];t.left=e?Math.max(e.nativeElement.offsetLeft-this.scrollable.nativeElement.scrollLeft,this.scrollable.nativeElement.offsetLeft):0})),!0)}isInRole(t){if(!t)return!0;if(this.isSuperAdmin())return!0;if(this.user&&this.user.roles.groups)for(let e=0;e<this.user.roles.groups.length;e++){let n=this.user.roles.groups[e];for(let e=0;e<n.views.length;e++){let o=n.views[e];if(o===t||o.startsWith(t+"/"))return!0}}return!1}isSuperAdmin(){return!(!this.user||!this.user.roles)&&this.user.roles.super_admin}isInOneRole(t){if(this.isSuperAdmin())return!0;for(let e=0;e<t.length;e++){let n=t[e];if(!n)return!0;if(this._services._account.isUserInView(n))return!0}return!1}navigateTo(t){this._services._router.navigateByUrl(t)}help(){this._ds.input("What do you need help with?",[{label:"Title of Problem",form:"problem_title",data:"",validators:[Validators.required],validatorErrors:["required"],validatorMsg:["Problem title is required."],required:!0},{label:"Description of Problem",form:"problem_desc",data:"",validators:[Validators.required],validatorErrors:["required"],validatorMsg:["Problem description is required."],required:!0,type:"textarea"}]).then((t=>{this._services._socket.call("getHelpNotification",this._services._account.getUser().fullname,t.problem_title.value,t.problem_desc.value)}),(()=>{}))}isCustomer(){return!(!this._services._account.getUser().other.customers||!this._services._account.getUser().other.customers.length)}getWindowWidth(){return window.innerWidth}}NavbarMainComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:NavbarMainComponent,deps:[{token:ProviderService},{token:AuthService},{token:DialogService},{token:CoreService}],target:i0.ɵɵFactoryTarget.Component}),NavbarMainComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:NavbarMainComponent,selector:"navbar-main",inputs:{logo:"logo",navTabs:"navTabs",fontSize:"fontSize",publicProgram:"publicProgram",digitalSign:"digitalSign"},providers:[ProviderService],viewQueries:[{propertyName:"scrollable",first:!0,predicate:["scrollable"],descendants:!0,static:!0},{propertyName:"dropdowns",predicate:["dropdowns"],descendants:!0}],usesInheritance:!0,ngImport:i0,template:'<style>\n\t:root {\n --font-size: 12;\n }\n\n\t:host /deep/ * {\n\t\tfont-size: var(--font-size);\n\t}\n\n @media (max-width: 1200px) {\n .navbarMain a {\n font-size: 18px !important;\n }\n }\n @media (min-width: 1200px) {\n .scrollable-x {\n max-width: 60vw;\n overflow-x: auto;\n overflow-y: visible;\n align-items: center;\n }\n\n ::-webkit-scrollbar {\n display: none;\n }\n\n .verticalAlign {\n display: flex;\n align-items: center;\n }\n\n .dropdown {\n position: static;\n }\n }\n\n .navbar li {\n cursor: pointer;\n text-align: center;\n }\n\n .navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n color: gray;\n }\n</style>\n\n<div class="row">\n <nav class="navbar navbar-expand-xl navbar-dark bg-dark navbarMain" style="width: 100%">\n <a class="navbar-brand" href="#">\n <img [src]="logo" style="width: auto; height: 36px;" *ngIf="!isDemo">\n </a>\n <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarMainNav" aria-controls="navbarMainNav" aria-expanded="false" aria-label="Toggle navigation">\n <span class="navbar-toggler-icon"></span>\n </button>\n <div class="navbar-collapse collapse" id="navbarMainNav">\n <ul class="navbar-nav">\n <li class="nav-item" data-toggle="collapse" data-target="#navbarMainNav" *ngIf="!standardProgram && !digitalSign" [style.border-right]="getWindowWidth() > 1200 ? \'1px solid white\' : \'\'">\n <a class="nav-link" routerLink="home" [class.disabled]="tourStarted ? true : null" routerLinkActive="active">Home</a>\n </li>\n </ul>\n <div *ngIf="hasScrolled()" (mouseover)="startScrollRight()" (mouseout)="stopScrollRight()" (click)="scrollRightOnce()">\n <i class="fa fa-arrow-left" style="color: white; font-size: 20px"></i>\n </div>\n <ul [ngClass]="[\'navbar-nav\', \'scrollable-x\']" #scrollable detect-scroll (onScroll)="calculateDropdownsLeft()">\n <ng-container *ngFor="let tab of navTabs; let i = index;">\n <ng-container *ngIf="tab.type === \'link\'">\n <li class="nav-item" *ngIf="(publicProgram || user) && !digitalSign && isInRole(tab.links[0].role)" data-toggle="collapse" [tourAnchor]="tab.tourAnchor" data-target="#navbarMainNav">\n <a class="nav-link" [class.disabled]="tourStarted ? true : null" [routerLink]="tab.links[0].routerLink" routerLinkActive="active">{{tab.links[0].label}}</a>\n </li>\n </ng-container>\n <ng-container *ngIf="tab.type === \'dropdown\'">\n <li #dropdowns class="nav-item dropdown" *ngIf="(publicProgram || user) && isInOneRole(tab.roles)">\n <a class="nav-link dropdown-toggle" [class.disabled]="tourStarted ? true : null" id="navbarDropdownAsset" role="button" [tourAnchor]="tab.tourAnchor" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">\n {{tab.label}}\n </a>\n <div class="dropdown-menu bg-dark" aria-labelledby="navbarDropdownAsset" data-toggle="collapse" data-target="#navbarMainNav" [style.left.px]="tab.left || 0">\n <ng-container *ngFor="let link of tab.links">\n <a class="dropdown-item nav-link" *ngIf="(publicProgram || user) && isInRole(link.role)" [routerLink]="link.routerLink">{{link.label}}</a>\n </ng-container>\n </div>\n </li>\n </ng-container>\n </ng-container>\n </ul>\n <div *ngIf="hasMoreScroll()" (mouseover)="startScrollLeft()" (mouseout)="stopScrollLeft()" (click)="scrollLeftOnce()">\n <i class="fa fa-arrow-right" style="color: white; font-size: 20px"></i>\n </div>\n <hr />\n <ul [ngClass]="[\'navbar-nav\', getWindowWidth() > 1200 ? \'float-lg-right\' : \'\']">\n \x3c!-- <li class="nav-item" *ngIf="user" data-toggle="collapse" data-target="#navbarMainNav" [style.border-left]="getWindowWidth() > 1200 ? \'1px solid white\' : \'\'" style="height: 30px;">\n <a class="nav-link" [class.disabled]="tourStarted ? true : null" (click)="print()" style="cursor: pointer;"><i style="font-size:20px; color: white;" class="fa fa-print" aria-hidden="true"></i></a>\n </li> --\x3e\n <li class="nav-item" *ngIf="user && client" data-toggle="collapse" data-target="#navbarMainNav" style="height: 30px;" tourAnchor="supportSection">\n <a class="nav-link" [class.disabled]="tourStarted ? true : null" routerLink="support-ticket" routerLinkActive="active">Support</a>\n </li>\n <li class="nav-item" *ngIf="user && isInRole(\'super-admin\')" data-toggle="collapse" data-target="#navbarMainNav">\n <a class="nav-link" routerLink="logs" routerLinkActive="active">Logs</a>\n </li>\n <li class="nav-item" *ngIf="user && isInRole(\'super-admin\')" data-toggle="collapse" data-target="#navbarMainNav">\n <a class="nav-link" routerLink="super-admin" routerLinkActive="active">Super Admin</a>\n </li>\n </ul>\n <hr />\n <ul [ngClass]="[\'navbar-nav\', getWindowWidth() > 1200 ? \'float-lg-right\' : \'\']" *ngIf="!publicProgram">\n <li class="nav-item" *ngIf="!user" data-toggle="collapse" data-target="#navbarMainNav">\n <a class="nav-link" (click)="login()" style="cursor: pointer;" routerLinkActive="active">Login</a>\n </li>\n <li class="nav-item" *ngIf="user" tourAnchor="userSettings">\n <a class="nav-link" [class.disabled]="tourStarted ? true : null" routerLink="user-settings">Hello {{user.fullname}}!</a>\n </li>\n <li class="nav-item" *ngIf="user" style="cursor: pointer" (click)="logout()" data-toggle="collapse" data-target="#navbarMainNav">\n <a class="nav-link" [class.disabled]="tourStarted ? true : null">Logout</a>\n <li>\n </ul>\n </div>\n </nav>\n</div>',styles:["\n\t:root {\n --font-size: 12;\n }\n\n\t:host /deep/ * {\n\t\tfont-size: var(--font-size);\n\t}\n\n @media (max-width: 1200px) {\n .navbarMain a {\n font-size: 18px !important;\n }\n }\n @media (min-width: 1200px) {\n .scrollable-x {\n max-width: 60vw;\n overflow-x: auto;\n overflow-y: visible;\n align-items: center;\n }\n\n ::-webkit-scrollbar {\n display: none;\n }\n\n .verticalAlign {\n display: flex;\n align-items: center;\n }\n\n .dropdown {\n position: static;\n }\n }\n\n .navbar li {\n cursor: pointer;\n text-align: center;\n }\n\n .navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n color: gray;\n }\n"],dependencies:[{kind:"directive",type:i1$3.RouterLink,selector:"[routerLink]",inputs:["target","queryParams","fragment","queryParamsHandling","state","relativeTo","preserveFragment","skipLocationChange","replaceUrl","routerLink"]},{kind:"directive",type:i1$3.RouterLinkActive,selector:"[routerLinkActive]",inputs:["routerLinkActiveOptions","ariaCurrentWhenActive","routerLinkActive"],outputs:["isActiveChange"],exportAs:["routerLinkActive"]},{kind:"directive",type:i1$4.NgbNavbar,selector:".navbar"},{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"directive",type:ScrollDirective,selector:"[detect-scroll]",inputs:["bottomOffset","topOffset"],outputs:["onScroll"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:NavbarMainComponent,decorators:[{type:Component,args:[{selector:"navbar-main",providers:[ProviderService],template:'<style>\n\t:root {\n --font-size: 12;\n }\n\n\t:host /deep/ * {\n\t\tfont-size: var(--font-size);\n\t}\n\n @media (max-width: 1200px) {\n .navbarMain a {\n font-size: 18px !important;\n }\n }\n @media (min-width: 1200px) {\n .scrollable-x {\n max-width: 60vw;\n overflow-x: auto;\n overflow-y: visible;\n align-items: center;\n }\n\n ::-webkit-scrollbar {\n display: none;\n }\n\n .verticalAlign {\n display: flex;\n align-items: center;\n }\n\n .dropdown {\n position: static;\n }\n }\n\n .navbar li {\n cursor: pointer;\n text-align: center;\n }\n\n .navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n color: gray;\n }\n</style>\n\n<div class="row">\n <nav class="navbar navbar-expand-xl navbar-dark bg-dark navbarMain" style="width: 100%">\n <a class="navbar-brand" href="#">\n <img [src]="logo" style="width: auto; height: 36px;" *ngIf="!isDemo">\n </a>\n <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarMainNav" aria-controls="navbarMainNav" aria-expanded="false" aria-label="Toggle navigation">\n <span class="navbar-toggler-icon"></span>\n </button>\n <div class="navbar-collapse collapse" id="navbarMainNav">\n <ul class="navbar-nav">\n <li class="nav-item" data-toggle="collapse" data-target="#navbarMainNav" *ngIf="!standardProgram && !digitalSign" [style.border-right]="getWindowWidth() > 1200 ? \'1px solid white\' : \'\'">\n <a class="nav-link" routerLink="home" [class.disabled]="tourStarted ? true : null" routerLinkActive="active">Home</a>\n </li>\n </ul>\n <div *ngIf="hasScrolled()" (mouseover)="startScrollRight()" (mouseout)="stopScrollRight()" (click)="scrollRightOnce()">\n <i class="fa fa-arrow-left" style="color: white; font-size: 20px"></i>\n </div>\n <ul [ngClass]="[\'navbar-nav\', \'scrollable-x\']" #scrollable detect-scroll (onScroll)="calculateDropdownsLeft()">\n <ng-container *ngFor="let tab of navTabs; let i = index;">\n <ng-container *ngIf="tab.type === \'link\'">\n <li class="nav-item" *ngIf="(publicProgram || user) && !digitalSign && isInRole(tab.links[0].role)" data-toggle="collapse" [tourAnchor]="tab.tourAnchor" data-target="#navbarMainNav">\n <a class="nav-link" [class.disabled]="tourStarted ? true : null" [routerLink]="tab.links[0].routerLink" routerLinkActive="active">{{tab.links[0].label}}</a>\n </li>\n </ng-container>\n <ng-container *ngIf="tab.type === \'dropdown\'">\n <li #dropdowns class="nav-item dropdown" *ngIf="(publicProgram || user) && isInOneRole(tab.roles)">\n <a class="nav-link dropdown-toggle" [class.disabled]="tourStarted ? true : null" id="navbarDropdownAsset" role="button" [tourAnchor]="tab.tourAnchor" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">\n {{tab.label}}\n </a>\n <div class="dropdown-menu bg-dark" aria-labelledby="navbarDropdownAsset" data-toggle="collapse" data-target="#navbarMainNav" [style.left.px]="tab.left || 0">\n <ng-container *ngFor="let link of tab.links">\n <a class="dropdown-item nav-link" *ngIf="(publicProgram || user) && isInRole(link.role)" [routerLink]="link.routerLink">{{link.label}}</a>\n </ng-container>\n </div>\n </li>\n </ng-container>\n </ng-container>\n </ul>\n <div *ngIf="hasMoreScroll()" (mouseover)="startScrollLeft()" (mouseout)="stopScrollLeft()" (click)="scrollLeftOnce()">\n <i class="fa fa-arrow-right" style="color: white; font-size: 20px"></i>\n </div>\n <hr />\n <ul [ngClass]="[\'navbar-nav\', getWindowWidth() > 1200 ? \'float-lg-right\' : \'\']">\n \x3c!-- <li class="nav-item" *ngIf="user" data-toggle="collapse" data-target="#navbarMainNav" [style.border-left]="getWindowWidth() > 1200 ? \'1px solid white\' : \'\'" style="height: 30px;">\n <a class="nav-link" [class.disabled]="tourStarted ? true : null" (click)="print()" style="cursor: pointer;"><i style="font-size:20px; color: white;" class="fa fa-print" aria-hidden="true"></i></a>\n </li> --\x3e\n <li class="nav-item" *ngIf="user && client" data-toggle="collapse" data-target="#navbarMainNav" style="height: 30px;" tourAnchor="supportSection">\n <a class="nav-link" [class.disabled]="tourStarted ? true : null" routerLink="support-ticket" routerLinkActive="active">Support</a>\n </li>\n <li class="nav-item" *ngIf="user && isInRole(\'super-admin\')" data-toggle="collapse" data-target="#navbarMainNav">\n <a class="nav-link" routerLink="logs" routerLinkActive="active">Logs</a>\n </li>\n <li class="nav-item" *ngIf="user && isInRole(\'super-admin\')" data-toggle="collapse" data-target="#navbarMainNav">\n <a class="nav-link" routerLink="super-admin" routerLinkActive="active">Super Admin</a>\n </li>\n </ul>\n <hr />\n <ul [ngClass]="[\'navbar-nav\', getWindowWidth() > 1200 ? \'float-lg-right\' : \'\']" *ngIf="!publicProgram">\n <li class="nav-item" *ngIf="!user" data-toggle="collapse" data-target="#navbarMainNav">\n <a class="nav-link" (click)="login()" style="cursor: pointer;" routerLinkActive="active">Login</a>\n </li>\n <li class="nav-item" *ngIf="user" tourAnchor="userSettings">\n <a class="nav-link" [class.disabled]="tourStarted ? true : null" routerLink="user-settings">Hello {{user.fullname}}!</a>\n </li>\n <li class="nav-item" *ngIf="user" style="cursor: pointer" (click)="logout()" data-toggle="collapse" data-target="#navbarMainNav">\n <a class="nav-link" [class.disabled]="tourStarted ? true : null">Logout</a>\n <li>\n </ul>\n </div>\n </nav>\n</div>'}]}],ctorParameters:function(){return[{type:ProviderService},{type:AuthService},{type:DialogService},{type:CoreService}]},propDecorators:{dropdowns:[{type:ViewChildren,args:["dropdowns"]}],scrollable:[{type:ViewChild,args:["scrollable",{static:!0}]}],logo:[{type:Input,args:["logo"]}],navTabs:[{type:Input,args:["navTabs"]}],fontSize:[{type:Input,args:["fontSize"]}],publicProgram:[{type:Input,args:["publicProgram"]}],digitalSign:[{type:Input,args:["digitalSign"]}]}});class FilterEqualPipe{transform(t,e,n){return t?t.filter((t=>t[e]===n)):[]}}FilterEqualPipe.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:FilterEqualPipe,deps:[],target:i0.ɵɵFactoryTarget.Pipe}),FilterEqualPipe.ɵpipe=i0.ɵɵngDeclarePipe({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:FilterEqualPipe,name:"filterEqual",pure:!1}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:FilterEqualPipe,decorators:[{type:Pipe,args:[{name:"filterEqual",pure:!1}]}]});class FilterNotEqualPipe{transform(t,e,n){return t?t.filter((t=>t[e]!==n)):[]}}FilterNotEqualPipe.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:FilterNotEqualPipe,deps:[],target:i0.ɵɵFactoryTarget.Pipe}),FilterNotEqualPipe.ɵpipe=i0.ɵɵngDeclarePipe({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:FilterNotEqualPipe,name:"filterNotEqual"}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:FilterNotEqualPipe,decorators:[{type:Pipe,args:[{name:"filterNotEqual"}]}]});class NavbarModuleComponent extends BaseComponent{constructor(t,e){super(e),this._cdRef=t,this._services=e,this.menuData={title:"",module:null,description:null,description_name:"Description",tabs:[]},this.selectedTab=null,this.currentRoute="",this.routerEvents$=[],this.tourStarted=!1}ngOnInit(){this.tourStarted=this._services._app.tourStarted.getValue(),this.routerEvents$.push(this._services._router.events.subscribe((t=>{this._services._router.url.replace(/\/[a-f0-9]{24}$/,"").replace(/\?.+$/,"")===this.currentRoute&&this.selectedTab||this.selectTabFromRouter()}))),this.routerEvents$.push(this._services._app.navbarModuleData.subscribe((t=>{this.menuData=t,this._services._router.url.replace(/\/[a-f0-9]{24}$/,"").replace(/\?.+$/,"")===this.currentRoute&&this.selectedTab||this.selectTabFromRouter()}))),this.routerEvents$.push(this._services._app.tourStarted.subscribe((t=>{this.tourStarted=t})))}ngOnDestroy(){this.routerEvents$.forEach((t=>{t.unsubscribe()}))}selectTabFromRouter(){if(this.menuData)if("/"===this._services._router.url)this.selectedTab=this.menuData.tabs[0];else{for(this.currentRoute=this._services._router.url.replace(/\/[a-f0-9]{24}$/,"").replace(/\?.+$/,""),this.selectedTab=null;!this.selectedTab&&this.currentRoute.split("/").length>2;){for(let t=0;t<this.menuData.tabs.length;t++){let e=this.menuData.tabs[t];if(e.link===this.currentRoute){this.selectedTab=e;break}}this.currentRoute=this.currentRoute.replace(/(\/[^\/]+$)/,"")}this.selectedTab||(this.selectedTab=this.menuData.tabs[0])}}tabClass(t){return this.selectedTab&&this.selectedTab.label===t.label?"active":""}navigateTo(t){this.selectedTab!==t&&(this.selectedTab=t,null===t.params?this._services._router.navigateByUrl(t.link):this._services._router.navigateByUrl(t.link+"/"+t.params))}}NavbarModuleComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:NavbarModuleComponent,deps:[{token:i0.ChangeDetectorRef},{token:ProviderService}],target:i0.ɵɵFactoryTarget.Component}),NavbarModuleComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:NavbarModuleComponent,selector:"navbar-module",inputs:{sideNavHeight:"sideNavHeight",sideNavWidth:"sideNavWidth"},providers:[ProviderService],usesInheritance:!0,ngImport:i0,template:'<style>\n .navbarModule li {\n cursor: pointer;\n }\n .navbarModule li.active {\n border-left: 3px solid #d19b3d;\n }\n .navbarModule nav {\n width: 100%;\n }\n\n @media (min-width: 1200px) {\n .navbarModule {\n height: 95vh;\n margin-left: -10px;\n }\n\n hr {\n border-top: white 1px solid;\n }\n }\n\n @media (max-width: 1200px) {\n hr {\n display: none;\n }\n\n .navbarModule a {\n font-size: 18px !important;\n }\n }\n\n \n</style> \n\n<div style="margin-left: -15px; margin-right: -15px;">\n <nav class="navbar navbar-expand-xl navbar-dark bg-dark flex-xl-column navbarModule" [style.height]="sideNavHeight ? sideNavHeight + \'px\' : \'\'" [style.width]="sideNavWidth ? sideNavWidth : \'\'">\n <div href="#" style="color: white; font-size: 16px;">\n {{ menuData.title }}\n </div>\n <button class="navbar-toggler" type="button" aria-controls="#navbarModuleNav" data-target="#navbarModuleNav" data-toggle="collapse" aria-expanded="false" aria-label="Toggle navigation">\n <span class="navbar-toggler-icon"></span>\n </button>\n <div class="navbar-collapse collapse" id="navbarModuleNav" style="align-items:baseline; width: 100%; overflow-y: auto; overflow-x: hidden;">\n <ul class="navbar-nav" style="display: block; float: left; width: 100%;">\n <div *ngFor="let tab of (menuData.tabs | filterNotEqual : \'params\' : \'0\'); let i = index">\n <div *ngIf="tab.params !== null && menuData.tabs[i - 1] && menuData.tabs[i - 1].params === null">\n <hr>\n <div href="#" style="color: white; font-size: 16px;">\n Selected {{ menuData.module }}\n </div>\n <hr>\n <div style="color:white; margin-left: 5px; text-decoration: underline; font-size: 14px">{{menuData.description_name}}:</div>\n <div style="color:white; margin-left: 8px; font-size: 12px">{{menuData.description}}</div>\n <br />\n </div>\n <li [ngClass]="[\'nav-item\', tabClass(tab)]"data-toggle="collapse" data-target="#navbarModuleNav" [tourAnchor]="tab.tourAnchor">\n <a class="nav-link" [class.disabled]="tourStarted ? true : null" [routerLink]="[tab.params ? tab.link + \'/\' + tab.params : tab.link]" routerLinkActive="active">{{ tab.label }}</a>\n </li>\n </div>\n </ul>\n </div>\n </nav>\n</div>\n',styles:["\n .navbarModule li {\n cursor: pointer;\n }\n .navbarModule li.active {\n border-left: 3px solid #d19b3d;\n }\n .navbarModule nav {\n width: 100%;\n }\n\n @media (min-width: 1200px) {\n .navbarModule {\n height: 95vh;\n margin-left: -10px;\n }\n\n hr {\n border-top: white 1px solid;\n }\n }\n\n @media (max-width: 1200px) {\n hr {\n display: none;\n }\n\n .navbarModule a {\n font-size: 18px !important;\n }\n }\n\n \n"],dependencies:[{kind:"directive",type:i1$3.RouterLink,selector:"[routerLink]",inputs:["target","queryParams","fragment","queryParamsHandling","state","relativeTo","preserveFragment","skipLocationChange","replaceUrl","routerLink"]},{kind:"directive",type:i1$3.RouterLinkActive,selector:"[routerLinkActive]",inputs:["routerLinkActiveOptions","ariaCurrentWhenActive","routerLinkActive"],outputs:["isActiveChange"],exportAs:["routerLinkActive"]},{kind:"directive",type:i1$4.NgbNavbar,selector:".navbar"},{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"pipe",type:FilterNotEqualPipe,name:"filterNotEqual"}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:NavbarModuleComponent,decorators:[{type:Component,args:[{providers:[ProviderService],selector:"navbar-module",template:'<style>\n .navbarModule li {\n cursor: pointer;\n }\n .navbarModule li.active {\n border-left: 3px solid #d19b3d;\n }\n .navbarModule nav {\n width: 100%;\n }\n\n @media (min-width: 1200px) {\n .navbarModule {\n height: 95vh;\n margin-left: -10px;\n }\n\n hr {\n border-top: white 1px solid;\n }\n }\n\n @media (max-width: 1200px) {\n hr {\n display: none;\n }\n\n .navbarModule a {\n font-size: 18px !important;\n }\n }\n\n \n</style> \n\n<div style="margin-left: -15px; margin-right: -15px;">\n <nav class="navbar navbar-expand-xl navbar-dark bg-dark flex-xl-column navbarModule" [style.height]="sideNavHeight ? sideNavHeight + \'px\' : \'\'" [style.width]="sideNavWidth ? sideNavWidth : \'\'">\n <div href="#" style="color: white; font-size: 16px;">\n {{ menuData.title }}\n </div>\n <button class="navbar-toggler" type="button" aria-controls="#navbarModuleNav" data-target="#navbarModuleNav" data-toggle="collapse" aria-expanded="false" aria-label="Toggle navigation">\n <span class="navbar-toggler-icon"></span>\n </button>\n <div class="navbar-collapse collapse" id="navbarModuleNav" style="align-items:baseline; width: 100%; overflow-y: auto; overflow-x: hidden;">\n <ul class="navbar-nav" style="display: block; float: left; width: 100%;">\n <div *ngFor="let tab of (menuData.tabs | filterNotEqual : \'params\' : \'0\'); let i = index">\n <div *ngIf="tab.params !== null && menuData.tabs[i - 1] && menuData.tabs[i - 1].params === null">\n <hr>\n <div href="#" style="color: white; font-size: 16px;">\n Selected {{ menuData.module }}\n </div>\n <hr>\n <div style="color:white; margin-left: 5px; text-decoration: underline; font-size: 14px">{{menuData.description_name}}:</div>\n <div style="color:white; margin-left: 8px; font-size: 12px">{{menuData.description}}</div>\n <br />\n </div>\n <li [ngClass]="[\'nav-item\', tabClass(tab)]"data-toggle="collapse" data-target="#navbarModuleNav" [tourAnchor]="tab.tourAnchor">\n <a class="nav-link" [class.disabled]="tourStarted ? true : null" [routerLink]="[tab.params ? tab.link + \'/\' + tab.params : tab.link]" routerLinkActive="active">{{ tab.label }}</a>\n </li>\n </div>\n </ul>\n </div>\n </nav>\n</div>\n'}]}],ctorParameters:function(){return[{type:i0.ChangeDetectorRef},{type:ProviderService}]},propDecorators:{sideNavHeight:[{type:Input}],sideNavWidth:[{type:Input}]}});class CoreComponent extends BaseComponent{constructor(t,e,n,o,r,i,a,s){super(o),this._deviceDet=t,this._ds=e,this._resizeService=n,this._services=o,this._offline=r,this._storage=i,this._auth=a,this._aps=s,this.logo="",this.navTabs="",this.userHasPhoneNumber=!1,this.client="",this.showNavbarModule=!0,this.publicProgram=!1,this.year=(new Date).getFullYear().toString(),this.fullScreen=!1,this.windowSizeHeight=window.innerHeight,this.windowSizeWidth=window.innerWidth,this.navbarMainHeight=0,this.statusHeight=0,this.connectedHeight=0,this.isDevice=!1,this.showNavigationMenu=!1,this.swFlagAlert=null,this.isConnected=!1,this.isConnecting=!1,this.collapsableMenu=!0,this.fontSize=12,this.openedWindow=!1,this.isOffline=!1,this.foundUpdate=!1,this.orientation="portrait",this.digitalSign=!1}ngOnInit(){this._services._app.setEnvironment(this.environment),this._offline.initStorage(this.environment.OFFLINE_DB_SECRET_KEY),this._services._app.setClient(this.client),this._services._app.setNavTabs(this.navTabs),this._services._account.initLoginManager(this.environment),this.environment&&this.environment.MS_ALLOWED?this._auth.setupMSSingleSignOn(this.environment):this.environment&&this._auth.setEnvironment(this.environment),this._auth.setUserHasPhoneNumber(this.userHasPhoneNumber),this._resizeService.onResize$.subscribe((t=>{setTimeout((()=>{this.windowSizeHeight=t.innerHeight,this.windowSizeWidth=t.innerWidth}),100)})),this._services._app.fullScreen.subscribe((t=>{this.fullScreen=t})),this._services._account.user.subscribe((t=>{t&&t.settings?(this.collapsableMenu=t.settings.collapsable_menu,this.fontSize=t.settings.font_size,document.documentElement.style.setProperty("--warning-color",t.settings.warning_color),document.documentElement.style.setProperty("--warning-font-color",t.settings.warning_font_color),document.documentElement.style.setProperty("--warning-shadow-color","0 0 0 0.2rem "+hexToRGB$1(t.settings.warning_color,.5)),document.documentElement.style.setProperty("--warning-hover-color",t.settings.warning_hover_color),document.documentElement.style.setProperty("--success-color",t.settings.success_color),document.documentElement.style.setProperty("--success-font-color",t.settings.success_font_color),document.documentElement.style.setProperty("--success-shadow-color","0 0 0 0.2rem "+hexToRGB$1(t.settings.success_color,.5)),document.documentElement.style.setProperty("--success-hover-color",t.settings.success_hover_color),document.documentElement.style.setProperty("--danger-color",t.settings.danger_color),document.documentElement.style.setProperty("--danger-font-color",t.settings.danger_font_color),document.documentElement.style.setProperty("--danger-shadow-color","0 0 0 0.2rem "+hexToRGB$1(t.settings.danger_color,.5)),document.documentElement.style.setProperty("--danger-hover-color",t.settings.danger_hover_color),document.documentElement.style.setProperty("--info-color",t.settings.info_color),document.documentElement.style.setProperty("--info-font-color",t.settings.info_font_color),document.documentElement.style.setProperty("--info-shadow-color","0 0 0 0.2rem "+hexToRGB$1(t.settings.info_color,.5)),document.documentElement.style.setProperty("--info-hover-color",t.settings.info_hover_color),document.documentElement.style.setProperty("--primary-color",t.settings.primary_color),document.documentElement.style.setProperty("--primary-font-color",t.settings.primary_font_color),document.documentElement.style.setProperty("--primary-shadow-color","0 0 0 0.2rem "+hexToRGB$1(t.settings.primary_color,.5)),document.documentElement.style.setProperty("--primary-hover-color",t.settings.primary_hover_color),document.documentElement.style.setProperty("--secondary-color",t.settings.secondary_color),document.documentElement.style.setProperty("--secondary-font-color",t.settings.secondary_font_color),document.documentElement.style.setProperty("--secondary-shadow-color","0 0 0 0.2rem "+hexToRGB$1(t.settings.secondary_color,.5)),document.documentElement.style.setProperty("--secondary-hover-color",t.settings.secondary_hover_color)):!t||t.other.customers&&t.other.customers.length||t.other.id_customer||t.settings||this.openedWindow?(document.documentElement.style.setProperty("--warning-color","#ffc107"),document.documentElement.style.setProperty("--warning-font-color","#000000"),document.documentElement.style.setProperty("--warning-shadow-color","0 0 0 0.2rem rgba(222, 170, 12, 0.5)"),document.documentElement.style.setProperty("--warning-hover-color","#e0a800"),document.documentElement.style.setProperty("--success-color","#28a745"),document.documentElement.style.setProperty("--success-font-color","#ffffff"),document.documentElement.style.setProperty("--success-shadow-color","0 0 0 0.2rem rgba(72, 180, 97, 0.5)"),document.documentElement.style.setProperty("--success-hover-color","#218838"),document.documentElement.style.setProperty("--danger-color","#dc3545"),document.documentElement.style.setProperty("--danger-font-color","#ffffff"),document.documentElement.style.setProperty("--danger-shadow-color","0 0 0 0.2rem rgba(225, 83, 97, 0.5)"),document.documentElement.style.setProperty("--danger-hover-color","#c82333"),document.documentElement.style.setProperty("--info-color","#17a2b8"),document.documentElement.style.setProperty("--info-font-color","#ffffff"),document.documentElement.style.setProperty("--info-shadow-color","0 0 0 0.2rem rgba(58, 176, 195, 0.5)"),document.documentElement.style.setProperty("--info-hover-color","#138496"),document.documentElement.style.setProperty("--primary-color","#007bff"),document.documentElement.style.setProperty("--primary-font-color","#ffffff"),document.documentElement.style.setProperty("--primary-shadow-color","0 0 0 0.2rem rgba(38, 143, 255, 0.5)"),document.documentElement.style.setProperty("--primary-hover-color","#0069d9"),document.documentElement.style.setProperty("--secondary-color","#868e96"),document.documentElement.style.setProperty("--secondary-font-color","#ffffff"),document.documentElement.style.setProperty("--secondary-shadow-color","0 0 0 0.2rem rgba(130, 138, 145, 0.5)"),document.documentElement.style.setProperty("--secondary-hover-color","#5a6268"),this.fontSize=12):(this.openedWindow=!0,document.documentElement.style.setProperty("--warning-color","#ffc107"),document.documentElement.style.setProperty("--warning-font-color","#000000"),document.documentElement.style.setProperty("--warning-shadow-color","0 0 0 0.2rem rgba(222, 170, 12, 0.5)"),document.documentElement.style.setProperty("--warning-hover-color","#e0a800"),document.documentElement.style.setProperty("--success-color","#28a745"),document.documentElement.style.setProperty("--success-font-color","#ffffff"),document.documentElement.style.setProperty("--success-shadow-color","0 0 0 0.2rem rgba(72, 180, 97, 0.5)"),document.documentElement.style.setProperty("--success-hover-color","#218838"),document.documentElement.style.setProperty("--danger-color","#dc3545"),document.documentElement.style.setProperty("--danger-font-color","#ffffff"),document.documentElement.style.setProperty("--danger-shadow-color","0 0 0 0.2rem rgba(225, 83, 97, 0.5)"),document.documentElement.style.setProperty("--danger-hover-color","#c82333"),document.documentElement.style.setProperty("--info-color","#17a2b8"),document.documentElement.style.setProperty("--info-font-color","#ffffff"),document.documentElement.style.setProperty("--info-shadow-color","0 0 0 0.2rem rgba(58, 176, 195, 0.5)"),document.documentElement.style.setProperty("--info-hover-color","#138496"),document.documentElement.style.setProperty("--primary-color","#007bff"),document.documentElement.style.setProperty("--primary-font-color","#ffffff"),document.documentElement.style.setProperty("--primary-shadow-color","0 0 0 0.2rem rgba(38, 143, 255, 0.5)"),document.documentElement.style.setProperty("--primary-hover-color","#0069d9"),document.documentElement.style.setProperty("--secondary-color","#868e96"),document.documentElement.style.setProperty("--secondary-font-color","#ffffff"),document.documentElement.style.setProperty("--secondary-shadow-color","0 0 0 0.2rem rgba(130, 138, 145, 0.5)"),document.documentElement.style.setProperty("--secondary-hover-color","#5a6268"),this.fontSize=12,this._ds.notify("Hello, "+t.fullname+" it looks like there are no user settings saved for you. To adjust your user settings click your name at the top of the page next to the logout button, adjust any settings you want, then click submit to apply them."),this._services._router.navigateByUrl(this._services._router.url.split("/")[0]+"/user-settings/settings")),this.user=t})),this._deviceDet.isMobile()||this._deviceDet.isTablet()?(this._services._app.setIsDevice(!0),this.isDevice=!0):(this._services._app.setIsDevice(!1),this.isDevice=!1),this.environment.IS_PRODUCTION&&this._services._socket.subscribeBypassRoute("flagUpdateWithType","newSW").subscribe((t=>{t?(this.swFlagAlert=this._services._alert.setAlert("info","This page will reload once new version has been downloaded",0),this._services._app.setIsInvalidSW(!0),navigator.serviceWorker?navigator.serviceWorker.getRegistrations().then((t=>{t&&t.length||setTimeout((()=>{window.location.reload()}),3e3)}),(t=>{setTimeout((()=>{window.location.reload()}),3e3)})):setTimeout((()=>{window.location.reload()}),3e3)):this.swFlagAlert&&(this._services._app.setIsInvalidSW(!1),this._services._alert.clearAlert(this.swFlagAlert.toastId),this.swFlagAlert=null)})),this._offline.offlineMode.subscribe((t=>{this.isOffline=t})),this._services._account.getSocketStatus().subscribe((t=>{this.socketStatus=t,this.user?(this.socketStatus===WebSocket.OPEN?(this.isConnected=!0,this.isConnecting=!1):(this.isConnected=!1,this.socketStatus===WebSocket.CONNECTING?this.isConnecting=!0:this.isConnecting=!1),this.isConnected?this.connectedHeight=0:this.connectedHeight=40):(this.isConnected=!1,this.isConnecting=!1,this.connectedHeight=40)})),this._services._socket.subscribeBypassRoute("appstatus").subscribe((t=>{this.status=t,this._services._app.setHasStatusMessage(!!this.status),this.statusHeight=this.status?40:0})),setTimeout((()=>{this.navbarMainHeight=this.el_navBarMain.nativeElement.children[0].clientHeight}),100),setTimeout((()=>{this.navbarMainHeight=this.el_navBarMain.nativeElement.children[0].clientHeight}),1e3),setTimeout((()=>{this.navbarMainHeight=this.el_navBarMain.nativeElement.children[0].clientHeight}),5e3);let t,e=!1,n=this._storage.get("lastURL");this._services._router.events.subscribe((t=>{t.url&&t.url.startsWith("/digital-sign?")&&(this.digitalSign=!0),this.isDevice&&(n&&"/"!==n&&!e&&(""!==t.url&&"/"!==t.url||this._services._router.navigateByUrl(n)),e=!0,t.url?this._storage.set("lastURL",t.url):t.urlAfterRedirects&&this._storage.set("lastURL",t.urlAfterRedirects))})),["iPad","iPhone","iPod"].indexOf(navigator.platform)>=0&&"standalone"in window.navigator&&window.navigator.standalone&&(this.showNavigationMenu=!0),window.addEventListener("orientationchange",(()=>{-90===window.orientation&&(this.orientation="landscape"),90===window.orientation&&(this.orientation="landscape"),0===window.orientation&&(this.orientation="portrait")}),!0),document.addEventListener("focus",(function(){document.activeElement instanceof HTMLElement&&"INPUT"===document.activeElement.nodeName&&"number"===document.activeElement.type&&(t=!0,document.addEventListener("mousewheel",handleMousewheelEvent,{passive:!0}))}),!0),document.addEventListener("blur",(function(){t&&(t=!1,document.removeEventListener("mousewheel",handleMousewheelEvent))}),!0),window.addEventListener("dragover",(t=>{(t||event).preventDefault()}),!1),window.addEventListener("drop",(t=>{(t||event).preventDefault()}),!1)}getNavbarModuleHeight(){return this.el_navBarModule?this.el_navBarModule.nativeElement.children[0].clientHeight:0}onPushBackButton(){window.history.back()}onPushReloadButton(){window.location.reload()}onPushForwardButton(){window.history.forward()}openNav(){let t=document.getElementById("navSid"),e=document.getElementById("main_cont");t&&e&&("40px"===t.style.width&&"45px"===e.style.paddingLeft?(t.style.width="195px",e.style.paddingLeft="210px"):(t.style.width="40px",e.style.paddingLeft="45px"))}closeNav(){let t=document.getElementById("navSid"),e=document.getElementById("main_cont");t&&e&&(t.style.width="40px",e.style.paddingLeft="45px")}}function handleMousewheelEvent(){document.activeElement.blur()}function hexToRGB$1(t,e){let n=parseInt(t.slice(1,3),16),o=parseInt(t.slice(3,5),16),r=parseInt(t.slice(5,7),16);return e?"rgba("+n+", "+o+", "+r+", "+e+")":"rgb("+n+", "+o+", "+r+")"}CoreComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:CoreComponent,deps:[{token:i1$5.DeviceDetectorService},{token:DialogService},{token:ResizeService},{token:ProviderService},{token:OfflineManagerService},{token:i1$2.LocalStorageService},{token:AuthService},{token:AuthPermissionService}],target:i0.ɵɵFactoryTarget.Component}),CoreComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:CoreComponent,selector:"resolveio-client-lib-core",inputs:{environment:"environment",logo:"logo",navTabs:"navTabs",userHasPhoneNumber:"userHasPhoneNumber",client:"client",showNavbarModule:"showNavbarModule",publicProgram:"publicProgram"},providers:[ProviderService],viewQueries:[{propertyName:"el_navBarMain",first:!0,predicate:["navBarMain"],descendants:!0,read:ElementRef,static:!0},{propertyName:"el_navBarModule",first:!0,predicate:["navBarModule"],descendants:!0,read:ElementRef,static:!0}],usesInheritance:!0,ngImport:i0,template:'<style>\n\t:root {\n --warning-color: #ffc107;\n --warning-font-color: #000000;\n --warning-hover-color: #e0a800;\n --warning-shadow-color: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);\n --success-color: #28a745;\n --success-font-color: #ffffff;\n --success-hover-color: #218838;\n --success-shadow-color: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);\n --danger-color: #dc3545;\n --danger-font-color: #ffffff;\n --danger-hover-color: #c82333;\n --danger-shadow-color: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);\n --info-color: #17a2b8;\n --info-font-color: #ffffff;\n --info-hover-color: #138496;\n --info-shadow-color: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);\n --primary-color: #007bff;\n --primary-font-color: #ffffff;\n --primary-hover-color: #0069d9;\n --primary-shadow-color: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);\n --secondary-color: #868e96;\n --secondary-font-color: #ffffff;\n --secondary-hover-color: #5a6268;\n --secondary-shadow-color: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);\n }\n\n\t:host /deep/ .btn-warning {\n\t\tcolor: var(--warning-font-color);\n\t\tbackground-color: var(--warning-color);\n\t\tborder-color: var(--warning-color);\n\t}\n\t:host /deep/ .btn-warning:focus, .btn-warning.focus {\n\t\tbox-shadow: var(--warning-shadow-color);\n\t}\n\t:host /deep/ .btn-warning:hover {\n\t\tcolor: var(--warning-font-color);\n\t\tbackground-color: var(--warning-hover-color);\n\t\tborder-color: var(--warning-hover-color);\n\t}\n\n\t:host /deep/ .btn-success {\n\t\tcolor: var(--success-font-color);\n\t\tbackground-color: var(--success-color);\n\t\tborder-color: var(--success-color);\n\t}\n\t:host /deep/ .btn-success:focus, .btn-success.focus {\n\t\tbox-shadow: var(--success-shadow-color);\n\t}\n\t:host /deep/ .btn-success:hover {\n\t\tcolor: var(--success-font-color);\n\t\tbackground-color: var(--success-hover-color);\n\t\tborder-color: var(--success-hover-color);\n\t}\n\n\t:host /deep/ .btn-danger {\n\t\tcolor: var(--danger-font-color);\n\t\tbackground-color: var(--danger-color);\n\t\tborder-color: var(--danger-color);\n\t}\n\t:host /deep/ .btn-danger:focus, .btn-danger.focus {\n\t\tbox-shadow: var(--danger-shadow-color);\n\t}\n\t:host /deep/ .btn-danger:hover {\n\t\tcolor: var(--danger-font-color);\n\t\tbackground-color: var(--danger-hover-color);\n\t\tborder-color: var(--danger-hover-color);\n\t}\n\n\t:host /deep/ .btn-info {\n\t\tcolor: var(--info-font-color);\n\t\tbackground-color: var(--info-color);\n\t\tborder-color: var(--info-color);\n\t}\n\t:host /deep/ .btn-info:focus, .btn-info.focus {\n\t\tbox-shadow: var(--info-shadow-color);\n\t}\n\t:host /deep/ .btn-info:hover {\n\t\tcolor: var(--info-font-color);\n\t\tbackground-color: var(--info-hover-color);\n\t\tborder-color: var(--info-hover-color);\n\t}\n\n\t:host /deep/ .btn-primary {\n\t\tcolor: var(--primary-font-color);\n\t\tbackground-color: var(--primary-color);\n\t\tborder-color: var(--primary-color);\n\t}\n\t:host /deep/ .btn-primary:focus, .btn-primary.focus {\n\t\tbox-shadow: var(--primary-shadow-color);\n\t}\n\t:host /deep/ .btn-primary:hover {\n\t\tcolor: var(--primary-font-color);\n\t\tbackground-color: var(--primary-hover-color);\n\t\tborder-color: var(--primary-hover-color);\n\t}\n\n\t:host /deep/ .btn-secondary {\n\t\tcolor: var(--secondary-font-color);\n\t\tbackground-color: var(--secondary-color);\n\t\tborder-color: var(--secondary-color);\n\t}\n\t:host /deep/ .btn-secondary:focus, .btn-secondary.focus {\n\t\tbox-shadow: var(--secondary-shadow-color);\n\t}\n\t:host /deep/ .btn-secondary:hover {\n\t\tcolor: var(--secondary-font-color);\n\t\tbackground-color: var(--secondary-hover-color);\n\t\tborder-color: var(--secondary-hover-color);\n\t}\n\t\n \t@media print {\n\t \t.dontPrint * {\n\t\t \tdisplay: none !important;\n\t \t}\n\n\t\t.myDivToPrintCs {\n\t\t\tbackground-color: white;\n\t\t\theight: 100%;\n\t\t\twidth: 100%;\n\t\t\tfont-size: 12px;\n\t\t\tline-height: 12px;\n\t\t\tpage-break-after: avoid;\n\t\t\tdisplay: initial;\n\t\t}\n\n\t\t.removeOverflow {\n\t\t\toverflow-y: hidden !important; \n\t\t\theight: 100% !important;\n\t\t}\n \t}\n\n \t.hideThis {\n\t\tdisplay: none !important;\n\t}\n\n\t.navSidbar {\n\t\twidth: 0px;\n\t\tposition: fixed;\n\t\tz-index: 1;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tbackground-color: #343a40;\n\t\toverflow: hidden;\n\t\ttransition: 0.5s;\n\t\tpadding-top: 0px;\n\t}\n\n\t.navSidbar a {\n\t\tpadding: 8px 8px 8px 32px;\n\t\ttext-decoration: none;\n\t\tfont-size: 25px;\n\t\tcolor: #818181;\n\t\tdisplay: block;\n\t\ttransition: 0.3s;\n\t}\n\n\t.navSidbar a:hover {\n\t\tcolor: #f1f1f1;\n\t}\n\n\t.openbtn {\n\t\tbackground-color: #343a40;\n\t\tborder: none;\n\t\tcolor: #fff;\n\t\tpadding: 5px 20px;\n\t\tfont-size: 18px;\n\t\tright: 0;\n\t\ttop: 0px;\n\t\tposition: absolute;\n\t\tz-index: 999999;\n\t\tcursor: pointer;\n\t\tfloat: right;\n\t\theight: 100%;\n\t}\n\n\t.openbtn span {\n\t\tfont-size: 20px;\n\t\tdisplay: block;\n\t\theight: auto;\n\t\twidth: auto;\n\t\ttext-align: center;\n\t\tposition: absolute;\n\t\tleft: 50%;\n\t\ttop: 50%;\n\t\ttransform: translate(-50%, -50%) rotate(-90deg);\n\t\tmargin-top: -55px;\n\t\tletter-spacing: 30px;\n\t}\n\t#main_cont {\n\t\ttransition: padding-left .5s;\n\t}\n\n\t.sid_inr {\n\t\tpadding-left: 25px;\n\t}\n\n\t@keyframes shimmer {\n 0%, 50% {\n background-position: 120% 0;\n }\n 100% {\n background-position: -80% 0;\n }\n }\n\n .shimmer::before {\n content: "";\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background: linear-gradient(\n -75deg,\n rgba(255, 255, 255, 0) 40%, \n rgba(255, 255, 255, 0.7) 50%, \n rgba(255, 255, 255, 0) 60%\n );\n background-size: 200% 100%;\n animation: shimmer 5s linear infinite;\n animation-fill-mode: forwards;\n z-index: 11;\n }\n</style>\n<div *ngIf="isDevice">\n\t<link rel="stylesheet" type="text/css" href="/assets/css/tablet.css">\n</div>\n<div #shell>\n\t<div *ngIf="user && (!isConnected || isOffline) && !publicProgram && !digitalSign">\n\t\t<div style="height: 40px; text-align: center; vertical-align: middle; background-color: red; color: white;">\n\t\t\t<div style="padding-top: 9px; padding-bottom: 9px;" class="shimmer">*** OFFLINE MODE ***</div>\n\t\t</div>\n\t</div>\n\t<div *ngIf="!user && (!isConnected || isOffline) && !publicProgram && !digitalSign">\n\t\t<div style="height: 40px; text-align: center; vertical-align: middle; background-color: red; color: white;">\n\t\t\t<div style="padding-top: 9px; padding-bottom: 9px;" class="shimmer">*** PLEASE LOGIN ***</div>\n\t\t</div>\n\t</div>\n\t<div *ngIf="status">\n\t\t<div style="height: 40px; text-align: center; vertical-align: middle; background-color: red; color: white;">\n\t\t\t<div style="padding-top: 9px; padding-bottom: 9px;" class="shimmer">*** {{ status.message }} ***</div>\n\t\t</div>\n\t</div>\n\t<div *ngIf="fullScreen">\n\t\t<router-outlet name="jobboardfsoutlet"></router-outlet>\n\t</div>\n\t<div [ngClass]="[\'container-fluid\', fullScreen ? \'hideThis\' : \'\']" [style.font-size.px]="fontSize">\n\t\t<div class="dontPrint">\n\t\t\t<navbar-main style="width: 100%" tourAnchor="navBarMain" #navBarMain [logo]="logo" [navTabs]="navTabs" [fontSize]="fontSize" [publicProgram]="publicProgram || digitalSign" [digitalSign]="digitalSign"></navbar-main>\n\t\t</div>\n\t\t<ng-template ngbModalContainer></ng-template>\n\t\t<div class="row">\n\t\t\t<div id="navSid" *ngIf="showNavbarModule && !digitalSign" [ngClass]="[\'dontPrint\', windowSizeWidth > 1200 && collapsableMenu ? \'navSidbar\' : \'col-xl-1\']" [style.width]="windowSizeWidth > 1200 && collapsableMenu ? 40 + \'px\' : 100 + \'%\'" [style.margin-top.px]="windowSizeWidth > 1200 && collapsableMenu ? navbarMainHeight + statusHeight + connectedHeight : 0" >\n\t\t\t\t<div class="openbtn" *ngIf="windowSizeWidth > 1200 && collapsableMenu" (mouseenter)="openNav()"><span>MENU</span></div>\n\t\t\t\t<div [ngClass]="windowSizeWidth > 1200 && collapsableMenu ? \'sid_inr\' : \'\'">\n\t\t\t\t\t<navbar-module #navBarModule tourAnchor="navBarModule" [sideNavWidth]="windowSizeWidth > 1200 && collapsableMenu ? \'90%\' : \'auto\'" [sideNavHeight]="windowSizeWidth > 1200 && collapsableMenu ? windowSizeHeight - navbarMainHeight - statusHeight - connectedHeight - (showNavigationMenu ? (54 + getNavbarModuleHeight()) : 0) - ((!isDevice || (isDevice && showNavigationMenu)) ? 20 : 0) : \'\'"></navbar-module>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div [id]="windowSizeWidth > 1200 ? \'main_cont\' : \'main_cont_mobile\'" [ngClass]="[windowSizeWidth > 1200 && collapsableMenu ? \'col-xl-12\' : \'col-xl-11\']" [style.padding-left]="windowSizeWidth > 1200 && collapsableMenu && showNavbarModule ? 45 + \'px\' : null" [style.padding]="((isDevice && windowSizeWidth <= 1200) || !showNavbarModule) ? 0 + \'px\' : null" (mouseenter)="windowSizeWidth > 1200 && collapsableMenu && showNavbarModule ? closeNav() : null" style="padding-right: 5px">\n\t\t\t\t<div style="-webkit-overflow-scrolling: touch" [style.overflow-y]="(isDevice && !showNavigationMenu) ? \'initial\' : \'scroll\'" [style.height.px]="windowSizeHeight - ((isDevice && windowSizeWidth <= 1200) && !showNavigationMenu ? (getNavbarModuleHeight() > 100 ? 0 : getNavbarModuleHeight()) : 0) - navbarMainHeight - (!publicProgram && !digitalSign ? statusHeight : 0) - (!publicProgram && !digitalSign ? connectedHeight : 0) - (isDevice && showNavigationMenu ? (54 + (getNavbarModuleHeight() > 100 ? 0 : getNavbarModuleHeight())) : 0) - ((!isDevice || (isDevice && showNavigationMenu)) ? 20 : 0)" class="removeOverflow">\n\t\t\t\t\t<router-outlet></router-outlet>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div *ngIf="isDevice && showNavigationMenu" style="height: 54px; background-color: lightgray; margin-left: -15px; margin-right: -15px;" class="dontPrint">\n\t\t\t<table style="width: 100%">\n\t\t\t\t<tr>\n\t\t\t\t\t<td style="text-align: center">\n\t\t\t\t\t\t<button type="button" class="btn" style="background-color: lightgray" (click)="onPushBackButton()"><i class="fa fa-arrow-left" style="color: black; font-size: 20px"></i></button>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td style="text-align: center">\n\t\t\t\t\t\t<button type="button" class="btn" style="background-color: lightgray" (click)="onPushReloadButton()"><i class="fa fa-refresh" style="color: black; font-size: 20px"></i></button>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td style="text-align: center">\n\t\t\t\t\t\t<button type="button" class="btn" style="background-color: lightgray" (click)="onPushForwardButton()"><i class="fa fa-arrow-right" style="color: black; font-size: 20px"></i></button>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</div>\n\t\t<div *ngIf="!isDevice" style="text-align: center; height: 20px; font-style: italic; font-weight: bold; background-color: lightgray; margin-left: -15px; margin-right: -15px;">© {{year}} RESOLVEIO ALL RIGHTS RESERVED</div>\n\t</div>\n</div>\n',styles:['\n\t:root {\n --warning-color: #ffc107;\n --warning-font-color: #000000;\n --warning-hover-color: #e0a800;\n --warning-shadow-color: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);\n --success-color: #28a745;\n --success-font-color: #ffffff;\n --success-hover-color: #218838;\n --success-shadow-color: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);\n --danger-color: #dc3545;\n --danger-font-color: #ffffff;\n --danger-hover-color: #c82333;\n --danger-shadow-color: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);\n --info-color: #17a2b8;\n --info-font-color: #ffffff;\n --info-hover-color: #138496;\n --info-shadow-color: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);\n --primary-color: #007bff;\n --primary-font-color: #ffffff;\n --primary-hover-color: #0069d9;\n --primary-shadow-color: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);\n --secondary-color: #868e96;\n --secondary-font-color: #ffffff;\n --secondary-hover-color: #5a6268;\n --secondary-shadow-color: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);\n }\n\n\t:host /deep/ .btn-warning {\n\t\tcolor: var(--warning-font-color);\n\t\tbackground-color: var(--warning-color);\n\t\tborder-color: var(--warning-color);\n\t}\n\t:host /deep/ .btn-warning:focus, .btn-warning.focus {\n\t\tbox-shadow: var(--warning-shadow-color);\n\t}\n\t:host /deep/ .btn-warning:hover {\n\t\tcolor: var(--warning-font-color);\n\t\tbackground-color: var(--warning-hover-color);\n\t\tborder-color: var(--warning-hover-color);\n\t}\n\n\t:host /deep/ .btn-success {\n\t\tcolor: var(--success-font-color);\n\t\tbackground-color: var(--success-color);\n\t\tborder-color: var(--success-color);\n\t}\n\t:host /deep/ .btn-success:focus, .btn-success.focus {\n\t\tbox-shadow: var(--success-shadow-color);\n\t}\n\t:host /deep/ .btn-success:hover {\n\t\tcolor: var(--success-font-color);\n\t\tbackground-color: var(--success-hover-color);\n\t\tborder-color: var(--success-hover-color);\n\t}\n\n\t:host /deep/ .btn-danger {\n\t\tcolor: var(--danger-font-color);\n\t\tbackground-color: var(--danger-color);\n\t\tborder-color: var(--danger-color);\n\t}\n\t:host /deep/ .btn-danger:focus, .btn-danger.focus {\n\t\tbox-shadow: var(--danger-shadow-color);\n\t}\n\t:host /deep/ .btn-danger:hover {\n\t\tcolor: var(--danger-font-color);\n\t\tbackground-color: var(--danger-hover-color);\n\t\tborder-color: var(--danger-hover-color);\n\t}\n\n\t:host /deep/ .btn-info {\n\t\tcolor: var(--info-font-color);\n\t\tbackground-color: var(--info-color);\n\t\tborder-color: var(--info-color);\n\t}\n\t:host /deep/ .btn-info:focus, .btn-info.focus {\n\t\tbox-shadow: var(--info-shadow-color);\n\t}\n\t:host /deep/ .btn-info:hover {\n\t\tcolor: var(--info-font-color);\n\t\tbackground-color: var(--info-hover-color);\n\t\tborder-color: var(--info-hover-color);\n\t}\n\n\t:host /deep/ .btn-primary {\n\t\tcolor: var(--primary-font-color);\n\t\tbackground-color: var(--primary-color);\n\t\tborder-color: var(--primary-color);\n\t}\n\t:host /deep/ .btn-primary:focus, .btn-primary.focus {\n\t\tbox-shadow: var(--primary-shadow-color);\n\t}\n\t:host /deep/ .btn-primary:hover {\n\t\tcolor: var(--primary-font-color);\n\t\tbackground-color: var(--primary-hover-color);\n\t\tborder-color: var(--primary-hover-color);\n\t}\n\n\t:host /deep/ .btn-secondary {\n\t\tcolor: var(--secondary-font-color);\n\t\tbackground-color: var(--secondary-color);\n\t\tborder-color: var(--secondary-color);\n\t}\n\t:host /deep/ .btn-secondary:focus, .btn-secondary.focus {\n\t\tbox-shadow: var(--secondary-shadow-color);\n\t}\n\t:host /deep/ .btn-secondary:hover {\n\t\tcolor: var(--secondary-font-color);\n\t\tbackground-color: var(--secondary-hover-color);\n\t\tborder-color: var(--secondary-hover-color);\n\t}\n\t\n \t@media print {\n\t \t.dontPrint * {\n\t\t \tdisplay: none !important;\n\t \t}\n\n\t\t.myDivToPrintCs {\n\t\t\tbackground-color: white;\n\t\t\theight: 100%;\n\t\t\twidth: 100%;\n\t\t\tfont-size: 12px;\n\t\t\tline-height: 12px;\n\t\t\tpage-break-after: avoid;\n\t\t\tdisplay: initial;\n\t\t}\n\n\t\t.removeOverflow {\n\t\t\toverflow-y: hidden !important; \n\t\t\theight: 100% !important;\n\t\t}\n \t}\n\n \t.hideThis {\n\t\tdisplay: none !important;\n\t}\n\n\t.navSidbar {\n\t\twidth: 0px;\n\t\tposition: fixed;\n\t\tz-index: 1;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tbackground-color: #343a40;\n\t\toverflow: hidden;\n\t\ttransition: 0.5s;\n\t\tpadding-top: 0px;\n\t}\n\n\t.navSidbar a {\n\t\tpadding: 8px 8px 8px 32px;\n\t\ttext-decoration: none;\n\t\tfont-size: 25px;\n\t\tcolor: #818181;\n\t\tdisplay: block;\n\t\ttransition: 0.3s;\n\t}\n\n\t.navSidbar a:hover {\n\t\tcolor: #f1f1f1;\n\t}\n\n\t.openbtn {\n\t\tbackground-color: #343a40;\n\t\tborder: none;\n\t\tcolor: #fff;\n\t\tpadding: 5px 20px;\n\t\tfont-size: 18px;\n\t\tright: 0;\n\t\ttop: 0px;\n\t\tposition: absolute;\n\t\tz-index: 999999;\n\t\tcursor: pointer;\n\t\tfloat: right;\n\t\theight: 100%;\n\t}\n\n\t.openbtn span {\n\t\tfont-size: 20px;\n\t\tdisplay: block;\n\t\theight: auto;\n\t\twidth: auto;\n\t\ttext-align: center;\n\t\tposition: absolute;\n\t\tleft: 50%;\n\t\ttop: 50%;\n\t\ttransform: translate(-50%, -50%) rotate(-90deg);\n\t\tmargin-top: -55px;\n\t\tletter-spacing: 30px;\n\t}\n\t#main_cont {\n\t\ttransition: padding-left .5s;\n\t}\n\n\t.sid_inr {\n\t\tpadding-left: 25px;\n\t}\n\n\t@keyframes shimmer {\n 0%, 50% {\n background-position: 120% 0;\n }\n 100% {\n background-position: -80% 0;\n }\n }\n\n .shimmer::before {\n content: "";\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background: linear-gradient(\n -75deg,\n rgba(255, 255, 255, 0) 40%, \n rgba(255, 255, 255, 0.7) 50%, \n rgba(255, 255, 255, 0) 60%\n );\n background-size: 200% 100%;\n animation: shimmer 5s linear infinite;\n animation-fill-mode: forwards;\n z-index: 11;\n }\n'],dependencies:[{kind:"directive",type:i1$3.RouterOutlet,selector:"router-outlet",inputs:["name"],outputs:["activate","deactivate","attach","detach"],exportAs:["outlet"]},{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"component",type:NavbarMainComponent,selector:"navbar-main",inputs:["logo","navTabs","fontSize","publicProgram","digitalSign"]},{kind:"component",type:NavbarModuleComponent,selector:"navbar-module",inputs:["sideNavHeight","sideNavWidth"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:CoreComponent,decorators:[{type:Component,args:[{providers:[ProviderService],selector:"resolveio-client-lib-core",template:'<style>\n\t:root {\n --warning-color: #ffc107;\n --warning-font-color: #000000;\n --warning-hover-color: #e0a800;\n --warning-shadow-color: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);\n --success-color: #28a745;\n --success-font-color: #ffffff;\n --success-hover-color: #218838;\n --success-shadow-color: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);\n --danger-color: #dc3545;\n --danger-font-color: #ffffff;\n --danger-hover-color: #c82333;\n --danger-shadow-color: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);\n --info-color: #17a2b8;\n --info-font-color: #ffffff;\n --info-hover-color: #138496;\n --info-shadow-color: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);\n --primary-color: #007bff;\n --primary-font-color: #ffffff;\n --primary-hover-color: #0069d9;\n --primary-shadow-color: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);\n --secondary-color: #868e96;\n --secondary-font-color: #ffffff;\n --secondary-hover-color: #5a6268;\n --secondary-shadow-color: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);\n }\n\n\t:host /deep/ .btn-warning {\n\t\tcolor: var(--warning-font-color);\n\t\tbackground-color: var(--warning-color);\n\t\tborder-color: var(--warning-color);\n\t}\n\t:host /deep/ .btn-warning:focus, .btn-warning.focus {\n\t\tbox-shadow: var(--warning-shadow-color);\n\t}\n\t:host /deep/ .btn-warning:hover {\n\t\tcolor: var(--warning-font-color);\n\t\tbackground-color: var(--warning-hover-color);\n\t\tborder-color: var(--warning-hover-color);\n\t}\n\n\t:host /deep/ .btn-success {\n\t\tcolor: var(--success-font-color);\n\t\tbackground-color: var(--success-color);\n\t\tborder-color: var(--success-color);\n\t}\n\t:host /deep/ .btn-success:focus, .btn-success.focus {\n\t\tbox-shadow: var(--success-shadow-color);\n\t}\n\t:host /deep/ .btn-success:hover {\n\t\tcolor: var(--success-font-color);\n\t\tbackground-color: var(--success-hover-color);\n\t\tborder-color: var(--success-hover-color);\n\t}\n\n\t:host /deep/ .btn-danger {\n\t\tcolor: var(--danger-font-color);\n\t\tbackground-color: var(--danger-color);\n\t\tborder-color: var(--danger-color);\n\t}\n\t:host /deep/ .btn-danger:focus, .btn-danger.focus {\n\t\tbox-shadow: var(--danger-shadow-color);\n\t}\n\t:host /deep/ .btn-danger:hover {\n\t\tcolor: var(--danger-font-color);\n\t\tbackground-color: var(--danger-hover-color);\n\t\tborder-color: var(--danger-hover-color);\n\t}\n\n\t:host /deep/ .btn-info {\n\t\tcolor: var(--info-font-color);\n\t\tbackground-color: var(--info-color);\n\t\tborder-color: var(--info-color);\n\t}\n\t:host /deep/ .btn-info:focus, .btn-info.focus {\n\t\tbox-shadow: var(--info-shadow-color);\n\t}\n\t:host /deep/ .btn-info:hover {\n\t\tcolor: var(--info-font-color);\n\t\tbackground-color: var(--info-hover-color);\n\t\tborder-color: var(--info-hover-color);\n\t}\n\n\t:host /deep/ .btn-primary {\n\t\tcolor: var(--primary-font-color);\n\t\tbackground-color: var(--primary-color);\n\t\tborder-color: var(--primary-color);\n\t}\n\t:host /deep/ .btn-primary:focus, .btn-primary.focus {\n\t\tbox-shadow: var(--primary-shadow-color);\n\t}\n\t:host /deep/ .btn-primary:hover {\n\t\tcolor: var(--primary-font-color);\n\t\tbackground-color: var(--primary-hover-color);\n\t\tborder-color: var(--primary-hover-color);\n\t}\n\n\t:host /deep/ .btn-secondary {\n\t\tcolor: var(--secondary-font-color);\n\t\tbackground-color: var(--secondary-color);\n\t\tborder-color: var(--secondary-color);\n\t}\n\t:host /deep/ .btn-secondary:focus, .btn-secondary.focus {\n\t\tbox-shadow: var(--secondary-shadow-color);\n\t}\n\t:host /deep/ .btn-secondary:hover {\n\t\tcolor: var(--secondary-font-color);\n\t\tbackground-color: var(--secondary-hover-color);\n\t\tborder-color: var(--secondary-hover-color);\n\t}\n\t\n \t@media print {\n\t \t.dontPrint * {\n\t\t \tdisplay: none !important;\n\t \t}\n\n\t\t.myDivToPrintCs {\n\t\t\tbackground-color: white;\n\t\t\theight: 100%;\n\t\t\twidth: 100%;\n\t\t\tfont-size: 12px;\n\t\t\tline-height: 12px;\n\t\t\tpage-break-after: avoid;\n\t\t\tdisplay: initial;\n\t\t}\n\n\t\t.removeOverflow {\n\t\t\toverflow-y: hidden !important; \n\t\t\theight: 100% !important;\n\t\t}\n \t}\n\n \t.hideThis {\n\t\tdisplay: none !important;\n\t}\n\n\t.navSidbar {\n\t\twidth: 0px;\n\t\tposition: fixed;\n\t\tz-index: 1;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tbackground-color: #343a40;\n\t\toverflow: hidden;\n\t\ttransition: 0.5s;\n\t\tpadding-top: 0px;\n\t}\n\n\t.navSidbar a {\n\t\tpadding: 8px 8px 8px 32px;\n\t\ttext-decoration: none;\n\t\tfont-size: 25px;\n\t\tcolor: #818181;\n\t\tdisplay: block;\n\t\ttransition: 0.3s;\n\t}\n\n\t.navSidbar a:hover {\n\t\tcolor: #f1f1f1;\n\t}\n\n\t.openbtn {\n\t\tbackground-color: #343a40;\n\t\tborder: none;\n\t\tcolor: #fff;\n\t\tpadding: 5px 20px;\n\t\tfont-size: 18px;\n\t\tright: 0;\n\t\ttop: 0px;\n\t\tposition: absolute;\n\t\tz-index: 999999;\n\t\tcursor: pointer;\n\t\tfloat: right;\n\t\theight: 100%;\n\t}\n\n\t.openbtn span {\n\t\tfont-size: 20px;\n\t\tdisplay: block;\n\t\theight: auto;\n\t\twidth: auto;\n\t\ttext-align: center;\n\t\tposition: absolute;\n\t\tleft: 50%;\n\t\ttop: 50%;\n\t\ttransform: translate(-50%, -50%) rotate(-90deg);\n\t\tmargin-top: -55px;\n\t\tletter-spacing: 30px;\n\t}\n\t#main_cont {\n\t\ttransition: padding-left .5s;\n\t}\n\n\t.sid_inr {\n\t\tpadding-left: 25px;\n\t}\n\n\t@keyframes shimmer {\n 0%, 50% {\n background-position: 120% 0;\n }\n 100% {\n background-position: -80% 0;\n }\n }\n\n .shimmer::before {\n content: "";\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background: linear-gradient(\n -75deg,\n rgba(255, 255, 255, 0) 40%, \n rgba(255, 255, 255, 0.7) 50%, \n rgba(255, 255, 255, 0) 60%\n );\n background-size: 200% 100%;\n animation: shimmer 5s linear infinite;\n animation-fill-mode: forwards;\n z-index: 11;\n }\n</style>\n<div *ngIf="isDevice">\n\t<link rel="stylesheet" type="text/css" href="/assets/css/tablet.css">\n</div>\n<div #shell>\n\t<div *ngIf="user && (!isConnected || isOffline) && !publicProgram && !digitalSign">\n\t\t<div style="height: 40px; text-align: center; vertical-align: middle; background-color: red; color: white;">\n\t\t\t<div style="padding-top: 9px; padding-bottom: 9px;" class="shimmer">*** OFFLINE MODE ***</div>\n\t\t</div>\n\t</div>\n\t<div *ngIf="!user && (!isConnected || isOffline) && !publicProgram && !digitalSign">\n\t\t<div style="height: 40px; text-align: center; vertical-align: middle; background-color: red; color: white;">\n\t\t\t<div style="padding-top: 9px; padding-bottom: 9px;" class="shimmer">*** PLEASE LOGIN ***</div>\n\t\t</div>\n\t</div>\n\t<div *ngIf="status">\n\t\t<div style="height: 40px; text-align: center; vertical-align: middle; background-color: red; color: white;">\n\t\t\t<div style="padding-top: 9px; padding-bottom: 9px;" class="shimmer">*** {{ status.message }} ***</div>\n\t\t</div>\n\t</div>\n\t<div *ngIf="fullScreen">\n\t\t<router-outlet name="jobboardfsoutlet"></router-outlet>\n\t</div>\n\t<div [ngClass]="[\'container-fluid\', fullScreen ? \'hideThis\' : \'\']" [style.font-size.px]="fontSize">\n\t\t<div class="dontPrint">\n\t\t\t<navbar-main style="width: 100%" tourAnchor="navBarMain" #navBarMain [logo]="logo" [navTabs]="navTabs" [fontSize]="fontSize" [publicProgram]="publicProgram || digitalSign" [digitalSign]="digitalSign"></navbar-main>\n\t\t</div>\n\t\t<ng-template ngbModalContainer></ng-template>\n\t\t<div class="row">\n\t\t\t<div id="navSid" *ngIf="showNavbarModule && !digitalSign" [ngClass]="[\'dontPrint\', windowSizeWidth > 1200 && collapsableMenu ? \'navSidbar\' : \'col-xl-1\']" [style.width]="windowSizeWidth > 1200 && collapsableMenu ? 40 + \'px\' : 100 + \'%\'" [style.margin-top.px]="windowSizeWidth > 1200 && collapsableMenu ? navbarMainHeight + statusHeight + connectedHeight : 0" >\n\t\t\t\t<div class="openbtn" *ngIf="windowSizeWidth > 1200 && collapsableMenu" (mouseenter)="openNav()"><span>MENU</span></div>\n\t\t\t\t<div [ngClass]="windowSizeWidth > 1200 && collapsableMenu ? \'sid_inr\' : \'\'">\n\t\t\t\t\t<navbar-module #navBarModule tourAnchor="navBarModule" [sideNavWidth]="windowSizeWidth > 1200 && collapsableMenu ? \'90%\' : \'auto\'" [sideNavHeight]="windowSizeWidth > 1200 && collapsableMenu ? windowSizeHeight - navbarMainHeight - statusHeight - connectedHeight - (showNavigationMenu ? (54 + getNavbarModuleHeight()) : 0) - ((!isDevice || (isDevice && showNavigationMenu)) ? 20 : 0) : \'\'"></navbar-module>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div [id]="windowSizeWidth > 1200 ? \'main_cont\' : \'main_cont_mobile\'" [ngClass]="[windowSizeWidth > 1200 && collapsableMenu ? \'col-xl-12\' : \'col-xl-11\']" [style.padding-left]="windowSizeWidth > 1200 && collapsableMenu && showNavbarModule ? 45 + \'px\' : null" [style.padding]="((isDevice && windowSizeWidth <= 1200) || !showNavbarModule) ? 0 + \'px\' : null" (mouseenter)="windowSizeWidth > 1200 && collapsableMenu && showNavbarModule ? closeNav() : null" style="padding-right: 5px">\n\t\t\t\t<div style="-webkit-overflow-scrolling: touch" [style.overflow-y]="(isDevice && !showNavigationMenu) ? \'initial\' : \'scroll\'" [style.height.px]="windowSizeHeight - ((isDevice && windowSizeWidth <= 1200) && !showNavigationMenu ? (getNavbarModuleHeight() > 100 ? 0 : getNavbarModuleHeight()) : 0) - navbarMainHeight - (!publicProgram && !digitalSign ? statusHeight : 0) - (!publicProgram && !digitalSign ? connectedHeight : 0) - (isDevice && showNavigationMenu ? (54 + (getNavbarModuleHeight() > 100 ? 0 : getNavbarModuleHeight())) : 0) - ((!isDevice || (isDevice && showNavigationMenu)) ? 20 : 0)" class="removeOverflow">\n\t\t\t\t\t<router-outlet></router-outlet>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div *ngIf="isDevice && showNavigationMenu" style="height: 54px; background-color: lightgray; margin-left: -15px; margin-right: -15px;" class="dontPrint">\n\t\t\t<table style="width: 100%">\n\t\t\t\t<tr>\n\t\t\t\t\t<td style="text-align: center">\n\t\t\t\t\t\t<button type="button" class="btn" style="background-color: lightgray" (click)="onPushBackButton()"><i class="fa fa-arrow-left" style="color: black; font-size: 20px"></i></button>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td style="text-align: center">\n\t\t\t\t\t\t<button type="button" class="btn" style="background-color: lightgray" (click)="onPushReloadButton()"><i class="fa fa-refresh" style="color: black; font-size: 20px"></i></button>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td style="text-align: center">\n\t\t\t\t\t\t<button type="button" class="btn" style="background-color: lightgray" (click)="onPushForwardButton()"><i class="fa fa-arrow-right" style="color: black; font-size: 20px"></i></button>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</div>\n\t\t<div *ngIf="!isDevice" style="text-align: center; height: 20px; font-style: italic; font-weight: bold; background-color: lightgray; margin-left: -15px; margin-right: -15px;">© {{year}} RESOLVEIO ALL RIGHTS RESERVED</div>\n\t</div>\n</div>\n'}]}],ctorParameters:function(){return[{type:i1$5.DeviceDetectorService},{type:DialogService},{type:ResizeService},{type:ProviderService},{type:OfflineManagerService},{type:i1$2.LocalStorageService},{type:AuthService},{type:AuthPermissionService}]},propDecorators:{environment:[{type:Input,args:["environment"]}],logo:[{type:Input,args:["logo"]}],navTabs:[{type:Input,args:["navTabs"]}],userHasPhoneNumber:[{type:Input,args:["userHasPhoneNumber"]}],client:[{type:Input,args:["client"]}],showNavbarModule:[{type:Input,args:["showNavbarModule"]}],publicProgram:[{type:Input,args:["publicProgram"]}],el_navBarMain:[{type:ViewChild,args:["navBarMain",{read:ElementRef,static:!0}]}],el_navBarModule:[{type:ViewChild,args:["navBarModule",{read:ElementRef,static:!0}]}]}});class HtmlDiffViewerComponent{constructor(){this.payloadStr="",this.leftContent="",this.rightContent="",this.diffHtml=""}ngOnInit(){let t=JSON.parse(this.payloadStr,dateReviver);t[0]&&t[2]&&(this.leftContent=t[0],this.rightContent=t[2],this.leftContent&&"string"==typeof this.leftContent&&this.rightContent&&"string"==typeof this.rightContent&&this.generateDiff())}generateDiff(){const t=Diff.createPatch("Comparison",this.leftContent,this.rightContent);this.diffHtml=Diff2Html.html(t,{drawFileList:!1,matching:"lines"})}}HtmlDiffViewerComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:HtmlDiffViewerComponent,deps:[],target:i0.ɵɵFactoryTarget.Component}),HtmlDiffViewerComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:HtmlDiffViewerComponent,selector:"html-diff-viewer",inputs:{payloadStr:"payloadStr"},ngImport:i0,template:'\n\t\t<div>\n\t\t\t<h2>Diff Viewer</h2>\n\t\t\t<div>\n\t\t\t\t<textarea [(ngModel)]="leftContent" placeholder="Left side content"></textarea>\n\t\t\t\t<textarea [(ngModel)]="rightContent" placeholder="Right side content"></textarea>\n\t\t\t</div>\n\t\t\t<div [innerHTML]="diffHtml"></div>\n\t\t</div>\n\t',isInline:!0,styles:["textarea{width:48%;height:200px;margin-right:1%;vertical-align:top}button{margin:10px 0}\n"],dependencies:[{kind:"directive",type:i2.DefaultValueAccessor,selector:"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]"},{kind:"directive",type:i2.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i2.NgModel,selector:"[ngModel]:not([formControlName]):not([formControl])",inputs:["name","disabled","ngModel","ngModelOptions"],outputs:["ngModelChange"],exportAs:["ngModel"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:HtmlDiffViewerComponent,decorators:[{type:Component,args:[{selector:"html-diff-viewer",template:'\n\t\t<div>\n\t\t\t<h2>Diff Viewer</h2>\n\t\t\t<div>\n\t\t\t\t<textarea [(ngModel)]="leftContent" placeholder="Left side content"></textarea>\n\t\t\t\t<textarea [(ngModel)]="rightContent" placeholder="Right side content"></textarea>\n\t\t\t</div>\n\t\t\t<div [innerHTML]="diffHtml"></div>\n\t\t</div>\n\t',styles:["textarea{width:48%;height:200px;margin-right:1%;vertical-align:top}button{margin:10px 0}\n"]}]}],propDecorators:{payloadStr:[{type:Input}]}});class JsonParsePipe{transform(t){let e=null,n=!1;try{e=JSON.parse(t,dateReviver)}catch(t){n=!0}return n?t:JSON.stringify(e,null,2)}}JsonParsePipe.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:JsonParsePipe,deps:[],target:i0.ɵɵFactoryTarget.Pipe}),JsonParsePipe.ɵpipe=i0.ɵɵngDeclarePipe({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:JsonParsePipe,name:"jsonParse",pure:!1}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:JsonParsePipe,decorators:[{type:Pipe,args:[{name:"jsonParse",pure:!1}]}]});class LoggerComponent extends BaseComponent{constructor(t,e,n){super(t),this._services=t,this._ds=e,this._cd=n,this.subscription$=[],this.logs=[],this.entries_per_page=25,this.page_num=1,this.log_cnt=0,this.user=null,this.users=[],this.selectedTypes=[],this.collection="",this.method="",this.route="",this.id_document=""}ngOnInit(){this._services._account.getUser().roles.super_admin||this._services._router.navigateByUrl("/home"),this.subscription$.push(this._services._socket.subscribe("allUsers").subscribe((t=>{this.users=t,this._cd.detectChanges()})));let t=new Date;t.setHours(0,0,0,0);let e=new Date(moment$1(t).subtract(10,"days").toDate());this.dateStartElem={year:e.getFullYear(),month:e.getMonth()+1,day:e.getDate()},this.timeStartElem={hour:0,minute:0,second:0};let n=new Date;n.setHours(23,59,59,999);let o=n;this.dateEndElem={year:o.getFullYear(),month:o.getMonth()+1,day:o.getDate()},this.timeEndElem={hour:23,minute:59,second:59},this.getLogData()}ngOnDestroy(){this.subscription$.forEach((t=>{t.unsubscribe()}))}getLogData(){this.dateStart=new Date(this.dateStartElem.year,this.dateStartElem.month-1,this.dateStartElem.day,this.timeStartElem.hour,this.timeStartElem.minute,this.timeStartElem.second,0),this.dateEnd=new Date(this.dateEndElem.year,this.dateEndElem.month-1,this.dateEndElem.day,this.timeEndElem.hour,this.timeEndElem.minute,this.timeEndElem.second,999);let t={$and:[{createdAt:{$gte:this.dateStart}},{createdAt:{$lte:this.dateEnd}}]};if(this.selectedTypes.length){if(t.$and.push({type:{$in:this.selectedTypes}}),this.collection)if(this.collection.includes(",")){let e=this.collection.split(",").map((t=>t.trim())).filter((t=>!t.startsWith("!")));e.length&&t.$and.push({collection:{$in:e}}),this.collection.split(",").map((t=>t.trim())).filter((t=>t.startsWith("!"))).forEach((e=>{t.$and.push({collection:{$ne:e.replace("!","")}})}))}else this.collection.startsWith("!")?t.$and.push({collection:{$ne:this.collection.replace("!","").trim()}}):t.$and.push({collection:this.collection.trim()});if(this.method)if(this.method.includes(",")){let e=this.method.split(",").map((t=>t.trim())).filter((t=>!t.startsWith("!")));e.length&&t.$and.push({method:{$in:e}}),this.method.split(",").map((t=>t.trim())).filter((t=>t.startsWith("!"))).forEach((e=>{t.$and.push({method:{$ne:e.replace("!","")}})}))}else this.method.startsWith("!")?t.$and.push({method:{$ne:this.method.replace("!","").trim()}}):t.$and.push({method:this.method.trim()});if(this.route)if(this.route.includes(",")){let e=this.route.split(",").map((t=>t.trim())).filter((t=>!t.startsWith("!")));e.length&&t.$and.push({route:{$in:e}}),this.route.split(",").map((t=>t.trim())).filter((t=>t.startsWith("!"))).forEach((e=>{t.$and.push({route:{$ne:e.replace("!","")}})}))}else this.route.startsWith("!")?t.$and.push({route:{$ne:this.route.replace("!","").trim()}}):t.$and.push({route:this.route.trim()});if(this.id_document)if(this.id_document.includes(",")){let e=this.id_document.split(",").map((t=>t.trim())).filter((t=>!t.startsWith("!")));e.length&&t.$and.push({id_document:{$in:e}}),this.id_document.split(",").map((t=>t.trim())).filter((t=>t.startsWith("!"))).forEach((e=>{t.$and.push({id_document:{$ne:e.replace("!","")}})}))}else this.id_document.startsWith("!")?t.$and.push({id_document:{$ne:this.id_document.replace("!","").trim()}}):t.$and.push({id_document:this.id_document.trim()});this.user&&t.$and.push({user:this.user}),"string"==typeof this.entries_per_page&&(this.entries_per_page=parseInt(this.entries_per_page)),this._services._socket.call("findWithOptions","logs",t,{sort:{createdAt:-1},limit:this.entries_per_page,skip:this.entries_per_page*(this.page_num-1)},((t,e)=>{this.logs=e,this._cd.detectChanges()})),this._services._socket.call("countCollectionWithQuery","logs",t,((t,e)=>{this.log_cnt=e,this._cd.detectChanges()})),this._cd.detectChanges()}}selectType(t){"all"!==t?this.selectedTypes.includes(t)?this.selectedTypes.splice(this.selectedTypes.indexOf(t),1):this.selectedTypes.push(t):7===this.selectedTypes.length?this.selectedTypes=[]:this.selectedTypes=["error","document","query","queryResponse","client-request","client-response","callMethodInternal"],this.logs=[],this.selectedTypes.length&&this.getLogData()}icon(t){return"error"===t?"danger":"document"===t?"info":"client-response"===t?"success":"client-request"===t?"primary":"secondary"}removeAllLogs(){this._ds.confirm("Are you sure you want to delete all logs?").then((()=>{this._services._socket.call("removeAllDocuments","logs")}),(()=>{}))}}LoggerComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:LoggerComponent,deps:[{token:ProviderService},{token:DialogService},{token:i0.ChangeDetectorRef}],target:i0.ɵɵFactoryTarget.Component}),LoggerComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:LoggerComponent,selector:"ng-component",providers:[ProviderService],usesInheritance:!0,ngImport:i0,template:'<style>\n\t.label-accordion {\n\t\tfont-weight: bold;\n\t\tcolor: black;\n\t\tmargin-bottom: 0px;\n\t}\n\tngb-accordion {\n\t\twidth: 100%;\n\t}\n\t.hoverThis:hover {\n\t\tbackground: lightblue;\n\t\tcursor: pointer;\n\t}\n\t\n\t.fa-plus {\n\t\tcolor: black;\n\t}\n\t.fa-minus {\n\t\tcolor: black;\n\t}\n\t\n\t.selected {\n\t\tbackground-color: orange;\n\t}\n\t.selected:hover {\n\t\tcursor: pointer;\n\t}\n\t.card {\n\t\twidth: 100%;\n\t}\n</style>\n\n<div class="row">\n\t<div class="col-lg-12">\n\t\t<div class="card">\n\t\t\t<div class="card-header"><b>Filters</b></div>\n\t\t\t<div class="card-body">\n\t\t\t\t<div class="row">\n\t\t\t\t\t<div class="col-lg-12">\n\t\t\t\t\t\t<responsive-button-group collapseSize="900">\n\t\t\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedTypes.includes(\'error\') && selectedTypes.includes(\'document\') && selectedTypes.includes(\'query\') && selectedTypes.includes(\'client-request\') && selectedTypes.includes(\'client-response\') ? \'btn-success\' : \'btn-warning\']" (click)="selectType(\'all\')">All</button>\n\t\t\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedTypes.includes(\'error\') ? \'btn-success\' : \'btn-warning\']" (click)="selectType(\'error\')">Errors</button>\n\t\t\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedTypes.includes(\'document\') ? \'btn-success\' : \'btn-warning\']" (click)="selectType(\'document\')">Document</button>\n\t\t\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedTypes.includes(\'query\') ? \'btn-success\' : \'btn-warning\']" (click)="selectType(\'query\')">Query</button>\n\t\t\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedTypes.includes(\'queryResponse\') ? \'btn-success\' : \'btn-warning\']" (click)="selectType(\'queryResponse\')">Query Response</button>\n\t\t\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedTypes.includes(\'client-request\') ? \'btn-success\' : \'btn-warning\']" (click)="selectType(\'client-request\')">Client Requests</button>\n\t\t\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedTypes.includes(\'client-response\') ? \'btn-success\' : \'btn-warning\']" (click)="selectType(\'client-response\')">Client Responses</button>\n\t\t\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedTypes.includes(\'callMethodInternal\') ? \'btn-success\' : \'btn-warning\']" (click)="selectType(\'callMethodInternal\')">Call Method Internal</button>\n\t\t\t\t\t\t\t<button type="button" class="btn btn-danger" (click)="removeAllLogs()">REMOVE ALL LOGS</button>\n\t\t\t\t\t\t</responsive-button-group>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="row" style="margin-top: 10px;">\n\t\t\t\t\t<div class="col-lg-2">\n\t\t\t\t\t\t<label class="form-control-label">User</label>\n\t\t\t\t\t\t<ng-select [(ngModel)]="user" (change)="getLogData()" placeholder="Select User">\n\t\t\t\t\t\t\t<ng-option *ngFor="let user of users" [value]="user.fullname">{{user.fullname}}</ng-option>\n\t\t\t\t\t\t</ng-select>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-lg-2">\n\t\t\t\t\t\t<label class="form-control-label">Collection</label>\n\t\t\t\t\t\t<input class="form-control" [(ngModel)]="collection" (change)="getLogData()" placeholder="Input Colls Sep By , & ! for !Not">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-lg-2">\n\t\t\t\t\t\t<label class="form-control-label">Method</label>\n\t\t\t\t\t\t<input class="form-control" [(ngModel)]="method" (change)="getLogData()" placeholder="Input Methods Sep By , & ! for !Not">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-lg-2">\n\t\t\t\t\t\t<label class="form-control-label">Route</label>\n\t\t\t\t\t\t<input class="form-control" [(ngModel)]="route" (change)="getLogData()" placeholder="Input Routes Sep By , & ! for !Not">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-lg-2">\n\t\t\t\t\t\t<label class="form-control-label">Document</label>\n\t\t\t\t\t\t<input class="form-control" [(ngModel)]="id_document" (change)="getLogData()" placeholder="Input Ids Sep By , & ! for !Not">\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="row" style="margin-top: 10px;">\n\t\t\t\t\t<div class="col-lg-3">\n\t\t\t\t\t\t<label class="form-control-label">Date Start</label>\n\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t<input class="form-control" [(ngModel)]="dateStartElem" ngbDatepicker #dStart="ngbDatepicker" (change)="getLogData()">\n\t\t\t\t\t\t\t<div class="input-group-append" (click)="dStart.toggle()">\n\t\t\t\t\t\t\t\t<div class="input-group-text">\n\t\t\t\t\t\t\t\t\t<i class="fa fa-calendar" aria-hidden="true"></i>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-lg-3">\n\t\t\t\t\t\t<label class="form-control-label">Time Start</label>\n\t\t\t\t\t\t<ngb-timepicker [(ngModel)]="timeStartElem" meridian="ON" [seconds]="true" (change)="getLogData()"></ngb-timepicker>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-lg-3">\n\t\t\t\t\t\t<label class="form-control-label">Date End</label>\n\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t<input class="form-control" [(ngModel)]="dateEndElem" ngbDatepicker #dEnd="ngbDatepicker" (change)="getLogData()">\n\t\t\t\t\t\t\t<div class="input-group-append" (click)="dEnd.toggle()">\n\t\t\t\t\t\t\t\t<div class="input-group-text">\n\t\t\t\t\t\t\t\t\t<i class="fa fa-calendar" aria-hidden="true"></i>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-lg-3">\n\t\t\t\t\t\t<label class="form-control-label">Time End</label><br>\n\t\t\t\t\t\t<ngb-timepicker [(ngModel)]="timeEndElem" meridian="ON" [seconds]="true" (change)="getLogData()"></ngb-timepicker>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n<div class="row">\n\t<div class="col-lg-8">\n\t\t<label class="form-control-label">Entries Per Page</label>\n\t\t<select class="form-control" [(ngModel)]="entries_per_page" (change)="getLogData()">\n\t\t\t<option value="10">10</option>\n\t\t\t<option value="25">25</option>\n\t\t\t<option value="50">50</option>\n\t\t\t<option value="100">100</option>\n\t\t\t<option value="250">250</option>\n\t\t\t<option value="500">500</option>\n\t\t\t<option value="1000">1000</option>\n\t\t\t<option value="5000">5000</option>\n\t\t</select>\n\t</div>\n\t<div class="col-lg-4">\n\t\t<ngb-pagination class="float-right"\n\t\tboundaryLinks="true"\n\t\t[collectionSize]="log_cnt"\n\t\tdirectionLinks="true"\n\t\tellipses="false"\n\t\t[(page)]="page_num"\n\t\tmaxSize="6"\n\t\t[pageSize]="entries_per_page"\n\t\trotate="true"\n\t\t(pageChange)="getLogData()"\n\t\t>\n\t\t</ngb-pagination>\n\t</div>\n</div>\n<div class="row" style="margin-top: 10px">\n\t<ngb-accordion #acc="ngbAccordion" activeIds="">\n\t\t<ngb-panel *ngFor="let log of logs; let i = index" [id]="\'log_\' + i">\n\t\t\t<ng-template ngbPanelTitle>\n\t\t\t\t<div> \n\t\t\t\t\t<label class="label-accordion" style="width: 90%; height: 22px">\n\t\t\t\t\t\t<strong class="pull-left">Type: {{ log.type }}{{log.method ? \' - Method: \' + log.method : \'\' }}{{log.collection ? \' - Collection: \' + log.collection : \'\' }}{{log.user ? \' - User: \' + log.user : \'\' }}{{log.route ? \' - Route: \' + log.route : \'\' }}{{log.id_document ? \' - id_document: \' + log.id_document : \'\' }}{{log.messageId ? \' - messageId: \' + log.messageId : \'\' }}</strong>\n\t\t\t\t\t\t<p class="pull-right">{{ log.createdAt | date : \'medium\' }}</p>\n\t\t\t\t\t</label>\n\t\t\t\t\t<i *ngIf="!acc.activeIds.includes(\'log_\' + i)" class="fa fa-plus float-end" aria-hidden="true"></i>\n\t\t\t\t\t<i *ngIf="acc.activeIds.includes(\'log_\' + i)" class="fa fa-minus float-end" aria-hidden="true"></i>\n\t\t\t\t</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template ngbPanelContent>\n\t\t\t\t<div *ngIf="log.payload">\n\t\t\t\t\t<html-diff-viewer></html-diff-viewer>\n\t\t\t\t\t<pre>{{ log.payload | jsonParse }}</pre>\n\t\t\t\t</div>\n\t\t\t\t<div *ngIf="!log.payload">\n\t\t\t\t\tNo Data\n\t\t\t\t</div>\n\t\t\t</ng-template>\n\t\t</ngb-panel>\n\t</ngb-accordion>\n</div>\n<div class="row" style="margin-top: 10px">\n\t<div class="col-lg-4">\n\t\t<div class="row"> \n\t\t\t<div class="col-lg-8">\n\t\t\t\t<label class="form-control-label">Entries Per Page</label>\n\t\t\t\t<select class="form-control" [(ngModel)]="entries_per_page" (change)="getLogData()">\n\t\t\t\t\t<option value="10">10</option>\n\t\t\t\t\t<option value="25">25</option>\n\t\t\t\t\t<option value="50">50</option>\n\t\t\t\t\t<option value="100">100</option>\n\t\t\t\t\t<option value="250">250</option>\n\t\t\t\t\t<option value="500">500</option>\n\t\t\t\t\t<option value="1000">1000</option>\n\t\t\t\t\t<option value="5000">5000</option>\n\t\t\t\t</select>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div class="col-lg-8">\n\t\t<ngb-pagination class="float-right"\n\t\tboundaryLinks="true"\n\t\t[collectionSize]="log_cnt"\n\t\tdirectionLinks="true"\n\t\tellipses="false"\n\t\t[(page)]="page_num"\n\t\tmaxSize="6"\n\t\t[pageSize]="entries_per_page"\n\t\trotate="true"\n\t\t(pageChange)="getLogData()"\n\t\t>\n\t\t</ngb-pagination>\n\t</div>\n</div>',styles:["\n\t.label-accordion {\n\t\tfont-weight: bold;\n\t\tcolor: black;\n\t\tmargin-bottom: 0px;\n\t}\n\tngb-accordion {\n\t\twidth: 100%;\n\t}\n\t.hoverThis:hover {\n\t\tbackground: lightblue;\n\t\tcursor: pointer;\n\t}\n\t\n\t.fa-plus {\n\t\tcolor: black;\n\t}\n\t.fa-minus {\n\t\tcolor: black;\n\t}\n\t\n\t.selected {\n\t\tbackground-color: orange;\n\t}\n\t.selected:hover {\n\t\tcursor: pointer;\n\t}\n\t.card {\n\t\twidth: 100%;\n\t}\n"],dependencies:[{kind:"directive",type:i2.NgSelectOption,selector:"option",inputs:["ngValue","value"]},{kind:"directive",type:i2.ɵNgSelectMultipleOption,selector:"option",inputs:["ngValue","value"]},{kind:"directive",type:i2.DefaultValueAccessor,selector:"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]"},{kind:"directive",type:i2.SelectControlValueAccessor,selector:"select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]",inputs:["compareWith"]},{kind:"directive",type:i2.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i2.NgModel,selector:"[ngModel]:not([formControlName]):not([formControl])",inputs:["name","disabled","ngModel","ngModelOptions"],outputs:["ngModelChange"],exportAs:["ngModel"]},{kind:"component",type:i1$4.NgbAccordion,selector:"ngb-accordion",inputs:["animation","activeIds","closeOthers","destroyOnHide","type"],outputs:["panelChange","shown","hidden"],exportAs:["ngbAccordion"]},{kind:"directive",type:i1$4.NgbPanel,selector:"ngb-panel",inputs:["disabled","id","title","type","cardClass"],outputs:["shown","hidden"]},{kind:"directive",type:i1$4.NgbPanelTitle,selector:"ng-template[ngbPanelTitle]"},{kind:"directive",type:i1$4.NgbPanelContent,selector:"ng-template[ngbPanelContent]"},{kind:"directive",type:i1$4.NgbInputDatepicker,selector:"input[ngbDatepicker]",inputs:["autoClose","datepickerClass","dayTemplate","dayTemplateData","displayMonths","firstDayOfWeek","footerTemplate","markDisabled","minDate","maxDate","navigation","outsideDays","placement","restoreFocus","showWeekNumbers","startDate","container","positionTarget","weekdays","disabled"],outputs:["dateSelect","navigate","closed"],exportAs:["ngbDatepicker"]},{kind:"component",type:i1$4.NgbPagination,selector:"ngb-pagination",inputs:["disabled","boundaryLinks","directionLinks","ellipses","rotate","collectionSize","maxSize","page","pageSize","size"],outputs:["pageChange"]},{kind:"component",type:i1$4.NgbTimepicker,selector:"ngb-timepicker",inputs:["meridian","spinners","seconds","hourStep","minuteStep","secondStep","readonlyInputs","size"]},{kind:"component",type:ResponsiveButtonGroupComponent,selector:"responsive-button-group",inputs:["collapseSize"]},{kind:"component",type:i4$1.NgSelectComponent,selector:"ng-select",inputs:["bindLabel","bindValue","markFirst","placeholder","notFoundText","typeToSearchText","addTagText","loadingText","clearAllText","appearance","dropdownPosition","appendTo","loading","closeOnSelect","hideSelected","selectOnTab","openOnEnter","maxSelectedItems","groupBy","groupValue","bufferAmount","virtualScroll","selectableGroup","selectableGroupAsModel","searchFn","trackByFn","clearOnBackspace","labelForId","inputAttrs","tabIndex","readonly","searchWhileComposing","minTermLength","editableSearchTerm","keyDownFn","typeahead","multiple","addTag","searchable","clearable","isOpen","items","compareWith","clearSearchOnAdd"],outputs:["blur","focus","change","open","close","search","clear","add","remove","scroll","scrollToEnd"]},{kind:"component",type:i4$1.NgOptionComponent,selector:"ng-option",inputs:["value","disabled"]},{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"component",type:HtmlDiffViewerComponent,selector:"html-diff-viewer",inputs:["payloadStr"]},{kind:"pipe",type:JsonParsePipe,name:"jsonParse"},{kind:"pipe",type:i7.DatePipe,name:"date"}],changeDetection:i0.ChangeDetectionStrategy.OnPush}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:LoggerComponent,decorators:[{type:Component,args:[{providers:[ProviderService],changeDetection:ChangeDetectionStrategy.OnPush,template:'<style>\n\t.label-accordion {\n\t\tfont-weight: bold;\n\t\tcolor: black;\n\t\tmargin-bottom: 0px;\n\t}\n\tngb-accordion {\n\t\twidth: 100%;\n\t}\n\t.hoverThis:hover {\n\t\tbackground: lightblue;\n\t\tcursor: pointer;\n\t}\n\t\n\t.fa-plus {\n\t\tcolor: black;\n\t}\n\t.fa-minus {\n\t\tcolor: black;\n\t}\n\t\n\t.selected {\n\t\tbackground-color: orange;\n\t}\n\t.selected:hover {\n\t\tcursor: pointer;\n\t}\n\t.card {\n\t\twidth: 100%;\n\t}\n</style>\n\n<div class="row">\n\t<div class="col-lg-12">\n\t\t<div class="card">\n\t\t\t<div class="card-header"><b>Filters</b></div>\n\t\t\t<div class="card-body">\n\t\t\t\t<div class="row">\n\t\t\t\t\t<div class="col-lg-12">\n\t\t\t\t\t\t<responsive-button-group collapseSize="900">\n\t\t\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedTypes.includes(\'error\') && selectedTypes.includes(\'document\') && selectedTypes.includes(\'query\') && selectedTypes.includes(\'client-request\') && selectedTypes.includes(\'client-response\') ? \'btn-success\' : \'btn-warning\']" (click)="selectType(\'all\')">All</button>\n\t\t\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedTypes.includes(\'error\') ? \'btn-success\' : \'btn-warning\']" (click)="selectType(\'error\')">Errors</button>\n\t\t\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedTypes.includes(\'document\') ? \'btn-success\' : \'btn-warning\']" (click)="selectType(\'document\')">Document</button>\n\t\t\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedTypes.includes(\'query\') ? \'btn-success\' : \'btn-warning\']" (click)="selectType(\'query\')">Query</button>\n\t\t\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedTypes.includes(\'queryResponse\') ? \'btn-success\' : \'btn-warning\']" (click)="selectType(\'queryResponse\')">Query Response</button>\n\t\t\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedTypes.includes(\'client-request\') ? \'btn-success\' : \'btn-warning\']" (click)="selectType(\'client-request\')">Client Requests</button>\n\t\t\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedTypes.includes(\'client-response\') ? \'btn-success\' : \'btn-warning\']" (click)="selectType(\'client-response\')">Client Responses</button>\n\t\t\t\t\t\t\t<button type="button" [ngClass]="[\'btn\', selectedTypes.includes(\'callMethodInternal\') ? \'btn-success\' : \'btn-warning\']" (click)="selectType(\'callMethodInternal\')">Call Method Internal</button>\n\t\t\t\t\t\t\t<button type="button" class="btn btn-danger" (click)="removeAllLogs()">REMOVE ALL LOGS</button>\n\t\t\t\t\t\t</responsive-button-group>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="row" style="margin-top: 10px;">\n\t\t\t\t\t<div class="col-lg-2">\n\t\t\t\t\t\t<label class="form-control-label">User</label>\n\t\t\t\t\t\t<ng-select [(ngModel)]="user" (change)="getLogData()" placeholder="Select User">\n\t\t\t\t\t\t\t<ng-option *ngFor="let user of users" [value]="user.fullname">{{user.fullname}}</ng-option>\n\t\t\t\t\t\t</ng-select>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-lg-2">\n\t\t\t\t\t\t<label class="form-control-label">Collection</label>\n\t\t\t\t\t\t<input class="form-control" [(ngModel)]="collection" (change)="getLogData()" placeholder="Input Colls Sep By , & ! for !Not">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-lg-2">\n\t\t\t\t\t\t<label class="form-control-label">Method</label>\n\t\t\t\t\t\t<input class="form-control" [(ngModel)]="method" (change)="getLogData()" placeholder="Input Methods Sep By , & ! for !Not">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-lg-2">\n\t\t\t\t\t\t<label class="form-control-label">Route</label>\n\t\t\t\t\t\t<input class="form-control" [(ngModel)]="route" (change)="getLogData()" placeholder="Input Routes Sep By , & ! for !Not">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-lg-2">\n\t\t\t\t\t\t<label class="form-control-label">Document</label>\n\t\t\t\t\t\t<input class="form-control" [(ngModel)]="id_document" (change)="getLogData()" placeholder="Input Ids Sep By , & ! for !Not">\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="row" style="margin-top: 10px;">\n\t\t\t\t\t<div class="col-lg-3">\n\t\t\t\t\t\t<label class="form-control-label">Date Start</label>\n\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t<input class="form-control" [(ngModel)]="dateStartElem" ngbDatepicker #dStart="ngbDatepicker" (change)="getLogData()">\n\t\t\t\t\t\t\t<div class="input-group-append" (click)="dStart.toggle()">\n\t\t\t\t\t\t\t\t<div class="input-group-text">\n\t\t\t\t\t\t\t\t\t<i class="fa fa-calendar" aria-hidden="true"></i>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-lg-3">\n\t\t\t\t\t\t<label class="form-control-label">Time Start</label>\n\t\t\t\t\t\t<ngb-timepicker [(ngModel)]="timeStartElem" meridian="ON" [seconds]="true" (change)="getLogData()"></ngb-timepicker>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-lg-3">\n\t\t\t\t\t\t<label class="form-control-label">Date End</label>\n\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t<input class="form-control" [(ngModel)]="dateEndElem" ngbDatepicker #dEnd="ngbDatepicker" (change)="getLogData()">\n\t\t\t\t\t\t\t<div class="input-group-append" (click)="dEnd.toggle()">\n\t\t\t\t\t\t\t\t<div class="input-group-text">\n\t\t\t\t\t\t\t\t\t<i class="fa fa-calendar" aria-hidden="true"></i>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-lg-3">\n\t\t\t\t\t\t<label class="form-control-label">Time End</label><br>\n\t\t\t\t\t\t<ngb-timepicker [(ngModel)]="timeEndElem" meridian="ON" [seconds]="true" (change)="getLogData()"></ngb-timepicker>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n<div class="row">\n\t<div class="col-lg-8">\n\t\t<label class="form-control-label">Entries Per Page</label>\n\t\t<select class="form-control" [(ngModel)]="entries_per_page" (change)="getLogData()">\n\t\t\t<option value="10">10</option>\n\t\t\t<option value="25">25</option>\n\t\t\t<option value="50">50</option>\n\t\t\t<option value="100">100</option>\n\t\t\t<option value="250">250</option>\n\t\t\t<option value="500">500</option>\n\t\t\t<option value="1000">1000</option>\n\t\t\t<option value="5000">5000</option>\n\t\t</select>\n\t</div>\n\t<div class="col-lg-4">\n\t\t<ngb-pagination class="float-right"\n\t\tboundaryLinks="true"\n\t\t[collectionSize]="log_cnt"\n\t\tdirectionLinks="true"\n\t\tellipses="false"\n\t\t[(page)]="page_num"\n\t\tmaxSize="6"\n\t\t[pageSize]="entries_per_page"\n\t\trotate="true"\n\t\t(pageChange)="getLogData()"\n\t\t>\n\t\t</ngb-pagination>\n\t</div>\n</div>\n<div class="row" style="margin-top: 10px">\n\t<ngb-accordion #acc="ngbAccordion" activeIds="">\n\t\t<ngb-panel *ngFor="let log of logs; let i = index" [id]="\'log_\' + i">\n\t\t\t<ng-template ngbPanelTitle>\n\t\t\t\t<div> \n\t\t\t\t\t<label class="label-accordion" style="width: 90%; height: 22px">\n\t\t\t\t\t\t<strong class="pull-left">Type: {{ log.type }}{{log.method ? \' - Method: \' + log.method : \'\' }}{{log.collection ? \' - Collection: \' + log.collection : \'\' }}{{log.user ? \' - User: \' + log.user : \'\' }}{{log.route ? \' - Route: \' + log.route : \'\' }}{{log.id_document ? \' - id_document: \' + log.id_document : \'\' }}{{log.messageId ? \' - messageId: \' + log.messageId : \'\' }}</strong>\n\t\t\t\t\t\t<p class="pull-right">{{ log.createdAt | date : \'medium\' }}</p>\n\t\t\t\t\t</label>\n\t\t\t\t\t<i *ngIf="!acc.activeIds.includes(\'log_\' + i)" class="fa fa-plus float-end" aria-hidden="true"></i>\n\t\t\t\t\t<i *ngIf="acc.activeIds.includes(\'log_\' + i)" class="fa fa-minus float-end" aria-hidden="true"></i>\n\t\t\t\t</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template ngbPanelContent>\n\t\t\t\t<div *ngIf="log.payload">\n\t\t\t\t\t<html-diff-viewer></html-diff-viewer>\n\t\t\t\t\t<pre>{{ log.payload | jsonParse }}</pre>\n\t\t\t\t</div>\n\t\t\t\t<div *ngIf="!log.payload">\n\t\t\t\t\tNo Data\n\t\t\t\t</div>\n\t\t\t</ng-template>\n\t\t</ngb-panel>\n\t</ngb-accordion>\n</div>\n<div class="row" style="margin-top: 10px">\n\t<div class="col-lg-4">\n\t\t<div class="row"> \n\t\t\t<div class="col-lg-8">\n\t\t\t\t<label class="form-control-label">Entries Per Page</label>\n\t\t\t\t<select class="form-control" [(ngModel)]="entries_per_page" (change)="getLogData()">\n\t\t\t\t\t<option value="10">10</option>\n\t\t\t\t\t<option value="25">25</option>\n\t\t\t\t\t<option value="50">50</option>\n\t\t\t\t\t<option value="100">100</option>\n\t\t\t\t\t<option value="250">250</option>\n\t\t\t\t\t<option value="500">500</option>\n\t\t\t\t\t<option value="1000">1000</option>\n\t\t\t\t\t<option value="5000">5000</option>\n\t\t\t\t</select>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div class="col-lg-8">\n\t\t<ngb-pagination class="float-right"\n\t\tboundaryLinks="true"\n\t\t[collectionSize]="log_cnt"\n\t\tdirectionLinks="true"\n\t\tellipses="false"\n\t\t[(page)]="page_num"\n\t\tmaxSize="6"\n\t\t[pageSize]="entries_per_page"\n\t\trotate="true"\n\t\t(pageChange)="getLogData()"\n\t\t>\n\t\t</ngb-pagination>\n\t</div>\n</div>'}]}],ctorParameters:function(){return[{type:ProviderService},{type:DialogService},{type:i0.ChangeDetectorRef}]}});class AuthGuard{constructor(t,e,n,o,r,i,a,s){this._router=t,this._auth=e,this._ds=n,this._account=o,this._app=r,this._offline=i,this._aps=a,this._alert=s}canActivate(t,e){return new Promise((t=>{this._account.isInitCompleted().then((()=>{let n=this._account.getUser();if(n||(n=this._offline.getUser(),n&&this._account.setUser(n)),n)if(n.active){let o=e.url.replace(/\/[a-f0-9]{24}$/,"").replace(/\?.+$/,""),r=o.replace(/([^\/]+\/?$)/,"");if(n.roles.super_admin)t(!0);else{let e=!1;for(;!e&&o.split("/").length>2;){if(!this.isLinkFakeRoute(o))if(n.roles.groups.some((t=>t.views.some((t=>t===o)))))e=!0,t(!0);else if(n.roles.groups.some((t=>t.views.some((t=>t.startsWith(r)&&!this.doesLinkHaveParameter(t)&&!this.isLinkFakeRoute(t)))))){let o=n.roles.groups.filter((t=>t.views.some((t=>t.startsWith(r)&&!this.doesLinkHaveParameter(t)&&!this.isLinkFakeRoute(t)))))[0].views.filter((t=>t.startsWith(r)&&!this.doesLinkHaveParameter(t)&&!this.isLinkFakeRoute(t)))[0];e=!0,this._router.navigateByUrl(o),t(!1)}r=r.replace(/([^\/]+\/?$)/,""),o=o.replace(/(\/[^\/]+$)/,"")}e||(this._router.navigateByUrl("/home"),t(!1))}}else this._router.navigateByUrl("/home"),t(!1);else navigator.onLine?this._auth.loginUser().then((o=>{this._account.isLoginCompleted().then((()=>{if(n=this._account.getUser(),n.active){let o=e.url.replace(/\/[a-f0-9]{24}$/,"").replace(/\?.+$/,""),r=o.replace(/([^\/]+\/?$)/,"");if(n.roles.super_admin)t(!0);else{let e=!1;for(;!e&&o.split("/").length>2;){if(!this.isLinkFakeRoute(o))if(n.roles.groups.some((t=>t.views.some((t=>t===o)))))e=!0,t(!0);else if(n.roles.groups.some((t=>t.views.some((t=>t.startsWith(r)&&!this.doesLinkHaveParameter(t)&&!this.isLinkFakeRoute(t)))))){let o=n.roles.groups.filter((t=>t.views.some((t=>t.startsWith(r)&&!this.doesLinkHaveParameter(t)&&!this.isLinkFakeRoute(t)))))[0].views.filter((t=>t.startsWith(r)&&!this.doesLinkHaveParameter(t)&&!this.isLinkFakeRoute(t)))[0];e=!0,this._router.navigateByUrl(o),t(!1)}r=r.replace(/([^\/]+\/?$)/,""),o=o.replace(/(\/[^\/]+$)/,"")}e||(this._router.navigateByUrl("/home"),t(!1))}}else this._router.navigateByUrl("/home"),t(!1)}))}),(()=>{this._router.navigateByUrl("/home"),t(!1)})):t(!0)}),(()=>{}))}))}doesLinkHaveParameter(t){let e=this._aps.getAllModulePermissions();for(let n=0;n<e.length;n++){let o=e[n];for(let e=0;e<o.views.length;e++){let n=o.views[e];if(n.link===t)return!!n.has_parameter}}return!1}isLinkFakeRoute(t){let e=this._aps.getAllModulePermissions();for(let n=0;n<e.length;n++){let o=e[n];for(let e=0;e<o.views.length;e++){let n=o.views[e];if(n.link===t)return!!n.fake_route}}return!0}}AuthGuard.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AuthGuard,deps:[{token:i1$3.Router},{token:AuthService},{token:DialogService},{token:AccountManagerService},{token:CoreService},{token:OfflineManagerService},{token:AuthPermissionService},{token:AlertService}],target:i0.ɵɵFactoryTarget.Injectable}),AuthGuard.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AuthGuard}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:AuthGuard,decorators:[{type:Injectable}],ctorParameters:function(){return[{type:i1$3.Router},{type:AuthService},{type:DialogService},{type:AccountManagerService},{type:CoreService},{type:OfflineManagerService},{type:AuthPermissionService},{type:AlertService}]}});class CanDeactivateGuard{canDeactivate(t){return!t.canDeactivate||t.canDeactivate()}}function getWindow(){return window}CanDeactivateGuard.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:CanDeactivateGuard,deps:[],target:i0.ɵɵFactoryTarget.Injectable}),CanDeactivateGuard.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:CanDeactivateGuard}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:CanDeactivateGuard,decorators:[{type:Injectable}]});class WindowRefService{get nativeWindow(){return getWindow()}}WindowRefService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:WindowRefService,deps:[],target:i0.ɵɵFactoryTarget.Injectable}),WindowRefService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:WindowRefService}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:WindowRefService,decorators:[{type:Injectable}]});class UserRoleComponent extends BaseComponent{constructor(t){super(t),this._services=t}userInRole(){return this._services._account.isUserInView(this.role)}}UserRoleComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:UserRoleComponent,deps:[{token:ProviderService}],target:i0.ɵɵFactoryTarget.Component}),UserRoleComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:UserRoleComponent,selector:"user-role",inputs:{role:"role"},providers:[ProviderService],usesInheritance:!0,ngImport:i0,template:'<ng-container *ngIf="userInRole()"><ng-content></ng-content></ng-container>',isInline:!0,dependencies:[{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:UserRoleComponent,decorators:[{type:Component,args:[{providers:[ProviderService],selector:"user-role",template:'<ng-container *ngIf="userInRole()"><ng-content></ng-content></ng-container>'}]}],ctorParameters:function(){return[{type:ProviderService}]},propDecorators:{role:[{type:Input}]}});class UserRoleModule{}UserRoleModule.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:UserRoleModule,deps:[],target:i0.ɵɵFactoryTarget.NgModule}),UserRoleModule.ɵmod=i0.ɵɵngDeclareNgModule({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:UserRoleModule,declarations:[UserRoleComponent],imports:[CommonModule],exports:[UserRoleComponent]}),UserRoleModule.ɵinj=i0.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:UserRoleModule,imports:[CommonModule]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:UserRoleModule,decorators:[{type:NgModule,args:[{imports:[CommonModule],exports:[UserRoleComponent],declarations:[UserRoleComponent]}]}]});class FormButtonModule{}FormButtonModule.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:FormButtonModule,deps:[],target:i0.ɵɵFactoryTarget.NgModule}),FormButtonModule.ɵmod=i0.ɵɵngDeclareNgModule({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:FormButtonModule,declarations:[FormButtonComponent],imports:[CommonModule,NgbTooltipModule],exports:[FormButtonComponent]}),FormButtonModule.ɵinj=i0.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:FormButtonModule,imports:[CommonModule,NgbTooltipModule]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:FormButtonModule,decorators:[{type:NgModule,args:[{imports:[CommonModule,NgbTooltipModule],exports:[FormButtonComponent],declarations:[FormButtonComponent]}]}]});class ResponsiveButtonGroupModule{}ResponsiveButtonGroupModule.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ResponsiveButtonGroupModule,deps:[],target:i0.ɵɵFactoryTarget.NgModule}),ResponsiveButtonGroupModule.ɵmod=i0.ɵɵngDeclareNgModule({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:ResponsiveButtonGroupModule,declarations:[ResponsiveButtonGroupComponent],imports:[CommonModule],exports:[ResponsiveButtonGroupComponent]}),ResponsiveButtonGroupModule.ɵinj=i0.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ResponsiveButtonGroupModule,imports:[CommonModule]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ResponsiveButtonGroupModule,decorators:[{type:NgModule,args:[{imports:[CommonModule],declarations:[ResponsiveButtonGroupComponent],exports:[ResponsiveButtonGroupComponent]}]}]});class CollapseTableModule{}CollapseTableModule.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:CollapseTableModule,deps:[],target:i0.ɵɵFactoryTarget.NgModule}),CollapseTableModule.ɵmod=i0.ɵɵngDeclareNgModule({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:CollapseTableModule,declarations:[CollapseTableComponent],imports:[FormsModule,CommonModule],exports:[CollapseTableComponent]}),CollapseTableModule.ɵinj=i0.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:CollapseTableModule,providers:[ResizeService],imports:[FormsModule,CommonModule]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:CollapseTableModule,decorators:[{type:NgModule,args:[{imports:[FormsModule,CommonModule],exports:[CollapseTableComponent],declarations:[CollapseTableComponent],providers:[ResizeService]}]}]});class PhonePipe{transform(t){if(!t)return"";let e,n,o;switch((t=(t=(t=(t=t.replace(new RegExp("-","g"),"")).replace(new RegExp(" ","g"),"")).replace("(","")).replace(")","")).length){case 10:e=1,n=t.slice(0,3),o=t.slice(3);break;case 11:e=t[0],n=t.slice(1,4),o=t.slice(4);break;case 12:e=t.slice(0,3),n=t.slice(3,5),o=t.slice(5);break;default:return t}return 1===e&&(e=""),o=o.slice(0,3)+"-"+o.slice(3),(e+" ("+n+") "+o).trim()}}PhonePipe.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:PhonePipe,deps:[],target:i0.ɵɵFactoryTarget.Pipe}),PhonePipe.ɵpipe=i0.ɵɵngDeclarePipe({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:PhonePipe,name:"phone"}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:PhonePipe,decorators:[{type:Pipe,args:[{name:"phone"}]}]});class ReversePipe{transform(t){return t.slice(0).reverse()}}ReversePipe.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ReversePipe,deps:[],target:i0.ɵɵFactoryTarget.Pipe}),ReversePipe.ɵpipe=i0.ɵɵngDeclarePipe({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:ReversePipe,name:"reverse"}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ReversePipe,decorators:[{type:Pipe,args:[{name:"reverse"}]}]});class MinusCurrencyPipe{transform(t,e){return"-"===t.charAt(0)?"("+t.substring(1,t.length)+")":t}}MinusCurrencyPipe.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:MinusCurrencyPipe,deps:[],target:i0.ɵɵFactoryTarget.Pipe}),MinusCurrencyPipe.ɵpipe=i0.ɵɵngDeclarePipe({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:MinusCurrencyPipe,name:"minusCurrency"}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:MinusCurrencyPipe,decorators:[{type:Pipe,args:[{name:"minusCurrency"}]}]});class DomSanitizorPipe{constructor(t){this._sanitizer=t}transform(t,e="html"){switch(e){case"html":return this._sanitizer.bypassSecurityTrustHtml(t);case"style":return this._sanitizer.bypassSecurityTrustStyle(t);case"script":return this._sanitizer.bypassSecurityTrustScript(t);case"url":return this._sanitizer.bypassSecurityTrustUrl(t);case"resourceUrl":return this._sanitizer.bypassSecurityTrustResourceUrl(t);default:throw new Error(`Invalid safe type specified: ${e}`)}}}DomSanitizorPipe.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DomSanitizorPipe,deps:[{token:i1.DomSanitizer}],target:i0.ɵɵFactoryTarget.Pipe}),DomSanitizorPipe.ɵpipe=i0.ɵɵngDeclarePipe({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:DomSanitizorPipe,name:"safe"}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DomSanitizorPipe,decorators:[{type:Pipe,args:[{name:"safe"}]}],ctorParameters:function(){return[{type:i1.DomSanitizer}]}});class TitleCaseAndUnderscorePipe{transform(t){let e=t.replace("_"," ").toLowerCase().split(" ");for(let t=0;t<e.length;t++)e[t]=e[t].charAt(0).toUpperCase()+e[t].slice(1);return e.join(" ")}}TitleCaseAndUnderscorePipe.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:TitleCaseAndUnderscorePipe,deps:[],target:i0.ɵɵFactoryTarget.Pipe}),TitleCaseAndUnderscorePipe.ɵpipe=i0.ɵɵngDeclarePipe({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:TitleCaseAndUnderscorePipe,name:"titleCase",pure:!1}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:TitleCaseAndUnderscorePipe,decorators:[{type:Pipe,args:[{name:"titleCase",pure:!1}]}]});class PipeModule{}PipeModule.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:PipeModule,deps:[],target:i0.ɵɵFactoryTarget.NgModule}),PipeModule.ɵmod=i0.ɵɵngDeclareNgModule({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:PipeModule,declarations:[FilterEqualPipe,FilterNotEqualPipe,PhonePipe,ReversePipe,MinusCurrencyPipe,DomSanitizorPipe,TitleCaseAndUnderscorePipe,JsonParsePipe],exports:[FilterEqualPipe,FilterNotEqualPipe,PhonePipe,ReversePipe,MinusCurrencyPipe,DomSanitizorPipe,TitleCaseAndUnderscorePipe,JsonParsePipe]}),PipeModule.ɵinj=i0.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:PipeModule}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:PipeModule,decorators:[{type:NgModule,args:[{declarations:[FilterEqualPipe,FilterNotEqualPipe,PhonePipe,ReversePipe,MinusCurrencyPipe,DomSanitizorPipe,TitleCaseAndUnderscorePipe,JsonParsePipe],exports:[FilterEqualPipe,FilterNotEqualPipe,PhonePipe,ReversePipe,MinusCurrencyPipe,DomSanitizorPipe,TitleCaseAndUnderscorePipe,JsonParsePipe]}]}]});class SortTableDirective{get direction(){return this._direction}set direction(t){if(t&&-1!==t&&1!==t)throw Error(t+" is not a valid sort direction (0 or 1).");this._direction=t}constructor(t){this.element=t,this.sortables=new Map,this._stateChanges=new Subject,this.start=1,this.disabled=!1,this.tableFixed=!1,this.headerFixed=!1,this.secondaryColor=!1,this.tertiaryColor=!1,this._direction=0,this._data=new BehaviorSubject([]),this.sortChange=new EventEmitter}register(t){if(!t.id)throw Error("CTSortHeader must be provided with a unique id");if(this.sortables.has(t.id))throw Error("Cannot have two CTSortables with the same id "+t.id);this.sortables.set(t.id,t)}deregister(t){this.sortables.delete(t.id)}sort(t){if(this.active!=t.id?(this.active=t.id,this.direction=t.start?t.start:this.start):this.direction*=-1,this.sortChange.emit({active:this.active,direction:this.direction}),this._data.value.length){let e=null;for(let n=0;n<this._data.value.length;n++)if(t.id.split(".").reduce(((t,e)=>t[e]),this._data.value[n])){e=t.id.split(".").reduce(((t,e)=>t[e]),this._data.value[n]);break}if(null!=e)if("string"==typeof e){let e=new RegExp(/^[\d.,$]+$/);this._data.value.filter((e=>t.id.split(".").reduce(((t,e)=>t[e]),e))).some((n=>!e.test(t.id.split(".").reduce(((t,e)=>t[e]),n))))?1===this.direction?this._data.next(this._data.value.sort(((e,n)=>(t.id.split(".").reduce(((t,e)=>t[e]),e)||"zzzzzz").localeCompare(t.id.split(".").reduce(((t,e)=>t[e]),n)||"zzzzzz")))):this._data.next(this._data.value.sort(((e,n)=>(t.id.split(".").reduce(((t,e)=>t[e]),n)||"AAAAAAA").localeCompare(t.id.split(".").reduce(((t,e)=>t[e]),e)||"AAAAAAA")))):1===this.direction?this._data.next(this._data.value.sort(((e,n)=>(null!==t.id.split(".").reduce(((t,e)=>t[e]),e)?parseFloat(t.id.split(".").reduce(((t,e)=>t[e]),e).replace(/\$/g,"").replace(",","")):999999999999)-(null!==t.id.split(".").reduce(((t,e)=>t[e]),n)?parseFloat(t.id.split(".").reduce(((t,e)=>t[e]),n).replace(/\$/g,"").replace(",","")):999999999999)))):this._data.next(this._data.value.sort(((e,n)=>(null!==t.id.split(".").reduce(((t,e)=>t[e]),n)?parseFloat(t.id.split(".").reduce(((t,e)=>t[e]),n).replace(/\$/g,"").replace(",","")):-999999999999)-(null!==t.id.split(".").reduce(((t,e)=>t[e]),e)?parseFloat(t.id.split(".").reduce(((t,e)=>t[e]),e).replace(/\$/g,"").replace(",","")):-999999999999))))}else"number"==typeof e?1===this.direction?this._data.next(this._data.value.sort(((e,n)=>(null!==t.id.split(".").reduce(((t,e)=>t[e]),e)?t.id.split(".").reduce(((t,e)=>t[e]),e):999999999999)-(null!==t.id.split(".").reduce(((t,e)=>t[e]),n)?t.id.split(".").reduce(((t,e)=>t[e]),n):999999999999)))):this._data.next(this._data.value.sort(((e,n)=>(null!==t.id.split(".").reduce(((t,e)=>t[e]),n)?t.id.split(".").reduce(((t,e)=>t[e]),n):-999999999999)-(null!==t.id.split(".").reduce(((t,e)=>t[e]),e)?t.id.split(".").reduce(((t,e)=>t[e]),e):-999999999999)))):e instanceof Date?1===this.direction?this._data.next(this._data.value.sort(((e,n)=>(t.id.split(".").reduce(((t,e)=>t[e]),e)?t.id.split(".").reduce(((t,e)=>t[e]),e).getTime():0)-(t.id.split(".").reduce(((t,e)=>t[e]),n)?t.id.split(".").reduce(((t,e)=>t[e]),n).getTime():0)))):this._data.next(this._data.value.sort(((e,n)=>(t.id.split(".").reduce(((t,e)=>t[e]),n)?t.id.split(".").reduce(((t,e)=>t[e]),n).getTime():0)-(t.id.split(".").reduce(((t,e)=>t[e]),e)?t.id.split(".").reduce(((t,e)=>t[e]),e).getTime():0)))):"boolean"==typeof e?this._data.next(this._data.value.sort(((e,n)=>t.id.split(".").reduce(((t,e)=>t[e]),e)===t.id.split(".").reduce(((t,e)=>t[e]),n)?0:t.id.split(".").reduce(((t,e)=>t[e]),e)?1===this.direction?-1:1:1===this.direction?1:-1))):this._data.next(this._data.value.sort(((e,n)=>t.id.split(".").reduce(((t,e)=>t[e]),e)===t.id.split(".").reduce(((t,e)=>t[e]),n)?0:t.id.split(".").reduce(((t,e)=>t[e]),e)>t.id.split(".").reduce(((t,e)=>t[e]),n)?-1:1)))}}getData(){return this._data.asObservable()}setData(t){this._data.next(t)}ngOnInit(){}ngOnChanges(){this._stateChanges.next()}ngOnDestroy(){this._stateChanges.complete()}}SortTableDirective.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SortTableDirective,deps:[{token:i0.ElementRef}],target:i0.ɵɵFactoryTarget.Directive}),SortTableDirective.ɵdir=i0.ɵɵngDeclareDirective({minVersion:"14.0.0",version:"15.2.10",type:SortTableDirective,selector:"[sortable]",inputs:{active:["sortActive","active"],start:["sortStart","start"],disabled:["sortDisabled","disabled"],tableFixed:"tableFixed",headerFixed:"headerFixed",secondaryColor:"secondaryColor",tertiaryColor:"tertiaryColor"},outputs:{sortChange:"sortChange"},usesOnChanges:!0,ngImport:i0}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SortTableDirective,decorators:[{type:Directive,args:[{selector:"[sortable]"}]}],ctorParameters:function(){return[{type:i0.ElementRef}]},propDecorators:{active:[{type:Input,args:["sortActive"]}],start:[{type:Input,args:["sortStart"]}],disabled:[{type:Input,args:["sortDisabled"]}],tableFixed:[{type:Input}],headerFixed:[{type:Input}],secondaryColor:[{type:Input}],tertiaryColor:[{type:Input}],sortChange:[{type:Output,args:["sortChange"]}]}});class SortTableHeaderComponent{constructor(t,e){if(this._sort=e,this._arrowDirection=0,this.arrowPosition="after",!e)throw Error("SortTableSortHeader must be placed within a parent element with the CTSortable directive.");this._rerenderSubscription=merge(e.sortChange,e._stateChanges).subscribe((()=>{this._isSorted()&&this._updateArrowDirection(),t.markForCheck()}))}ngOnInit(){this._sort.register(this)}ngOnDestroy(){this._sort.deregister(this),this._rerenderSubscription.unsubscribe()}_isSorted(){return this._sort.active===this.id}_getSortDirection(){return this._sort.direction}_updateArrowDirection(){this._arrowDirection=this._isSorted()?this._sort.direction:this.start||this._sort.start}_isDisabled(){return this._sort.disabled||this.disabled}onClick(t){this._isDisabled()||this._sort.sort(this)}}SortTableHeaderComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SortTableHeaderComponent,deps:[{token:i0.ChangeDetectorRef},{token:SortTableDirective,optional:!0}],target:i0.ɵɵFactoryTarget.Component}),SortTableHeaderComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:SortTableHeaderComponent,selector:"[sort-table-header]",inputs:{disabled:"disabled",id:["sort-table-header","id"],arrowPosition:"arrowPosition",start:"start"},ngImport:i0,template:'<div (click)="onClick($event)">\n <ng-content></ng-content>\n <i *ngIf="_isSorted() && _getSortDirection() === -1" class="fa fa-arrow-down" style="margin-left: 10px; font-size: 14px"></i>\n <i *ngIf="_isSorted() && _getSortDirection() === 1" class="fa fa-arrow-up" style="margin-left: 10px; font-size: 14px"></i>\n</div>',dependencies:[{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]}],changeDetection:i0.ChangeDetectionStrategy.OnPush,encapsulation:i0.ViewEncapsulation.None}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SortTableHeaderComponent,decorators:[{type:Component,args:[{selector:"[sort-table-header]",encapsulation:ViewEncapsulation.None,changeDetection:ChangeDetectionStrategy.OnPush,inputs:["disabled"],template:'<div (click)="onClick($event)">\n <ng-content></ng-content>\n <i *ngIf="_isSorted() && _getSortDirection() === -1" class="fa fa-arrow-down" style="margin-left: 10px; font-size: 14px"></i>\n <i *ngIf="_isSorted() && _getSortDirection() === 1" class="fa fa-arrow-up" style="margin-left: 10px; font-size: 14px"></i>\n</div>'}]}],ctorParameters:function(){return[{type:i0.ChangeDetectorRef},{type:SortTableDirective,decorators:[{type:Optional}]}]},propDecorators:{id:[{type:Input,args:["sort-table-header"]}],arrowPosition:[{type:Input}],start:[{type:Input}],disabled:[{type:Input}]}});class SortTableNgForComponent{constructor(t){if(this._sort=t,this.data=[],this.dataChanged=new EventEmitter,this.sortSub$=null,this.sortedData=[],!t)throw Error("SortTableNgFor must be placed within a parent element with the CTSortable directive.")}ngOnInit(){this.sortSub$=this._sort.getData().subscribe((t=>{this.sortedData=t,this.dataChanged.emit(this.sortedData)}))}ngOnChanges(){this._sort.setData(this.data)}ngOnDestroy(){this.sortSub$.unsubscribe()}}SortTableNgForComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SortTableNgForComponent,deps:[{token:SortTableDirective,optional:!0}],target:i0.ɵɵFactoryTarget.Component}),SortTableNgForComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:SortTableNgForComponent,selector:"[sort-table-ngfor]",inputs:{data:["sort-table-ngfor","data"]},outputs:{dataChanged:"dataChanged"},usesOnChanges:!0,ngImport:i0,template:"<ng-content></ng-content>",isInline:!0}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SortTableNgForComponent,decorators:[{type:Component,args:[{selector:"[sort-table-ngfor]",template:"<ng-content></ng-content>"}]}],ctorParameters:function(){return[{type:SortTableDirective,decorators:[{type:Optional}]}]},propDecorators:{data:[{type:Input,args:["sort-table-ngfor"]}],dataChanged:[{type:Output}]}});class SortTableModule{}SortTableModule.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SortTableModule,deps:[],target:i0.ɵɵFactoryTarget.NgModule}),SortTableModule.ɵmod=i0.ɵɵngDeclareNgModule({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:SortTableModule,declarations:[SortTableDirective,SortTableHeaderComponent,SortTableNgForComponent],imports:[FormsModule,CommonModule],exports:[SortTableDirective,SortTableHeaderComponent,SortTableNgForComponent]}),SortTableModule.ɵinj=i0.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SortTableModule,imports:[FormsModule,CommonModule]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SortTableModule,decorators:[{type:NgModule,args:[{imports:[FormsModule,CommonModule],exports:[SortTableDirective,SortTableHeaderComponent,SortTableNgForComponent],declarations:[SortTableDirective,SortTableHeaderComponent,SortTableNgForComponent]}]}]});class SharedModule{}SharedModule.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SharedModule,deps:[],target:i0.ɵɵFactoryTarget.NgModule}),SharedModule.ɵmod=i0.ɵɵngDeclareNgModule({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:SharedModule,imports:[ReactiveFormsModule,FormsModule,CollapseTableModule,RouterModule,NgbModule,FormButtonModule,ResponsiveButtonGroupModule,PipeModule,UserRoleModule,NgSelectModule,SortTableModule,CommonModule],exports:[ReactiveFormsModule,FormsModule,CollapseTableModule,RouterModule,NgbModule,FormButtonModule,ResponsiveButtonGroupModule,PipeModule,UserRoleModule,NgSelectModule,SortTableModule,CommonModule]}),SharedModule.ɵinj=i0.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SharedModule,imports:[ReactiveFormsModule,FormsModule,CollapseTableModule,RouterModule,NgbModule,FormButtonModule,ResponsiveButtonGroupModule,PipeModule,UserRoleModule,NgSelectModule,SortTableModule,CommonModule,ReactiveFormsModule,FormsModule,CollapseTableModule,RouterModule,NgbModule,FormButtonModule,ResponsiveButtonGroupModule,PipeModule,UserRoleModule,NgSelectModule,SortTableModule,CommonModule]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SharedModule,decorators:[{type:NgModule,args:[{imports:[ReactiveFormsModule,FormsModule,CollapseTableModule,RouterModule,NgbModule,FormButtonModule,ResponsiveButtonGroupModule,PipeModule,UserRoleModule,NgSelectModule,SortTableModule,CommonModule],exports:[ReactiveFormsModule,FormsModule,CollapseTableModule,RouterModule,NgbModule,FormButtonModule,ResponsiveButtonGroupModule,PipeModule,UserRoleModule,NgSelectModule,SortTableModule,CommonModule]}]}]});class ForgotPasswordComponent extends BaseComponent{constructor(t,e,n,o){super(e),this._route=t,this._services=e,this._http=n,this._ds=o,this.serverURL="",this.subscription$=[],this.disableFormButton=!1}ngOnInit(){2!==this._route.snapshot.queryParamMap.keys.length?(this._ds.error("Invalid params"),this._services._router.navigateByUrl("/home")):(this.serverURL=this._route.snapshot.queryParamMap.keys[0],this.token=this._route.snapshot.queryParamMap.keys[1]),this.form=this._services._fb.group({password:["",[Validators.compose([Validators.required,Validators.minLength(6)])]],confirm_password:["",[Validators.compose([Validators.required,Validators.minLength(6)])]]},{validator:this._services._vs.matchPassword}),this._http.post(this.serverURL+"/userWithForgotPasswordToken",{forgotPasswordToken:this.token}).toPromise().then((t=>{t.error?(this._ds.error("Invalid token"),this._services._router.navigateByUrl("/home")):this.user=t.result.user}),(t=>{this._ds.error("Invalid token"),this._services._router.navigateByUrl("/home")}))}ngOnDestroy(){this.subscription$.forEach((t=>{t.unsubscribe()}))}submit(){this.disableFormButton=!0,this._http.post(this.serverURL+"/setUserWithForgotPasswordToken",{forgotPasswordToken:this.token,password:this.form.value.password}).toPromise().then((t=>{t.error?(this._ds.error("Could not update user"),this._services._router.navigateByUrl("/home")):(this._services._alert.setAlert("success","User has been updated, please log in"),this._services._router.navigateByUrl("/home"))}),(t=>{this._ds.error("Invalid token"),this._services._router.navigateByUrl("/home")})),this._services._router.navigateByUrl("/home")}}ForgotPasswordComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ForgotPasswordComponent,deps:[{token:i1$3.ActivatedRoute},{token:ProviderService},{token:i4.HttpClient},{token:DialogService}],target:i0.ɵɵFactoryTarget.Component}),ForgotPasswordComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:ForgotPasswordComponent,selector:"ng-component",providers:[ProviderService],usesInheritance:!0,ngImport:i0,template:'<style>\n input {\n width: 100%;\n }\n</style>\n\n<div *ngIf="user">\n\t<h4>Welcome to ResolveIO.<br><br>Your username will be {{user.username}}. Please create a password for your account.</h4>\n\t<form [formGroup]="form" novalidate (ngSubmit)="submit()">\n\t\t<div class="row">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<div class="form-group">\n\t\t\t\t\t<label class="form-control-label">Username</label>\n\t\t\t\t\t<div>{{user.username}}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="row">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<div class="form-group">\n\t\t\t\t\t<label class="form-control-label">Password</label>\n\t\t\t\t\t<em *ngIf="form.controls.password.hasError(\'required\')">- Required</em>\n\t\t\t\t\t<em *ngIf="form.controls.password.hasError(\'minlength\') || form.hasError(\'matchPassword\')">- Invalid</em>\n\t\t\t\t\t<input type="text" [ngClass]="[\'form-control\', (form.controls.password.valid && form.valid) ? \'is-valid\' : \'is-invalid\']" formControlName="password" type="password" autocomplete="new-password">\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="form.controls.password.hasError(\'required\')">Password is required</div>\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="form.controls.password.hasError(\'minlength\')">Password must be 6 or more characters</div>\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="!form.controls.password.hasError(\'minlength\') && form.hasError(\'matchPassword\')" align="start">Passwords do not match</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="row">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<div class="form-group">\n\t\t\t\t\t<label class="form-control-label">Confirm Password</label>\n\t\t\t\t\t<em *ngIf="form.controls.confirm_password.hasError(\'required\')">- Required</em>\n\t\t\t\t\t<em *ngIf="form.hasError(\'matchPassword\')">- Invalid</em>\n\t\t\t\t\t<input type="text" [ngClass]="[\'form-control\', form.controls.confirm_password.valid ? \'is-valid\' : \'is-invalid\']" formControlName="confirm_password" type="password" autocomplete="new-password">\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="form.controls.confirm_password.hasError(\'required\')">Password is required</div>\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="form.hasError(\'matchPassword\')" align="start">Passwords do not match</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="row" style="margin-top: 30px;">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<form-button [form]="form" [disabled]="disableFormButton"></form-button>\n\t\t\t</div>\n\t\t</div>\n\t</form>\n</div>',styles:["\n input {\n width: 100%;\n }\n"],dependencies:[{kind:"directive",type:i2.ɵNgNoValidate,selector:"form:not([ngNoForm]):not([ngNativeValidate])"},{kind:"directive",type:i2.DefaultValueAccessor,selector:"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]"},{kind:"directive",type:i2.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i2.NgControlStatusGroup,selector:"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]"},{kind:"directive",type:i2.FormGroupDirective,selector:"[formGroup]",inputs:["formGroup"],outputs:["ngSubmit"],exportAs:["ngForm"]},{kind:"directive",type:i2.FormControlName,selector:"[formControlName]",inputs:["formControlName","disabled","ngModel"],outputs:["ngModelChange"]},{kind:"component",type:FormButtonComponent,selector:"form-button",inputs:["form","disabled","type"]},{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:ForgotPasswordComponent,decorators:[{type:Component,args:[{providers:[ProviderService],template:'<style>\n input {\n width: 100%;\n }\n</style>\n\n<div *ngIf="user">\n\t<h4>Welcome to ResolveIO.<br><br>Your username will be {{user.username}}. Please create a password for your account.</h4>\n\t<form [formGroup]="form" novalidate (ngSubmit)="submit()">\n\t\t<div class="row">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<div class="form-group">\n\t\t\t\t\t<label class="form-control-label">Username</label>\n\t\t\t\t\t<div>{{user.username}}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="row">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<div class="form-group">\n\t\t\t\t\t<label class="form-control-label">Password</label>\n\t\t\t\t\t<em *ngIf="form.controls.password.hasError(\'required\')">- Required</em>\n\t\t\t\t\t<em *ngIf="form.controls.password.hasError(\'minlength\') || form.hasError(\'matchPassword\')">- Invalid</em>\n\t\t\t\t\t<input type="text" [ngClass]="[\'form-control\', (form.controls.password.valid && form.valid) ? \'is-valid\' : \'is-invalid\']" formControlName="password" type="password" autocomplete="new-password">\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="form.controls.password.hasError(\'required\')">Password is required</div>\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="form.controls.password.hasError(\'minlength\')">Password must be 6 or more characters</div>\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="!form.controls.password.hasError(\'minlength\') && form.hasError(\'matchPassword\')" align="start">Passwords do not match</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="row">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<div class="form-group">\n\t\t\t\t\t<label class="form-control-label">Confirm Password</label>\n\t\t\t\t\t<em *ngIf="form.controls.confirm_password.hasError(\'required\')">- Required</em>\n\t\t\t\t\t<em *ngIf="form.hasError(\'matchPassword\')">- Invalid</em>\n\t\t\t\t\t<input type="text" [ngClass]="[\'form-control\', form.controls.confirm_password.valid ? \'is-valid\' : \'is-invalid\']" formControlName="confirm_password" type="password" autocomplete="new-password">\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="form.controls.confirm_password.hasError(\'required\')">Password is required</div>\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="form.hasError(\'matchPassword\')" align="start">Passwords do not match</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="row" style="margin-top: 30px;">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<form-button [form]="form" [disabled]="disableFormButton"></form-button>\n\t\t\t</div>\n\t\t</div>\n\t</form>\n</div>'}]}],ctorParameters:function(){return[{type:i1$3.ActivatedRoute},{type:ProviderService},{type:i4.HttpClient},{type:DialogService}]}});class EnrollComponent extends BaseComponent{constructor(t,e,n,o){super(e),this._route=t,this._services=e,this._http=n,this._ds=o,this.serverURL="",this.subscription$=[],this.disableFormButton=!1}ngOnInit(){2!==this._route.snapshot.queryParamMap.keys.length?(this._ds.error("Invalid params"),this._services._router.navigateByUrl("/home")):(this.serverURL=this._route.snapshot.queryParamMap.keys[0],this.token=this._route.snapshot.queryParamMap.keys[1]),this.form=this._services._fb.group({password:["",[Validators.compose([Validators.required,Validators.minLength(6)])]],confirm_password:["",[Validators.compose([Validators.required,Validators.minLength(6)])]]},{validator:this._services._vs.matchPassword}),this._http.post(this.serverURL+"/userWithEnrollmentToken",{enrollmentToken:this.token}).toPromise().then((t=>{t.error?(this._ds.error("Invalid token"),this._services._router.navigateByUrl("/home")):this.user=t.result.user}),(t=>{this._ds.error("Invalid token"),this._services._router.navigateByUrl("/home")}))}ngOnDestroy(){this.subscription$.forEach((t=>{t.unsubscribe()}))}submit(){this.disableFormButton=!0,this._http.post(this.serverURL+"/setUserWithEnrollmentToken",{enrollmentToken:this.token,password:this.form.value.password}).toPromise().then((t=>{t.error?(this._ds.error("Could not update user"),this._services._router.navigateByUrl("/home")):(this._services._alert.setAlert("success","User has been updated, please log in"),this._services._router.navigateByUrl("/home"))}),(t=>{this._ds.error("Invalid token"),this._services._router.navigateByUrl("/home")}))}}EnrollComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:EnrollComponent,deps:[{token:i1$3.ActivatedRoute},{token:ProviderService},{token:i4.HttpClient},{token:DialogService}],target:i0.ɵɵFactoryTarget.Component}),EnrollComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:EnrollComponent,selector:"ng-component",providers:[ProviderService],usesInheritance:!0,ngImport:i0,template:'<style>\n input {\n width: 100%;\n }\n</style>\n\n<div *ngIf="user">\n\t<h4>Welcome to ResolveIO.<br><br>Your username will be {{user.username}}. Please create a password for your account.</h4>\n\t<form [formGroup]="form" novalidate (ngSubmit)="submit()">\n\t\t<div class="row">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<div class="form-group">\n\t\t\t\t\t<label class="form-control-label">Username</label>\n\t\t\t\t\t<div>{{user.username}}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="row">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<div class="form-group">\n\t\t\t\t\t<label class="form-control-label">Password</label>\n\t\t\t\t\t<em *ngIf="form.controls.password.hasError(\'required\')">- Required</em>\n\t\t\t\t\t<em *ngIf="form.controls.password.hasError(\'minlength\') || form.hasError(\'matchPassword\')">- Invalid</em>\n\t\t\t\t\t<input type="text" [ngClass]="[\'form-control\', form.controls.password.valid && !form.hasError(\'matchPassword\') ? \'is-valid\' : \'is-invalid\']" formControlName="password" type="password" autocomplete="new-password">\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="form.controls.password.hasError(\'required\')">Password is required</div>\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="form.controls.password.hasError(\'minlength\')">Password must be 6 or more characters</div>\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="!form.controls.password.hasError(\'minlength\') && form.hasError(\'matchPassword\')" align="start">Passwords do not match</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="row">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<div class="form-group">\n\t\t\t\t\t<label class="form-control-label">Confirm Password</label>\n\t\t\t\t\t<em *ngIf="form.controls.confirm_password.hasError(\'required\')">- Required</em>\n\t\t\t\t\t<em *ngIf="form.hasError(\'matchPassword\')">- Invalid</em>\n\t\t\t\t\t<input type="text" [ngClass]="[\'form-control\', form.controls.confirm_password.valid && !form.hasError(\'matchPassword\') ? \'is-valid\' : \'is-invalid\']" formControlName="confirm_password" type="password" autocomplete="new-password">\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="form.controls.confirm_password.hasError(\'required\')">Password is required</div>\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="form.hasError(\'matchPassword\')" align="start">Passwords do not match</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="row" style="margin-top: 30px;">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<form-button [form]="form" [disabled]="disableFormButton"></form-button>\n\t\t\t</div>\n\t\t</div>\n\t</form>\n</div>',styles:["\n input {\n width: 100%;\n }\n"],dependencies:[{kind:"directive",type:i2.ɵNgNoValidate,selector:"form:not([ngNoForm]):not([ngNativeValidate])"},{kind:"directive",type:i2.DefaultValueAccessor,selector:"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]"},{kind:"directive",type:i2.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i2.NgControlStatusGroup,selector:"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]"},{kind:"directive",type:i2.FormGroupDirective,selector:"[formGroup]",inputs:["formGroup"],outputs:["ngSubmit"],exportAs:["ngForm"]},{kind:"directive",type:i2.FormControlName,selector:"[formControlName]",inputs:["formControlName","disabled","ngModel"],outputs:["ngModelChange"]},{kind:"component",type:FormButtonComponent,selector:"form-button",inputs:["form","disabled","type"]},{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:EnrollComponent,decorators:[{type:Component,args:[{providers:[ProviderService],template:'<style>\n input {\n width: 100%;\n }\n</style>\n\n<div *ngIf="user">\n\t<h4>Welcome to ResolveIO.<br><br>Your username will be {{user.username}}. Please create a password for your account.</h4>\n\t<form [formGroup]="form" novalidate (ngSubmit)="submit()">\n\t\t<div class="row">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<div class="form-group">\n\t\t\t\t\t<label class="form-control-label">Username</label>\n\t\t\t\t\t<div>{{user.username}}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="row">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<div class="form-group">\n\t\t\t\t\t<label class="form-control-label">Password</label>\n\t\t\t\t\t<em *ngIf="form.controls.password.hasError(\'required\')">- Required</em>\n\t\t\t\t\t<em *ngIf="form.controls.password.hasError(\'minlength\') || form.hasError(\'matchPassword\')">- Invalid</em>\n\t\t\t\t\t<input type="text" [ngClass]="[\'form-control\', form.controls.password.valid && !form.hasError(\'matchPassword\') ? \'is-valid\' : \'is-invalid\']" formControlName="password" type="password" autocomplete="new-password">\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="form.controls.password.hasError(\'required\')">Password is required</div>\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="form.controls.password.hasError(\'minlength\')">Password must be 6 or more characters</div>\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="!form.controls.password.hasError(\'minlength\') && form.hasError(\'matchPassword\')" align="start">Passwords do not match</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="row">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<div class="form-group">\n\t\t\t\t\t<label class="form-control-label">Confirm Password</label>\n\t\t\t\t\t<em *ngIf="form.controls.confirm_password.hasError(\'required\')">- Required</em>\n\t\t\t\t\t<em *ngIf="form.hasError(\'matchPassword\')">- Invalid</em>\n\t\t\t\t\t<input type="text" [ngClass]="[\'form-control\', form.controls.confirm_password.valid && !form.hasError(\'matchPassword\') ? \'is-valid\' : \'is-invalid\']" formControlName="confirm_password" type="password" autocomplete="new-password">\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="form.controls.confirm_password.hasError(\'required\')">Password is required</div>\n\t\t\t\t\t<div class="invalid-feedback" *ngIf="form.hasError(\'matchPassword\')" align="start">Passwords do not match</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="row" style="margin-top: 30px;">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<form-button [form]="form" [disabled]="disableFormButton"></form-button>\n\t\t\t</div>\n\t\t</div>\n\t</form>\n</div>'}]}],ctorParameters:function(){return[{type:i1$3.ActivatedRoute},{type:ProviderService},{type:i4.HttpClient},{type:DialogService}]}});class Auth365Component extends BaseComponent{constructor(t,e,n,o,r,i){super(n),this._app=t,this._route=e,this._services=n,this._http=o,this._ds=r,this._socket=i,this._app.environment.value.MS_id_token?this._services._account.logIn365(this._app.environment.value.MS_id_token).then((()=>{this._services._router.navigateByUrl("/home")}),(()=>{})):this._services._router.navigateByUrl("/home")}}Auth365Component.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:Auth365Component,deps:[{token:CoreService},{token:i1$3.ActivatedRoute},{token:ProviderService},{token:i4.HttpClient},{token:DialogService},{token:SocketManagerService}],target:i0.ɵɵFactoryTarget.Component}),Auth365Component.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:Auth365Component,selector:"ng-component",providers:[ProviderService],usesInheritance:!0,ngImport:i0,template:"<router-outlet></router-outlet>",isInline:!0,dependencies:[{kind:"directive",type:i1$3.RouterOutlet,selector:"router-outlet",inputs:["name"],outputs:["activate","deactivate","attach","detach"],exportAs:["outlet"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:Auth365Component,decorators:[{type:Component,args:[{providers:[ProviderService],template:"<router-outlet></router-outlet>"}]}],ctorParameters:function(){return[{type:CoreService},{type:i1$3.ActivatedRoute},{type:ProviderService},{type:i4.HttpClient},{type:DialogService},{type:SocketManagerService}]}});class UserSettingsService{constructor(){this.selectedUser=new BehaviorSubject("0")}setSelectedUser(t){this.selectedUser.next(t)}}UserSettingsService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:UserSettingsService,deps:[],target:i0.ɵɵFactoryTarget.Injectable}),UserSettingsService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:UserSettingsService}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:UserSettingsService,decorators:[{type:Injectable}],ctorParameters:function(){return[]}});const UserSettingsModulePermission={name:"user-settings",views:[{link:"/user-settings/settings",label:"Settings"}],approval:{type:"user-settings"}};class UserSettingsComponent extends BaseComponent{constructor(t,e){super(e),this._us=t,this._services=e}ngOnInit(){this.selectedUserSettings$=this._us.selectedUser.subscribe((t=>this.selectedUserSettingsChanged(t)))}ngOnDestroy(){this._us.setSelectedUser("0"),this.selectedUserSettings$.unsubscribe()}selectedUserSettingsChanged(t){this.setUserSettingsMenuData()}setUserSettingsMenuData(t,e){let n=[];UserSettingsModulePermission.views.forEach((t=>{if((this._services._account.isUserInView(t.link)||this._services._account.isUserSuperAdmin())&&"/user-settings/settings"===t.link)n.push({link:"/user-settings/settings",params:null,label:"Settings"})})),this.menuData={title:"User Settings",module:"User Settings",description_name:"User: ",description:e?e.fullname:"",tabs:n},this._services._app.setNavbarModuleData(this.menuData)}}UserSettingsComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:UserSettingsComponent,deps:[{token:UserSettingsService},{token:ProviderService}],target:i0.ɵɵFactoryTarget.Component}),UserSettingsComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:UserSettingsComponent,selector:"ng-component",providers:[ProviderService],usesInheritance:!0,ngImport:i0,template:"<router-outlet></router-outlet>",isInline:!0,dependencies:[{kind:"directive",type:i1$3.RouterOutlet,selector:"router-outlet",inputs:["name"],outputs:["activate","deactivate","attach","detach"],exportAs:["outlet"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:UserSettingsComponent,decorators:[{type:Component,args:[{providers:[ProviderService],template:"<router-outlet></router-outlet>"}]}],ctorParameters:function(){return[{type:UserSettingsService},{type:ProviderService}]}});class UsersSettingsComponent extends BaseComponent{constructor(t,e,n,o){super(n),this._aps=t,this._us=e,this._services=n,this._ds=o,this.subscription$=[],this.disableFormButton=!1,this.client="",this.views=[],this.hasSubmit=!1}ngOnInit(){this._us.setSelectedUser("0"),this.client=this._services._app.client.getValue(),this.form=this._services._fb.group({table_color:["#3b3ee3",[Validators.required]],table_font_color:["#ffffff",[Validators.required]],font_size:[12,[Validators.required,this._services._vs.wholeNumbersGreaterThanZero,this._services._vs.maxValue(18),this._services._vs.minValue(8)]],secondary_table_color:["#87ceeb",[Validators.required]],secondary_table_font_color:["#000000",[Validators.required]],tertiary_table_color:["#ff4500",[Validators.required]],tertiary_table_font_color:["#000000",[Validators.required]],collapsable_menu:[!0],entries_per_page:["25",[Validators.required]],warning_color:["#ffc107",[Validators.required]],warning_font_color:["#000000",[Validators.required]],warning_hover_color:["#e0a800",[Validators.required]],success_color:["#28a745",[Validators.required]],success_font_color:["#ffffff",[Validators.required]],success_hover_color:["#218838",[Validators.required]],danger_color:["#dc3545",[Validators.required]],danger_font_color:["#ffffff",[Validators.required]],danger_hover_color:["#c82333",[Validators.required]],info_color:["#17a2b8",[Validators.required]],info_font_color:["#ffffff",[Validators.required]],info_hover_color:["#138496",[Validators.required]],primary_color:["#007bff",[Validators.required]],primary_font_color:["#ffffff",[Validators.required]],primary_hover_color:["#0069d9",[Validators.required]],secondary_color:["#868e96",[Validators.required]],secondary_font_color:["#ffffff",[Validators.required]],secondary_hover_color:["#5a6268",[Validators.required]],routing_preference:["alwaysAsk"],opening_route:["/home"]}),this._services._account.getUser()&&this._services._account.getUser().settings&&(this.form.patchValue(this._services._account.getUser().settings),this._services._account.getUser().roles.groups.forEach((t=>{t.views.forEach((t=>{this.views.some((e=>e.value===t))||this.views.push({value:t,display:toTitleCase(t.replace("/","").replace(new RegExp("/","g")," - "))})}))}))),document.documentElement.style.setProperty("--primary-table-color",this.form.controls.table_color.value),document.documentElement.style.setProperty("--primary-table-font-color",this.form.controls.table_font_color.value),document.documentElement.style.setProperty("--font-size",this.form.controls.font_size.value+"px"),document.documentElement.style.setProperty("--secondary-table-color",this.form.controls.secondary_table_color.value),document.documentElement.style.setProperty("--secondary-table-font-color",this.form.controls.secondary_table_font_color.value),document.documentElement.style.setProperty("--tertiary-table-color",this.form.controls.tertiary_table_color.value),document.documentElement.style.setProperty("--tertiary-table-font-color",this.form.controls.tertiary_table_font_color.value),document.documentElement.style.setProperty("--warning-color",this.form.controls.warning_color.value),document.documentElement.style.setProperty("--warning-font-color",this.form.controls.warning_font_color.value),document.documentElement.style.setProperty("--warning-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.warning_color.value,.5)),document.documentElement.style.setProperty("--warning-hover-color",this.form.controls.warning_hover_color.value),document.documentElement.style.setProperty("--success-color",this.form.controls.success_color.value),document.documentElement.style.setProperty("--success-font-color",this.form.controls.success_font_color.value),document.documentElement.style.setProperty("--success-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.success_color.value,.5)),document.documentElement.style.setProperty("--success-hover-color",this.form.controls.success_hover_color.value),document.documentElement.style.setProperty("--danger-color",this.form.controls.danger_color.value),document.documentElement.style.setProperty("--danger-font-color",this.form.controls.danger_font_color.value),document.documentElement.style.setProperty("--danger-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.danger_color.value,.5)),document.documentElement.style.setProperty("--danger-hover-color",this.form.controls.danger_hover_color.value),document.documentElement.style.setProperty("--info-color",this.form.controls.info_color.value),document.documentElement.style.setProperty("--info-font-color",this.form.controls.info_font_color.value),document.documentElement.style.setProperty("--info-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.info_color.value,.5)),document.documentElement.style.setProperty("--info-hover-color",this.form.controls.info_hover_color.value),document.documentElement.style.setProperty("--primary-color",this.form.controls.primary_color.value),document.documentElement.style.setProperty("--primary-font-color",this.form.controls.primary_font_color.value),document.documentElement.style.setProperty("--primary-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.primary_color.value,.5)),document.documentElement.style.setProperty("--primary-hover-color",this.form.controls.primary_hover_color.value),document.documentElement.style.setProperty("--secondary-color",this.form.controls.secondary_color.value),document.documentElement.style.setProperty("--secondary-font-color",this.form.controls.secondary_font_color.value),document.documentElement.style.setProperty("--secondary-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.secondary_color.value,.5)),document.documentElement.style.setProperty("--secondary-hover-color",this.form.controls.secondary_hover_color.value),this.subscription$.push(this._services._account.user.subscribe((t=>{this.user=t})))}ngOnDestroy(){this.subscription$.forEach((t=>{t.unsubscribe()})),this.hasSubmit||this.submitForm(this.form)}changePrimaryColor(){document.documentElement.style.setProperty("--primary-table-color",this.form.controls.table_color.value)}changePrimaryFontColor(){document.documentElement.style.setProperty("--primary-table-font-color",this.form.controls.table_font_color.value)}changePrimaryFontSize(){document.documentElement.style.setProperty("--font-size",this.form.controls.font_size.value+"px")}changeSecondaryColor(){document.documentElement.style.setProperty("--secondary-table-color",this.form.controls.secondary_table_color.value)}changeSecondaryFontColor(){document.documentElement.style.setProperty("--secondary-table-font-color",this.form.controls.secondary_table_font_color.value)}changeTertiaryColor(){document.documentElement.style.setProperty("--tertiary-table-color",this.form.controls.tertiary_table_color.value)}changeTertiaryFontColor(){document.documentElement.style.setProperty("--tertiary-table-font-color",this.form.controls.tertiary_table_font_color.value)}changeWarningColor(){document.documentElement.style.setProperty("--warning-color",this.form.controls.warning_color.value),document.documentElement.style.setProperty("--warning-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.warning_color.value,.5))}changeWarningHoverColor(){document.documentElement.style.setProperty("--warning-hover-color",this.form.controls.warning_hover_color.value)}changeWarningFontColor(){document.documentElement.style.setProperty("--warning-font-color",this.form.controls.warning_font_color.value)}changeSuccessColor(){document.documentElement.style.setProperty("--success-color",this.form.controls.success_color.value),document.documentElement.style.setProperty("--success-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.success_color.value,.5))}changeSuccessHoverColor(){document.documentElement.style.setProperty("--success-hover-color",this.form.controls.success_hover_color.value)}changeSuccessFontColor(){document.documentElement.style.setProperty("--success-font-color",this.form.controls.success_font_color.value)}changeDangerColor(){document.documentElement.style.setProperty("--danger-color",this.form.controls.danger_color.value),document.documentElement.style.setProperty("--danger-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.danger_color.value,.5))}changeDangerHoverColor(){document.documentElement.style.setProperty("--danger-hover-color",this.form.controls.danger_hover_color.value)}changeDangerFontColor(){document.documentElement.style.setProperty("--danger-font-color",this.form.controls.danger_font_color.value)}changeInfoColor(){document.documentElement.style.setProperty("--info-color",this.form.controls.info_color.value),document.documentElement.style.setProperty("--info-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.info_color.value,.5))}changeInfoHoverColor(){document.documentElement.style.setProperty("--info-hover-color",this.form.controls.info_hover_color.value)}changeInfoFontColor(){document.documentElement.style.setProperty("--info-font-color",this.form.controls.info_font_color.value)}changePrimaryButtonColor(){document.documentElement.style.setProperty("--primary-color",this.form.controls.primary_color.value),document.documentElement.style.setProperty("--primary-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.primary_color.value,.5))}changePrimaryHoverColor(){document.documentElement.style.setProperty("--primary-hover-color",this.form.controls.primary_hover_color.value)}changePrimaryButtonFontColor(){document.documentElement.style.setProperty("--primary-font-color",this.form.controls.primary_font_color.value)}changeSecondaryButtonColor(){document.documentElement.style.setProperty("--secondary-color",this.form.controls.secondary_color.value),document.documentElement.style.setProperty("--secondary-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.secondary_color.value,.5))}changeSecondaryHoverColor(){document.documentElement.style.setProperty("--secondary-hover-color",this.form.controls.secondary_hover_color.value)}changeSecondaryButtonFontColor(){document.documentElement.style.setProperty("--secondary-font-color",this.form.controls.secondary_font_color.value)}reset(){this.form.controls.table_color.setValue("#3b3ee3"),this.form.controls.table_font_color.setValue("#ffffff"),this.form.controls.font_size.setValue(12),this.form.controls.secondary_table_color.setValue("#87ceeb"),this.form.controls.secondary_table_font_color.setValue("#000000"),this.form.controls.tertiary_table_color.setValue("#ff4500"),this.form.controls.tertiary_table_font_color.setValue("#000000"),this.form.controls.collapsable_menu.setValue(!0),this.form.controls.entries_per_page.setValue("25"),this.form.controls.warning_color.setValue("#ffc107"),this.form.controls.warning_font_color.setValue("#000000"),this.form.controls.warning_hover_color.setValue("#e0a800"),this.form.controls.success_color.setValue("#28a745"),this.form.controls.success_font_color.setValue("#ffffff"),this.form.controls.success_hover_color.setValue("#218838"),this.form.controls.danger_color.setValue("#dc3545"),this.form.controls.danger_font_color.setValue("#ffffff"),this.form.controls.danger_hover_color.setValue("#c82333"),this.form.controls.info_color.setValue("#17a2b8"),this.form.controls.info_font_color.setValue("#ffffff"),this.form.controls.info_hover_color.setValue("#138496"),this.form.controls.primary_color.setValue("#007bff"),this.form.controls.primary_font_color.setValue("#ffffff"),this.form.controls.primary_hover_color.setValue("#0069d9"),this.form.controls.secondary_color.setValue("#868e96"),this.form.controls.secondary_font_color.setValue("#ffffff"),this.form.controls.secondary_hover_color.setValue("#5a6268"),document.documentElement.style.setProperty("--primary-table-color",this.form.controls.table_color.value),document.documentElement.style.setProperty("--primary-table-font-color",this.form.controls.table_font_color.value),document.documentElement.style.setProperty("--font-size",this.form.controls.font_size.value+"px"),document.documentElement.style.setProperty("--secondary-table-color",this.form.controls.secondary_table_color.value),document.documentElement.style.setProperty("--secondary-table-font-color",this.form.controls.secondary_table_font_color.value),document.documentElement.style.setProperty("--tertiary-table-color",this.form.controls.tertiary_table_color.value),document.documentElement.style.setProperty("--tertiary-table-font-color",this.form.controls.tertiary_table_font_color.value),document.documentElement.style.setProperty("--warning-color",this.form.controls.warning_color.value),document.documentElement.style.setProperty("--warning-font-color",this.form.controls.warning_font_color.value),document.documentElement.style.setProperty("--warning-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.warning_color.value,.5)),document.documentElement.style.setProperty("--warning-hover-color",this.form.controls.warning_hover_color.value),document.documentElement.style.setProperty("--success-color",this.form.controls.success_color.value),document.documentElement.style.setProperty("--success-font-color",this.form.controls.success_font_color.value),document.documentElement.style.setProperty("--success-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.success_color.value,.5)),document.documentElement.style.setProperty("--success-hover-color",this.form.controls.success_hover_color.value),document.documentElement.style.setProperty("--danger-color",this.form.controls.danger_color.value),document.documentElement.style.setProperty("--danger-font-color",this.form.controls.danger_font_color.value),document.documentElement.style.setProperty("--danger-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.danger_color.value,.5)),document.documentElement.style.setProperty("--danger-hover-color",this.form.controls.danger_hover_color.value),document.documentElement.style.setProperty("--info-color",this.form.controls.info_color.value),document.documentElement.style.setProperty("--info-font-color",this.form.controls.info_font_color.value),document.documentElement.style.setProperty("--info-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.info_color.value,.5)),document.documentElement.style.setProperty("--info-hover-color",this.form.controls.info_hover_color.value),document.documentElement.style.setProperty("--primary-color",this.form.controls.primary_color.value),document.documentElement.style.setProperty("--primary-font-color",this.form.controls.primary_font_color.value),document.documentElement.style.setProperty("--primary-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.primary_color.value,.5)),document.documentElement.style.setProperty("--primary-hover-color",this.form.controls.primary_hover_color.value),document.documentElement.style.setProperty("--secondary-color",this.form.controls.secondary_color.value),document.documentElement.style.setProperty("--secondary-font-color",this.form.controls.secondary_font_color.value),document.documentElement.style.setProperty("--secondary-shadow-color","0 0 0 0.2rem "+hexToRGB(this.form.controls.secondary_color.value,.5)),document.documentElement.style.setProperty("--secondary-hover-color",this.form.controls.secondary_hover_color.value)}submitForm(t){this.hasSubmit=!0,this._services._socket.call("updateDocumentProps","users",this._services._account.getUser()._id,[{prop:"settings",data:this.form.value}],this._services._account.getUser().__v,((t,e)=>{e?this._services._alert.setAlert("success","Settings have been updated"):(this._ds.error("Could not update settings"),this._services._socket.call("insertErrorLog","user settings - update user",[this._services._account.getUser(),t]))}))}}function hexToRGB(t,e){let n=parseInt(t.slice(1,3),16),o=parseInt(t.slice(3,5),16),r=parseInt(t.slice(5,7),16);return e?"rgba("+n+", "+o+", "+r+", "+e+")":"rgb("+n+", "+o+", "+r+")"}UsersSettingsComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:UsersSettingsComponent,deps:[{token:AuthPermissionService},{token:UserSettingsService},{token:ProviderService},{token:DialogService}],target:i0.ɵɵFactoryTarget.Component}),UsersSettingsComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:UsersSettingsComponent,selector:"ng-component",providers:[ProviderService],usesInheritance:!0,ngImport:i0,template:'<style>\n ::ng-deep :root {\n --primary-table-color: #3b3ee3;\n --primary-table-font-color: #ffffff;\n --font-size: 12px;\n --secondary-table-color: #87ceeb;\n --secondary-table-font-color: #000000;\n --tertiary-table-color: #ff4500;\n --tertiary-table-font-color: #000000;\n --warning-color: #ffc107;\n --warning-font-color: #000000;\n --warning-hover-color: #e0a800;\n --warning-shadow-color: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);\n --success-color: #28a745;\n --success-font-color: #ffffff;\n --success-hover-color: #218838;\n --success-shadow-color: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);\n --danger-color: #dc3545;\n --danger-font-color: #ffffff;\n --danger-hover-color: #c82333;\n --danger-shadow-color: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);\n --info-color: #17a2b8;\n --info-font-color: #ffffff;\n --info-hover-color: #138496;\n --info-shadow-color: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);\n --primary-color: #007bff;\n --primary-font-color: #ffffff;\n --primary-hover-color: #0069d9;\n --primary-shadow-color: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);\n --secondary-color: #868e96;\n --secondary-font-color: #ffffff;\n --secondary-hover-color: #5a6268;\n --secondary-shadow-color: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);\n }\n\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n } \n\n .btn-warning {\n color: var(--warning-font-color);\n background-color: var(--warning-color);\n border-color: var(--warning-color);\n }\n .btn-warning:focus, .btn-warning.focus {\n box-shadow: var(--warning-shadow-color);\n }\n .btn-warning:hover {\n color: var(--warning-font-color);\n background-color: var(--warning-hover-color);\n border-color: var(--warning-hover-color);\n }\n\n .btn-success {\n color: var(--success-font-color);\n background-color: var(--success-color);\n border-color: var(--success-color);\n }\n .btn-success:focus, .btn-success.focus {\n box-shadow: var(--success-shadow-color);\n }\n .btn-success:hover {\n color: var(--success-font-color);\n background-color: var(--success-hover-color);\n border-color: var(--success-hover-color);\n }\n\n .btn-danger {\n color: var(--danger-font-color);\n background-color: var(--danger-color);\n border-color: var(--danger-color);\n }\n .btn-danger:focus, .btn-danger.focus {\n box-shadow: var(--danger-shadow-color);\n }\n .btn-danger:hover {\n color: var(--danger-font-color);\n background-color: var(--danger-hover-color);\n border-color: var(--danger-hover-color);\n }\n\n .btn-info {\n color: var(--info-font-color);\n background-color: var(--info-color);\n border-color: var(--info-color);\n }\n .btn-info:focus, .btn-info.focus {\n box-shadow: var(--info-shadow-color);\n }\n .btn-info:hover {\n color: var(--info-font-color);\n background-color: var(--info-hover-color);\n border-color: var(--info-hover-color);\n }\n\n .btn-primary {\n color: var(--primary-font-color);\n background-color: var(--primary-color);\n border-color: var(--primary-color);\n }\n .btn-primary:focus, .btn-primary.focus {\n box-shadow: var(--primary-shadow-color);\n }\n .btn-primary:hover {\n color: var(--primary-font-color);\n background-color: var(--primary-hover-color);\n border-color: var(--primary-hover-color);\n }\n\n .btn-secondary {\n color: var(--secondary-font-color);\n background-color: var(--secondary-color);\n border-color: var(--secondary-color);\n }\n .btn-secondary:focus, .btn-secondary.focus {\n box-shadow: var(--secondary-shadow-color);\n }\n .btn-secondary:hover {\n color: var(--secondary-font-color);\n background-color: var(--secondary-hover-color);\n border-color: var(--secondary-hover-color);\n }\n\n .fa-minus {\n color: black;\n } \n\n :host /deep/ .card .card-body .collapseTable th {\n background-color: var(--primary-table-color);\n color: var(--primary-table-font-color);\n font-size: var(--font-size);\n }\n\n :host /deep/ .card .card-body .collapseTable-sec th {\n background-color: var(--secondary-table-color);\n color: var(--secondary-table-font-color);\n font-size: var(--font-size);\n }\n\n :host /deep/ .card .card-body .collapseTable-tert th {\n background-color: var(--tertiary-table-color);\n color: var(--tertiary-table-font-color);\n font-size: var(--font-size);\n }\n</style>\n\n<div class="col-lg-12">\n <form [formGroup]="form" novalidate (ngSubmit)="submitForm(form)">\n <div class="row">\n <ngb-accordion #acc="ngbAccordion" activeIds="miscOptions, tableOptions, buttonOptions">\n <ngb-panel id="miscOptions">\n <ng-template ngbPanelTitle>\n <div> \n <label class="label-accordion">Misc. Options</label>\n <i *ngIf="!acc.activeIds.includes(\'miscOptions\')" class="fa fa-plus float-end" aria-hidden="true"></i>\n <i *ngIf="acc.activeIds.includes(\'miscOptions\')" class="fa fa-minus float-end" aria-hidden="true"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class="row">\n <div class="col-lg-12">\n <responsive-button-group>\n <button type="button" class="btn btn-success" (click)="reset()">Reset Default Settings</button>\n </responsive-button-group>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-4">\n\t\t\t\t\t\t\t\t<b>Collapsable Menu</b><br>\n\t\t\t\t\t\t\t\t<div class="form-check">\n\t\t\t\t\t\t\t\t\t<label class="form-check-label">\n\t\t\t\t\t\t\t\t\t\t<input class="form-check-input" type="checkbox" hidden formControlName="collapsable_menu">\n\t\t\t\t\t\t\t\t\t\t<i *ngIf="form.controls.collapsable_menu.value" class="fa fa-check" style="color: green; font-size: 24px;" aria-hidden="true"></i>\n\t\t\t\t\t\t\t\t\t\t<i *ngIf="!form.controls.collapsable_menu.value" class="fa fa-times" style="color: red; font-size: 24px;" aria-hidden="true"></i>\n\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t</div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Default Entries Per Page</label>\n <em *ngIf="!form.controls.entries_per_page.valid">- Required</em>\n <select [ngClass]="[\'form-control\', form.controls.entries_per_page.valid ? \'is-valid\' : \'is-invalid\']" formControlName="entries_per_page">\n <option value="25">25</option>\n <option value="50">50</option>\n <option value="100">100</option>\n <option value="250">250</option>\n </select>\n <div class="invalid-feedback" *ngIf="!form.controls.entries_per_page.valid">Entries per page is required</div>\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Font Size (Recommended 11-14)</label>\n <em *ngIf="form.controls.font_size.hasError(\'required\')">- Required</em>\n <em *ngIf="form.controls.font_size.hasError(\'wholeNumbersGreaterThanZero\')">- Invalid</em>\n <em *ngIf="form.controls.font_size.hasError(\'maxValue\')">- Invalid</em>\n <em *ngIf="form.controls.font_size.hasError(\'minValue\')">- Invalid</em>\n <input [ngClass]="[\'form-control\', form.controls.font_size.valid ? \'is-valid\' : \'is-invalid\']" type="number" formControlName="font_size" (keyup)="changePrimaryFontSize()">\n <div class="invalid-feedback" *ngIf="form.controls.font_size.hasError(\'required\')">Font size is required</div>\n <div class="invalid-feedback" *ngIf="form.controls.font_size.hasError(\'wholeNumbersGreaterThanZero\')">Font size is invalid</div>\n <div class="invalid-feedback" *ngIf="form.controls.font_size.hasError(\'maxValue\')">Font size can not exceed 18</div>\n <div class="invalid-feedback" *ngIf="form.controls.font_size.hasError(\'minValue\')">Font size can not be less than 8</div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-6">\n <div class="form-group">\n <label class="form-control-label">Starting Page</label>\n <select [ngClass]="[\'form-control\', form.controls.opening_route.valid ? \'is-valid\' : \'\']" formControlName="opening_route">\n <option value="/home">Home</option>\n <option *ngFor="let view of views" [value]="view.value">{{view.display | titleCase}}</option>\n </select>\n </div>\n </div>\n <div class="col-lg-6" *ngIf="client === \'Ace Completions\'">\n <div class="form-group">\n <label class="form-control-label">Routing Preference</label>\n <select [ngClass]="[\'form-control\', form.controls.routing_preference.valid ? \'is-valid\' : \'\']" formControlName="routing_preference">\n <option value="alwaysAsk">Always Ask</option>\n <option value="sameTab">Same Tab</option>\n <option value="newTab">New Tab</option>\n <option value="newWindow">New Window</option>\n </select>\n </div>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n <ngb-panel id="tableOptions">\n <ng-template ngbPanelTitle>\n <div> \n <label class="label-accordion">Table Options</label>\n <i *ngIf="!acc.activeIds.includes(\'tableOptions\')" class="fa fa-plus float-end" aria-hidden="true"></i>\n <i *ngIf="acc.activeIds.includes(\'tableOptions\')" class="fa fa-minus float-end" aria-hidden="true"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class="row">\n <div class="col-lg-12">\n <collapse-table> \n <thead>\n <tr>\n <th>\n Primary Table\n </th>\n </tr>\n </thead>\n </collapse-table>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-6">\n <dl>\n <dt>Primary Table Background:</dt>\n <dd>\n <div class="form-group">\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.table_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="table_color" (ngModelChange)="changePrimaryColor()">\n </div>\n </dd>\n </dl>\n </div>\n <div class="col-lg-6">\n <dl>\n <dt>Primary Table Font:</dt>\n <dd>\n <div class="form-group">\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.table_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="table_font_color" (ngModelChange)="changePrimaryFontColor()">\n </div>\n </dd>\n </dl>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <collapse-table secondaryColor="true"> \n <thead>\n <tr>\n <th>\n Secondary Table\n </th>\n </tr>\n </thead>\n </collapse-table>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-6">\n <dl>\n <dt>Secondary Table Background:</dt>\n <dd>\n <div class="form-group">\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.secondary_table_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="secondary_table_color" (ngModelChange)="changeSecondaryColor()">\n </div>\n </dd>\n </dl>\n </div>\n <br>\n <div class="col-lg-6">\n <dl>\n <dt>Secondary Table Font:</dt>\n <dd>\n <div class="form-group">\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.secondary_table_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="secondary_table_font_color" (ngModelChange)="changeSecondaryFontColor()">\n </div>\n </dd>\n </dl>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <collapse-table tertiaryColor="true"> \n <thead>\n <tr>\n <th>\n Tertiary Table\n </th>\n </tr>\n </thead>\n </collapse-table>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-6">\n <dl>\n <dt>Tertiary Table Background:</dt>\n <dd>\n <div class="form-group">\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.tertiary_table_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="tertiary_table_color" (ngModelChange)="changeTertiaryColor()">\n </div>\n </dd>\n </dl>\n </div>\n <div class="col-lg-6">\n <dl>\n <dt>Tertiary Table Font:</dt>\n <dd>\n <div class="form-group">\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.tertiary_table_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="tertiary_table_font_color" (ngModelChange)="changeTertiaryFontColor()">\n </div>\n </dd>\n </dl>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n <ngb-panel id="buttonOptions">\n <ng-template ngbPanelTitle>\n <div> \n <label class="label-accordion">Button Options</label>\n <i *ngIf="!acc.activeIds.includes(\'buttonOptions\')" class="fa fa-plus float-end" aria-hidden="true"></i>\n <i *ngIf="acc.activeIds.includes(\'buttonOptions\')" class="fa fa-minus float-end" aria-hidden="true"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class="row">\n <div class="col-lg-12">\n <button type="button" class="btn btn-success">Success</button>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Success Button Background:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.success_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="success_color" (ngModelChange)="changeSuccessColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Success Button Font:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.success_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="success_font_color" (ngModelChange)="changeSuccessFontColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Success Button Hover:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.success_hover_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="success_hover_color" (ngModelChange)="changeSuccessHoverColor()">\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <button type="button" class="btn btn-warning">Warning</button>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Warning Button Background:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.warning_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="warning_color" (ngModelChange)="changeWarningColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Warning Button Font:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.warning_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="warning_font_color" (ngModelChange)="changeWarningFontColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Warning Button Hover:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.warning_hover_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="warning_hover_color" (ngModelChange)="changeWarningHoverColor()">\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <button type="button" class="btn btn-danger">Danger</button>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Danger Button Background:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.danger_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="danger_color" (ngModelChange)="changeDangerColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Danger Button Font:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.danger_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="danger_font_color" (ngModelChange)="changeDangerFontColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Danger Button Hover:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.danger_hover_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="danger_hover_color" (ngModelChange)="changeDangerHoverColor()">\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <button type="button" class="btn btn-info">Info</button>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Info Button Background:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.info_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="info_color" (ngModelChange)="changeInfoColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Info Button Font:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.info_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="info_font_color" (ngModelChange)="changeInfoFontColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Info Button Hover:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.info_hover_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="info_hover_color" (ngModelChange)="changeInfoHoverColor()">\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <button type="button" class="btn btn-primary">Primary</button>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Primary Button Background:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.primary_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="primary_color" (ngModelChange)="changePrimaryButtonColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Primary Button Font:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.primary_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="primary_font_color" (ngModelChange)="changePrimaryButtonFontColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Primary Button Hover:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.primary_hover_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="primary_hover_color" (ngModelChange)="changePrimaryHoverColor()">\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <button type="button" class="btn btn-secondary">Secondary</button>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Secondary Button Background:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.secondary_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="secondary_color" (ngModelChange)="changeSecondaryButtonColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Secondary Button Font:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.secondary_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="secondary_font_color" (ngModelChange)="changeSecondaryButtonFontColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Secondary Button Hover:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.secondary_hover_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="secondary_hover_color" (ngModelChange)="changeSecondaryHoverColor()">\n </div>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n </ngb-accordion>\n </div>\n <div class="row" style="padding-top: 15px;">\n <form-button [form]="form" [disabled]="disableFormButton"></form-button>\n </div>\n </form>\n</div>',styles:["\n ::ng-deep :root {\n --primary-table-color: #3b3ee3;\n --primary-table-font-color: #ffffff;\n --font-size: 12px;\n --secondary-table-color: #87ceeb;\n --secondary-table-font-color: #000000;\n --tertiary-table-color: #ff4500;\n --tertiary-table-font-color: #000000;\n --warning-color: #ffc107;\n --warning-font-color: #000000;\n --warning-hover-color: #e0a800;\n --warning-shadow-color: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);\n --success-color: #28a745;\n --success-font-color: #ffffff;\n --success-hover-color: #218838;\n --success-shadow-color: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);\n --danger-color: #dc3545;\n --danger-font-color: #ffffff;\n --danger-hover-color: #c82333;\n --danger-shadow-color: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);\n --info-color: #17a2b8;\n --info-font-color: #ffffff;\n --info-hover-color: #138496;\n --info-shadow-color: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);\n --primary-color: #007bff;\n --primary-font-color: #ffffff;\n --primary-hover-color: #0069d9;\n --primary-shadow-color: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);\n --secondary-color: #868e96;\n --secondary-font-color: #ffffff;\n --secondary-hover-color: #5a6268;\n --secondary-shadow-color: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);\n }\n\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n } \n\n .btn-warning {\n color: var(--warning-font-color);\n background-color: var(--warning-color);\n border-color: var(--warning-color);\n }\n .btn-warning:focus, .btn-warning.focus {\n box-shadow: var(--warning-shadow-color);\n }\n .btn-warning:hover {\n color: var(--warning-font-color);\n background-color: var(--warning-hover-color);\n border-color: var(--warning-hover-color);\n }\n\n .btn-success {\n color: var(--success-font-color);\n background-color: var(--success-color);\n border-color: var(--success-color);\n }\n .btn-success:focus, .btn-success.focus {\n box-shadow: var(--success-shadow-color);\n }\n .btn-success:hover {\n color: var(--success-font-color);\n background-color: var(--success-hover-color);\n border-color: var(--success-hover-color);\n }\n\n .btn-danger {\n color: var(--danger-font-color);\n background-color: var(--danger-color);\n border-color: var(--danger-color);\n }\n .btn-danger:focus, .btn-danger.focus {\n box-shadow: var(--danger-shadow-color);\n }\n .btn-danger:hover {\n color: var(--danger-font-color);\n background-color: var(--danger-hover-color);\n border-color: var(--danger-hover-color);\n }\n\n .btn-info {\n color: var(--info-font-color);\n background-color: var(--info-color);\n border-color: var(--info-color);\n }\n .btn-info:focus, .btn-info.focus {\n box-shadow: var(--info-shadow-color);\n }\n .btn-info:hover {\n color: var(--info-font-color);\n background-color: var(--info-hover-color);\n border-color: var(--info-hover-color);\n }\n\n .btn-primary {\n color: var(--primary-font-color);\n background-color: var(--primary-color);\n border-color: var(--primary-color);\n }\n .btn-primary:focus, .btn-primary.focus {\n box-shadow: var(--primary-shadow-color);\n }\n .btn-primary:hover {\n color: var(--primary-font-color);\n background-color: var(--primary-hover-color);\n border-color: var(--primary-hover-color);\n }\n\n .btn-secondary {\n color: var(--secondary-font-color);\n background-color: var(--secondary-color);\n border-color: var(--secondary-color);\n }\n .btn-secondary:focus, .btn-secondary.focus {\n box-shadow: var(--secondary-shadow-color);\n }\n .btn-secondary:hover {\n color: var(--secondary-font-color);\n background-color: var(--secondary-hover-color);\n border-color: var(--secondary-hover-color);\n }\n\n .fa-minus {\n color: black;\n } \n\n :host /deep/ .card .card-body .collapseTable th {\n background-color: var(--primary-table-color);\n color: var(--primary-table-font-color);\n font-size: var(--font-size);\n }\n\n :host /deep/ .card .card-body .collapseTable-sec th {\n background-color: var(--secondary-table-color);\n color: var(--secondary-table-font-color);\n font-size: var(--font-size);\n }\n\n :host /deep/ .card .card-body .collapseTable-tert th {\n background-color: var(--tertiary-table-color);\n color: var(--tertiary-table-font-color);\n font-size: var(--font-size);\n }\n"],dependencies:[{kind:"directive",type:i2.ɵNgNoValidate,selector:"form:not([ngNoForm]):not([ngNativeValidate])"},{kind:"directive",type:i2.NgSelectOption,selector:"option",inputs:["ngValue","value"]},{kind:"directive",type:i2.ɵNgSelectMultipleOption,selector:"option",inputs:["ngValue","value"]},{kind:"directive",type:i2.DefaultValueAccessor,selector:"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]"},{kind:"directive",type:i2.NumberValueAccessor,selector:"input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]"},{kind:"directive",type:i2.CheckboxControlValueAccessor,selector:"input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]"},{kind:"directive",type:i2.SelectControlValueAccessor,selector:"select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]",inputs:["compareWith"]},{kind:"directive",type:i2.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i2.NgControlStatusGroup,selector:"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]"},{kind:"directive",type:i2.FormGroupDirective,selector:"[formGroup]",inputs:["formGroup"],outputs:["ngSubmit"],exportAs:["ngForm"]},{kind:"directive",type:i2.FormControlName,selector:"[formControlName]",inputs:["formControlName","disabled","ngModel"],outputs:["ngModelChange"]},{kind:"component",type:CollapseTableComponent,selector:"collapse-table",inputs:["collapseSize","tableFixed","headerFixed","secondaryColor","tertiaryColor"]},{kind:"component",type:i1$4.NgbAccordion,selector:"ngb-accordion",inputs:["animation","activeIds","closeOthers","destroyOnHide","type"],outputs:["panelChange","shown","hidden"],exportAs:["ngbAccordion"]},{kind:"directive",type:i1$4.NgbPanel,selector:"ngb-panel",inputs:["disabled","id","title","type","cardClass"],outputs:["shown","hidden"]},{kind:"directive",type:i1$4.NgbPanelTitle,selector:"ng-template[ngbPanelTitle]"},{kind:"directive",type:i1$4.NgbPanelContent,selector:"ng-template[ngbPanelContent]"},{kind:"component",type:FormButtonComponent,selector:"form-button",inputs:["form","disabled","type"]},{kind:"component",type:ResponsiveButtonGroupComponent,selector:"responsive-button-group",inputs:["collapseSize"]},{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"pipe",type:TitleCaseAndUnderscorePipe,name:"titleCase"}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:UsersSettingsComponent,decorators:[{type:Component,args:[{providers:[ProviderService],template:'<style>\n ::ng-deep :root {\n --primary-table-color: #3b3ee3;\n --primary-table-font-color: #ffffff;\n --font-size: 12px;\n --secondary-table-color: #87ceeb;\n --secondary-table-font-color: #000000;\n --tertiary-table-color: #ff4500;\n --tertiary-table-font-color: #000000;\n --warning-color: #ffc107;\n --warning-font-color: #000000;\n --warning-hover-color: #e0a800;\n --warning-shadow-color: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);\n --success-color: #28a745;\n --success-font-color: #ffffff;\n --success-hover-color: #218838;\n --success-shadow-color: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);\n --danger-color: #dc3545;\n --danger-font-color: #ffffff;\n --danger-hover-color: #c82333;\n --danger-shadow-color: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);\n --info-color: #17a2b8;\n --info-font-color: #ffffff;\n --info-hover-color: #138496;\n --info-shadow-color: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);\n --primary-color: #007bff;\n --primary-font-color: #ffffff;\n --primary-hover-color: #0069d9;\n --primary-shadow-color: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);\n --secondary-color: #868e96;\n --secondary-font-color: #ffffff;\n --secondary-hover-color: #5a6268;\n --secondary-shadow-color: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);\n }\n\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n } \n\n .btn-warning {\n color: var(--warning-font-color);\n background-color: var(--warning-color);\n border-color: var(--warning-color);\n }\n .btn-warning:focus, .btn-warning.focus {\n box-shadow: var(--warning-shadow-color);\n }\n .btn-warning:hover {\n color: var(--warning-font-color);\n background-color: var(--warning-hover-color);\n border-color: var(--warning-hover-color);\n }\n\n .btn-success {\n color: var(--success-font-color);\n background-color: var(--success-color);\n border-color: var(--success-color);\n }\n .btn-success:focus, .btn-success.focus {\n box-shadow: var(--success-shadow-color);\n }\n .btn-success:hover {\n color: var(--success-font-color);\n background-color: var(--success-hover-color);\n border-color: var(--success-hover-color);\n }\n\n .btn-danger {\n color: var(--danger-font-color);\n background-color: var(--danger-color);\n border-color: var(--danger-color);\n }\n .btn-danger:focus, .btn-danger.focus {\n box-shadow: var(--danger-shadow-color);\n }\n .btn-danger:hover {\n color: var(--danger-font-color);\n background-color: var(--danger-hover-color);\n border-color: var(--danger-hover-color);\n }\n\n .btn-info {\n color: var(--info-font-color);\n background-color: var(--info-color);\n border-color: var(--info-color);\n }\n .btn-info:focus, .btn-info.focus {\n box-shadow: var(--info-shadow-color);\n }\n .btn-info:hover {\n color: var(--info-font-color);\n background-color: var(--info-hover-color);\n border-color: var(--info-hover-color);\n }\n\n .btn-primary {\n color: var(--primary-font-color);\n background-color: var(--primary-color);\n border-color: var(--primary-color);\n }\n .btn-primary:focus, .btn-primary.focus {\n box-shadow: var(--primary-shadow-color);\n }\n .btn-primary:hover {\n color: var(--primary-font-color);\n background-color: var(--primary-hover-color);\n border-color: var(--primary-hover-color);\n }\n\n .btn-secondary {\n color: var(--secondary-font-color);\n background-color: var(--secondary-color);\n border-color: var(--secondary-color);\n }\n .btn-secondary:focus, .btn-secondary.focus {\n box-shadow: var(--secondary-shadow-color);\n }\n .btn-secondary:hover {\n color: var(--secondary-font-color);\n background-color: var(--secondary-hover-color);\n border-color: var(--secondary-hover-color);\n }\n\n .fa-minus {\n color: black;\n } \n\n :host /deep/ .card .card-body .collapseTable th {\n background-color: var(--primary-table-color);\n color: var(--primary-table-font-color);\n font-size: var(--font-size);\n }\n\n :host /deep/ .card .card-body .collapseTable-sec th {\n background-color: var(--secondary-table-color);\n color: var(--secondary-table-font-color);\n font-size: var(--font-size);\n }\n\n :host /deep/ .card .card-body .collapseTable-tert th {\n background-color: var(--tertiary-table-color);\n color: var(--tertiary-table-font-color);\n font-size: var(--font-size);\n }\n</style>\n\n<div class="col-lg-12">\n <form [formGroup]="form" novalidate (ngSubmit)="submitForm(form)">\n <div class="row">\n <ngb-accordion #acc="ngbAccordion" activeIds="miscOptions, tableOptions, buttonOptions">\n <ngb-panel id="miscOptions">\n <ng-template ngbPanelTitle>\n <div> \n <label class="label-accordion">Misc. Options</label>\n <i *ngIf="!acc.activeIds.includes(\'miscOptions\')" class="fa fa-plus float-end" aria-hidden="true"></i>\n <i *ngIf="acc.activeIds.includes(\'miscOptions\')" class="fa fa-minus float-end" aria-hidden="true"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class="row">\n <div class="col-lg-12">\n <responsive-button-group>\n <button type="button" class="btn btn-success" (click)="reset()">Reset Default Settings</button>\n </responsive-button-group>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-4">\n\t\t\t\t\t\t\t\t<b>Collapsable Menu</b><br>\n\t\t\t\t\t\t\t\t<div class="form-check">\n\t\t\t\t\t\t\t\t\t<label class="form-check-label">\n\t\t\t\t\t\t\t\t\t\t<input class="form-check-input" type="checkbox" hidden formControlName="collapsable_menu">\n\t\t\t\t\t\t\t\t\t\t<i *ngIf="form.controls.collapsable_menu.value" class="fa fa-check" style="color: green; font-size: 24px;" aria-hidden="true"></i>\n\t\t\t\t\t\t\t\t\t\t<i *ngIf="!form.controls.collapsable_menu.value" class="fa fa-times" style="color: red; font-size: 24px;" aria-hidden="true"></i>\n\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t</div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Default Entries Per Page</label>\n <em *ngIf="!form.controls.entries_per_page.valid">- Required</em>\n <select [ngClass]="[\'form-control\', form.controls.entries_per_page.valid ? \'is-valid\' : \'is-invalid\']" formControlName="entries_per_page">\n <option value="25">25</option>\n <option value="50">50</option>\n <option value="100">100</option>\n <option value="250">250</option>\n </select>\n <div class="invalid-feedback" *ngIf="!form.controls.entries_per_page.valid">Entries per page is required</div>\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Font Size (Recommended 11-14)</label>\n <em *ngIf="form.controls.font_size.hasError(\'required\')">- Required</em>\n <em *ngIf="form.controls.font_size.hasError(\'wholeNumbersGreaterThanZero\')">- Invalid</em>\n <em *ngIf="form.controls.font_size.hasError(\'maxValue\')">- Invalid</em>\n <em *ngIf="form.controls.font_size.hasError(\'minValue\')">- Invalid</em>\n <input [ngClass]="[\'form-control\', form.controls.font_size.valid ? \'is-valid\' : \'is-invalid\']" type="number" formControlName="font_size" (keyup)="changePrimaryFontSize()">\n <div class="invalid-feedback" *ngIf="form.controls.font_size.hasError(\'required\')">Font size is required</div>\n <div class="invalid-feedback" *ngIf="form.controls.font_size.hasError(\'wholeNumbersGreaterThanZero\')">Font size is invalid</div>\n <div class="invalid-feedback" *ngIf="form.controls.font_size.hasError(\'maxValue\')">Font size can not exceed 18</div>\n <div class="invalid-feedback" *ngIf="form.controls.font_size.hasError(\'minValue\')">Font size can not be less than 8</div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-6">\n <div class="form-group">\n <label class="form-control-label">Starting Page</label>\n <select [ngClass]="[\'form-control\', form.controls.opening_route.valid ? \'is-valid\' : \'\']" formControlName="opening_route">\n <option value="/home">Home</option>\n <option *ngFor="let view of views" [value]="view.value">{{view.display | titleCase}}</option>\n </select>\n </div>\n </div>\n <div class="col-lg-6" *ngIf="client === \'Ace Completions\'">\n <div class="form-group">\n <label class="form-control-label">Routing Preference</label>\n <select [ngClass]="[\'form-control\', form.controls.routing_preference.valid ? \'is-valid\' : \'\']" formControlName="routing_preference">\n <option value="alwaysAsk">Always Ask</option>\n <option value="sameTab">Same Tab</option>\n <option value="newTab">New Tab</option>\n <option value="newWindow">New Window</option>\n </select>\n </div>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n <ngb-panel id="tableOptions">\n <ng-template ngbPanelTitle>\n <div> \n <label class="label-accordion">Table Options</label>\n <i *ngIf="!acc.activeIds.includes(\'tableOptions\')" class="fa fa-plus float-end" aria-hidden="true"></i>\n <i *ngIf="acc.activeIds.includes(\'tableOptions\')" class="fa fa-minus float-end" aria-hidden="true"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class="row">\n <div class="col-lg-12">\n <collapse-table> \n <thead>\n <tr>\n <th>\n Primary Table\n </th>\n </tr>\n </thead>\n </collapse-table>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-6">\n <dl>\n <dt>Primary Table Background:</dt>\n <dd>\n <div class="form-group">\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.table_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="table_color" (ngModelChange)="changePrimaryColor()">\n </div>\n </dd>\n </dl>\n </div>\n <div class="col-lg-6">\n <dl>\n <dt>Primary Table Font:</dt>\n <dd>\n <div class="form-group">\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.table_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="table_font_color" (ngModelChange)="changePrimaryFontColor()">\n </div>\n </dd>\n </dl>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <collapse-table secondaryColor="true"> \n <thead>\n <tr>\n <th>\n Secondary Table\n </th>\n </tr>\n </thead>\n </collapse-table>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-6">\n <dl>\n <dt>Secondary Table Background:</dt>\n <dd>\n <div class="form-group">\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.secondary_table_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="secondary_table_color" (ngModelChange)="changeSecondaryColor()">\n </div>\n </dd>\n </dl>\n </div>\n <br>\n <div class="col-lg-6">\n <dl>\n <dt>Secondary Table Font:</dt>\n <dd>\n <div class="form-group">\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.secondary_table_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="secondary_table_font_color" (ngModelChange)="changeSecondaryFontColor()">\n </div>\n </dd>\n </dl>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <collapse-table tertiaryColor="true"> \n <thead>\n <tr>\n <th>\n Tertiary Table\n </th>\n </tr>\n </thead>\n </collapse-table>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-6">\n <dl>\n <dt>Tertiary Table Background:</dt>\n <dd>\n <div class="form-group">\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.tertiary_table_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="tertiary_table_color" (ngModelChange)="changeTertiaryColor()">\n </div>\n </dd>\n </dl>\n </div>\n <div class="col-lg-6">\n <dl>\n <dt>Tertiary Table Font:</dt>\n <dd>\n <div class="form-group">\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.tertiary_table_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="tertiary_table_font_color" (ngModelChange)="changeTertiaryFontColor()">\n </div>\n </dd>\n </dl>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n <ngb-panel id="buttonOptions">\n <ng-template ngbPanelTitle>\n <div> \n <label class="label-accordion">Button Options</label>\n <i *ngIf="!acc.activeIds.includes(\'buttonOptions\')" class="fa fa-plus float-end" aria-hidden="true"></i>\n <i *ngIf="acc.activeIds.includes(\'buttonOptions\')" class="fa fa-minus float-end" aria-hidden="true"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class="row">\n <div class="col-lg-12">\n <button type="button" class="btn btn-success">Success</button>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Success Button Background:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.success_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="success_color" (ngModelChange)="changeSuccessColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Success Button Font:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.success_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="success_font_color" (ngModelChange)="changeSuccessFontColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Success Button Hover:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.success_hover_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="success_hover_color" (ngModelChange)="changeSuccessHoverColor()">\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <button type="button" class="btn btn-warning">Warning</button>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Warning Button Background:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.warning_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="warning_color" (ngModelChange)="changeWarningColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Warning Button Font:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.warning_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="warning_font_color" (ngModelChange)="changeWarningFontColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Warning Button Hover:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.warning_hover_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="warning_hover_color" (ngModelChange)="changeWarningHoverColor()">\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <button type="button" class="btn btn-danger">Danger</button>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Danger Button Background:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.danger_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="danger_color" (ngModelChange)="changeDangerColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Danger Button Font:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.danger_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="danger_font_color" (ngModelChange)="changeDangerFontColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Danger Button Hover:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.danger_hover_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="danger_hover_color" (ngModelChange)="changeDangerHoverColor()">\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <button type="button" class="btn btn-info">Info</button>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Info Button Background:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.info_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="info_color" (ngModelChange)="changeInfoColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Info Button Font:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.info_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="info_font_color" (ngModelChange)="changeInfoFontColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Info Button Hover:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.info_hover_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="info_hover_color" (ngModelChange)="changeInfoHoverColor()">\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <button type="button" class="btn btn-primary">Primary</button>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Primary Button Background:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.primary_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="primary_color" (ngModelChange)="changePrimaryButtonColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Primary Button Font:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.primary_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="primary_font_color" (ngModelChange)="changePrimaryButtonFontColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Primary Button Hover:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.primary_hover_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="primary_hover_color" (ngModelChange)="changePrimaryHoverColor()">\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <button type="button" class="btn btn-secondary">Secondary</button>\n </div>\n </div>\n <br>\n <div class="row">\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Secondary Button Background:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.secondary_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="secondary_color" (ngModelChange)="changeSecondaryButtonColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Secondary Button Font:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.secondary_font_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="secondary_font_color" (ngModelChange)="changeSecondaryButtonFontColor()">\n </div>\n </div>\n <div class="col-lg-4">\n <div class="form-group">\n <label class="form-control-label">Secondary Button Hover:</label>\n <input type="color" style="height: 40px" [ngClass]="[\'form-control\', form.controls.secondary_hover_color.value ? \'is-valid\' : \'is-invalid\']" formControlName="secondary_hover_color" (ngModelChange)="changeSecondaryHoverColor()">\n </div>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n </ngb-accordion>\n </div>\n <div class="row" style="padding-top: 15px;">\n <form-button [form]="form" [disabled]="disableFormButton"></form-button>\n </div>\n </form>\n</div>'}]}],ctorParameters:function(){return[{type:AuthPermissionService},{type:UserSettingsService},{type:ProviderService},{type:DialogService}]}});const routes$1=[{path:"user-settings",component:UserSettingsComponent,children:[{path:"settings",component:UsersSettingsComponent},{path:"**",redirectTo:"settings"}]}],UserSettingsRouting=RouterModule.forChild(routes$1);class DatatableComponent extends BaseComponent{constructor(t){super(t),this._services=t,this.totalItems=1e3,this.onChangeTableData=new EventEmitter}changeTableData(){this.onChangeTableData.emit()}sortColumn(t){this.tableData.sortColumn===t?"desc"===this.tableData.sortOrder?this.tableData.sortOrder="asc":this.tableData.sortOrder="desc":(this.tableData.sortOrder="asc",this.tableData.sortColumn=t),this.changeTableData()}navigateTo(t,e){"file_key"!==e&&t&&this.urlClick&&this._services._router.navigateByUrl(this.urlClick+t)}openFile(t){this._services._socket.call("getSignedUrl",t,900,((e,n)=>{n?window.open(n):this._services._socket.call("insertErrorLog","Widgets-datatable - getsignedurl",[t,e])}))}typeOf(t){return typeof t}}DatatableComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DatatableComponent,deps:[{token:ProviderService}],target:i0.ɵɵFactoryTarget.Component}),DatatableComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:DatatableComponent,selector:"data-table",inputs:{urlClick:"urlClick",columns:"columns",data:"data",collapseSize:"collapseSize",searchTitle:"searchTitle",totalItems:"totalItems",tableData:"tableData"},outputs:{onChangeTableData:"onChangeTableData"},providers:[ProviderService],usesInheritance:!0,ngImport:i0,template:'<style>\n .orangeRow { \n background-color: orangered;\n }\n\n collapse-table tr:hover {\n background-color: lightblue;\n cursor: pointer;\n }\n\n collapse-table {\n width: 100%;\n }\n</style>\n\n<div class="row">\n <div class="input-group">\n <span class="input-group-btn">\n <button class="btn btn-primary" type="button" (click)="changeTableData()">Search!</button>\n </span>\n <input type="text" class="form-control" placeholder="{{searchTitle}}" [(ngModel)]="tableData.searchString" (keyup.enter)="changeTableData()" style="z-index: 0">\n </div>\n</div>\n<div class="row" style="padding-top: 20px;">\n <collapse-table [collapseSize]="collapseSize" headerFixed="true">\n <thead>\n <tr>\n <th *ngFor="let column of columns" (click)="sortColumn(column.data)" style="cursor:pointer">\n {{column.name}}\n <i *ngIf="tableData.sortColumn == column.data && tableData.sortOrder === \'desc\'" class="fa fa-caret-down"></i>\n <i *ngIf="tableData.sortColumn == column.data && tableData.sortOrder === \'asc\'" class="fa fa-caret-up"></i>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor="let item of data" [ngClass]="{\'orangeRow\': item[\'color_red\']}">\n <td *ngFor="let column of columns" (click)="navigateTo(item[\'_id\'], column.data)" [attr.data-label]="column.name">\n <span *ngIf="typeOf(item[column.data]) !== \'boolean\' && column.data !== \'cost\' && column.data !== \'wells\' && column.data !== \'cost_total\' && column.data !== \'price\' && column.data !== \'date\' && column.data !== \'date_created\' && column.data !== \'date_delivered\' && column.data !== \'quantity\' && column.data !== \'quantity_string\' && column.data !== \'min_stock\' && column.data !== \'max_stock\' && column.data !== \'file_key\' && column.data !== \'date_in\'">{{column.subData ? item[column.data][column.subData] : item[column.data]}}</span>\n <span *ngIf="column.data === \'cost\' || column.data === \'price\' || column.data === \'cost_total\'">{{item[column.data] | currency:\'USD\':\'symbol\':"1.2-2"}}</span>\n <span *ngIf="column.data === \'date\' || column.data === \'date_created\' || column.data === \'date_delivered\'">{{item[column.data] | date:\'short\'}}</span>\n <span *ngIf="column.data === \'quantity\' || column.data === \'min_stock\' || column.data === \'max_stock\'">{{item[column.data] | number}}</span>\n <span *ngIf="column.data === \'quantity_string\'">{{item[column.data] | number}}</span>\n <span *ngIf="column.data === \'wells\'"><pre>{{item[column.data]}}</pre></span>\n <span *ngIf="column.data === \'file_key\'">\n <button type="button" (click)="openFile(item[column.data])" class="btn btn-secondary">Open File</button>\n \x3c!-- <button type="button" class="btn btn-warning" (click)="viewDeletedReason(item)" *ngIf="item.deleted.is_deleted">View Deleted Reason</button> --\x3e\n </span>\n <span *ngIf="typeOf(item[column.data]) === \'boolean\'">\n <i *ngIf="item[column.data]" class="fa fa-check" style="color: green; font-size: 18px;" aria-hidden="true"></i>\n <i *ngIf="!item[column.data]" class="fa fa-times" style="color: red; font-size: 18px;" aria-hidden="true"></i>\n </span>\n </td>\n </tr>\n </tbody>\n </collapse-table> \n</div>\n<hr />\n<div class="row">\n <div class="col-lg-4">\n <div class="row"> \n <div class="col-lg-8">\n <label class="form-control-label">Entries Per Page</label>\n <select class="form-control" [(ngModel)]="tableData.entriesPerPage" (ngModelChange)="changeTableData()">\n <option value="25">25</option>\n <option value="50">50</option>\n <option value="100">100</option>\n <option value="250">250</option>\n </select>\n </div>\n </div>\n </div>\n <div class="col-lg-8" style="margin-top: 16px;">\n <ngb-pagination class="float-right"\n boundaryLinks="true"\n [collectionSize]="totalItems"\n directionLinks="true"\n ellipses="false"\n [(page)]="tableData.pageNum"\n maxSize="6"\n [pageSize]="tableData.entriesPerPage"\n rotate="true"\n (pageChange)="changeTableData()"\n >\n </ngb-pagination>\n </div>\n</div>\n',styles:["\n .orangeRow { \n background-color: orangered;\n }\n\n collapse-table tr:hover {\n background-color: lightblue;\n cursor: pointer;\n }\n\n collapse-table {\n width: 100%;\n }\n"],dependencies:[{kind:"component",type:i1$4.NgbPagination,selector:"ngb-pagination",inputs:["disabled","boundaryLinks","directionLinks","ellipses","rotate","collectionSize","maxSize","page","pageSize","size"],outputs:["pageChange"]},{kind:"directive",type:i2.NgSelectOption,selector:"option",inputs:["ngValue","value"]},{kind:"directive",type:i2.ɵNgSelectMultipleOption,selector:"option",inputs:["ngValue","value"]},{kind:"directive",type:i2.DefaultValueAccessor,selector:"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]"},{kind:"directive",type:i2.SelectControlValueAccessor,selector:"select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]",inputs:["compareWith"]},{kind:"directive",type:i2.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i2.NgModel,selector:"[ngModel]:not([formControlName]):not([formControl])",inputs:["name","disabled","ngModel","ngModelOptions"],outputs:["ngModelChange"],exportAs:["ngModel"]},{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"component",type:CollapseTableComponent,selector:"collapse-table",inputs:["collapseSize","tableFixed","headerFixed","secondaryColor","tertiaryColor"]},{kind:"pipe",type:i7.DecimalPipe,name:"number"},{kind:"pipe",type:i7.CurrencyPipe,name:"currency"},{kind:"pipe",type:i7.DatePipe,name:"date"}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DatatableComponent,decorators:[{type:Component,args:[{providers:[ProviderService],selector:"data-table",template:'<style>\n .orangeRow { \n background-color: orangered;\n }\n\n collapse-table tr:hover {\n background-color: lightblue;\n cursor: pointer;\n }\n\n collapse-table {\n width: 100%;\n }\n</style>\n\n<div class="row">\n <div class="input-group">\n <span class="input-group-btn">\n <button class="btn btn-primary" type="button" (click)="changeTableData()">Search!</button>\n </span>\n <input type="text" class="form-control" placeholder="{{searchTitle}}" [(ngModel)]="tableData.searchString" (keyup.enter)="changeTableData()" style="z-index: 0">\n </div>\n</div>\n<div class="row" style="padding-top: 20px;">\n <collapse-table [collapseSize]="collapseSize" headerFixed="true">\n <thead>\n <tr>\n <th *ngFor="let column of columns" (click)="sortColumn(column.data)" style="cursor:pointer">\n {{column.name}}\n <i *ngIf="tableData.sortColumn == column.data && tableData.sortOrder === \'desc\'" class="fa fa-caret-down"></i>\n <i *ngIf="tableData.sortColumn == column.data && tableData.sortOrder === \'asc\'" class="fa fa-caret-up"></i>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor="let item of data" [ngClass]="{\'orangeRow\': item[\'color_red\']}">\n <td *ngFor="let column of columns" (click)="navigateTo(item[\'_id\'], column.data)" [attr.data-label]="column.name">\n <span *ngIf="typeOf(item[column.data]) !== \'boolean\' && column.data !== \'cost\' && column.data !== \'wells\' && column.data !== \'cost_total\' && column.data !== \'price\' && column.data !== \'date\' && column.data !== \'date_created\' && column.data !== \'date_delivered\' && column.data !== \'quantity\' && column.data !== \'quantity_string\' && column.data !== \'min_stock\' && column.data !== \'max_stock\' && column.data !== \'file_key\' && column.data !== \'date_in\'">{{column.subData ? item[column.data][column.subData] : item[column.data]}}</span>\n <span *ngIf="column.data === \'cost\' || column.data === \'price\' || column.data === \'cost_total\'">{{item[column.data] | currency:\'USD\':\'symbol\':"1.2-2"}}</span>\n <span *ngIf="column.data === \'date\' || column.data === \'date_created\' || column.data === \'date_delivered\'">{{item[column.data] | date:\'short\'}}</span>\n <span *ngIf="column.data === \'quantity\' || column.data === \'min_stock\' || column.data === \'max_stock\'">{{item[column.data] | number}}</span>\n <span *ngIf="column.data === \'quantity_string\'">{{item[column.data] | number}}</span>\n <span *ngIf="column.data === \'wells\'"><pre>{{item[column.data]}}</pre></span>\n <span *ngIf="column.data === \'file_key\'">\n <button type="button" (click)="openFile(item[column.data])" class="btn btn-secondary">Open File</button>\n \x3c!-- <button type="button" class="btn btn-warning" (click)="viewDeletedReason(item)" *ngIf="item.deleted.is_deleted">View Deleted Reason</button> --\x3e\n </span>\n <span *ngIf="typeOf(item[column.data]) === \'boolean\'">\n <i *ngIf="item[column.data]" class="fa fa-check" style="color: green; font-size: 18px;" aria-hidden="true"></i>\n <i *ngIf="!item[column.data]" class="fa fa-times" style="color: red; font-size: 18px;" aria-hidden="true"></i>\n </span>\n </td>\n </tr>\n </tbody>\n </collapse-table> \n</div>\n<hr />\n<div class="row">\n <div class="col-lg-4">\n <div class="row"> \n <div class="col-lg-8">\n <label class="form-control-label">Entries Per Page</label>\n <select class="form-control" [(ngModel)]="tableData.entriesPerPage" (ngModelChange)="changeTableData()">\n <option value="25">25</option>\n <option value="50">50</option>\n <option value="100">100</option>\n <option value="250">250</option>\n </select>\n </div>\n </div>\n </div>\n <div class="col-lg-8" style="margin-top: 16px;">\n <ngb-pagination class="float-right"\n boundaryLinks="true"\n [collectionSize]="totalItems"\n directionLinks="true"\n ellipses="false"\n [(page)]="tableData.pageNum"\n maxSize="6"\n [pageSize]="tableData.entriesPerPage"\n rotate="true"\n (pageChange)="changeTableData()"\n >\n </ngb-pagination>\n </div>\n</div>\n'}]}],ctorParameters:function(){return[{type:ProviderService}]},propDecorators:{urlClick:[{type:Input}],columns:[{type:Input}],data:[{type:Input}],collapseSize:[{type:Input}],searchTitle:[{type:Input}],totalItems:[{type:Input}],onChangeTableData:[{type:Output}],tableData:[{type:Input}]}});class DatatableModule{}DatatableModule.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DatatableModule,deps:[],target:i0.ɵɵFactoryTarget.NgModule}),DatatableModule.ɵmod=i0.ɵɵngDeclareNgModule({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:DatatableModule,declarations:[DatatableComponent],imports:[NgbModule,FormsModule,CommonModule,RouterModule,CollapseTableModule],exports:[DatatableComponent]}),DatatableModule.ɵinj=i0.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DatatableModule,imports:[NgbModule,FormsModule,CommonModule,RouterModule,CollapseTableModule]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DatatableModule,decorators:[{type:NgModule,args:[{imports:[NgbModule,FormsModule,CommonModule,RouterModule,CollapseTableModule],exports:[DatatableComponent],declarations:[DatatableComponent],providers:[]}]}]});class FileUploadComponent extends BaseComponent{constructor(t,e,n,o){super(e),this._resize=t,this._services=e,this._ds=n,this._http=o,this.files=[],this.allowDelete=!1,this.allowReplace=!1,this.showFileUpload=!0,this.filesChanged=new EventEmitter,this.fileAdded=new EventEmitter,this.fileRemoved=new EventEmitter,this.supportedFileTypes=["application/pdf","text/plain","image/gif","image/png","image/jpeg","image/bmp"],this.pdfSrc="",this.replaceFileIndex=0,this.isUploading=!1,this.progressMsg="",this.windowSize=0}ngOnInit(){this.windowSize$=this._resize.onResize$.subscribe((t=>{this.windowSize=t?t.innerWidth:window.innerWidth}))}ngOnDestroy(){this.windowSize$.unsubscribe()}dragFileAccepted(t){this.supportedFileTypes.indexOf(t.type)>=0?this.uploadWithEmit(t,"misc").then((()=>{}),(t=>{this._ds.error("Could not upload file, incorrect type")})):this._ds.error("Invalid format, the supported file types are: "+this.supportedFileTypes)}upload(t,e,n,o,r){return new Promise(((i,a)=>{this.progressMsg="Uploading "+(o||t.name),this._services._aws.uploadFile(t,e,n,o).then((a=>{const s={_id:a._id,name:o||t.name,size:t.size,status:r||"Uploaded",key:a.key,order:n||-1,type:e};this.isUploading=!1,this.files.push(s),this.files=this.files.sort(((t,e)=>t.order-e.order)),i(s)}),(t=>{this._ds.error("Could not upload file. "+t),a(t)})),this.isUploading=!0}))}uploadWithEmit(t,e,n,o,r){return new Promise(((i,a)=>{this.progressMsg="Uploading "+(o||t.name),this._services._aws.uploadFile(t,e,n,o).then((a=>{const s={_id:a._id,name:o||t.name,size:t.size,status:r||"Uploaded",key:a.key,order:n||-1,type:e};this.isUploading=!1,this.files=this.files.sort(((t,e)=>t.order-e.order)),this.fileAdded.emit(s),i(s)}),(t=>{this._ds.error("Could not upload file. "+t),a(t)})),this.isUploading=!0}))}delete(t,e=!0){this.pdfSrc="",e?this._ds.confirm("Are you sure you want to delete this file?").then((e=>{this._services._aws.deleteFile(this.files[t].key,((e,n)=>{e&&(this._ds.error("Could not delete file"),this._services._socket.call("insertErrorLog","Widgets.File-Upload - Delete File",[this.files[t].key,e]))})),this.files.splice(t,1)}),(t=>{})):(this._services._aws.deleteFile(this.files[t].key,((e,n)=>{e&&this._services._socket.call("insertErrorLog","Widgets.File-Upload - Delete File",[this.files[t].key,e])})),this.files.splice(t,1))}deleteWithEmit(t,e=!0){this.pdfSrc="";let n=Object.assign({},this.files[t]);e?this._ds.confirm("Are you sure you want to delete this file?").then((e=>{this._services._aws.deleteFile(this.files[t].key,((e,o)=>{e&&(this._ds.error("Could not delete file"),this._services._socket.call("insertErrorLog","Widgets.File-Upload - Delete File",[this.files[t].key,e])),this.fileRemoved.emit(n)}))}),(t=>{})):this._services._aws.deleteFile(this.files[t].key,((e,o)=>{e&&this._services._socket.call("insertErrorLog","Widgets.File-Upload - Delete File",[this.files[t].key,e]),this.fileRemoved.emit(n)}))}deleteFileWithId(t){this.delete(this.files.map((t=>t._id)).indexOf(t),!1)}open(t){this._services._socket.call("getSignedUrl",t.key,900,((e,n)=>{n?window.open(n):this._services._socket.call("insertErrorLog","Widgets-file - getsignedurl",[t.key,e])}))}setPDFViewerSrc(t){this._services._socket.call("getSignedUrl",t.key,900,((e,n)=>{n?this.pdfSrc=n:(this._ds.error("Could not get signed url for file"),this._services._socket.call("insertErrorLog","Widgets-file - getsignedurl pdfviewer",[t.key,e]))}))}onFileSelect(t){this.uploadWithEmit(t.target.files[0],this.fileType?this.fileType:"misc").then((()=>{}),(()=>{})),t.srcElement.value=""}onFileSelectReplace(t){if(t.target.files[0]){this.files[this.replaceFileIndex]._id;let e=this.files[this.replaceFileIndex].type,n=this.files[this.replaceFileIndex].order,o=this.files[this.replaceFileIndex].name.replace(/\.[^\.]+$/,"")+"."+t.target.files[0].name.split(".")[t.target.files[0].name.split(".").length-1],r=this.files[this.replaceFileIndex].status;this.deleteWithEmit(this.replaceFileIndex,!1),"Unsigned"===r?this._ds.confirm("Are you replacing this file with a signed copy?").then((r=>{this.uploadWithEmit(t.target.files[0],e,n,o,"Signed").then((t=>{t.key,t._id}),(t=>{}))}),(r=>{this.uploadWithEmit(t.target.files[0],e,n,o).then((t=>{t.key,t._id}),(t=>{}))})):this.uploadWithEmit(t.target.files[0],e,n,o).then((t=>{t.key,t._id}),(t=>{}))}}userIsInRole(t){return this._services._account.isUserInView(t)}isMobile(){}downloadResource(t){return this._http.get(t,{responseType:"blob"}).toPromise()}download(t){this._services._socket.call("getSignedUrl",t.key,900,(async(e,n)=>{if(n){const e=await this.downloadResource(n),o=window.URL.createObjectURL(e),r=this.download_link.nativeElement;r.href=o,r.download=t.name,r.click(),window.URL.revokeObjectURL(o)}else this._services._socket.call("insertErrorLog","Widgets-file - update bol",[e])}))}email(t){this._ds.input("Email file to which address?",[{label:"Email Address",form:"email",data:"",validators:[Validators.required,this._services._vs.email],validatorErrors:["required","email"],validatorMsg:["Email is required","Email is invalid"],required:!0}]).then((e=>{this._services._socket.call("emailFile",t._id,e.email.value,((t,e)=>{t?this._ds.error("Could not send email: "+t):this._services._alert.setAlert("success","Email has been sent")}))}),(t=>{}))}}FileUploadComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:FileUploadComponent,deps:[{token:ResizeService},{token:ProviderService},{token:DialogService},{token:i4.HttpClient}],target:i0.ɵɵFactoryTarget.Component}),FileUploadComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:FileUploadComponent,selector:"file-upload",inputs:{files:"files",allowDelete:"allowDelete",allowReplace:"allowReplace",showFileUpload:"showFileUpload",fileType:"fileType"},outputs:{filesChanged:"filesChanged",fileAdded:"fileAdded",fileRemoved:"fileRemoved"},viewQueries:[{propertyName:"download_link",first:!0,predicate:["download_link"],descendants:!0,static:!0}],usesInheritance:!0,ngImport:i0,template:'<style>\n \n html, body { height: 100%; }\n\n collapse-table tr:hover {\n background-color: lightblue;\n cursor: pointer;\n }\n\n collapse-table {\n width: 100%;\n }\n \n /* Label container: */\n .file {\n display: inline-block;\n padding: 0 0 0 0.5em;\n cursor: pointer;\n position: relative;\n border: .075rem solid #ddd;\n border-radius: .25rem;\n }\n \n /* The pseudo input field: */\n .file::before {\n content: "";\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n z-index: -1;\n \n /* Bootstrap appearance: */\n background-color: #fff;\n border: .075rem solid #ddd;\n border-radius: .25rem;\n -webkit-box-shadow: inset 0 .2rem .4rem rgba(0,0,0,.05);\n box-shadow: inset 0 .2rem .4rem rgba(0,0,0,.05);\n }\n \n /* The pseudo button: */\n .file::after {\n content: "Browse";\n display: inline-block;\n \n /* Bootstrap appearance: */\n background-color: #eee;\n border: .075rem solid #ddd;\n border-radius: 0 .25rem .25rem 0;\n padding: .5rem 1rem;\n line-height: 1.5;\n color: #555;\n }\n \n .file input[type=file] {\n cursor: pointer;\n border: 0 none;\n width: 12em;\n }\n \n /* -webkit hide the button: */\n .file input[type=file]::-webkit-file-upload-button {\n border: 0;\n padding: 0;\n margin: 0 ;\n width: 0;\n background: transparent;\n } \n \n /* IE10+ hide the button: */\n .file input[type=file]::-ms-browse {\n padding: 0;\n margin: -1px;\n width: 0;\n border: 0;\n background: transparent;\n }\n \n .file input[type=file]::-ms-value {\n background: #fff;\n border: 0;\n }\n\n card {\n width: 100%;\n }\n</style>\n\n<a style="display: none" #download_link></a>\n<input hidden type="file" #fileInputReplace (change)="onFileSelectReplace($event)" />\n \n<div class="card">\n <div class="card-header">\n <strong class="pull-left">Files</strong>\n </div>\n <div class="card-block">\n <div class="row">\n <div class="col-lg-6">\n <div class="row" *ngIf="showFileUpload">\n <div class="col-lg-6">\n <div class="container">\n <div style="margin: 10px 0px; font-weight: bold;">Upload File</div>\n <label class="file">\n <input type="file" #fileInput (change)="onFileSelect($event)" />\n </label>\n <br>\n <ngx-file-drop dropZoneLabel="Drop files here" style="width: 223px; height: 112px; border: 1px black dashed; border-radius: 5px; justify-content: center;" class="vertical-align" (onFileDrop)="dragFileAccepted($event)"></ngx-file-drop>\n </div>\n </div>\n <div class="col-lg-6">\n <div *ngIf="isUploading">\n <b>{{progressMsg || \'N/A\'}}</b>\n </div>\n </div>\n </div>\n <div class="row" style="margin-top: 10px;">\n <div class="col-lg-12" *ngIf="windowSize > 980">\n <div style="text-align: center;" *ngIf="pdfSrc">\n <resolveio-client-lib-pdf-viewer [pdfSrc]="pdfSrc"></resolveio-client-lib-pdf-viewer>\n </div>\n </div>\n </div>\n </div>\n <div class="col-lg-6">\n <div *ngIf="files && files.length">\n <b>Uploaded Files</b>\n <div [style.max-height]="windowSize > 900 ? \'300px\' : \'\'" [style.overflow-y]="windowSize > 900 ? \'auto\' : \'\'">\n <collapse-table collapseSize="900">\n <thead>\n <tr>\n <th>File Name</th>\n <th>Size</th>\n <th>Type</th>\n <th>Actions</th>\n </tr>\n </thead> \n <tbody>\n <tr *ngFor="let file of files; let i = index">\n <td data-label="File Name" (click)="setPDFViewerSrc(file)">{{file.name}}</td>\n <td data-label="Size" (click)="setPDFViewerSrc(file)">{{ file.size/1024/1024 | number:\'.2\' }} MB</td>\n <td data-label="Type" (click)="setPDFViewerSrc(file)">{{file.type}}</td>\n <td data-label="Actions">\n <responsive-button-group collapseSize="900">\n <button type="button" class="btn btn-success" (click)="open(file)">Open</button>\n <button type="button" class="btn btn-primary" (click)="download(file)">Download</button>\n <button [hidden]="!allowDelete || (file.type !== \'misc\' && !userIsInRole(\'super-admin\'))" type="button" class="btn btn-danger" (click)="deleteWithEmit(i)">Delete</button>\n <button [hidden]="!allowDelete || (file.type !== \'misc\' && !userIsInRole(\'super-admin\'))" type="button" class="btn btn-danger" (click)="fileInputReplace.click(); replaceFileIndex = i;">Replace</button>\n <button type="button" class="btn btn-warning" (click)="email(file)">Email</button>\n </responsive-button-group>\n </td>\n </tr>\n </tbody>\n </collapse-table>\n </div>\n </div>\n <div *ngIf="!files || !files.length">\n <b>No Uploaded Files</b>\n </div>\n </div>\n </div>\n </div>\n</div>',styles:['\n \n html, body { height: 100%; }\n\n collapse-table tr:hover {\n background-color: lightblue;\n cursor: pointer;\n }\n\n collapse-table {\n width: 100%;\n }\n \n /* Label container: */\n .file {\n display: inline-block;\n padding: 0 0 0 0.5em;\n cursor: pointer;\n position: relative;\n border: .075rem solid #ddd;\n border-radius: .25rem;\n }\n \n /* The pseudo input field: */\n .file::before {\n content: "";\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n z-index: -1;\n \n /* Bootstrap appearance: */\n background-color: #fff;\n border: .075rem solid #ddd;\n border-radius: .25rem;\n -webkit-box-shadow: inset 0 .2rem .4rem rgba(0,0,0,.05);\n box-shadow: inset 0 .2rem .4rem rgba(0,0,0,.05);\n }\n \n /* The pseudo button: */\n .file::after {\n content: "Browse";\n display: inline-block;\n \n /* Bootstrap appearance: */\n background-color: #eee;\n border: .075rem solid #ddd;\n border-radius: 0 .25rem .25rem 0;\n padding: .5rem 1rem;\n line-height: 1.5;\n color: #555;\n }\n \n .file input[type=file] {\n cursor: pointer;\n border: 0 none;\n width: 12em;\n }\n \n /* -webkit hide the button: */\n .file input[type=file]::-webkit-file-upload-button {\n border: 0;\n padding: 0;\n margin: 0 ;\n width: 0;\n background: transparent;\n } \n \n /* IE10+ hide the button: */\n .file input[type=file]::-ms-browse {\n padding: 0;\n margin: -1px;\n width: 0;\n border: 0;\n background: transparent;\n }\n \n .file input[type=file]::-ms-value {\n background: #fff;\n border: 0;\n }\n\n card {\n width: 100%;\n }\n'],dependencies:[{kind:"directive",type:i7.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"component",type:CollapseTableComponent,selector:"collapse-table",inputs:["collapseSize","tableFixed","headerFixed","secondaryColor","tertiaryColor"]},{kind:"component",type:ResponsiveButtonGroupComponent,selector:"responsive-button-group",inputs:["collapseSize"]},{kind:"component",type:i8.NgxFileDropComponent,selector:"ngx-file-drop",inputs:["accept","directory","multiple","dropZoneLabel","dropZoneClassName","useDragEnter","contentClassName","showBrowseBtn","browseBtnClassName","browseBtnLabel","disabled"],outputs:["onFileDrop","onFileOver","onFileLeave"]},{kind:"component",type:i9.PdfViewerComponent,selector:"resolveio-client-lib-pdf-viewer",inputs:["pdfSrc","fileName"]},{kind:"pipe",type:i7.DecimalPipe,name:"number"}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:FileUploadComponent,decorators:[{type:Component,args:[{selector:"file-upload",template:'<style>\n \n html, body { height: 100%; }\n\n collapse-table tr:hover {\n background-color: lightblue;\n cursor: pointer;\n }\n\n collapse-table {\n width: 100%;\n }\n \n /* Label container: */\n .file {\n display: inline-block;\n padding: 0 0 0 0.5em;\n cursor: pointer;\n position: relative;\n border: .075rem solid #ddd;\n border-radius: .25rem;\n }\n \n /* The pseudo input field: */\n .file::before {\n content: "";\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n z-index: -1;\n \n /* Bootstrap appearance: */\n background-color: #fff;\n border: .075rem solid #ddd;\n border-radius: .25rem;\n -webkit-box-shadow: inset 0 .2rem .4rem rgba(0,0,0,.05);\n box-shadow: inset 0 .2rem .4rem rgba(0,0,0,.05);\n }\n \n /* The pseudo button: */\n .file::after {\n content: "Browse";\n display: inline-block;\n \n /* Bootstrap appearance: */\n background-color: #eee;\n border: .075rem solid #ddd;\n border-radius: 0 .25rem .25rem 0;\n padding: .5rem 1rem;\n line-height: 1.5;\n color: #555;\n }\n \n .file input[type=file] {\n cursor: pointer;\n border: 0 none;\n width: 12em;\n }\n \n /* -webkit hide the button: */\n .file input[type=file]::-webkit-file-upload-button {\n border: 0;\n padding: 0;\n margin: 0 ;\n width: 0;\n background: transparent;\n } \n \n /* IE10+ hide the button: */\n .file input[type=file]::-ms-browse {\n padding: 0;\n margin: -1px;\n width: 0;\n border: 0;\n background: transparent;\n }\n \n .file input[type=file]::-ms-value {\n background: #fff;\n border: 0;\n }\n\n card {\n width: 100%;\n }\n</style>\n\n<a style="display: none" #download_link></a>\n<input hidden type="file" #fileInputReplace (change)="onFileSelectReplace($event)" />\n \n<div class="card">\n <div class="card-header">\n <strong class="pull-left">Files</strong>\n </div>\n <div class="card-block">\n <div class="row">\n <div class="col-lg-6">\n <div class="row" *ngIf="showFileUpload">\n <div class="col-lg-6">\n <div class="container">\n <div style="margin: 10px 0px; font-weight: bold;">Upload File</div>\n <label class="file">\n <input type="file" #fileInput (change)="onFileSelect($event)" />\n </label>\n <br>\n <ngx-file-drop dropZoneLabel="Drop files here" style="width: 223px; height: 112px; border: 1px black dashed; border-radius: 5px; justify-content: center;" class="vertical-align" (onFileDrop)="dragFileAccepted($event)"></ngx-file-drop>\n </div>\n </div>\n <div class="col-lg-6">\n <div *ngIf="isUploading">\n <b>{{progressMsg || \'N/A\'}}</b>\n </div>\n </div>\n </div>\n <div class="row" style="margin-top: 10px;">\n <div class="col-lg-12" *ngIf="windowSize > 980">\n <div style="text-align: center;" *ngIf="pdfSrc">\n <resolveio-client-lib-pdf-viewer [pdfSrc]="pdfSrc"></resolveio-client-lib-pdf-viewer>\n </div>\n </div>\n </div>\n </div>\n <div class="col-lg-6">\n <div *ngIf="files && files.length">\n <b>Uploaded Files</b>\n <div [style.max-height]="windowSize > 900 ? \'300px\' : \'\'" [style.overflow-y]="windowSize > 900 ? \'auto\' : \'\'">\n <collapse-table collapseSize="900">\n <thead>\n <tr>\n <th>File Name</th>\n <th>Size</th>\n <th>Type</th>\n <th>Actions</th>\n </tr>\n </thead> \n <tbody>\n <tr *ngFor="let file of files; let i = index">\n <td data-label="File Name" (click)="setPDFViewerSrc(file)">{{file.name}}</td>\n <td data-label="Size" (click)="setPDFViewerSrc(file)">{{ file.size/1024/1024 | number:\'.2\' }} MB</td>\n <td data-label="Type" (click)="setPDFViewerSrc(file)">{{file.type}}</td>\n <td data-label="Actions">\n <responsive-button-group collapseSize="900">\n <button type="button" class="btn btn-success" (click)="open(file)">Open</button>\n <button type="button" class="btn btn-primary" (click)="download(file)">Download</button>\n <button [hidden]="!allowDelete || (file.type !== \'misc\' && !userIsInRole(\'super-admin\'))" type="button" class="btn btn-danger" (click)="deleteWithEmit(i)">Delete</button>\n <button [hidden]="!allowDelete || (file.type !== \'misc\' && !userIsInRole(\'super-admin\'))" type="button" class="btn btn-danger" (click)="fileInputReplace.click(); replaceFileIndex = i;">Replace</button>\n <button type="button" class="btn btn-warning" (click)="email(file)">Email</button>\n </responsive-button-group>\n </td>\n </tr>\n </tbody>\n </collapse-table>\n </div>\n </div>\n <div *ngIf="!files || !files.length">\n <b>No Uploaded Files</b>\n </div>\n </div>\n </div>\n </div>\n</div>'}]}],ctorParameters:function(){return[{type:ResizeService},{type:ProviderService},{type:DialogService},{type:i4.HttpClient}]},propDecorators:{files:[{type:Input}],allowDelete:[{type:Input}],allowReplace:[{type:Input}],showFileUpload:[{type:Input}],filesChanged:[{type:Output}],fileAdded:[{type:Output}],fileRemoved:[{type:Output}],fileType:[{type:Input}],download_link:[{type:ViewChild,args:["download_link",{static:!0}]}]}});class FileModule{}FileModule.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:FileModule,deps:[],target:i0.ɵɵFactoryTarget.NgModule}),FileModule.ɵmod=i0.ɵɵngDeclareNgModule({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:FileModule,declarations:[FileUploadComponent],imports:[CommonModule,FormsModule,CollapseTableModule,NgbModule,ResponsiveButtonGroupModule,NgxFileDropModule,PdfViewerModule],exports:[FileUploadComponent]}),FileModule.ɵinj=i0.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:FileModule,imports:[CommonModule,FormsModule,CollapseTableModule,NgbModule,ResponsiveButtonGroupModule,NgxFileDropModule,PdfViewerModule]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:FileModule,decorators:[{type:NgModule,args:[{imports:[CommonModule,FormsModule,CollapseTableModule,NgbModule,ResponsiveButtonGroupModule,NgxFileDropModule,PdfViewerModule],declarations:[FileUploadComponent],exports:[FileUploadComponent]}]}]});class UserSettingsModule{}UserSettingsModule.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:UserSettingsModule,deps:[],target:i0.ɵɵFactoryTarget.NgModule}),UserSettingsModule.ɵmod=i0.ɵɵngDeclareNgModule({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:UserSettingsModule,declarations:[UserSettingsComponent,UsersSettingsComponent],imports:[SharedModule,i1$3.RouterModule,DatatableModule,FileModule]}),UserSettingsModule.ɵinj=i0.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:UserSettingsModule,providers:[UserSettingsService],imports:[SharedModule,UserSettingsRouting,DatatableModule,FileModule]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:UserSettingsModule,decorators:[{type:NgModule,args:[{imports:[SharedModule,UserSettingsRouting,DatatableModule,FileModule],declarations:[UserSettingsComponent,UsersSettingsComponent],providers:[UserSettingsService]}]}]});class HomeComponent extends BaseComponent{constructor(t,e,n,o,r){super(n),this._route=t,this.auth=e,this._services=n,this._http=o,this._app=r,this.menuData={title:"Home",module:null,description:null,description_name:null,tabs:[{link:"home",params:null,label:"Home"}]},this.selectedSolution="Asset",this.loggingOut$=null,this.subscription$=null}ngOnInit(){this._services._app.setNavbarModuleData(this.menuData),this.loggingOut$=this._app.isLoggingOut.subscribe((t=>{t||(this._services._account.getUser()?this._services._account.getUser().settings&&this._services._account.getUser().settings.opening_route&&"/home"!==this._services._account.getUser().settings.opening_route?this._services._router.navigateByUrl(this._services._account.getUser().settings.opening_route):"/home"!==this._services._router.url&&this._services._router.navigateByUrl("/home"):(this.subscription$&&this.subscription$.unsubscribe(),this.subscription$=this._services._account.user.subscribe((t=>{t&&t.settings&&t.settings.opening_route&&"/home"!==t.settings.opening_route?this._services._router.navigateByUrl(t.settings.opening_route):"/home"!==this._services._router.url&&this._services._router.navigateByUrl("/home")}),(()=>{}))))}))}ngOnDestroy(){this.subscription$&&this.subscription$.unsubscribe(),this.loggingOut$&&this.loggingOut$.unsubscribe()}}HomeComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:HomeComponent,deps:[{token:i1$3.ActivatedRoute},{token:AuthService},{token:ProviderService},{token:i4.HttpClient},{token:CoreService}],target:i0.ɵɵFactoryTarget.Component}),HomeComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:HomeComponent,selector:"ng-component",providers:[ProviderService],usesInheritance:!0,ngImport:i0,template:'<div style="height: 100%">\n <div class="row" style="margin-left: 0px; margin-right: 0px; height: 100%;">\n <div class="col-lg-12" style="height: 100%">\n <div class="jumbotron jumbotron-fluid" style="height: 100%; padding-bottom: 0px;">\n <div class="container text-center" style="height: 100%">\n <img src="/assets/images/ResolveIO.png" class="img-fluid" alt="Responsive image" style="height: 100%; width: auto; max-width: 750px; max-height: 525px;">\n <p style="font-size: 24px; font-style: italic">The All-in-One Solution for Tracking Inventory, Ordering, POs, Management, and Much More!</p>\n </div>\n </div>\n </div>\n </div> \n</div>'}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:HomeComponent,decorators:[{type:Component,args:[{providers:[ProviderService],template:'<div style="height: 100%">\n <div class="row" style="margin-left: 0px; margin-right: 0px; height: 100%;">\n <div class="col-lg-12" style="height: 100%">\n <div class="jumbotron jumbotron-fluid" style="height: 100%; padding-bottom: 0px;">\n <div class="container text-center" style="height: 100%">\n <img src="/assets/images/ResolveIO.png" class="img-fluid" alt="Responsive image" style="height: 100%; width: auto; max-width: 750px; max-height: 525px;">\n <p style="font-size: 24px; font-style: italic">The All-in-One Solution for Tracking Inventory, Ordering, POs, Management, and Much More!</p>\n </div>\n </div>\n </div>\n </div> \n</div>'}]}],ctorParameters:function(){return[{type:i1$3.ActivatedRoute},{type:AuthService},{type:ProviderService},{type:i4.HttpClient},{type:CoreService}]}});class CoreModule{}CoreModule.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:CoreModule,deps:[],target:i0.ɵɵFactoryTarget.NgModule}),CoreModule.ɵmod=i0.ɵɵngDeclareNgModule({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:CoreModule,declarations:[CoreComponent,HomeComponent,LoggerComponent,HtmlDiffViewerComponent,NavbarMainComponent,NavbarModuleComponent,ForgotPasswordComponent,EnrollComponent,Auth365Component,FocusDirective,ScrollDirective,DialogConfirmContent,DialogErrorContent,DialogInputContent,DialogNotifyContent,DialogSelectDateTimeContent,DialogSelectDataLabelsContent,DialogLoginContent,DialogRegisterContent,DialogSelectWithButtonsURLContent,DialogSelectArrayObjsContent,DialogSelectArrayContent],imports:[SharedModule,HttpClientModule,NgbModule,i1$1.ToastrModule,i1$2.NgxLocalStorageModule,UserSettingsModule,BrowserAnimationsModule,CollapseTableModule],exports:[CoreComponent,HomeComponent,LoggerComponent,NavbarMainComponent,NavbarModuleComponent,ForgotPasswordComponent,EnrollComponent,Auth365Component,FocusDirective,ScrollDirective]}),CoreModule.ɵinj=i0.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:CoreModule,providers:[CoreService,AuthService,AuthGuard,CanDeactivateGuard,DialogService,ValidationService,AwsService,AuthPermissionService,WindowRefService,AlertService,SocketService,SocketManagerService,TokenManagerService,AccountManagerService,OfflineManagerService,DeviceDetectorService],imports:[SharedModule,HttpClientModule,NgbModule,ToastrModule.forRoot(),NgxLocalStorageModule.forRoot({prefix:"ResolveIO"}),UserSettingsModule,BrowserAnimationsModule,CollapseTableModule]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:CoreModule,decorators:[{type:NgModule,args:[{imports:[SharedModule,HttpClientModule,NgbModule,ToastrModule.forRoot(),NgxLocalStorageModule.forRoot({prefix:"ResolveIO"}),UserSettingsModule,BrowserAnimationsModule,CollapseTableModule],declarations:[CoreComponent,HomeComponent,LoggerComponent,HtmlDiffViewerComponent,NavbarMainComponent,NavbarModuleComponent,ForgotPasswordComponent,EnrollComponent,Auth365Component,FocusDirective,ScrollDirective,DialogConfirmContent,DialogErrorContent,DialogInputContent,DialogNotifyContent,DialogSelectDateTimeContent,DialogSelectDataLabelsContent,DialogLoginContent,DialogRegisterContent,DialogSelectWithButtonsURLContent,DialogSelectArrayObjsContent,DialogSelectArrayContent],providers:[CoreService,AuthService,AuthGuard,CanDeactivateGuard,DialogService,ValidationService,AwsService,AuthPermissionService,WindowRefService,AlertService,SocketService,SocketManagerService,TokenManagerService,AccountManagerService,OfflineManagerService,DeviceDetectorService],exports:[CoreComponent,HomeComponent,LoggerComponent,NavbarMainComponent,NavbarModuleComponent,ForgotPasswordComponent,EnrollComponent,Auth365Component,FocusDirective,ScrollDirective]}]}]});class SupportTicketService{constructor(){this.selectedSupportTicket=new BehaviorSubject("0")}setSelectedSupportTicket(t){this.selectedSupportTicket.next(t)}}SupportTicketService.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketService,deps:[],target:i0.ɵɵFactoryTarget.Injectable}),SupportTicketService.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketService}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketService,decorators:[{type:Injectable}],ctorParameters:function(){return[]}});class SupportTicketComponent extends BaseComponent{constructor(t,e){super(e),this._sts=t,this._services=e}ngOnInit(){this.selectedResolveIOSupport$=this._sts.selectedSupportTicket.subscribe((t=>this.selectedResolveIOSupportChanged(t)))}ngOnDestroy(){this._sts.setSelectedSupportTicket("0"),this.selectedResolveIOSupport$.unsubscribe()}selectedResolveIOSupportChanged(t){"0"!==t?this._services._socket.call("supportGetSupportTicketWithId",t,((e,n)=>{n?this.setResolveIOSupportModuleMenuData(t,n):this.setResolveIOSupportModuleMenuData()})):this.setResolveIOSupportModuleMenuData()}setResolveIOSupportModuleMenuData(t,e){let n=[];n.push({link:"/support-ticket/list",params:null,label:"List",tourAnchor:"navBarModuleSupportList"}),n.push({link:"/support-ticket/new",params:null,label:"New",tourAnchor:"navBarModuleSupportNew"}),n.push({link:"/support-ticket/detail",params:t||"0",label:"Details"}),(this._services._account.isUserSuperAdmin()||e&&e.id_user_created===this._services._account.getUser()._id)&&n.push({link:"/support-ticket/edit",params:t||"0",label:"Edit"}),this.menuData={title:"Support Center",module:"Support Ticket",description_name:"Support Ticket #",description:e?e.support_ticket_number_string:"",tabs:n},this._services._app.setNavbarModuleData(this.menuData)}}SupportTicketComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketComponent,deps:[{token:SupportTicketService},{token:ProviderService}],target:i0.ɵɵFactoryTarget.Component}),SupportTicketComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:SupportTicketComponent,selector:"ng-component",providers:[ProviderService],usesInheritance:!0,ngImport:i0,template:"<router-outlet></router-outlet>",isInline:!0,dependencies:[{kind:"directive",type:i1$3.RouterOutlet,selector:"router-outlet",inputs:["name"],outputs:["activate","deactivate","attach","detach"],exportAs:["outlet"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketComponent,decorators:[{type:Component,args:[{providers:[ProviderService],template:"<router-outlet></router-outlet>"}]}],ctorParameters:function(){return[{type:SupportTicketService},{type:ProviderService}]}});class SupportTicketListComponent extends BaseComponent{constructor(t,e,n){super(n),this._sts=t,this._route=e,this._services=n,this.subscription$=[],this.columns=[{name:"Support Ticket #",data:"support_ticket_number"},{name:"Date Created",data:"date_created"},{name:"Type",data:"type"},{name:"Issue",data:"issue"},{name:"Status",data:"status"},{name:"Created By",data:"user_created"}],this.tableData={searchString:"",entriesPerPage:"25",pageNum:1,sortColumn:"",sortOrder:"desc",filters:{status:"Opened",substatus:"All"}},this.totalItems=1e3}ngOnInit(){this._sts.setSelectedSupportTicket("0"),this.route$=this._route.queryParams.subscribe((()=>{let t=Object.keys(this.tableData),e=Object.keys(this.tableData.filters);this._route.snapshot.queryParamMap.keys.length?(t.splice(t.indexOf("filters",1)),e.forEach((e=>{t.push("filters."+e)})),t.filter((t=>t in this._route.snapshot.queryParams)).forEach((t=>{if(t.includes("filters.")){let e=t;e=e.replace("filters.",""),this.tableData.filters[e]=this._route.snapshot.queryParams[t]}else this.tableData[t]=this._route.snapshot.queryParams[t]}))):this.tableData={searchString:"",entriesPerPage:"25",pageNum:1,sortColumn:"",sortOrder:"desc",filters:{status:"Opened",substatus:"All"}},this.queryData()}))}ngOnDestroy(){this.subscription$.forEach((t=>{t.unsubscribe()})),this.route$.unsubscribe()}onQueryDataChanged(){let t={},e=Object.keys(this.tableData),n=Object.keys(this.tableData.filters);e.forEach((e=>{"filters"===e?n.forEach((e=>{t["filters."+e]=this.tableData.filters[e]})):t[e]=this.tableData[e]})),this._services._router.navigate(["/support-ticket/list"],{queryParams:t})}queryData(){let t={};this.columns.forEach((e=>{t[e.data]=1}));const e={limit:parseInt(this.tableData.entriesPerPage),skip:(this.tableData.pageNum-1)*parseInt(this.tableData.entriesPerPage),sort:this.tableData.sortColumn?{[this.tableData.sortColumn]:"asc"===this.tableData.sortOrder?1:-1}:{name:1},fields:t};let n=[{prop:"client",data:this._services._app.client.getValue()}];"All"!==this.tableData.filters.status&&n.push({prop:"status",data:this.tableData.filters.status}),"All"!==this.tableData.filters.substatus&&n.push({prop:"substatus",data:this.tableData.filters.substatus}),this._services._socket.call("supportticketsWithOptions",e,this.tableData.searchString,n,((t,e)=>{this.support_tickets=e})),this._services._socket.call("supportticketCount",this.tableData.searchString,n,((t,e)=>{t?this._services._socket.call("insertErrorLog","countQuery - resolveioSupportList",[t]):this.totalItems=e}))}}SupportTicketListComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketListComponent,deps:[{token:SupportTicketService},{token:i1$3.ActivatedRoute},{token:ProviderService}],target:i0.ɵɵFactoryTarget.Component}),SupportTicketListComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:SupportTicketListComponent,selector:"ng-component",providers:[ProviderService],usesInheritance:!0,ngImport:i0,template:'<div class="row">\n <div class="col-sm-6">\n <b>Filter Support Ticket By Status</b><br>\n <select class="form-control" [(ngModel)]="tableData.filters[\'status\']" (change)="onQueryDataChanged()" tourAnchor="supportListFilter">\n <option value="All">All</option>\n <option value="Opened">Opened</option>\n <option value="Resolved">Resolved</option>\n </select>\n </div>\n <div class="col-sm-6">\n <b>Filter Support Ticket By Sub-Status</b><br>\n <select class="form-control" [(ngModel)]="tableData.filters[\'substatus\']" (change)="onQueryDataChanged()">\n <option value="All">All</option>\n <option value="Investigating">Investigating</option>\n <option value="Awaiting Customer Interaction">Awaiting Customer Interaction</option>\n <option value="Resolved">Resolved</option>\n </select>\n </div>\n</div>\n<div class="row">\n <div class="col-md-12">\n <div style="padding-left: 15px; padding-right: 15px; padding-top: 15px;">\n <data-table #dataTable\n [urlClick]="\'/support-ticket/detail/\'"\n [columns]="columns"\n [data]="support_tickets"\n [collapseSize]="990"\n [searchTitle]="\'Search For Support Ticket...\'"\n [totalItems]="totalItems"\n (onChangeTableData)="onQueryDataChanged()"\n [tableData]="tableData"\n tourAnchor="supportListDatatable">\n </data-table>\n </div>\n </div>\n</div>\n ',dependencies:[{kind:"directive",type:i2.NgSelectOption,selector:"option",inputs:["ngValue","value"]},{kind:"directive",type:i2.ɵNgSelectMultipleOption,selector:"option",inputs:["ngValue","value"]},{kind:"directive",type:i2.SelectControlValueAccessor,selector:"select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]",inputs:["compareWith"]},{kind:"directive",type:i2.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i2.NgModel,selector:"[ngModel]:not([formControlName]):not([formControl])",inputs:["name","disabled","ngModel","ngModelOptions"],outputs:["ngModelChange"],exportAs:["ngModel"]},{kind:"component",type:DatatableComponent,selector:"data-table",inputs:["urlClick","columns","data","collapseSize","searchTitle","totalItems","tableData"],outputs:["onChangeTableData"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketListComponent,decorators:[{type:Component,args:[{providers:[ProviderService],template:'<div class="row">\n <div class="col-sm-6">\n <b>Filter Support Ticket By Status</b><br>\n <select class="form-control" [(ngModel)]="tableData.filters[\'status\']" (change)="onQueryDataChanged()" tourAnchor="supportListFilter">\n <option value="All">All</option>\n <option value="Opened">Opened</option>\n <option value="Resolved">Resolved</option>\n </select>\n </div>\n <div class="col-sm-6">\n <b>Filter Support Ticket By Sub-Status</b><br>\n <select class="form-control" [(ngModel)]="tableData.filters[\'substatus\']" (change)="onQueryDataChanged()">\n <option value="All">All</option>\n <option value="Investigating">Investigating</option>\n <option value="Awaiting Customer Interaction">Awaiting Customer Interaction</option>\n <option value="Resolved">Resolved</option>\n </select>\n </div>\n</div>\n<div class="row">\n <div class="col-md-12">\n <div style="padding-left: 15px; padding-right: 15px; padding-top: 15px;">\n <data-table #dataTable\n [urlClick]="\'/support-ticket/detail/\'"\n [columns]="columns"\n [data]="support_tickets"\n [collapseSize]="990"\n [searchTitle]="\'Search For Support Ticket...\'"\n [totalItems]="totalItems"\n (onChangeTableData)="onQueryDataChanged()"\n [tableData]="tableData"\n tourAnchor="supportListDatatable">\n </data-table>\n </div>\n </div>\n</div>\n '}]}],ctorParameters:function(){return[{type:SupportTicketService},{type:i1$3.ActivatedRoute},{type:ProviderService}]}});class SupportTicketNewComponent extends BaseComponent{constructor(t,e,n,o){super(n),this._sts=t,this._cd=e,this._services=n,this._ds=o,this.subscription$=[],this.disableFormButton=!1,this.submit=!1}ngOnInit(){this._sts.setSelectedSupportTicket("0"),this.form=this._services._fb.group({__v:[0],type:["",[Validators.required]],priority:["",[Validators.required]],issue:["",[Validators.required]],support_ticket_number:[0],support_ticket_number_string:["0"],status:["Opened"],substatus:["New"],client:[this._services._app.client.getValue()],id_client:[this._services._app.client.getValue()],messages:[[]],date_created:[null],date_created_string:[""],id_user_created:[this._services._account.getUser()._id],user_created:[this._services._account.getUser().fullname],billable:[!1,[Validators.required]],date_investigation:[null],date_closed:[null],files:[[]],current_watchers:[[]],client_user:[{id_user:this._services._account.getUser()._id,user:this._services._account.getUser().fullname,email:this._services._account.getUser().email?this._services._account.getUser().email:""}],tasks:[[]],notes:[[]],users_assigned:[[]],bill_description:[""],difficulty:[1]})}ngOnDestroy(){this.subscription$.forEach((t=>{t.unsubscribe()}))}canDeactivate(){return!0}onTypeChange(){"System Impairment"===this.form.controls.type.value?(this.form.controls.priority.setValue("High"),this.form.controls.billable.setValue(!1)):"Request New Feature"===this.form.controls.type.value||"General Inquery"===this.form.controls.type.value?(this.form.controls.priority.setValue("Low"),this.form.controls.billable.setValue(!0)):(this.form.controls.priority.setValue(""),this.form.controls.billable.setValue(!1))}submitForm(t){this.submit=!0,this.disableFormButton=!0;let e=new Date;this.form.controls.date_created.setValue(e),this.form.controls.date_created_string.setValue(e.getFullYear()+"/"+(e.getMonth()+1)+"/"+e.getDate()),this._services._socket.call("supportInsertSupportTicket",this.form.value,((t,e)=>{e?(this._services._alert.setAlert("success","Support ticket has been created"),this._services._router.navigateByUrl("/support-ticket/detail/"+e)):(this._ds.error("Could not create new support ticket."),this._services._socket.call("insertErrorLog","Support Ticket New - insert support ticket",[this.form.value,t]))}))}}SupportTicketNewComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketNewComponent,deps:[{token:SupportTicketService},{token:i0.ChangeDetectorRef},{token:ProviderService},{token:DialogService}],target:i0.ɵɵFactoryTarget.Component}),SupportTicketNewComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:SupportTicketNewComponent,selector:"ng-component",providers:[ProviderService],viewQueries:[{propertyName:"fileUpload",first:!0,predicate:["fileUpload"],descendants:!0,static:!0}],usesInheritance:!0,ngImport:i0,template:'<style>\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n</style>\n\n<div class="col-lg-12">\n <form [formGroup]="form" novalidate (ngSubmit)="submitForm(form)">\n <div class="row">\n <ngb-accordion #acc="ngbAccordion" activeIds="supportTicketInfo">\n <ngb-panel id="supportTicketInfo">\n <ng-template ngbPanelTitle>\n <div> \n <label class="label-accordion">Support Ticket Info</label>\n <i *ngIf="!acc.activeIds.includes(\'supportTicketInfo\')" class="fa fa-plus float-end" aria-hidden="true"></i>\n <i *ngIf="acc.activeIds.includes(\'supportTicketInfo\')" class="fa fa-minus float-end" aria-hidden="true"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class="row">\n <div class="col-12">\n <div class="form-group">\n <label class="form-control-label">Support Ticket Type</label>\n <em *ngIf="!form.controls.type.valid">- Required</em>\n <select [ngClass]="[\'form-control\', form.controls.type.valid ? \'is-valid\' : \'is-invalid\']" formControlName="type" (change)="onTypeChange()" tourAnchor="supportNewSelect">\n <option value="">Select Type</option>\n <option value="General Inquery">General Inquery</option>\n <option value="System Impairment">System Impairment</option>\n <option value="Request New Feature">Request New Feature</option>\n </select>\n <div class="invalid-feedback" *ngIf="!form.controls.type.valid">Type is required</div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <div class="form-group">\n <label class="form-control-label">Problem/Feature Description</label>\n <em *ngIf="!form.controls.issue.valid">- Required</em>\n <textarea formControlName="issue" [ngClass]="[\'form-control\', form.controls.issue.valid ? \'is-valid\' : \'is-invalid\' ]" [rows]="5" style="overflow-x: hidden" tourAnchor="supportNewInput"></textarea>\n <div class="invalid-feedback" *ngIf="!form.controls.issue.valid">Description is required</div>\n </div>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n </ngb-accordion>\n </div>\n <div class="row" style="padding-top: 15px;">\n <form-button [form]="form" [disabled]="disableFormButton" tourAnchor="supportNewSubmit"></form-button>\n </div>\n </form>\n</div>\n',styles:["\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n"],dependencies:[{kind:"directive",type:i2.ɵNgNoValidate,selector:"form:not([ngNoForm]):not([ngNativeValidate])"},{kind:"directive",type:i2.NgSelectOption,selector:"option",inputs:["ngValue","value"]},{kind:"directive",type:i2.ɵNgSelectMultipleOption,selector:"option",inputs:["ngValue","value"]},{kind:"directive",type:i2.DefaultValueAccessor,selector:"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]"},{kind:"directive",type:i2.SelectControlValueAccessor,selector:"select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]",inputs:["compareWith"]},{kind:"directive",type:i2.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i2.NgControlStatusGroup,selector:"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]"},{kind:"directive",type:i2.FormGroupDirective,selector:"[formGroup]",inputs:["formGroup"],outputs:["ngSubmit"],exportAs:["ngForm"]},{kind:"directive",type:i2.FormControlName,selector:"[formControlName]",inputs:["formControlName","disabled","ngModel"],outputs:["ngModelChange"]},{kind:"component",type:i1$4.NgbAccordion,selector:"ngb-accordion",inputs:["animation","activeIds","closeOthers","destroyOnHide","type"],outputs:["panelChange","shown","hidden"],exportAs:["ngbAccordion"]},{kind:"directive",type:i1$4.NgbPanel,selector:"ngb-panel",inputs:["disabled","id","title","type","cardClass"],outputs:["shown","hidden"]},{kind:"directive",type:i1$4.NgbPanelTitle,selector:"ng-template[ngbPanelTitle]"},{kind:"directive",type:i1$4.NgbPanelContent,selector:"ng-template[ngbPanelContent]"},{kind:"component",type:FormButtonComponent,selector:"form-button",inputs:["form","disabled","type"]},{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketNewComponent,decorators:[{type:Component,args:[{providers:[ProviderService],template:'<style>\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n</style>\n\n<div class="col-lg-12">\n <form [formGroup]="form" novalidate (ngSubmit)="submitForm(form)">\n <div class="row">\n <ngb-accordion #acc="ngbAccordion" activeIds="supportTicketInfo">\n <ngb-panel id="supportTicketInfo">\n <ng-template ngbPanelTitle>\n <div> \n <label class="label-accordion">Support Ticket Info</label>\n <i *ngIf="!acc.activeIds.includes(\'supportTicketInfo\')" class="fa fa-plus float-end" aria-hidden="true"></i>\n <i *ngIf="acc.activeIds.includes(\'supportTicketInfo\')" class="fa fa-minus float-end" aria-hidden="true"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class="row">\n <div class="col-12">\n <div class="form-group">\n <label class="form-control-label">Support Ticket Type</label>\n <em *ngIf="!form.controls.type.valid">- Required</em>\n <select [ngClass]="[\'form-control\', form.controls.type.valid ? \'is-valid\' : \'is-invalid\']" formControlName="type" (change)="onTypeChange()" tourAnchor="supportNewSelect">\n <option value="">Select Type</option>\n <option value="General Inquery">General Inquery</option>\n <option value="System Impairment">System Impairment</option>\n <option value="Request New Feature">Request New Feature</option>\n </select>\n <div class="invalid-feedback" *ngIf="!form.controls.type.valid">Type is required</div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <div class="form-group">\n <label class="form-control-label">Problem/Feature Description</label>\n <em *ngIf="!form.controls.issue.valid">- Required</em>\n <textarea formControlName="issue" [ngClass]="[\'form-control\', form.controls.issue.valid ? \'is-valid\' : \'is-invalid\' ]" [rows]="5" style="overflow-x: hidden" tourAnchor="supportNewInput"></textarea>\n <div class="invalid-feedback" *ngIf="!form.controls.issue.valid">Description is required</div>\n </div>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n </ngb-accordion>\n </div>\n <div class="row" style="padding-top: 15px;">\n <form-button [form]="form" [disabled]="disableFormButton" tourAnchor="supportNewSubmit"></form-button>\n </div>\n </form>\n</div>\n'}]}],ctorParameters:function(){return[{type:SupportTicketService},{type:i0.ChangeDetectorRef},{type:ProviderService},{type:DialogService}]},propDecorators:{fileUpload:[{type:ViewChild,args:["fileUpload",{static:!0}]}]}});class SupportTicketDetailComponent extends BaseComponent{constructor(t,e,n,o){super(n),this._route=t,this._sts=e,this._services=n,this._ds=o,this.subscription$=[],this.files=[]}ngOnInit(){this.id=this._route.snapshot.params.id,this._sts.setSelectedSupportTicket(this.id),this._services._socket.call("supportGetSupportTicketWithId",this.id,((t,e)=>{if(!e)return this._services._router.navigateByUrl("/support-ticket/list"),void this._ds.error("Could not find support ticket");this.data=e}))}ngOnDestroy(){this.subscription$.forEach((t=>{t.unsubscribe()}))}onFileAdded(t){this.data.files.push(t._id),this._services._socket.call("supportUpdateSupportTicket",this.data,((t,e)=>{!t&&e||(this._ds.error("Could not update support ticket files"),this._services._socket.call("insertErrorLog","support-ticket-detail - update support-ticket files add",[this.data.files,t]))}))}onFilesRemoved(t){this._ds.confirm("Are you sure you want to remove a file? This will email all current watchers?").then((e=>{-1!==this.data.files.indexOf(t._id)&&(this.data.files.splice(this.data.files.indexOf(t._id),1),this._services._socket.call("supportUpdateSupportTicket",this.data,((t,e)=>{!t&&e||(this._ds.error("Could not update support-ticket files"),this._services._socket.call("insertErrorLog","support-ticket-detail - update files remove",[{prop:"files",data:this.data.files},t]))})))}),(()=>{}))}edit(){this._services._router.navigateByUrl("/support-ticket/edit/"+this.id)}newMessage(){this._ds.input("Input Message",[{label:"Message",form:"message",data:"",validators:[Validators.required],validatorErrors:["required"],validatorMsg:["Message is required"],required:!0,type:"textarea"}]).then((t=>{this.data.messages.push({message:t.message.value,id_user:this._services._account.getUser()._id,user:this._services._account.getUser().fullname,date:new Date,type:"Client"}),this._services._socket.call("supportUpdateSupportTicket",this.data,((t,e)=>{e||(this._services._socket.call("insertErrorLog","Support Ticket Detail - Add Message"),this._ds.error("Support ticket could not update"))}))}),(()=>{}))}editMessage(t){let e=this.data.messages[t];this._ds.input("Input Message",[{label:"Message",form:"message",data:e.message,validators:[Validators.required],validatorErrors:["required"],validatorMsg:["Message is required"],required:!0,type:"textarea"}]).then((t=>{e.message=t.message.value,this._services._socket.call("supportUpdateSupportTicket",this.data,((t,e)=>{e||(this._services._socket.call("insertErrorLog","Support Ticket Detail - Add Message"),this._ds.error("Support ticket could not update"))}))}),(()=>{}))}deleteMessage(t){this._ds.confirm("Are you sure you want to remove this message?").then((()=>{this.data.messages.splice(t,1),this._services._socket.call("supportUpdateSupportTicket",this.data,((t,e)=>{e||(this._services._socket.call("insertErrorLog","Support Ticket Detail - Add Message"),this._ds.error("Support ticket could not update"))}))}),(()=>{}))}isMyMessage(t){return this._services._account.getUser()._id===t.id_user}}SupportTicketDetailComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketDetailComponent,deps:[{token:i1$3.ActivatedRoute},{token:SupportTicketService},{token:ProviderService},{token:DialogService}],target:i0.ɵɵFactoryTarget.Component}),SupportTicketDetailComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:SupportTicketDetailComponent,selector:"ng-component",providers:[ProviderService],viewQueries:[{propertyName:"fileUpload",first:!0,predicate:["fileUpload"],descendants:!0,static:!0}],usesInheritance:!0,ngImport:i0,template:'<style>\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n\n ngb-accordion {\n width: 100%;\n }\n\n dl {\n margin-bottom: 0px;\n }\n\n .selected {\n background-color: lightblue;\n }\n</style>\n\n<div class="col-lg-12" *ngIf="data">\n <div class="row">\n <ngb-accordion #acc="ngbAccordion" activeIds="supportTicketInfo, supportTicketMessages, files">\n <ngb-panel id="supportTicketInfo">\n <ng-template ngbPanelTitle>\n <div> \n <label class="label-accordion">Support Ticket Info</label>\n <i *ngIf="!acc.activeIds.includes(\'supportTicketInfo\')" class="fa fa-plus float-end" aria-hidden="true"></i>\n <i *ngIf="acc.activeIds.includes(\'supportTicketInfo\')" class="fa fa-minus float-end" aria-hidden="true"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class="card">\n <div class="card-header"><b>General Info</b></div>\n <div class="card-body">\n <div class="row">\n <div class="col-lg-4">\n <dl>\n <dt>Support Ticket #</dt>\n <dd>{{data.support_ticket_number | number}}</dd>\n <dt>Date Created</dt>\n <dd>{{data.date_created | date: \'short\'}}</dd>\n </dl>\n </div>\n <div class="col-lg-4">\n <dl>\n <dt>Type</dt>\n <dd>{{data.type}}</dd>\n <dt>User</dt>\n <dd>{{data.user_created}}</dd>\n </dl>\n </div>\n <div class="col-lg-4">\n <dl>\n <dt>Status</dt>\n <dd>{{ data.status }}</dd>\n </dl>\n </div>\n </div>\n </div>\n </div>\n <div class="card">\n <div class="card-header"><b>Problem Description</b></div>\n <div class="card-body">\n <pre>{{data.issue}}</pre>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n <ngb-panel id="supportTicketMessages" *ngIf="data">\n <ng-template ngbPanelTitle>\n <div> \n <label class="label-accordion">Messages</label>\n <i *ngIf="!acc.activeIds.includes(\'supportTicketMessages\')" class="fa fa-plus float-end" aria-hidden="true"></i>\n <i *ngIf="acc.activeIds.includes(\'supportTicketMessages\')" class="fa fa-minus float-end" aria-hidden="true"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class="row">\n <div class="col-lg-12">\n <div class="card" *ngFor="let message of data.messages; let i = index;">\n <div class="card-header"><b>User: {{message.user}} - Date: {{message.date | date : \'short\'}}</b></div>\n <div class="card-body" [ngClass]="[message.type === \'ResolveIO\' ? \'selected\' : \'\']">\n <div class="row" style="width: 100%">\n <div class="col-lg-10">\n <pre>{{message.message}}</pre>\n </div>\n <div class="col-lg-2">\n <responsive-button-group collapseSize="900">\n <button type="button" class="btn btn-warning" (click)="editMessage(i)" *ngIf="isMyMessage(message)">Edit</button>\n <button type="button" class="btn btn-danger" (click)="deleteMessage(i)" *ngIf="isMyMessage(message)">Delete</button>\n </responsive-button-group>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class="row" style="margin-top: 10px;">\n <div class="col-lg-12">\n <button type="button" class="btn btn-success" (click)="newMessage()">New Message</button>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n <ngb-panel id="files">\n\t\t\t\t<ng-template ngbPanelTitle>\n\t\t\t\t\t<div> \n\t\t\t\t\t\t<label class="label-accordion">Support Ticket Files</label>\n\t\t\t\t\t\t<i *ngIf="!acc.activeIds.includes(\'files\')" class="fa fa-plus float-end" aria-hidden="true"></i>\n\t\t\t\t\t\t<i *ngIf="acc.activeIds.includes(\'files\')" class="fa fa-minus float-end" aria-hidden="true"></i>\n\t\t\t\t\t</div>\n\t\t\t\t</ng-template>\n\t\t\t\t<ng-template ngbPanelContent>\n\t\t\t\t\t<file-upload #fileUpload (fileAdded)="onFileAdded($event)" (fileRemoved)="onFilesRemoved($event)" [files]="files" [allowDelete]="true" [allowReplace]="true"></file-upload>\n\t\t\t\t</ng-template>\n\t\t\t</ngb-panel>\n </ngb-accordion>\n </div>\n <div class="row" style="padding-top: 15px;">\n <responsive-button-group collapseSize="900">\n <button class="btn btn-warning" type="button" (click)="edit()">Edit Support Ticket</button>\n </responsive-button-group>\n </div>\n</div>\n ',styles:["\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n\n ngb-accordion {\n width: 100%;\n }\n\n dl {\n margin-bottom: 0px;\n }\n\n .selected {\n background-color: lightblue;\n }\n"],dependencies:[{kind:"component",type:i1$4.NgbAccordion,selector:"ngb-accordion",inputs:["animation","activeIds","closeOthers","destroyOnHide","type"],outputs:["panelChange","shown","hidden"],exportAs:["ngbAccordion"]},{kind:"directive",type:i1$4.NgbPanel,selector:"ngb-panel",inputs:["disabled","id","title","type","cardClass"],outputs:["shown","hidden"]},{kind:"directive",type:i1$4.NgbPanelTitle,selector:"ng-template[ngbPanelTitle]"},{kind:"directive",type:i1$4.NgbPanelContent,selector:"ng-template[ngbPanelContent]"},{kind:"component",type:ResponsiveButtonGroupComponent,selector:"responsive-button-group",inputs:["collapseSize"]},{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"component",type:FileUploadComponent,selector:"file-upload",inputs:["files","allowDelete","allowReplace","showFileUpload","fileType"],outputs:["filesChanged","fileAdded","fileRemoved"]},{kind:"pipe",type:i7.DecimalPipe,name:"number"},{kind:"pipe",type:i7.DatePipe,name:"date"}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketDetailComponent,decorators:[{type:Component,args:[{providers:[ProviderService],template:'<style>\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n\n ngb-accordion {\n width: 100%;\n }\n\n dl {\n margin-bottom: 0px;\n }\n\n .selected {\n background-color: lightblue;\n }\n</style>\n\n<div class="col-lg-12" *ngIf="data">\n <div class="row">\n <ngb-accordion #acc="ngbAccordion" activeIds="supportTicketInfo, supportTicketMessages, files">\n <ngb-panel id="supportTicketInfo">\n <ng-template ngbPanelTitle>\n <div> \n <label class="label-accordion">Support Ticket Info</label>\n <i *ngIf="!acc.activeIds.includes(\'supportTicketInfo\')" class="fa fa-plus float-end" aria-hidden="true"></i>\n <i *ngIf="acc.activeIds.includes(\'supportTicketInfo\')" class="fa fa-minus float-end" aria-hidden="true"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class="card">\n <div class="card-header"><b>General Info</b></div>\n <div class="card-body">\n <div class="row">\n <div class="col-lg-4">\n <dl>\n <dt>Support Ticket #</dt>\n <dd>{{data.support_ticket_number | number}}</dd>\n <dt>Date Created</dt>\n <dd>{{data.date_created | date: \'short\'}}</dd>\n </dl>\n </div>\n <div class="col-lg-4">\n <dl>\n <dt>Type</dt>\n <dd>{{data.type}}</dd>\n <dt>User</dt>\n <dd>{{data.user_created}}</dd>\n </dl>\n </div>\n <div class="col-lg-4">\n <dl>\n <dt>Status</dt>\n <dd>{{ data.status }}</dd>\n </dl>\n </div>\n </div>\n </div>\n </div>\n <div class="card">\n <div class="card-header"><b>Problem Description</b></div>\n <div class="card-body">\n <pre>{{data.issue}}</pre>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n <ngb-panel id="supportTicketMessages" *ngIf="data">\n <ng-template ngbPanelTitle>\n <div> \n <label class="label-accordion">Messages</label>\n <i *ngIf="!acc.activeIds.includes(\'supportTicketMessages\')" class="fa fa-plus float-end" aria-hidden="true"></i>\n <i *ngIf="acc.activeIds.includes(\'supportTicketMessages\')" class="fa fa-minus float-end" aria-hidden="true"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class="row">\n <div class="col-lg-12">\n <div class="card" *ngFor="let message of data.messages; let i = index;">\n <div class="card-header"><b>User: {{message.user}} - Date: {{message.date | date : \'short\'}}</b></div>\n <div class="card-body" [ngClass]="[message.type === \'ResolveIO\' ? \'selected\' : \'\']">\n <div class="row" style="width: 100%">\n <div class="col-lg-10">\n <pre>{{message.message}}</pre>\n </div>\n <div class="col-lg-2">\n <responsive-button-group collapseSize="900">\n <button type="button" class="btn btn-warning" (click)="editMessage(i)" *ngIf="isMyMessage(message)">Edit</button>\n <button type="button" class="btn btn-danger" (click)="deleteMessage(i)" *ngIf="isMyMessage(message)">Delete</button>\n </responsive-button-group>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class="row" style="margin-top: 10px;">\n <div class="col-lg-12">\n <button type="button" class="btn btn-success" (click)="newMessage()">New Message</button>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n <ngb-panel id="files">\n\t\t\t\t<ng-template ngbPanelTitle>\n\t\t\t\t\t<div> \n\t\t\t\t\t\t<label class="label-accordion">Support Ticket Files</label>\n\t\t\t\t\t\t<i *ngIf="!acc.activeIds.includes(\'files\')" class="fa fa-plus float-end" aria-hidden="true"></i>\n\t\t\t\t\t\t<i *ngIf="acc.activeIds.includes(\'files\')" class="fa fa-minus float-end" aria-hidden="true"></i>\n\t\t\t\t\t</div>\n\t\t\t\t</ng-template>\n\t\t\t\t<ng-template ngbPanelContent>\n\t\t\t\t\t<file-upload #fileUpload (fileAdded)="onFileAdded($event)" (fileRemoved)="onFilesRemoved($event)" [files]="files" [allowDelete]="true" [allowReplace]="true"></file-upload>\n\t\t\t\t</ng-template>\n\t\t\t</ngb-panel>\n </ngb-accordion>\n </div>\n <div class="row" style="padding-top: 15px;">\n <responsive-button-group collapseSize="900">\n <button class="btn btn-warning" type="button" (click)="edit()">Edit Support Ticket</button>\n </responsive-button-group>\n </div>\n</div>\n '}]}],ctorParameters:function(){return[{type:i1$3.ActivatedRoute},{type:SupportTicketService},{type:ProviderService},{type:DialogService}]},propDecorators:{fileUpload:[{type:ViewChild,args:["fileUpload",{static:!0}]}]}});class SupportTicketEditComponent extends BaseComponent{constructor(t,e,n,o){super(n),this._route=t,this._sts=e,this._services=n,this._ds=o,this.subscription$=[],this.disableFormButton=!1}ngOnInit(){this.id=this._route.snapshot.params.id,this._sts.setSelectedSupportTicket(this.id.toString()),this.form=this._services._fb.group({_id:[""],__v:[0],type:["",[Validators.required]],priority:["",[Validators.required]],issue:["",[Validators.required]],support_ticket_number:[null],support_ticket_number_string:[null],status:["Opened"],substatus:["New"],client:[""],id_client:["",[Validators.required]],messages:[[]],date_created:[null],date_created_string:[""],id_user_created:[this._services._account.getUser()._id],user_created:[this._services._account.getUser().fullname],billable:[!1,[Validators.required]],date_investigation:[null],date_closed:[null],files:[[]],current_watchers:[[]],client_user:[null],users_assigned:[[]],bill_description:[""],tasks:[[]],notes:[[]],difficulty:[1]}),this._services._socket.call("supportGetSupportTicketWithId",this.id,((t,e)=>{if(!e)return this._services._router.navigateByUrl("/support-ticket/list"),void this._ds.error("Could not find support ticket");this.data=e,this.loadForm()}))}ngOnDestroy(){this.subscription$.forEach((t=>{t.unsubscribe()}))}loadForm(){this.form.patchValue(this.data)}onTypeChange(){"System Impairment"===this.form.controls.type.value?(this.form.controls.priority.setValue("High"),this.form.controls.billable.setValue(!1)):"Request New Feature"===this.form.controls.type.value||"General Inquery"===this.form.controls.type.value?(this.form.controls.priority.setValue("Low"),this.form.controls.billable.setValue(!0)):(this.form.controls.priority.setValue(""),this.form.controls.billable.setValue(!1))}submitForm(t){this.disableFormButton=!0,this._services._socket.call("supportUpdateSupportTicket",this.form.value,((t,e)=>{e?(this._services._alert.setAlert("info","Editing support ticket, please wait"),this._services._router.navigateByUrl("/support-ticket/detail/"+this.id)):(this._ds.error("Could not edit support ticket"),this._services._socket.call("insertErrorLog","Support-ticket-edit - update support ticket",[this.form.value,t]))}))}}SupportTicketEditComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketEditComponent,deps:[{token:i1$3.ActivatedRoute},{token:SupportTicketService},{token:ProviderService},{token:DialogService}],target:i0.ɵɵFactoryTarget.Component}),SupportTicketEditComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:SupportTicketEditComponent,selector:"ng-component",providers:[ProviderService],viewQueries:[{propertyName:"fileUpload",first:!0,predicate:["fileUpload"],descendants:!0,static:!0},{propertyName:"selectType",first:!0,predicate:["selectType"],descendants:!0,static:!0}],usesInheritance:!0,ngImport:i0,template:'<style>\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n</style>\n\n<div class="col-lg-12">\n <form [formGroup]="form" novalidate (ngSubmit)="submitForm(form)">\n <div class="row">\n <ngb-accordion #acc="ngbAccordion" activeIds="supportTicketInfo">\n <ngb-panel id="supportTicketInfo">\n <ng-template ngbPanelTitle>\n <div> \n <label class="label-accordion">Support Ticket Info</label>\n <i *ngIf="!acc.activeIds.includes(\'supportTicketInfo\')" class="fa fa-plus float-end" aria-hidden="true"></i>\n <i *ngIf="acc.activeIds.includes(\'supportTicketInfo\')" class="fa fa-minus float-end" aria-hidden="true"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class="row">\n <div class="col-12">\n <div class="form-group">\n <label class="form-control-label">Support Ticket Type</label>\n <em *ngIf="!form.controls.type.valid">- Required</em>\n <select [ngClass]="[\'form-control\', form.controls.type.valid ? \'is-valid\' : \'is-invalid\']" formControlName="type" (change)="onTypeChange()">\n <option value="">Select Type</option>\n <option value="General Inquery">General Inquery</option>\n <option value="System Impairment">System Impairment</option>\n <option value="Request New Feature">Request New Feature</option>\n </select>\n <div class="invalid-feedback" *ngIf="!form.controls.type.valid">Type is required</div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <div class="form-group">\n <label class="form-control-label">Problem Description</label>\n <em *ngIf="!form.controls.issue.valid">- Required</em>\n <textarea formControlName="issue" [ngClass]="[\'form-control\', form.controls.issue.valid ? \'is-valid\' : \'is-invalid\' ]" [rows]="5" style="overflow-x: hidden"></textarea>\n <div class="invalid-feedback" *ngIf="!form.controls.issue.valid">Problem Description is required</div>\n </div>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n </ngb-accordion>\n </div>\n <div class="row" style="padding-top: 15px;">\n <form-button [form]="form" [disabled]="disableFormButton"></form-button>\n </div>\n </form>\n</div>\n ',styles:["\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n"],dependencies:[{kind:"directive",type:i2.ɵNgNoValidate,selector:"form:not([ngNoForm]):not([ngNativeValidate])"},{kind:"directive",type:i2.NgSelectOption,selector:"option",inputs:["ngValue","value"]},{kind:"directive",type:i2.ɵNgSelectMultipleOption,selector:"option",inputs:["ngValue","value"]},{kind:"directive",type:i2.DefaultValueAccessor,selector:"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]"},{kind:"directive",type:i2.SelectControlValueAccessor,selector:"select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]",inputs:["compareWith"]},{kind:"directive",type:i2.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i2.NgControlStatusGroup,selector:"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]"},{kind:"directive",type:i2.FormGroupDirective,selector:"[formGroup]",inputs:["formGroup"],outputs:["ngSubmit"],exportAs:["ngForm"]},{kind:"directive",type:i2.FormControlName,selector:"[formControlName]",inputs:["formControlName","disabled","ngModel"],outputs:["ngModelChange"]},{kind:"component",type:i1$4.NgbAccordion,selector:"ngb-accordion",inputs:["animation","activeIds","closeOthers","destroyOnHide","type"],outputs:["panelChange","shown","hidden"],exportAs:["ngbAccordion"]},{kind:"directive",type:i1$4.NgbPanel,selector:"ngb-panel",inputs:["disabled","id","title","type","cardClass"],outputs:["shown","hidden"]},{kind:"directive",type:i1$4.NgbPanelTitle,selector:"ng-template[ngbPanelTitle]"},{kind:"directive",type:i1$4.NgbPanelContent,selector:"ng-template[ngbPanelContent]"},{kind:"component",type:FormButtonComponent,selector:"form-button",inputs:["form","disabled","type"]},{kind:"directive",type:i7.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i7.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketEditComponent,decorators:[{type:Component,args:[{providers:[ProviderService],template:'<style>\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n</style>\n\n<div class="col-lg-12">\n <form [formGroup]="form" novalidate (ngSubmit)="submitForm(form)">\n <div class="row">\n <ngb-accordion #acc="ngbAccordion" activeIds="supportTicketInfo">\n <ngb-panel id="supportTicketInfo">\n <ng-template ngbPanelTitle>\n <div> \n <label class="label-accordion">Support Ticket Info</label>\n <i *ngIf="!acc.activeIds.includes(\'supportTicketInfo\')" class="fa fa-plus float-end" aria-hidden="true"></i>\n <i *ngIf="acc.activeIds.includes(\'supportTicketInfo\')" class="fa fa-minus float-end" aria-hidden="true"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class="row">\n <div class="col-12">\n <div class="form-group">\n <label class="form-control-label">Support Ticket Type</label>\n <em *ngIf="!form.controls.type.valid">- Required</em>\n <select [ngClass]="[\'form-control\', form.controls.type.valid ? \'is-valid\' : \'is-invalid\']" formControlName="type" (change)="onTypeChange()">\n <option value="">Select Type</option>\n <option value="General Inquery">General Inquery</option>\n <option value="System Impairment">System Impairment</option>\n <option value="Request New Feature">Request New Feature</option>\n </select>\n <div class="invalid-feedback" *ngIf="!form.controls.type.valid">Type is required</div>\n </div>\n </div>\n </div>\n <div class="row">\n <div class="col-lg-12">\n <div class="form-group">\n <label class="form-control-label">Problem Description</label>\n <em *ngIf="!form.controls.issue.valid">- Required</em>\n <textarea formControlName="issue" [ngClass]="[\'form-control\', form.controls.issue.valid ? \'is-valid\' : \'is-invalid\' ]" [rows]="5" style="overflow-x: hidden"></textarea>\n <div class="invalid-feedback" *ngIf="!form.controls.issue.valid">Problem Description is required</div>\n </div>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n </ngb-accordion>\n </div>\n <div class="row" style="padding-top: 15px;">\n <form-button [form]="form" [disabled]="disableFormButton"></form-button>\n </div>\n </form>\n</div>\n '}]}],ctorParameters:function(){return[{type:i1$3.ActivatedRoute},{type:SupportTicketService},{type:ProviderService},{type:DialogService}]},propDecorators:{fileUpload:[{type:ViewChild,args:["fileUpload",{static:!0}]}],selectType:[{type:ViewChild,args:["selectType",{static:!0}]}]}});const routes=[{path:"",component:SupportTicketComponent,children:[{path:"list",component:SupportTicketListComponent},{path:"new",component:SupportTicketNewComponent},{path:"detail/:id",component:SupportTicketDetailComponent},{path:"edit/:id",component:SupportTicketEditComponent},{path:"**",redirectTo:"list"}]}],SupportTicketRouting=RouterModule.forChild(routes);class SupportTicketModule{}SupportTicketModule.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketModule,deps:[],target:i0.ɵɵFactoryTarget.NgModule}),SupportTicketModule.ɵmod=i0.ɵɵngDeclareNgModule({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketModule,declarations:[SupportTicketComponent,SupportTicketListComponent,SupportTicketNewComponent,SupportTicketDetailComponent,SupportTicketEditComponent],imports:[SharedModule,i1$3.RouterModule,DatatableModule,FileModule]}),SupportTicketModule.ɵinj=i0.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketModule,providers:[SupportTicketService],imports:[SharedModule,SupportTicketRouting,DatatableModule,FileModule]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SupportTicketModule,decorators:[{type:NgModule,args:[{imports:[SharedModule,SupportTicketRouting,DatatableModule,FileModule],declarations:[SupportTicketComponent,SupportTicketListComponent,SupportTicketNewComponent,SupportTicketDetailComponent,SupportTicketEditComponent],providers:[SupportTicketService]}]}]});let typeCache={};function type(t){if(typeCache[t])throw new Error(`Action type "${t}" is not unqiue"`);return typeCache[t]=!0,t}class DateShortcutComponent extends BaseComponent{constructor(t,e){super(t),this._services=t,this._cd=e,this.startDateObjChange=new EventEmitter,this.endDateObjChange=new EventEmitter,this.startDateObjFormChange=new EventEmitter,this.endDateObjFormChange=new EventEmitter,this.datesChanged=new EventEmitter,this.shortcutValue=null,this.shortcutValueChange=new EventEmitter}ngOnInit(){this.onSelectShortcut()}reset(){this.shortcutValue=null,this.shortcutValueChange.emit(this.shortcutValue),this._cd.detectChanges()}onSelectShortcut(){if(this.shortcutValue){if(this.startDateObj&&this.endDateObj){let t=moment$1(new Date(this.startDateObj.year,this.startDateObj.month-1,this.startDateObj.day)).toDate(),e=moment$1(new Date(this.endDateObj.year,this.endDateObj.month-1,this.endDateObj.day)).toDate();"Q1"===this.shortcutValue?(t=moment$1().startOf("year").toDate(),e=moment$1().startOf("year").quarter(2).subtract(1,"days").toDate()):"Q2"===this.shortcutValue?(t=moment$1().startOf("year").quarter(2).toDate(),e=moment$1().startOf("year").quarter(3).subtract(1,"days").toDate()):"Q3"===this.shortcutValue?(t=moment$1().startOf("year").quarter(3).toDate(),e=moment$1().startOf("year").quarter(4).subtract(1,"days").toDate()):"Q4"===this.shortcutValue?(t=moment$1().startOf("year").quarter(4).toDate(),e=moment$1().endOf("year").toDate()):"Last Q1"===this.shortcutValue?(t=moment$1().startOf("year").subtract(1,"year").toDate(),e=moment$1().startOf("year").subtract(1,"year").quarter(2).subtract(1,"days").toDate()):"Last Q2"===this.shortcutValue?(t=moment$1().startOf("year").subtract(1,"year").quarter(2).toDate(),e=moment$1().startOf("year").subtract(1,"year").quarter(3).subtract(1,"days").toDate()):"Last Q3"===this.shortcutValue?(t=moment$1().startOf("year").subtract(1,"year").quarter(3).toDate(),e=moment$1().startOf("year").subtract(1,"year").quarter(4).subtract(1,"days").toDate()):"Last Q4"===this.shortcutValue?(t=moment$1().startOf("year").subtract(1,"year").quarter(4).toDate(),e=moment$1().endOf("year").subtract(1,"year").toDate()):"Today"===this.shortcutValue?(t=moment$1().startOf("day").toDate(),e=new Date):"Yesterday"===this.shortcutValue?(t=moment$1().subtract(1,"days").startOf("day").toDate(),e=moment$1().subtract(1,"days").endOf("day").toDate()):"Week"===this.shortcutValue?(t=moment$1().startOf("isoWeek").toDate(),e=new Date):"Last Week"===this.shortcutValue?(e=moment$1().startOf("isoWeek").subtract(1,"days").toDate(),t=moment$1(e).startOf("isoWeek").toDate()):"Month"===this.shortcutValue?(t=moment$1().startOf("month").toDate(),e=new Date):"Last Month"===this.shortcutValue?(e=moment$1().startOf("month").subtract(1,"days").endOf("day").toDate(),t=moment$1(e).startOf("month").toDate()):"Last 30 Days"===this.shortcutValue?(e=new Date,t=moment$1().subtract(30,"days").startOf("day").toDate()):"Quarter"===this.shortcutValue?(t=moment$1().startOf("year").quarter(moment$1().quarter()).toDate(),e=new Date):"Last Quarter"===this.shortcutValue?(e=moment$1().startOf("year").quarter(moment$1().quarter()).subtract(1,"days").endOf("day").toDate(),t=moment$1(e).startOf("quarter").toDate()):"Year"===this.shortcutValue?(t=moment$1().startOf("year").toDate(),e=new Date):"Last Year"===this.shortcutValue?(e=moment$1().startOf("year").subtract(1,"days").endOf("day").toDate(),t=moment$1(e).startOf("year").toDate()):"All"===this.shortcutValue&&(t=new Date(2017,0,1,0,0,0,0),e=new Date),this.startDateObj={year:t.getFullYear(),month:t.getMonth()+1,day:t.getDate()},this.endDateObj={year:e.getFullYear(),month:e.getMonth()+1,day:e.getDate()},this.startDateObjChange.emit(this.startDateObj),this.endDateObjChange.emit(this.endDateObj),this.datesChanged.emit([this.startDateObj,this.endDateObj])}else if(this.startDateObjForm&&this.endDateObjForm){let t=moment$1(new Date(this.startDateObjForm.value.year,this.startDateObjForm.value.month-1,this.startDateObjForm.value.day)).toDate(),e=moment$1(new Date(this.endDateObjForm.value.year,this.endDateObjForm.value.month-1,this.endDateObjForm.value.day)).toDate();"Q1"===this.shortcutValue?(t=moment$1().startOf("year").toDate(),e=moment$1().startOf("year").quarter(2).subtract(1,"days").toDate()):"Q2"===this.shortcutValue?(t=moment$1().startOf("year").quarter(2).toDate(),e=moment$1().startOf("year").quarter(3).subtract(1,"days").toDate()):"Q3"===this.shortcutValue?(t=moment$1().startOf("year").quarter(3).toDate(),e=moment$1().startOf("year").quarter(4).subtract(1,"days").toDate()):"Q4"===this.shortcutValue?(t=moment$1().startOf("year").quarter(4).toDate(),e=moment$1().endOf("year").toDate()):"Last Q1"===this.shortcutValue?(t=moment$1().startOf("year").subtract(1,"year").toDate(),e=moment$1().startOf("year").subtract(1,"year").quarter(2).subtract(1,"days").toDate()):"Last Q2"===this.shortcutValue?(t=moment$1().startOf("year").subtract(1,"year").quarter(2).toDate(),e=moment$1().startOf("year").subtract(1,"year").quarter(3).subtract(1,"days").toDate()):"Last Q3"===this.shortcutValue?(t=moment$1().startOf("year").subtract(1,"year").quarter(3).toDate(),e=moment$1().startOf("year").subtract(1,"year").quarter(4).subtract(1,"days").toDate()):"Last Q4"===this.shortcutValue?(t=moment$1().startOf("year").subtract(1,"year").quarter(4).toDate(),e=moment$1().endOf("year").subtract(1,"year").toDate()):"Today"===this.shortcutValue?(t=moment$1().startOf("day").toDate(),e=new Date):"Yesterday"===this.shortcutValue?(t=moment$1().subtract(1,"days").startOf("day").toDate(),e=moment$1().subtract(1,"days").endOf("day").toDate()):"Week"===this.shortcutValue?(t=moment$1().startOf("isoWeek").toDate(),e=new Date):"Last Week"===this.shortcutValue?(e=moment$1().startOf("isoWeek").subtract(1,"days").toDate(),t=moment$1(e).startOf("isoWeek").toDate()):"Month"===this.shortcutValue?(t=moment$1().startOf("month").toDate(),e=new Date):"Last Month"===this.shortcutValue?(e=moment$1().startOf("month").subtract(1,"days").endOf("day").toDate(),t=moment$1(e).startOf("month").toDate()):"Last 30 Days"===this.shortcutValue?(e=new Date,t=moment$1().subtract(30,"days").startOf("day").toDate()):"Quarter"===this.shortcutValue?(t=moment$1().startOf("year").quarter(moment$1().quarter()).toDate(),e=new Date):"Last Quarter"===this.shortcutValue?(e=moment$1().startOf("year").quarter(moment$1().quarter()).subtract(1,"days").endOf("day").toDate(),t=moment$1(e).startOf("quarter").toDate()):"Year"===this.shortcutValue?(t=moment$1().startOf("year").toDate(),e=new Date):"Last Year"===this.shortcutValue?(e=moment$1().startOf("year").subtract(1,"days").endOf("day").toDate(),t=moment$1(e).startOf("year").toDate()):"All"===this.shortcutValue&&(t=new Date(2017,0,1,0,0,0,0),e=new Date),this.startDateObjForm.setValue({year:t.getFullYear(),month:t.getMonth()+1,day:t.getDate()}),this.endDateObjForm.setValue({year:e.getFullYear(),month:e.getMonth()+1,day:e.getDate()}),this.startDateObjFormChange.emit(this.startDateObjForm),this.endDateObjFormChange.emit(this.endDateObjForm),this.datesChanged.emit([this.startDateObjForm,this.endDateObjForm])}this.shortcutValueChange.emit(this.shortcutValue)}this._cd.detectChanges()}}DateShortcutComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DateShortcutComponent,deps:[{token:ProviderService},{token:i0.ChangeDetectorRef}],target:i0.ɵɵFactoryTarget.Component}),DateShortcutComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:DateShortcutComponent,selector:"date-shortcut",inputs:{startDateObj:"startDateObj",endDateObj:"endDateObj",startDateObjForm:"startDateObjForm",endDateObjForm:"endDateObjForm",shortcutValue:"shortcutValue"},outputs:{startDateObjChange:"startDateObjChange",endDateObjChange:"endDateObjChange",startDateObjFormChange:"startDateObjFormChange",endDateObjFormChange:"endDateObjFormChange",datesChanged:"datesChanged",shortcutValueChange:"shortcutValueChange"},providers:[ProviderService],usesInheritance:!0,ngImport:i0,template:'\n\t\t<label class="form-control-label">Date Shortcuts</label>\n\t\t<ng-select [(ngModel)]="shortcutValue" (change)="onSelectShortcut()" placeholder="Select Shortcut" [clearable]="false">\n\t\t\t<ng-option value="Today">Today</ng-option>\n\t\t\t<ng-option value="Yesterday">Yesterday</ng-option>\n\t\t\t<ng-option value="Week">This Week</ng-option>\n\t\t\t<ng-option value="Last Week">Last Week</ng-option>\n\t\t\t<ng-option value="Month">This Month</ng-option>\n\t\t\t<ng-option value="Last Month">Last Month</ng-option>\n\t\t\t<ng-option value="Last 30 Days">Last 30 Days</ng-option>\n\t\t\t<ng-option value="Quarter">This Quarter</ng-option>\n\t\t\t<ng-option value="Last Quarter">Last Quarter</ng-option>\n\t\t\t<ng-option value="Year">This Year</ng-option>\n\t\t\t<ng-option value="Last Year">Last Year</ng-option>\n\t\t\t<ng-option value="Q1">Q1</ng-option>\n\t\t\t<ng-option value="Q2">Q2</ng-option>\n\t\t\t<ng-option value="Q3">Q3</ng-option>\n\t\t\t<ng-option value="Q4">Q4</ng-option>\n\t\t\t<ng-option value="Last Q1">Last Q1</ng-option>\n\t\t\t<ng-option value="Last Q2">Last Q2</ng-option>\n\t\t\t<ng-option value="Last Q3">Last Q3</ng-option>\n\t\t\t<ng-option value="Last Q4">Last Q4</ng-option>\n\t\t\t<ng-option value="All">All</ng-option>\n\t\t</ng-select>\n\t',isInline:!0,dependencies:[{kind:"directive",type:i2.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i2.NgModel,selector:"[ngModel]:not([formControlName]):not([formControl])",inputs:["name","disabled","ngModel","ngModelOptions"],outputs:["ngModelChange"],exportAs:["ngModel"]},{kind:"component",type:i4$1.NgSelectComponent,selector:"ng-select",inputs:["bindLabel","bindValue","markFirst","placeholder","notFoundText","typeToSearchText","addTagText","loadingText","clearAllText","appearance","dropdownPosition","appendTo","loading","closeOnSelect","hideSelected","selectOnTab","openOnEnter","maxSelectedItems","groupBy","groupValue","bufferAmount","virtualScroll","selectableGroup","selectableGroupAsModel","searchFn","trackByFn","clearOnBackspace","labelForId","inputAttrs","tabIndex","readonly","searchWhileComposing","minTermLength","editableSearchTerm","keyDownFn","typeahead","multiple","addTag","searchable","clearable","isOpen","items","compareWith","clearSearchOnAdd"],outputs:["blur","focus","change","open","close","search","clear","add","remove","scroll","scrollToEnd"]},{kind:"component",type:i4$1.NgOptionComponent,selector:"ng-option",inputs:["value","disabled"]}],changeDetection:i0.ChangeDetectionStrategy.OnPush}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DateShortcutComponent,decorators:[{type:Component,args:[{providers:[ProviderService],selector:"date-shortcut",template:'\n\t\t<label class="form-control-label">Date Shortcuts</label>\n\t\t<ng-select [(ngModel)]="shortcutValue" (change)="onSelectShortcut()" placeholder="Select Shortcut" [clearable]="false">\n\t\t\t<ng-option value="Today">Today</ng-option>\n\t\t\t<ng-option value="Yesterday">Yesterday</ng-option>\n\t\t\t<ng-option value="Week">This Week</ng-option>\n\t\t\t<ng-option value="Last Week">Last Week</ng-option>\n\t\t\t<ng-option value="Month">This Month</ng-option>\n\t\t\t<ng-option value="Last Month">Last Month</ng-option>\n\t\t\t<ng-option value="Last 30 Days">Last 30 Days</ng-option>\n\t\t\t<ng-option value="Quarter">This Quarter</ng-option>\n\t\t\t<ng-option value="Last Quarter">Last Quarter</ng-option>\n\t\t\t<ng-option value="Year">This Year</ng-option>\n\t\t\t<ng-option value="Last Year">Last Year</ng-option>\n\t\t\t<ng-option value="Q1">Q1</ng-option>\n\t\t\t<ng-option value="Q2">Q2</ng-option>\n\t\t\t<ng-option value="Q3">Q3</ng-option>\n\t\t\t<ng-option value="Q4">Q4</ng-option>\n\t\t\t<ng-option value="Last Q1">Last Q1</ng-option>\n\t\t\t<ng-option value="Last Q2">Last Q2</ng-option>\n\t\t\t<ng-option value="Last Q3">Last Q3</ng-option>\n\t\t\t<ng-option value="Last Q4">Last Q4</ng-option>\n\t\t\t<ng-option value="All">All</ng-option>\n\t\t</ng-select>\n\t',changeDetection:ChangeDetectionStrategy.OnPush}]}],ctorParameters:function(){return[{type:ProviderService},{type:i0.ChangeDetectorRef}]},propDecorators:{startDateObj:[{type:Input}],endDateObj:[{type:Input}],startDateObjForm:[{type:Input}],endDateObjForm:[{type:Input}],startDateObjChange:[{type:Output}],endDateObjChange:[{type:Output}],startDateObjFormChange:[{type:Output}],endDateObjFormChange:[{type:Output}],datesChanged:[{type:Output}],shortcutValue:[{type:Input}],shortcutValueChange:[{type:Output}]}});class DateShortcutModule{}DateShortcutModule.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DateShortcutModule,deps:[],target:i0.ɵɵFactoryTarget.NgModule}),DateShortcutModule.ɵmod=i0.ɵɵngDeclareNgModule({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:DateShortcutModule,declarations:[DateShortcutComponent],imports:[FormsModule,CommonModule,NgSelectModule],exports:[DateShortcutComponent]}),DateShortcutModule.ɵinj=i0.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DateShortcutModule,imports:[FormsModule,CommonModule,NgSelectModule]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:DateShortcutModule,decorators:[{type:NgModule,args:[{imports:[FormsModule,CommonModule,NgSelectModule],exports:[DateShortcutComponent],declarations:[DateShortcutComponent]}]}]});class SchedulerComponent extends BaseComponent{constructor(t){super(t),this._services=t,this.today=new Date,this.over_forward=!1,this.over_backwards=!1,this.mouseDown=!1,this.mouseLastEvent=null,this.timer_sub=null,this.months=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],this.size_svg={width:0,height:0},this.size_cell={width:30,height:30}}ngAfterViewInit(){this.size_svg.width=this.svgChart.nativeElement.clientWidth,this.size_svg.height=this.svgChart.nativeElement.clientHeight}ngOnDestroy(){this.timer_sub&&clearInterval(this.timer_sub)}onMouseup(){this.mouseDown=!1}onMousedown(t){this.mouseDown=!0,this.mouseLastEvent=t}onMousemove(t){if(this.mouseDown){let e=0;this.mouseLastEvent.clientX-t.clientX>1?e=Math.floor((this.mouseLastEvent.clientX-t.clientX)/15)>0?Math.floor((this.mouseLastEvent.clientX-t.clientX+5*(30-this.size_cell.width))/20):1:this.mouseLastEvent.clientX-t.clientX<-1&&(e=Math.floor((this.mouseLastEvent.clientX-t.clientX)/15)<0?Math.floor((this.mouseLastEvent.clientX-t.clientX-5*(30-this.size_cell.width))/20):-1),this.today=moment$1(this.today).add(e,"days").toDate(),this.mouseLastEvent=t}}onMouseLeave(t){this.mouseDown&&(this.mouseDown=!1)}buildDays(){let t=[];for(let e=0;e<Math.floor(this.size_svg.width/this.size_cell.width);e++)t.push({index:e,day:moment$1(this.today).add(e,"days").toDate().getDate()});return t}buildMonths(){let t=[{index_start:0,index_end:null,month:this.months[this.today.getMonth()]}];for(let e=1;e<Math.floor(this.size_svg.width/this.size_cell.width);e++)moment$1(this.today).add(e,"days").toDate().getMonth()!==moment$1(this.today).add(e-1,"days").toDate().getMonth()&&(t[t.length-1].index_end=e,t.push({index_start:e,index_end:null,month:this.months[moment$1(this.today).add(e,"days").toDate().getMonth()]}));return t[t.length-1].index_end=Math.floor(this.size_svg.width/this.size_cell.width),t}buildYears(){let t=[{index_start:0,index_end:null,year:this.today.getFullYear()}];for(let e=1;e<Math.floor(this.size_svg.width/this.size_cell.width);e++)moment$1(this.today).add(e,"days").toDate().getFullYear()!==moment$1(this.today).add(e-1,"days").toDate().getFullYear()&&(t[t.length-1].index_end=e,t.push({index_start:e,index_end:null,year:moment$1(this.today).add(e,"days").toDate().getFullYear()}));return t[t.length-1].index_end=Math.floor(this.size_svg.width/this.size_cell.width),t}decrementToday(){this.today=moment$1(this.today).subtract(1,"days").toDate()}incrementToday(){this.today=moment$1(this.today).add(1,"days").toDate()}overForward(){this.timer_sub=setInterval((()=>{this.incrementToday()}),50)}leftForward(){clearInterval(this.timer_sub)}overBackwards(){this.timer_sub=setInterval((()=>{this.decrementToday()}),50)}leftBackwards(){clearInterval(this.timer_sub)}zoomOut(){this.size_cell.width>10&&(this.size_cell.width-=10)}zoomIn(){this.size_cell.width+=10}}SchedulerComponent.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SchedulerComponent,deps:[{token:ProviderService}],target:i0.ɵɵFactoryTarget.Component}),SchedulerComponent.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"15.2.10",type:SchedulerComponent,selector:"scheduler",host:{listeners:{mouseup:"onMouseup()",mousedown:"onMousedown($event)",mousemove:"onMousemove($event)",mouseleave:"onMouseLeave($event)"}},providers:[ProviderService],viewQueries:[{propertyName:"svgChart",first:!0,predicate:["svgChart"],descendants:!0,static:!0}],usesInheritance:!0,ngImport:i0,template:'<style>\n\t.bar {\n\t\tfill: red; /* changes the background */\n\t\theight: 21px;\n\t\ttransition: fill .3s ease;\n\t\tcursor: pointer;\n\t\tfont-family: Helvetica, sans-serif;\n\t}\n\n\t.bar text {\n\t\tcolor: black;\n\t}\n\n\t.bar:hover,\n\t.bar:focus {\n\t\tfill: black;\n\t}\n\n\t.bar:hover text,\n\t.bar:focus text {\n\t\tfill: red;\n\t}\n\n\t.year {\n\t\tstroke:black;\n\t\tfill: white;\n\t}\n\n\t.month {\n\t\tstroke:black;\n\t\tfill: white;\n\t}\n\n\t.day {\n\t\tstroke:black;\n\t\tfill: white;\n\t}\n\n\t.smallText {\n\t\tfont-size: 4px;\n\t}\n</style>\n\n<div class="scheduler">\n\n\t<button class="btn btn-warning" type="button" (mouseenter)="overBackwards()" (mouseleave)="leftBackwards()">Go Backwards</button>\n\t<button class="btn btn-success" type="button" (mouseenter)="overForward()" (mouseleave)="leftForward()">Go Forward</button>\n\n\t<button style="margin-left: 20px;" class="btn btn-warning" type="button" (click)="zoomOut()">Zoom Out</button>\n\t<button class="btn btn-success" type="button" (click)="zoomIn()">Zoom In</button>\n\n\t<svg class="chart" width="100%" height="100%" aria-labelledby="title desc" role="img" #svgChart>\n\t\t<title id="title">Scheduler</title>\n\t\t<desc id="desc">Scheduler</desc>\n\n\t\t<g class="year">\n\t\t\t<ng-container *ngFor="let year of buildYears()">\n\t\t\t\t<rect [attr.width]="(year.index_end - year.index_start) * size_cell.width" [attr.height]="size_cell.height" [attr.x]="year.index_start * size_cell.width"></rect>\n\t\t\t\t<svg [attr.width]="(year.index_end - year.index_start) * size_cell.width" [attr.height]="size_cell.height" [attr.x]="year.index_start * size_cell.width">\n\t\t\t\t\t<text x="50%" y="50%" alignment-baseline="middle" text-anchor="middle">{{year.year}}</text>\n\t\t\t\t</svg>\n\t\t\t</ng-container>\n\t\t</g>\n\t\t<g class="month">\n\t\t\t<ng-container *ngFor="let month of buildMonths()">\n\t\t\t\t<rect [attr.width]="(month.index_end - month.index_start) * size_cell.width" [attr.height]="size_cell.height" [attr.x]="month.index_start * size_cell.width" [attr.y]="size_cell.height"></rect>\n\t\t\t\t<svg [attr.width]="(month.index_end - month.index_start) * size_cell.width" [attr.height]="size_cell.height" [attr.x]="month.index_start * size_cell.width" [attr.y]="size_cell.height">\n\t\t\t\t\t<text x="50%" y="50%" alignment-baseline="middle" text-anchor="middle">{{month.month}}</text>\n\t\t\t\t</svg>\n\t\t\t</ng-container>\n\t\t</g>\n\t\t<g class="day">\n\t\t\t<ng-container *ngFor="let day of buildDays()">\n\t\t\t\t<rect [attr.width]="size_cell.width" [attr.height]="size_cell.height" [attr.x]="day.index * size_cell.width" [attr.y]="size_cell.height * 2"></rect>\n\t\t\t\t<svg [attr.width]="size_cell.width" [attr.height]="size_cell.height" [attr.x]="day.index * size_cell.width" [attr.y]="size_cell.height * 2">\n\t\t\t\t\t<text x="50%" y="50%" alignment-baseline="middle" text-anchor="middle" [style.font-size.px]="[size_cell.width > 10 ? 12 : 6]">{{day.day}}</text>\n\t\t\t\t</svg>\n\t\t\t</ng-container>\n\t\t</g>\n\n\n\t\t\x3c!-- <g class="bar">\n\t\t\t<rect width="40" height="19"></rect>\n\t\t\t<text x="45" y="9.5" dy=".35em">4 apples</text>\n\t\t</g>\n\t\t<g class="bar">\n\t\t\t<rect width="80" height="19" y="20"></rect>\n\t\t\t<text x="85" y="28" dy=".35em">8 bananas</text>\n\t\t</g>\n\t\t<g class="bar">\n\t\t\t<rect width="150" height="19" y="40"></rect>\n\t\t\t<text x="150" y="48" dy=".35em">15 kiwis</text>\n\t\t</g>\n\t\t<g class="bar">\n\t\t\t<rect width="160" height="19" y="60"></rect>\n\t\t\t<text x="161" y="68" dy=".35em">16 oranges</text>\n\t\t</g>\n\t\t<g class="bar">\n\t\t\t<rect width="230" height="19" y="80"></rect>\n\t\t\t<text x="235" y="88" dy=".35em">23 lemons</text>\n\t\t</g> --\x3e\n\t</svg>\n</div>\n',styles:["\n\t.bar {\n\t\tfill: red; /* changes the background */\n\t\theight: 21px;\n\t\ttransition: fill .3s ease;\n\t\tcursor: pointer;\n\t\tfont-family: Helvetica, sans-serif;\n\t}\n\n\t.bar text {\n\t\tcolor: black;\n\t}\n\n\t.bar:hover,\n\t.bar:focus {\n\t\tfill: black;\n\t}\n\n\t.bar:hover text,\n\t.bar:focus text {\n\t\tfill: red;\n\t}\n\n\t.year {\n\t\tstroke:black;\n\t\tfill: white;\n\t}\n\n\t.month {\n\t\tstroke:black;\n\t\tfill: white;\n\t}\n\n\t.day {\n\t\tstroke:black;\n\t\tfill: white;\n\t}\n\n\t.smallText {\n\t\tfont-size: 4px;\n\t}\n"],dependencies:[{kind:"directive",type:i7.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]}]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SchedulerComponent,decorators:[{type:Component,args:[{providers:[ProviderService],selector:"scheduler",template:'<style>\n\t.bar {\n\t\tfill: red; /* changes the background */\n\t\theight: 21px;\n\t\ttransition: fill .3s ease;\n\t\tcursor: pointer;\n\t\tfont-family: Helvetica, sans-serif;\n\t}\n\n\t.bar text {\n\t\tcolor: black;\n\t}\n\n\t.bar:hover,\n\t.bar:focus {\n\t\tfill: black;\n\t}\n\n\t.bar:hover text,\n\t.bar:focus text {\n\t\tfill: red;\n\t}\n\n\t.year {\n\t\tstroke:black;\n\t\tfill: white;\n\t}\n\n\t.month {\n\t\tstroke:black;\n\t\tfill: white;\n\t}\n\n\t.day {\n\t\tstroke:black;\n\t\tfill: white;\n\t}\n\n\t.smallText {\n\t\tfont-size: 4px;\n\t}\n</style>\n\n<div class="scheduler">\n\n\t<button class="btn btn-warning" type="button" (mouseenter)="overBackwards()" (mouseleave)="leftBackwards()">Go Backwards</button>\n\t<button class="btn btn-success" type="button" (mouseenter)="overForward()" (mouseleave)="leftForward()">Go Forward</button>\n\n\t<button style="margin-left: 20px;" class="btn btn-warning" type="button" (click)="zoomOut()">Zoom Out</button>\n\t<button class="btn btn-success" type="button" (click)="zoomIn()">Zoom In</button>\n\n\t<svg class="chart" width="100%" height="100%" aria-labelledby="title desc" role="img" #svgChart>\n\t\t<title id="title">Scheduler</title>\n\t\t<desc id="desc">Scheduler</desc>\n\n\t\t<g class="year">\n\t\t\t<ng-container *ngFor="let year of buildYears()">\n\t\t\t\t<rect [attr.width]="(year.index_end - year.index_start) * size_cell.width" [attr.height]="size_cell.height" [attr.x]="year.index_start * size_cell.width"></rect>\n\t\t\t\t<svg [attr.width]="(year.index_end - year.index_start) * size_cell.width" [attr.height]="size_cell.height" [attr.x]="year.index_start * size_cell.width">\n\t\t\t\t\t<text x="50%" y="50%" alignment-baseline="middle" text-anchor="middle">{{year.year}}</text>\n\t\t\t\t</svg>\n\t\t\t</ng-container>\n\t\t</g>\n\t\t<g class="month">\n\t\t\t<ng-container *ngFor="let month of buildMonths()">\n\t\t\t\t<rect [attr.width]="(month.index_end - month.index_start) * size_cell.width" [attr.height]="size_cell.height" [attr.x]="month.index_start * size_cell.width" [attr.y]="size_cell.height"></rect>\n\t\t\t\t<svg [attr.width]="(month.index_end - month.index_start) * size_cell.width" [attr.height]="size_cell.height" [attr.x]="month.index_start * size_cell.width" [attr.y]="size_cell.height">\n\t\t\t\t\t<text x="50%" y="50%" alignment-baseline="middle" text-anchor="middle">{{month.month}}</text>\n\t\t\t\t</svg>\n\t\t\t</ng-container>\n\t\t</g>\n\t\t<g class="day">\n\t\t\t<ng-container *ngFor="let day of buildDays()">\n\t\t\t\t<rect [attr.width]="size_cell.width" [attr.height]="size_cell.height" [attr.x]="day.index * size_cell.width" [attr.y]="size_cell.height * 2"></rect>\n\t\t\t\t<svg [attr.width]="size_cell.width" [attr.height]="size_cell.height" [attr.x]="day.index * size_cell.width" [attr.y]="size_cell.height * 2">\n\t\t\t\t\t<text x="50%" y="50%" alignment-baseline="middle" text-anchor="middle" [style.font-size.px]="[size_cell.width > 10 ? 12 : 6]">{{day.day}}</text>\n\t\t\t\t</svg>\n\t\t\t</ng-container>\n\t\t</g>\n\n\n\t\t\x3c!-- <g class="bar">\n\t\t\t<rect width="40" height="19"></rect>\n\t\t\t<text x="45" y="9.5" dy=".35em">4 apples</text>\n\t\t</g>\n\t\t<g class="bar">\n\t\t\t<rect width="80" height="19" y="20"></rect>\n\t\t\t<text x="85" y="28" dy=".35em">8 bananas</text>\n\t\t</g>\n\t\t<g class="bar">\n\t\t\t<rect width="150" height="19" y="40"></rect>\n\t\t\t<text x="150" y="48" dy=".35em">15 kiwis</text>\n\t\t</g>\n\t\t<g class="bar">\n\t\t\t<rect width="160" height="19" y="60"></rect>\n\t\t\t<text x="161" y="68" dy=".35em">16 oranges</text>\n\t\t</g>\n\t\t<g class="bar">\n\t\t\t<rect width="230" height="19" y="80"></rect>\n\t\t\t<text x="235" y="88" dy=".35em">23 lemons</text>\n\t\t</g> --\x3e\n\t</svg>\n</div>\n'}]}],ctorParameters:function(){return[{type:ProviderService}]},propDecorators:{svgChart:[{type:ViewChild,args:["svgChart",{static:!0}]}],onMouseup:[{type:HostListener,args:["mouseup"]}],onMousedown:[{type:HostListener,args:["mousedown",["$event"]]}],onMousemove:[{type:HostListener,args:["mousemove",["$event"]]}],onMouseLeave:[{type:HostListener,args:["mouseleave",["$event"]]}]}});class SchedulerModule{}SchedulerModule.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SchedulerModule,deps:[],target:i0.ɵɵFactoryTarget.NgModule}),SchedulerModule.ɵmod=i0.ɵɵngDeclareNgModule({minVersion:"14.0.0",version:"15.2.10",ngImport:i0,type:SchedulerModule,declarations:[SchedulerComponent],imports:[NgbModule,FormsModule,CommonModule,RouterModule],exports:[SchedulerComponent]}),SchedulerModule.ɵinj=i0.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SchedulerModule,imports:[NgbModule,FormsModule,CommonModule,RouterModule]}),i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"15.2.10",ngImport:i0,type:SchedulerModule,decorators:[{type:NgModule,args:[{imports:[NgbModule,FormsModule,CommonModule,RouterModule],exports:[SchedulerComponent],declarations:[SchedulerComponent],providers:[]}]}]});const ReportBuilderModulePermission={name:"report-builder",views:[{link:"/report-builder/list",label:"List"},{link:"/report-builder/new",label:"New"},{link:"/report-builder/scheduled-job",label:"Scheduled Job"},{link:"/report-builder/dashboard-builder",label:"Dashboard Builder"},{link:"/report-builder/detail",label:"Detail",has_parameter:!0},{link:"/report-builder/edit",label:"Edit",has_parameter:!0},{link:"/report-builder/delete",label:"Delete",has_parameter:!0}]},SuperAdminModulePermission={name:"super-admin",views:[{link:"/super-admin/dashboard",label:"Dashboard"},{link:"/super-admin/apm",label:"APM"},{link:"/super-admin/monitor",label:"Monitor"}]};export{AccountManagerService,AlertService,Auth365Component,AuthGuard,AuthPermissionService,AuthService,AwsService,BaseComponent,CanDeactivateGuard,CollapseTableComponent,CollapseTableModule,CoreComponent,CoreModule,CoreService,DatatableComponent,DatatableModule,DateShortcutComponent,DateShortcutModule,DialogService,DomSanitizorPipe,EnrollComponent,FileModule,FileUploadComponent,FilterEqualPipe,FilterNotEqualPipe,FocusDirective,ForgotPasswordComponent,FormButtonComponent,FormButtonModule,HomeComponent,JsonParsePipe,LoggerComponent,MinusCurrencyPipe,NavbarMainComponent,NavbarModuleComponent,OfflineManagerService,PhonePipe,PipeModule,ProviderService,ReportBuilderModulePermission,ResizeService,ResponsiveButtonGroupComponent,ResponsiveButtonGroupModule,ReversePipe,SchedulerComponent,SchedulerModule,ScrollDirective,SharedModule,SocketManagerService,SocketService,SortTableDirective,SortTableHeaderComponent,SortTableModule,SortTableNgForComponent,StorageDB,SuperAdminModulePermission,SupportTicketComponent,SupportTicketDetailComponent,SupportTicketEditComponent,SupportTicketListComponent,SupportTicketModule,SupportTicketNewComponent,SupportTicketRouting,SupportTicketService,TitleCaseAndUnderscorePipe,TokenManagerService,UserRoleComponent,UserRoleModule,ValidationService,WindowRefService,b64toBlobURL,blobToFile,dateReviver,deepCopy,deepDiffDetails,generateCronStringFromDate,isUpperCase,mergeDeep,pad,round,s2ab,toDataURL,toTitleCase,type};
|