@trudb/tru-common-lib 0.0.674 → 0.0.676

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.
@@ -11,16 +11,16 @@ export class TruAuthJwtStrategy {
11
11
  }
12
12
  getCurrentUser() {
13
13
  //todo check v6 for how this should be done
14
- return of(JSON.parse(localStorage.getItem(this.JWT_TOKEN)).user);
14
+ return of(JSON.parse(localStorage.getItem(this.JWT_TOKEN))?.user);
15
15
  }
16
16
  isLoggedIn() {
17
17
  return !!this.getJwtToken();
18
18
  }
19
19
  getJwtToken() {
20
- return JSON.parse(localStorage.getItem(this.JWT_TOKEN)).jwt;
20
+ return JSON.parse(localStorage.getItem(this.JWT_TOKEN))?.jwt;
21
21
  }
22
22
  getToken() {
23
- var token = JSON.parse(localStorage.getItem(this.JWT_TOKEN)).jwt;
23
+ var token = JSON.parse(localStorage.getItem(this.JWT_TOKEN))?.jwt;
24
24
  if (token && token !== "undefined") {
25
25
  const encodedPayload = token.split(".")[1];
26
26
  const payloadStr = window.atob(encodedPayload);
@@ -36,4 +36,4 @@ export class TruAuthJwtStrategy {
36
36
  return token;
37
37
  }
38
38
  }
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWF1dGgtand0LXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2xvZ2luL2NsYXNzZXMvdHJ1LWF1dGgtand0LXN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFLdEMsTUFBTSxPQUFPLGtCQUFrQjtJQUEvQjtRQUNtQixjQUFTLEdBQUcsV0FBVyxDQUFDO0lBMEMzQyxDQUFDO0lBeENDLFdBQVcsQ0FBQyxLQUFtQjtRQUM3QixZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxZQUFZO1FBQ1YsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELGNBQWM7UUFDWiwyQ0FBMkM7UUFDM0MsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFDRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBVyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUUzRSxJQUFJLEtBQUssSUFBSSxLQUFLLEtBQUssV0FBVyxFQUFFO1lBQ2xDLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0MsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUUvQyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3JDLElBQUksR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QixJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ25CLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBRTNDLElBQUksR0FBRyxHQUFHLEtBQUssRUFBRTtnQkFDZixZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDeEMsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IFRydUF1dGhUb2tlbiB9IGZyb20gXCIuL3RydS1hdXRoLXRva2VuXCI7XHJcbmltcG9ydCB7IFRydVVzZXIgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvdHJ1LXVzZXJcIjtcclxuaW1wb3J0IHsgVHJ1QXV0aFN0cmF0ZWd5IH0gZnJvbSBcIi4vdHJ1LWF1dGgtY29uZmlnXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgVHJ1QXV0aEp3dFN0cmF0ZWd5IGltcGxlbWVudHMgVHJ1QXV0aFN0cmF0ZWd5PFRydUF1dGhUb2tlbj4ge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgSldUX1RPS0VOID0gXCJKV1RfVE9LRU5cIjtcclxuXHJcbiAgZG9Mb2dpblVzZXIodG9rZW46IFRydUF1dGhUb2tlbik6IHZvaWQge1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5KV1RfVE9LRU4sIEpTT04uc3RyaW5naWZ5KHRva2VuKSk7XHJcbiAgfVxyXG5cclxuICBkb0xvZ291dFVzZXIoKTogdm9pZCB7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLkpXVF9UT0tFTik7XHJcbiAgfVxyXG5cclxuICBnZXRDdXJyZW50VXNlcigpOiBPYnNlcnZhYmxlPFRydVVzZXIgfCB1bmRlZmluZWQ+IHtcclxuICAgIC8vdG9kbyBjaGVjayB2NiBmb3IgaG93IHRoaXMgc2hvdWxkIGJlIGRvbmVcclxuICAgIHJldHVybiBvZihKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuSldUX1RPS0VOKSBhcyBzdHJpbmcpLnVzZXIpO1xyXG4gIH1cclxuXHJcbiAgaXNMb2dnZWRJbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIXRoaXMuZ2V0Snd0VG9rZW4oKTtcclxuICB9XHJcbiAgZ2V0Snd0VG9rZW4oKSB7XHJcbiAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkpXVF9UT0tFTikgYXMgc3RyaW5nKS5qd3Q7XHJcbiAgfVxyXG5cclxuICBnZXRUb2tlbigpIHtcclxuICAgIHZhciB0b2tlbiA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5KV1RfVE9LRU4pIGFzIHN0cmluZykuand0O1xyXG5cclxuICAgIGlmICh0b2tlbiAmJiB0b2tlbiAhPT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICBjb25zdCBlbmNvZGVkUGF5bG9hZCA9IHRva2VuLnNwbGl0KFwiLlwiKVsxXTtcclxuICAgICAgY29uc3QgcGF5bG9hZFN0ciA9IHdpbmRvdy5hdG9iKGVuY29kZWRQYXlsb2FkKTtcclxuXHJcbiAgICAgIHZhciBwYXlsb2FkID0gSlNPTi5wYXJzZShwYXlsb2FkU3RyKTtcclxuICAgICAgdmFyIGV4cCA9IHBheWxvYWRbXCJleHBcIl07XHJcbiAgICAgIHZhciBkID0gbmV3IERhdGUoKTtcclxuICAgICAgdmFyIGVwb2NoID0gTWF0aC5yb3VuZChkLmdldFRpbWUoKSAvIDEwMDApO1xyXG5cclxuICAgICAgaWYgKGV4cCA8IGVwb2NoKSB7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5KV1RfVE9LRU4pO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHJldHVybiB0b2tlbjtcclxuICB9XHJcbn1cclxuIl19
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWF1dGgtand0LXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2xvZ2luL2NsYXNzZXMvdHJ1LWF1dGgtand0LXN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFLdEMsTUFBTSxPQUFPLGtCQUFrQjtJQUEvQjtRQUNtQixjQUFTLEdBQUcsV0FBVyxDQUFDO0lBMEMzQyxDQUFDO0lBeENDLFdBQVcsQ0FBQyxLQUFtQjtRQUM3QixZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxZQUFZO1FBQ1YsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELGNBQWM7UUFDWiwyQ0FBMkM7UUFDM0MsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQVcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFDRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBVyxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQVcsQ0FBQyxFQUFFLEdBQUcsQ0FBQztRQUU1RSxJQUFJLEtBQUssSUFBSSxLQUFLLEtBQUssV0FBVyxFQUFFO1lBQ2xDLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0MsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUUvQyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3JDLElBQUksR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QixJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ25CLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBRTNDLElBQUksR0FBRyxHQUFHLEtBQUssRUFBRTtnQkFDZixZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDeEMsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IFRydUF1dGhUb2tlbiB9IGZyb20gXCIuL3RydS1hdXRoLXRva2VuXCI7XHJcbmltcG9ydCB7IFRydVVzZXIgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvdHJ1LXVzZXJcIjtcclxuaW1wb3J0IHsgVHJ1QXV0aFN0cmF0ZWd5IH0gZnJvbSBcIi4vdHJ1LWF1dGgtY29uZmlnXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgVHJ1QXV0aEp3dFN0cmF0ZWd5IGltcGxlbWVudHMgVHJ1QXV0aFN0cmF0ZWd5PFRydUF1dGhUb2tlbj4ge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgSldUX1RPS0VOID0gXCJKV1RfVE9LRU5cIjtcclxuXHJcbiAgZG9Mb2dpblVzZXIodG9rZW46IFRydUF1dGhUb2tlbik6IHZvaWQge1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5KV1RfVE9LRU4sIEpTT04uc3RyaW5naWZ5KHRva2VuKSk7XHJcbiAgfVxyXG5cclxuICBkb0xvZ291dFVzZXIoKTogdm9pZCB7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLkpXVF9UT0tFTik7XHJcbiAgfVxyXG5cclxuICBnZXRDdXJyZW50VXNlcigpOiBPYnNlcnZhYmxlPFRydVVzZXIgfCB1bmRlZmluZWQ+IHtcclxuICAgIC8vdG9kbyBjaGVjayB2NiBmb3IgaG93IHRoaXMgc2hvdWxkIGJlIGRvbmVcclxuICAgIHJldHVybiBvZihKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuSldUX1RPS0VOKSBhcyBzdHJpbmcpPy51c2VyKTtcclxuICB9XHJcblxyXG4gIGlzTG9nZ2VkSW4oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLmdldEp3dFRva2VuKCk7XHJcbiAgfVxyXG4gIGdldEp3dFRva2VuKCkge1xyXG4gICAgcmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5KV1RfVE9LRU4pIGFzIHN0cmluZyk/Lmp3dDtcclxuICB9XHJcblxyXG4gIGdldFRva2VuKCkge1xyXG4gICAgdmFyIHRva2VuID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkpXVF9UT0tFTikgYXMgc3RyaW5nKT8uand0O1xyXG5cclxuICAgIGlmICh0b2tlbiAmJiB0b2tlbiAhPT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICBjb25zdCBlbmNvZGVkUGF5bG9hZCA9IHRva2VuLnNwbGl0KFwiLlwiKVsxXTtcclxuICAgICAgY29uc3QgcGF5bG9hZFN0ciA9IHdpbmRvdy5hdG9iKGVuY29kZWRQYXlsb2FkKTtcclxuXHJcbiAgICAgIHZhciBwYXlsb2FkID0gSlNPTi5wYXJzZShwYXlsb2FkU3RyKTtcclxuICAgICAgdmFyIGV4cCA9IHBheWxvYWRbXCJleHBcIl07XHJcbiAgICAgIHZhciBkID0gbmV3IERhdGUoKTtcclxuICAgICAgdmFyIGVwb2NoID0gTWF0aC5yb3VuZChkLmdldFRpbWUoKSAvIDEwMDApO1xyXG5cclxuICAgICAgaWYgKGV4cCA8IGVwb2NoKSB7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5KV1RfVE9LRU4pO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHJldHVybiB0b2tlbjtcclxuICB9XHJcbn1cclxuIl19
@@ -3,14 +3,18 @@ import * as i0 from "@angular/core";
3
3
  import * as i1 from "../../desktop/services/tru-desktop-manager";
4
4
  import * as i2 from "../../../services/tru-app-environment";
5
5
  import * as i3 from "../../login/services/tru-auth";
6
- import * as i4 from "@angular/material/menu";
7
- import * as i5 from "@angular/material/button";
8
- import * as i6 from "@angular/material/icon";
6
+ import * as i4 from "@angular/common";
7
+ import * as i5 from "@angular/material/menu";
8
+ import * as i6 from "@angular/material/button";
9
+ import * as i7 from "@angular/material/icon";
9
10
  export class TruToolbarUserProfile {
10
11
  constructor(desktopManager, appEnvironment, auth) {
11
12
  this.desktopManager = desktopManager;
12
13
  this.appEnvironment = appEnvironment;
13
14
  this.auth = auth;
15
+ this.initial = null;
16
+ this.name = null;
17
+ this.email = null;
14
18
  this.onChangePasswordButtonClicked = () => {
15
19
  let entity = this.appEnvironment.globalDataContext?.entityAccess().searchUserByRefCacheOnly(this.appEnvironment.activeUserRef);
16
20
  this.desktopManager.addWindow('TruDbUser', 'TruDbUsers', 'Users', 'TruDbUserDetailView', [entity], true);
@@ -18,12 +22,15 @@ export class TruToolbarUserProfile {
18
22
  this.onLogoutButtonClicked = () => {
19
23
  this.auth.doLogoutAndRedirectToLogin();
20
24
  };
25
+ let user = this.appEnvironment.user;
26
+ this.initial = user?.firstName ? user?.firstName.slice(0, 0).toUpperCase() : user?.username?.slice(0, 0).toUpperCase();
27
+ this.name = user?.firstName || user?.lastName ? user?.firstName + ' ' + user?.lastName : user?.username;
21
28
  }
22
29
  }
23
30
  TruToolbarUserProfile.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruToolbarUserProfile, deps: [{ token: i1.TruDesktopManager }, { token: i2.TruAppEnvironment }, { token: i3.TruAuth }], target: i0.ɵɵFactoryTarget.Component });
24
- TruToolbarUserProfile.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: TruToolbarUserProfile, selector: "tru-toolbar-user-profile", ngImport: i0, template: "<div class=\"tru-toolbar-user-profile\">\r\n <button mat-mini-fab color=\"primary\" class=\"tru-toolbar-user-profile-user-button\" [matMenuTriggerFor]=\"userMenu\">\r\n N\r\n </button>\r\n</div>\r\n<mat-menu #userMenu=\"matMenu\">\r\n <div class=\"tru-toolbar-user-profile-menu-container\">\r\n <mat-icon class=\"tru-toolbar-user-profile-menu-circle-icon\" [svgIcon]=\"'circle-icon'\">N</mat-icon>\r\n <span class=\"tru-toolbar-user-profile-menu-circle-icon-text\">N</span>\r\n <div class=\"tru-toolbar-user-profile-menu-text-container\">\r\n <p>Noah Dykoski</p>\r\n <p>noah@arkware.com</p>\r\n </div>\r\n <button mat-menu-item\r\n (click)=\"onChangePasswordButtonClicked()\"\r\n class=\"tru-toolbar-user-profile-menu-logout-button\">\r\n Change Password\r\n </button>\r\n <button mat-menu-item\r\n (click)=\"onLogoutButtonClicked()\"\r\n class=\"tru-toolbar-user-profile-menu-logout-button\">\r\n Logout\r\n </button>\r\n </div>\r\n</mat-menu>\r\n", styles: [".tru-toolbar-user-profile{height:25px;float:right}.tru-toolbar-user-profile button{height:23px;width:23px;margin-right:10px;margin-top:1px;font-size:12px;box-shadow:none}.tru-toolbar-user-profile-menu-container{width:250px}.tru-toolbar-user-profile-menu-container mat-icon{height:50px;width:50px;margin:auto;display:flex;justify-content:center;color:#006dcc}.tru-toolbar-user-profile-menu-container p{margin:5px;font-size:14px;text-align:center}.tru-toolbar-user-profile-menu-container .tru-toolbar-user-profile-menu-logout-button{display:flex;justify-content:center}.tru-toolbar-user-profile-menu-text-container{margin-top:-15px}.tru-toolbar-user-profile-menu-circle-icon-text{color:#fff;font-weight:200;font-size:30px;margin-right:12px;display:block;margin-left:12px;display:flex;justify-content:center;position:relative;z-index:100;top:-35px}\n"], dependencies: [{ kind: "component", type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i5.MatMiniFabButton, selector: "button[mat-mini-fab]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None });
31
+ TruToolbarUserProfile.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: TruToolbarUserProfile, selector: "tru-toolbar-user-profile", ngImport: i0, template: "<div class=\"tru-toolbar-user-profile\">\r\n <button mat-mini-fab color=\"primary\" class=\"tru-toolbar-user-profile-user-button\" [matMenuTriggerFor]=\"userMenu\">\r\n {{initial}}\r\n </button>\r\n</div>\r\n<mat-menu #userMenu=\"matMenu\">\r\n <div class=\"tru-toolbar-user-profile-menu-container\">\r\n <mat-icon class=\"tru-toolbar-user-profile-menu-circle-icon\" [svgIcon]=\"'circle-icon'\"></mat-icon>\r\n <span class=\"tru-toolbar-user-profile-menu-circle-icon-text\">{{initial}}</span>\r\n <div class=\"tru-toolbar-user-profile-menu-text-container\">\r\n <p>{{name}}</p>\r\n <p *ngIf=\"email\">{{email}}</p>\r\n </div>\r\n <button mat-menu-item\r\n (click)=\"onChangePasswordButtonClicked()\"\r\n class=\"tru-toolbar-user-profile-menu-logout-button\">\r\n Change Password\r\n </button>\r\n <button mat-menu-item\r\n (click)=\"onLogoutButtonClicked()\"\r\n class=\"tru-toolbar-user-profile-menu-logout-button\">\r\n Logout\r\n </button>\r\n </div>\r\n</mat-menu>\r\n", styles: [".tru-toolbar-user-profile{height:25px;float:right}.tru-toolbar-user-profile button{height:23px;width:23px;margin-right:10px;margin-top:1px;font-size:12px;box-shadow:none}.tru-toolbar-user-profile-menu-container{width:250px}.tru-toolbar-user-profile-menu-container mat-icon{height:50px;width:50px;margin:auto;display:flex;justify-content:center;color:#006dcc}.tru-toolbar-user-profile-menu-container p{margin:5px;font-size:14px;text-align:center}.tru-toolbar-user-profile-menu-container .tru-toolbar-user-profile-menu-logout-button{display:flex;justify-content:center}.tru-toolbar-user-profile-menu-text-container{margin-top:-15px}.tru-toolbar-user-profile-menu-circle-icon-text{color:#fff;font-weight:200;font-size:30px;margin-right:12px;display:block;margin-left:12px;display:flex;justify-content:center;position:relative;z-index:100;top:-35px}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i5.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i6.MatMiniFabButton, selector: "button[mat-mini-fab]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None });
25
32
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruToolbarUserProfile, decorators: [{
26
33
  type: Component,
27
- args: [{ selector: 'tru-toolbar-user-profile', encapsulation: ViewEncapsulation.None, template: "<div class=\"tru-toolbar-user-profile\">\r\n <button mat-mini-fab color=\"primary\" class=\"tru-toolbar-user-profile-user-button\" [matMenuTriggerFor]=\"userMenu\">\r\n N\r\n </button>\r\n</div>\r\n<mat-menu #userMenu=\"matMenu\">\r\n <div class=\"tru-toolbar-user-profile-menu-container\">\r\n <mat-icon class=\"tru-toolbar-user-profile-menu-circle-icon\" [svgIcon]=\"'circle-icon'\">N</mat-icon>\r\n <span class=\"tru-toolbar-user-profile-menu-circle-icon-text\">N</span>\r\n <div class=\"tru-toolbar-user-profile-menu-text-container\">\r\n <p>Noah Dykoski</p>\r\n <p>noah@arkware.com</p>\r\n </div>\r\n <button mat-menu-item\r\n (click)=\"onChangePasswordButtonClicked()\"\r\n class=\"tru-toolbar-user-profile-menu-logout-button\">\r\n Change Password\r\n </button>\r\n <button mat-menu-item\r\n (click)=\"onLogoutButtonClicked()\"\r\n class=\"tru-toolbar-user-profile-menu-logout-button\">\r\n Logout\r\n </button>\r\n </div>\r\n</mat-menu>\r\n", styles: [".tru-toolbar-user-profile{height:25px;float:right}.tru-toolbar-user-profile button{height:23px;width:23px;margin-right:10px;margin-top:1px;font-size:12px;box-shadow:none}.tru-toolbar-user-profile-menu-container{width:250px}.tru-toolbar-user-profile-menu-container mat-icon{height:50px;width:50px;margin:auto;display:flex;justify-content:center;color:#006dcc}.tru-toolbar-user-profile-menu-container p{margin:5px;font-size:14px;text-align:center}.tru-toolbar-user-profile-menu-container .tru-toolbar-user-profile-menu-logout-button{display:flex;justify-content:center}.tru-toolbar-user-profile-menu-text-container{margin-top:-15px}.tru-toolbar-user-profile-menu-circle-icon-text{color:#fff;font-weight:200;font-size:30px;margin-right:12px;display:block;margin-left:12px;display:flex;justify-content:center;position:relative;z-index:100;top:-35px}\n"] }]
34
+ args: [{ selector: 'tru-toolbar-user-profile', encapsulation: ViewEncapsulation.None, template: "<div class=\"tru-toolbar-user-profile\">\r\n <button mat-mini-fab color=\"primary\" class=\"tru-toolbar-user-profile-user-button\" [matMenuTriggerFor]=\"userMenu\">\r\n {{initial}}\r\n </button>\r\n</div>\r\n<mat-menu #userMenu=\"matMenu\">\r\n <div class=\"tru-toolbar-user-profile-menu-container\">\r\n <mat-icon class=\"tru-toolbar-user-profile-menu-circle-icon\" [svgIcon]=\"'circle-icon'\"></mat-icon>\r\n <span class=\"tru-toolbar-user-profile-menu-circle-icon-text\">{{initial}}</span>\r\n <div class=\"tru-toolbar-user-profile-menu-text-container\">\r\n <p>{{name}}</p>\r\n <p *ngIf=\"email\">{{email}}</p>\r\n </div>\r\n <button mat-menu-item\r\n (click)=\"onChangePasswordButtonClicked()\"\r\n class=\"tru-toolbar-user-profile-menu-logout-button\">\r\n Change Password\r\n </button>\r\n <button mat-menu-item\r\n (click)=\"onLogoutButtonClicked()\"\r\n class=\"tru-toolbar-user-profile-menu-logout-button\">\r\n Logout\r\n </button>\r\n </div>\r\n</mat-menu>\r\n", styles: [".tru-toolbar-user-profile{height:25px;float:right}.tru-toolbar-user-profile button{height:23px;width:23px;margin-right:10px;margin-top:1px;font-size:12px;box-shadow:none}.tru-toolbar-user-profile-menu-container{width:250px}.tru-toolbar-user-profile-menu-container mat-icon{height:50px;width:50px;margin:auto;display:flex;justify-content:center;color:#006dcc}.tru-toolbar-user-profile-menu-container p{margin:5px;font-size:14px;text-align:center}.tru-toolbar-user-profile-menu-container .tru-toolbar-user-profile-menu-logout-button{display:flex;justify-content:center}.tru-toolbar-user-profile-menu-text-container{margin-top:-15px}.tru-toolbar-user-profile-menu-circle-icon-text{color:#fff;font-weight:200;font-size:30px;margin-right:12px;display:block;margin-left:12px;display:flex;justify-content:center;position:relative;z-index:100;top:-35px}\n"] }]
28
35
  }], ctorParameters: function () { return [{ type: i1.TruDesktopManager }, { type: i2.TruAppEnvironment }, { type: i3.TruAuth }]; } });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LXRvb2xiYXItdXNlci1wcm9maWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL3Rvb2xiYXIvdXNlci1wcm9maWxlL3RydS10b29sYmFyLXVzZXItcHJvZmlsZS50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy90b29sYmFyL3VzZXItcHJvZmlsZS90cnUtdG9vbGJhci11c2VyLXByb2ZpbGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQVk3RCxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLFlBQ1UsY0FBaUMsRUFDakMsY0FBaUMsRUFDakMsSUFBYTtRQUZiLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsU0FBSSxHQUFKLElBQUksQ0FBUztRQUV2QixrQ0FBNkIsR0FBRyxHQUFHLEVBQUU7WUFDbkMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQy9ILElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDM0csQ0FBQyxDQUFBO1FBRUQsMEJBQXFCLEdBQUcsR0FBRyxFQUFFO1lBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUN6QyxDQUFDLENBQUE7SUFUMEIsQ0FBQzs7a0hBSmpCLHFCQUFxQjtzR0FBckIscUJBQXFCLGdFQ1psQyxxaENBeUJBOzJGRGJhLHFCQUFxQjtrQkFOakMsU0FBUzsrQkFDRSwwQkFBMEIsaUJBR3JCLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRydUFwcEVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdHJ1LWFwcC1lbnZpcm9ubWVudCc7XHJcbmltcG9ydCB7IFRydURlc2t0b3BNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vZGVza3RvcC9zZXJ2aWNlcy90cnUtZGVza3RvcC1tYW5hZ2VyJztcclxuaW1wb3J0IHsgVHJ1QXV0aCB9IGZyb20gJy4uLy4uL2xvZ2luL3NlcnZpY2VzL3RydS1hdXRoJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RydS10b29sYmFyLXVzZXItcHJvZmlsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RydS10b29sYmFyLXVzZXItcHJvZmlsZS5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90cnUtdG9vbGJhci11c2VyLXByb2ZpbGUuY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJ1VG9vbGJhclVzZXJQcm9maWxlIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGVza3RvcE1hbmFnZXI6IFRydURlc2t0b3BNYW5hZ2VyLFxyXG4gICAgcHJpdmF0ZSBhcHBFbnZpcm9ubWVudDogVHJ1QXBwRW52aXJvbm1lbnQsXHJcbiAgICBwcml2YXRlIGF1dGg6IFRydUF1dGgpIHsgfVxyXG5cclxuICBvbkNoYW5nZVBhc3N3b3JkQnV0dG9uQ2xpY2tlZCA9ICgpID0+IHtcclxuICAgIGxldCBlbnRpdHkgPSB0aGlzLmFwcEVudmlyb25tZW50Lmdsb2JhbERhdGFDb250ZXh0Py5lbnRpdHlBY2Nlc3MoKS5zZWFyY2hVc2VyQnlSZWZDYWNoZU9ubHkodGhpcy5hcHBFbnZpcm9ubWVudC5hY3RpdmVVc2VyUmVmKTtcclxuICAgIHRoaXMuZGVza3RvcE1hbmFnZXIuYWRkV2luZG93KCdUcnVEYlVzZXInLCAnVHJ1RGJVc2VycycsICdVc2VycycsICdUcnVEYlVzZXJEZXRhaWxWaWV3JywgW2VudGl0eV0sIHRydWUpO1xyXG4gIH1cclxuXHJcbiAgb25Mb2dvdXRCdXR0b25DbGlja2VkID0gKCkgPT4ge1xyXG4gICAgdGhpcy5hdXRoLmRvTG9nb3V0QW5kUmVkaXJlY3RUb0xvZ2luKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ0cnUtdG9vbGJhci11c2VyLXByb2ZpbGVcIj5cclxuICA8YnV0dG9uIG1hdC1taW5pLWZhYiBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cInRydS10b29sYmFyLXVzZXItcHJvZmlsZS11c2VyLWJ1dHRvblwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJ1c2VyTWVudVwiPlxyXG4gICAgTlxyXG4gIDwvYnV0dG9uPlxyXG48L2Rpdj5cclxuPG1hdC1tZW51ICN1c2VyTWVudT1cIm1hdE1lbnVcIj5cclxuICA8ZGl2IGNsYXNzPVwidHJ1LXRvb2xiYXItdXNlci1wcm9maWxlLW1lbnUtY29udGFpbmVyXCI+XHJcbiAgICA8bWF0LWljb24gY2xhc3M9XCJ0cnUtdG9vbGJhci11c2VyLXByb2ZpbGUtbWVudS1jaXJjbGUtaWNvblwiIFtzdmdJY29uXT1cIidjaXJjbGUtaWNvbidcIj5OPC9tYXQtaWNvbj5cclxuICAgIDxzcGFuIGNsYXNzPVwidHJ1LXRvb2xiYXItdXNlci1wcm9maWxlLW1lbnUtY2lyY2xlLWljb24tdGV4dFwiPk48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwidHJ1LXRvb2xiYXItdXNlci1wcm9maWxlLW1lbnUtdGV4dC1jb250YWluZXJcIj5cclxuICAgICAgPHA+Tm9haCBEeWtvc2tpPC9wPlxyXG4gICAgICA8cD5ub2FoQGFya3dhcmUuY29tPC9wPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW1cclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2hhbmdlUGFzc3dvcmRCdXR0b25DbGlja2VkKClcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInRydS10b29sYmFyLXVzZXItcHJvZmlsZS1tZW51LWxvZ291dC1idXR0b25cIj5cclxuICAgICAgQ2hhbmdlIFBhc3N3b3JkXHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbVxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25Mb2dvdXRCdXR0b25DbGlja2VkKClcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInRydS10b29sYmFyLXVzZXItcHJvZmlsZS1tZW51LWxvZ291dC1idXR0b25cIj5cclxuICAgICAgTG9nb3V0XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9tYXQtbWVudT5cclxuIl19
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LXRvb2xiYXItdXNlci1wcm9maWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL3Rvb2xiYXIvdXNlci1wcm9maWxlL3RydS10b29sYmFyLXVzZXItcHJvZmlsZS50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy90b29sYmFyL3VzZXItcHJvZmlsZS90cnUtdG9vbGJhci11c2VyLXByb2ZpbGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7QUFZN0QsTUFBTSxPQUFPLHFCQUFxQjtJQUtoQyxZQUNVLGNBQWlDLEVBQ2pDLGNBQWlDLEVBQ2pDLElBQWE7UUFGYixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLFNBQUksR0FBSixJQUFJLENBQVM7UUFQdkIsWUFBTyxHQUE4QixJQUFJLENBQUM7UUFDMUMsU0FBSSxHQUE4QixJQUFJLENBQUM7UUFDdkMsVUFBSyxHQUE4QixJQUFJLENBQUM7UUFXeEMsa0NBQTZCLEdBQUcsR0FBRyxFQUFFO1lBQ25DLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMvSCxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNHLENBQUMsQ0FBQTtRQUVELDBCQUFxQixHQUFHLEdBQUcsRUFBRTtZQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDekMsQ0FBQyxDQUFBO1FBWkMsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7UUFDcEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUN0SCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksRUFBRSxTQUFTLElBQUksSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsR0FBRyxHQUFHLEdBQUcsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQztJQUMxRyxDQUFDOztrSEFaVSxxQkFBcUI7c0dBQXJCLHFCQUFxQixnRUNabEMsNmlDQXlCQTsyRkRiYSxxQkFBcUI7a0JBTmpDLFNBQVM7K0JBQ0UsMEJBQTBCLGlCQUdyQixpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcnVBcHBFbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RydS1hcHAtZW52aXJvbm1lbnQnO1xyXG5pbXBvcnQgeyBUcnVEZXNrdG9wTWFuYWdlciB9IGZyb20gJy4uLy4uL2Rlc2t0b3Avc2VydmljZXMvdHJ1LWRlc2t0b3AtbWFuYWdlcic7XHJcbmltcG9ydCB7IFRydUF1dGggfSBmcm9tICcuLi8uLi9sb2dpbi9zZXJ2aWNlcy90cnUtYXV0aCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0cnUtdG9vbGJhci11c2VyLXByb2ZpbGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cnUtdG9vbGJhci11c2VyLXByb2ZpbGUuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHJ1LXRvb2xiYXItdXNlci1wcm9maWxlLmNzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIFRydVRvb2xiYXJVc2VyUHJvZmlsZSB7XHJcbiAgaW5pdGlhbDogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XHJcbiAgbmFtZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XHJcbiAgZW1haWw6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGVza3RvcE1hbmFnZXI6IFRydURlc2t0b3BNYW5hZ2VyLFxyXG4gICAgcHJpdmF0ZSBhcHBFbnZpcm9ubWVudDogVHJ1QXBwRW52aXJvbm1lbnQsXHJcbiAgICBwcml2YXRlIGF1dGg6IFRydUF1dGgpIHtcclxuICAgIGxldCB1c2VyID0gdGhpcy5hcHBFbnZpcm9ubWVudC51c2VyO1xyXG4gICAgdGhpcy5pbml0aWFsID0gdXNlcj8uZmlyc3ROYW1lID8gdXNlcj8uZmlyc3ROYW1lLnNsaWNlKDAsIDApLnRvVXBwZXJDYXNlKCkgOiB1c2VyPy51c2VybmFtZT8uc2xpY2UoMCwgMCkudG9VcHBlckNhc2UoKVxyXG4gICAgdGhpcy5uYW1lID0gdXNlcj8uZmlyc3ROYW1lIHx8IHVzZXI/Lmxhc3ROYW1lID8gdXNlcj8uZmlyc3ROYW1lICsgJyAnICsgdXNlcj8ubGFzdE5hbWUgOiB1c2VyPy51c2VybmFtZTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlUGFzc3dvcmRCdXR0b25DbGlja2VkID0gKCkgPT4ge1xyXG4gICAgbGV0IGVudGl0eSA9IHRoaXMuYXBwRW52aXJvbm1lbnQuZ2xvYmFsRGF0YUNvbnRleHQ/LmVudGl0eUFjY2VzcygpLnNlYXJjaFVzZXJCeVJlZkNhY2hlT25seSh0aGlzLmFwcEVudmlyb25tZW50LmFjdGl2ZVVzZXJSZWYpO1xyXG4gICAgdGhpcy5kZXNrdG9wTWFuYWdlci5hZGRXaW5kb3coJ1RydURiVXNlcicsICdUcnVEYlVzZXJzJywgJ1VzZXJzJywgJ1RydURiVXNlckRldGFpbFZpZXcnLCBbZW50aXR5XSwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBvbkxvZ291dEJ1dHRvbkNsaWNrZWQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmF1dGguZG9Mb2dvdXRBbmRSZWRpcmVjdFRvTG9naW4oKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInRydS10b29sYmFyLXVzZXItcHJvZmlsZVwiPlxyXG4gIDxidXR0b24gbWF0LW1pbmktZmFiIGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwidHJ1LXRvb2xiYXItdXNlci1wcm9maWxlLXVzZXItYnV0dG9uXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cInVzZXJNZW51XCI+XHJcbiAgICB7e2luaXRpYWx9fVxyXG4gIDwvYnV0dG9uPlxyXG48L2Rpdj5cclxuPG1hdC1tZW51ICN1c2VyTWVudT1cIm1hdE1lbnVcIj5cclxuICA8ZGl2IGNsYXNzPVwidHJ1LXRvb2xiYXItdXNlci1wcm9maWxlLW1lbnUtY29udGFpbmVyXCI+XHJcbiAgICA8bWF0LWljb24gY2xhc3M9XCJ0cnUtdG9vbGJhci11c2VyLXByb2ZpbGUtbWVudS1jaXJjbGUtaWNvblwiIFtzdmdJY29uXT1cIidjaXJjbGUtaWNvbidcIj48L21hdC1pY29uPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJ0cnUtdG9vbGJhci11c2VyLXByb2ZpbGUtbWVudS1jaXJjbGUtaWNvbi10ZXh0XCI+e3tpbml0aWFsfX08L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwidHJ1LXRvb2xiYXItdXNlci1wcm9maWxlLW1lbnUtdGV4dC1jb250YWluZXJcIj5cclxuICAgICAgPHA+e3tuYW1lfX08L3A+XHJcbiAgICAgIDxwICpuZ0lmPVwiZW1haWxcIj57e2VtYWlsfX08L3A+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbVxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25DaGFuZ2VQYXNzd29yZEJ1dHRvbkNsaWNrZWQoKVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwidHJ1LXRvb2xiYXItdXNlci1wcm9maWxlLW1lbnUtbG9nb3V0LWJ1dHRvblwiPlxyXG4gICAgICBDaGFuZ2UgUGFzc3dvcmRcclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkxvZ291dEJ1dHRvbkNsaWNrZWQoKVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwidHJ1LXRvb2xiYXItdXNlci1wcm9maWxlLW1lbnUtbG9nb3V0LWJ1dHRvblwiPlxyXG4gICAgICBMb2dvdXRcclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L21hdC1tZW51PlxyXG4iXX0=
@@ -30,7 +30,7 @@ import { MatAutocompleteModule } from '@angular/material/autocomplete';
30
30
  import { MatBadgeModule } from '@angular/material/badge';
31
31
  import { MatBottomSheetModule } from '@angular/material/bottom-sheet';
32
32
  import { MatButtonToggleModule } from '@angular/material/button-toggle';
33
- import * as i4$1 from '@angular/material/card';
33
+ import * as i4 from '@angular/material/card';
34
34
  import { MatCardModule } from '@angular/material/card';
35
35
  import { MatChipsModule } from '@angular/material/chips';
36
36
  import { MatStepperModule } from '@angular/material/stepper';
@@ -40,10 +40,10 @@ import { MatExpansionModule } from '@angular/material/expansion';
40
40
  import { MatGridListModule } from '@angular/material/grid-list';
41
41
  import * as i2 from '@angular/material/icon';
42
42
  import { MatIconModule } from '@angular/material/icon';
43
- import * as i5$1 from '@angular/material/input';
43
+ import * as i5$2 from '@angular/material/input';
44
44
  import { MatInputModule } from '@angular/material/input';
45
45
  import { MatListModule } from '@angular/material/list';
46
- import * as i4 from '@angular/material/menu';
46
+ import * as i5$1 from '@angular/material/menu';
47
47
  import { MatMenuModule } from '@angular/material/menu';
48
48
  import * as i5 from '@angular/material/core';
49
49
  import { MatNativeDateModule, MatRippleModule, MatOptionModule } from '@angular/material/core';
@@ -3672,9 +3672,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
3672
3672
 
3673
3673
  class TruToolbarUserProfile {
3674
3674
  constructor(desktopManager, appEnvironment, auth) {
3675
+ var _a;
3675
3676
  this.desktopManager = desktopManager;
3676
3677
  this.appEnvironment = appEnvironment;
3677
3678
  this.auth = auth;
3679
+ this.initial = null;
3680
+ this.name = null;
3681
+ this.email = null;
3678
3682
  this.onChangePasswordButtonClicked = () => {
3679
3683
  var _a;
3680
3684
  let entity = (_a = this.appEnvironment.globalDataContext) === null || _a === void 0 ? void 0 : _a.entityAccess().searchUserByRefCacheOnly(this.appEnvironment.activeUserRef);
@@ -3683,13 +3687,16 @@ class TruToolbarUserProfile {
3683
3687
  this.onLogoutButtonClicked = () => {
3684
3688
  this.auth.doLogoutAndRedirectToLogin();
3685
3689
  };
3690
+ let user = this.appEnvironment.user;
3691
+ this.initial = (user === null || user === void 0 ? void 0 : user.firstName) ? user === null || user === void 0 ? void 0 : user.firstName.slice(0, 0).toUpperCase() : (_a = user === null || user === void 0 ? void 0 : user.username) === null || _a === void 0 ? void 0 : _a.slice(0, 0).toUpperCase();
3692
+ this.name = (user === null || user === void 0 ? void 0 : user.firstName) || (user === null || user === void 0 ? void 0 : user.lastName) ? (user === null || user === void 0 ? void 0 : user.firstName) + ' ' + (user === null || user === void 0 ? void 0 : user.lastName) : user === null || user === void 0 ? void 0 : user.username;
3686
3693
  }
3687
3694
  }
3688
3695
  TruToolbarUserProfile.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruToolbarUserProfile, deps: [{ token: TruDesktopManager }, { token: TruAppEnvironment }, { token: TruAuth }], target: i0.ɵɵFactoryTarget.Component });
3689
- TruToolbarUserProfile.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: TruToolbarUserProfile, selector: "tru-toolbar-user-profile", ngImport: i0, template: "<div class=\"tru-toolbar-user-profile\">\r\n <button mat-mini-fab color=\"primary\" class=\"tru-toolbar-user-profile-user-button\" [matMenuTriggerFor]=\"userMenu\">\r\n N\r\n </button>\r\n</div>\r\n<mat-menu #userMenu=\"matMenu\">\r\n <div class=\"tru-toolbar-user-profile-menu-container\">\r\n <mat-icon class=\"tru-toolbar-user-profile-menu-circle-icon\" [svgIcon]=\"'circle-icon'\">N</mat-icon>\r\n <span class=\"tru-toolbar-user-profile-menu-circle-icon-text\">N</span>\r\n <div class=\"tru-toolbar-user-profile-menu-text-container\">\r\n <p>Noah Dykoski</p>\r\n <p>noah@arkware.com</p>\r\n </div>\r\n <button mat-menu-item\r\n (click)=\"onChangePasswordButtonClicked()\"\r\n class=\"tru-toolbar-user-profile-menu-logout-button\">\r\n Change Password\r\n </button>\r\n <button mat-menu-item\r\n (click)=\"onLogoutButtonClicked()\"\r\n class=\"tru-toolbar-user-profile-menu-logout-button\">\r\n Logout\r\n </button>\r\n </div>\r\n</mat-menu>\r\n", styles: [".tru-toolbar-user-profile{height:25px;float:right}.tru-toolbar-user-profile button{height:23px;width:23px;margin-right:10px;margin-top:1px;font-size:12px;box-shadow:none}.tru-toolbar-user-profile-menu-container{width:250px}.tru-toolbar-user-profile-menu-container mat-icon{height:50px;width:50px;margin:auto;display:flex;justify-content:center;color:#006dcc}.tru-toolbar-user-profile-menu-container p{margin:5px;font-size:14px;text-align:center}.tru-toolbar-user-profile-menu-container .tru-toolbar-user-profile-menu-logout-button{display:flex;justify-content:center}.tru-toolbar-user-profile-menu-text-container{margin-top:-15px}.tru-toolbar-user-profile-menu-circle-icon-text{color:#fff;font-weight:200;font-size:30px;margin-right:12px;display:block;margin-left:12px;display:flex;justify-content:center;position:relative;z-index:100;top:-35px}\n"], dependencies: [{ kind: "component", type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i3.MatMiniFabButton, selector: "button[mat-mini-fab]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None });
3696
+ TruToolbarUserProfile.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: TruToolbarUserProfile, selector: "tru-toolbar-user-profile", ngImport: i0, template: "<div class=\"tru-toolbar-user-profile\">\r\n <button mat-mini-fab color=\"primary\" class=\"tru-toolbar-user-profile-user-button\" [matMenuTriggerFor]=\"userMenu\">\r\n {{initial}}\r\n </button>\r\n</div>\r\n<mat-menu #userMenu=\"matMenu\">\r\n <div class=\"tru-toolbar-user-profile-menu-container\">\r\n <mat-icon class=\"tru-toolbar-user-profile-menu-circle-icon\" [svgIcon]=\"'circle-icon'\"></mat-icon>\r\n <span class=\"tru-toolbar-user-profile-menu-circle-icon-text\">{{initial}}</span>\r\n <div class=\"tru-toolbar-user-profile-menu-text-container\">\r\n <p>{{name}}</p>\r\n <p *ngIf=\"email\">{{email}}</p>\r\n </div>\r\n <button mat-menu-item\r\n (click)=\"onChangePasswordButtonClicked()\"\r\n class=\"tru-toolbar-user-profile-menu-logout-button\">\r\n Change Password\r\n </button>\r\n <button mat-menu-item\r\n (click)=\"onLogoutButtonClicked()\"\r\n class=\"tru-toolbar-user-profile-menu-logout-button\">\r\n Logout\r\n </button>\r\n </div>\r\n</mat-menu>\r\n", styles: [".tru-toolbar-user-profile{height:25px;float:right}.tru-toolbar-user-profile button{height:23px;width:23px;margin-right:10px;margin-top:1px;font-size:12px;box-shadow:none}.tru-toolbar-user-profile-menu-container{width:250px}.tru-toolbar-user-profile-menu-container mat-icon{height:50px;width:50px;margin:auto;display:flex;justify-content:center;color:#006dcc}.tru-toolbar-user-profile-menu-container p{margin:5px;font-size:14px;text-align:center}.tru-toolbar-user-profile-menu-container .tru-toolbar-user-profile-menu-logout-button{display:flex;justify-content:center}.tru-toolbar-user-profile-menu-text-container{margin-top:-15px}.tru-toolbar-user-profile-menu-circle-icon-text{color:#fff;font-weight:200;font-size:30px;margin-right:12px;display:block;margin-left:12px;display:flex;justify-content:center;position:relative;z-index:100;top:-35px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5$1.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i5$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i3.MatMiniFabButton, selector: "button[mat-mini-fab]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None });
3690
3697
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruToolbarUserProfile, decorators: [{
3691
3698
  type: Component,
3692
- args: [{ selector: 'tru-toolbar-user-profile', encapsulation: ViewEncapsulation.None, template: "<div class=\"tru-toolbar-user-profile\">\r\n <button mat-mini-fab color=\"primary\" class=\"tru-toolbar-user-profile-user-button\" [matMenuTriggerFor]=\"userMenu\">\r\n N\r\n </button>\r\n</div>\r\n<mat-menu #userMenu=\"matMenu\">\r\n <div class=\"tru-toolbar-user-profile-menu-container\">\r\n <mat-icon class=\"tru-toolbar-user-profile-menu-circle-icon\" [svgIcon]=\"'circle-icon'\">N</mat-icon>\r\n <span class=\"tru-toolbar-user-profile-menu-circle-icon-text\">N</span>\r\n <div class=\"tru-toolbar-user-profile-menu-text-container\">\r\n <p>Noah Dykoski</p>\r\n <p>noah@arkware.com</p>\r\n </div>\r\n <button mat-menu-item\r\n (click)=\"onChangePasswordButtonClicked()\"\r\n class=\"tru-toolbar-user-profile-menu-logout-button\">\r\n Change Password\r\n </button>\r\n <button mat-menu-item\r\n (click)=\"onLogoutButtonClicked()\"\r\n class=\"tru-toolbar-user-profile-menu-logout-button\">\r\n Logout\r\n </button>\r\n </div>\r\n</mat-menu>\r\n", styles: [".tru-toolbar-user-profile{height:25px;float:right}.tru-toolbar-user-profile button{height:23px;width:23px;margin-right:10px;margin-top:1px;font-size:12px;box-shadow:none}.tru-toolbar-user-profile-menu-container{width:250px}.tru-toolbar-user-profile-menu-container mat-icon{height:50px;width:50px;margin:auto;display:flex;justify-content:center;color:#006dcc}.tru-toolbar-user-profile-menu-container p{margin:5px;font-size:14px;text-align:center}.tru-toolbar-user-profile-menu-container .tru-toolbar-user-profile-menu-logout-button{display:flex;justify-content:center}.tru-toolbar-user-profile-menu-text-container{margin-top:-15px}.tru-toolbar-user-profile-menu-circle-icon-text{color:#fff;font-weight:200;font-size:30px;margin-right:12px;display:block;margin-left:12px;display:flex;justify-content:center;position:relative;z-index:100;top:-35px}\n"] }]
3699
+ args: [{ selector: 'tru-toolbar-user-profile', encapsulation: ViewEncapsulation.None, template: "<div class=\"tru-toolbar-user-profile\">\r\n <button mat-mini-fab color=\"primary\" class=\"tru-toolbar-user-profile-user-button\" [matMenuTriggerFor]=\"userMenu\">\r\n {{initial}}\r\n </button>\r\n</div>\r\n<mat-menu #userMenu=\"matMenu\">\r\n <div class=\"tru-toolbar-user-profile-menu-container\">\r\n <mat-icon class=\"tru-toolbar-user-profile-menu-circle-icon\" [svgIcon]=\"'circle-icon'\"></mat-icon>\r\n <span class=\"tru-toolbar-user-profile-menu-circle-icon-text\">{{initial}}</span>\r\n <div class=\"tru-toolbar-user-profile-menu-text-container\">\r\n <p>{{name}}</p>\r\n <p *ngIf=\"email\">{{email}}</p>\r\n </div>\r\n <button mat-menu-item\r\n (click)=\"onChangePasswordButtonClicked()\"\r\n class=\"tru-toolbar-user-profile-menu-logout-button\">\r\n Change Password\r\n </button>\r\n <button mat-menu-item\r\n (click)=\"onLogoutButtonClicked()\"\r\n class=\"tru-toolbar-user-profile-menu-logout-button\">\r\n Logout\r\n </button>\r\n </div>\r\n</mat-menu>\r\n", styles: [".tru-toolbar-user-profile{height:25px;float:right}.tru-toolbar-user-profile button{height:23px;width:23px;margin-right:10px;margin-top:1px;font-size:12px;box-shadow:none}.tru-toolbar-user-profile-menu-container{width:250px}.tru-toolbar-user-profile-menu-container mat-icon{height:50px;width:50px;margin:auto;display:flex;justify-content:center;color:#006dcc}.tru-toolbar-user-profile-menu-container p{margin:5px;font-size:14px;text-align:center}.tru-toolbar-user-profile-menu-container .tru-toolbar-user-profile-menu-logout-button{display:flex;justify-content:center}.tru-toolbar-user-profile-menu-text-container{margin-top:-15px}.tru-toolbar-user-profile-menu-circle-icon-text{color:#fff;font-weight:200;font-size:30px;margin-right:12px;display:block;margin-left:12px;display:flex;justify-content:center;position:relative;z-index:100;top:-35px}\n"] }]
3693
3700
  }], ctorParameters: function () { return [{ type: TruDesktopManager }, { type: TruAppEnvironment }, { type: TruAuth }]; } });
3694
3701
 
3695
3702
  class TruToolbarUserProfileModule {
@@ -5856,7 +5863,7 @@ class TruLogin {
5856
5863
  }
5857
5864
  }
5858
5865
  TruLogin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruLogin, deps: [{ token: TruAuth }], target: i0.ɵɵFactoryTarget.Component });
5859
- TruLogin.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: TruLogin, selector: "tru-login", ngImport: i0, template: "<div class=\"login-wrapper\">\r\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"onSubmit()\">\r\n <mat-card class=\"animate-login\">\r\n <mat-card-header>\r\n <mat-card-title> loginFormTitle </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <mat-form-field>\r\n <mat-label>Username</mat-label>\r\n <input matInput formControlName=\"username\" placeholder=\"Username\">\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>Password</mat-label>\r\n <input matInput type=\"password\" formControlName=\"password\" placeholder=\"Password\">\r\n </mat-form-field>\r\n <div *ngIf=\"loginError\" class=\"animate-login-error animated rubberBand\">\r\n <p style=\"color: red; font-weight: bold;\"> {{ loginError }}</p>\r\n </div>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <button mat-raised-button color=\"primary\" type=\"submit\" [disabled]=\"isDisabled()\">Login</button>\r\n </mat-card-actions>\r\n </mat-card>\r\n </form>\r\n</div>\r\n", styles: [".login-container{display:flex;justify-content:center;align-items:center;height:100vh;margin:0;padding:0}.login-input{margin-bottom:20px}.animate-login{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;margin-top:50px}.wrapper{display:flex;justify-content:center;align-items:center;height:100vh}mat-card{max-width:300px;width:100%;max-height:300px;padding:20px}.form-group{width:100%;max-width:400px;margin-bottom:20px}.login-wrapper{display:flex;justify-content:center;align-items:center;height:100vh}::ng-deep .login-wrapper .mat-mdc-text-field-wrapper{padding:0 16px!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4$1.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i4$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i4$1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i4$1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i5$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i3$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.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: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
5866
+ TruLogin.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: TruLogin, selector: "tru-login", ngImport: i0, template: "<div class=\"login-wrapper\">\r\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"onSubmit()\">\r\n <mat-card class=\"animate-login\">\r\n <mat-card-header>\r\n <mat-card-title> loginFormTitle </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <mat-form-field>\r\n <mat-label>Username</mat-label>\r\n <input matInput formControlName=\"username\" placeholder=\"Username\">\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>Password</mat-label>\r\n <input matInput type=\"password\" formControlName=\"password\" placeholder=\"Password\">\r\n </mat-form-field>\r\n <div *ngIf=\"loginError\" class=\"animate-login-error animated rubberBand\">\r\n <p style=\"color: red; font-weight: bold;\"> {{ loginError }}</p>\r\n </div>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <button mat-raised-button color=\"primary\" type=\"submit\" [disabled]=\"isDisabled()\">Login</button>\r\n </mat-card-actions>\r\n </mat-card>\r\n </form>\r\n</div>\r\n", styles: [".login-container{display:flex;justify-content:center;align-items:center;height:100vh;margin:0;padding:0}.login-input{margin-bottom:20px}.animate-login{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;margin-top:50px}.wrapper{display:flex;justify-content:center;align-items:center;height:100vh}mat-card{max-width:300px;width:100%;max-height:300px;padding:20px}.form-group{width:100%;max-width:400px;margin-bottom:20px}.login-wrapper{display:flex;justify-content:center;align-items:center;height:100vh}::ng-deep .login-wrapper .mat-mdc-text-field-wrapper{padding:0 16px!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i4.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i4.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i5$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i3$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.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: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
5860
5867
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruLogin, decorators: [{
5861
5868
  type: Component,
5862
5869
  args: [{ selector: 'tru-login', template: "<div class=\"login-wrapper\">\r\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"onSubmit()\">\r\n <mat-card class=\"animate-login\">\r\n <mat-card-header>\r\n <mat-card-title> loginFormTitle </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <mat-form-field>\r\n <mat-label>Username</mat-label>\r\n <input matInput formControlName=\"username\" placeholder=\"Username\">\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>Password</mat-label>\r\n <input matInput type=\"password\" formControlName=\"password\" placeholder=\"Password\">\r\n </mat-form-field>\r\n <div *ngIf=\"loginError\" class=\"animate-login-error animated rubberBand\">\r\n <p style=\"color: red; font-weight: bold;\"> {{ loginError }}</p>\r\n </div>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <button mat-raised-button color=\"primary\" type=\"submit\" [disabled]=\"isDisabled()\">Login</button>\r\n </mat-card-actions>\r\n </mat-card>\r\n </form>\r\n</div>\r\n", styles: [".login-container{display:flex;justify-content:center;align-items:center;height:100vh;margin:0;padding:0}.login-input{margin-bottom:20px}.animate-login{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;margin-top:50px}.wrapper{display:flex;justify-content:center;align-items:center;height:100vh}mat-card{max-width:300px;width:100%;max-height:300px;padding:20px}.form-group{width:100%;max-width:400px;margin-bottom:20px}.login-wrapper{display:flex;justify-content:center;align-items:center;height:100vh}::ng-deep .login-wrapper .mat-mdc-text-field-wrapper{padding:0 16px!important}\n"] }]
@@ -5873,17 +5880,20 @@ class TruAuthJwtStrategy {
5873
5880
  localStorage.removeItem(this.JWT_TOKEN);
5874
5881
  }
5875
5882
  getCurrentUser() {
5883
+ var _a;
5876
5884
  //todo check v6 for how this should be done
5877
- return of(JSON.parse(localStorage.getItem(this.JWT_TOKEN)).user);
5885
+ return of((_a = JSON.parse(localStorage.getItem(this.JWT_TOKEN))) === null || _a === void 0 ? void 0 : _a.user);
5878
5886
  }
5879
5887
  isLoggedIn() {
5880
5888
  return !!this.getJwtToken();
5881
5889
  }
5882
5890
  getJwtToken() {
5883
- return JSON.parse(localStorage.getItem(this.JWT_TOKEN)).jwt;
5891
+ var _a;
5892
+ return (_a = JSON.parse(localStorage.getItem(this.JWT_TOKEN))) === null || _a === void 0 ? void 0 : _a.jwt;
5884
5893
  }
5885
5894
  getToken() {
5886
- var token = JSON.parse(localStorage.getItem(this.JWT_TOKEN)).jwt;
5895
+ var _a;
5896
+ var token = (_a = JSON.parse(localStorage.getItem(this.JWT_TOKEN))) === null || _a === void 0 ? void 0 : _a.jwt;
5887
5897
  if (token && token !== "undefined") {
5888
5898
  const encodedPayload = token.split(".")[1];
5889
5899
  const payloadStr = window.atob(encodedPayload);